cdocutils.nodes document q)q}q(U nametypesq}q(X+(proposal) member node service registrationqNXoverviewqNX!scenario mnsr-s01, spatial subsetqNXuse case mnsr-uc02q NXuse case mnsr-uc01q NX definitionsq NuUsubstitution_defsq }q Uparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hU)proposal-member-node-service-registrationqhUoverviewqhU scenario-mnsr-s01-spatial-subsetqh Uuse-case-mnsr-uc02qh Uuse-case-mnsr-uc01qh U definitionsquUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceq UUparentq!hUsourceq"Xz/var/lib/jenkins/jobs/API_Documentation_trunk/workspace/api-documentation/source/design/MemberNodeServicesRegistration.txtq#Utagnameq$Usectionq%U attributesq&}q'(Udupnamesq(]Uclassesq)]Ubackrefsq*]Uidsq+]q,haUnamesq-]q.hauUlineq/KUdocumentq0hh]q1(cdocutils.nodes title q2)q3}q4(h X+(Proposal) Member Node Service Registrationq5h!hh"h#h$Utitleq6h&}q7(h(]h)]h*]h+]h-]uh/Kh0hh]q8cdocutils.nodes Text q9X+(Proposal) Member Node Service Registrationq:q;}q<(h h5h!h3ubaubcdocutils.nodes field_list q=)q>}q?(h Uh!hh"h#h$U field_listq@h&}qA(h(]h)]h*]h+]h-]uh/Kh0hh]qBcdocutils.nodes field qC)qD}qE(h Uh!h>h"h#h$UfieldqFh&}qG(h(]h)]h*]h+]h-]uh/Kh0hh]qH(cdocutils.nodes field_name qI)qJ}qK(h XStatusqLh!hDh"h#h$U field_nameqMh&}qN(h(]h)]h*]h+]h-]uh/Kh]qOh9XStatusqPqQ}qR(h hLh!hJubaubcdocutils.nodes field_body qS)qT}qU(h XDRAFT for comment h&}qV(h(]h)]h*]h+]h-]uh!hDh]qWcdocutils.nodes paragraph qX)qY}qZ(h XDRAFT for commentq[h!hTh"h#h$U paragraphq\h&}q](h(]h)]h*]h+]h-]uh/Kh]q^h9XDRAFT for commentq_q`}qa(h h[h!hYubaubah$U field_bodyqbubeubaubh)qc}qd(h Uh!hh"h#h$h%h&}qe(h(]h)]h*]h+]qfhah-]qgh auh/Kh0hh]qh(h2)qi}qj(h X Definitionsqkh!hch"h#h$h6h&}ql(h(]h)]h*]h+]h-]uh/Kh0hh]qmh9X Definitionsqnqo}qp(h hkh!hiubaubh=)qq}qr(h Uh!hch"h#h$h@h&}qs(h(]h)]h*]h+]h-]uh/K h0hh]qt(hC)qu}qv(h Uh!hqh"h#h$hFh&}qw(h(]h)]h*]h+]h-]uh/K h0hh]qx(hI)qy}qz(h XServiceq{h!huh"h#h$hMh&}q|(h(]h)]h*]h+]h-]uh/Kh]q}h9XServiceq~q}q(h h{h!hyubaubhS)q}q(h XA service in the context of this document is functionality accessible over the internet using a standard protocol that performs some operation on data that ideally is accessible through the DataONE application programing interfaces. h&}q(h(]h)]h*]h+]h-]uh!huh]qhX)q}q(h XA service in the context of this document is functionality accessible over the internet using a standard protocol that performs some operation on data that ideally is accessible through the DataONE application programing interfaces.qh!hh"h#h$h\h&}q(h(]h)]h*]h+]h-]uh/K h]qh9XA service in the context of this document is functionality accessible over the internet using a standard protocol that performs some operation on data that ideally is accessible through the DataONE application programing interfaces.qq}q(h hh!hubaubah$hbubeubhC)q}q(h Uh!hqh"h#h$hFh&}q(h(]h)]h*]h+]h-]uh/Kh0hh]q(hI)q}q(h XService Endpointqh!hh"h#h$hMh&}q(h(]h)]h*]h+]h-]uh/Kh]qh9XService Endpointqq}q(h hh!hubaubhS)q}q(h X^The service endpoint is the internet address at which the service can be accessed by clients. h&}q(h(]h)]h*]h+]h-]uh!hh]qhX)q}q(h X]The service endpoint is the internet address at which the service can be accessed by clients.qh!hh"h#h$h\h&}q(h(]h)]h*]h+]h-]uh/Kh]qh9X]The service endpoint is the internet address at which the service can be accessed by clients.qq}q(h hh!hubaubah$hbubeubhC)q}q(h Uh!hqh"h#h$hFh&}q(h(]h)]h*]h+]h-]uh/Kh0hh]q(hI)q}q(h XService Interfaceqh!hh"h#h$hMh&}q(h(]h)]h*]h+]h-]uh/Kh]qh9XService Interfaceqq}q(h hh!hubaubhS)q}q(h X~The mechanism through which clients interact with a service in a manner compliant with the advertised service specifications. h&}q(h(]h)]h*]h+]h-]uh!hh]qhX)q}q(h X}The mechanism through which clients interact with a service in a manner compliant with the advertised service specifications.qh!hh"h#h$h\h&}q(h(]h)]h*]h+]h-]uh/Kh]qh9X}The mechanism through which clients interact with a service in a manner compliant with the advertised service specifications.qq}q(h hh!hubaubah$hbubeubhC)q}q(h Uh!hqh"h#h$hFh&}q(h(]h)]h*]h+]h-]uh/Kh0hh]q(hI)q}q(h XService Specificationqh!hh"h#h$hMh&}q(h(]h)]h*]h+]h-]uh/Kh]qh9XService Specificationqƅq}q(h hh!hubaubhS)q}q(h XEDescription of the specific mechanisms that a client may utilize for programmatic interaction with a service. The service specification should include the protocol being used to access the service as well as the structure of messages, protocol specific paths or endpoints, service behavior, and error condition notification. h&}q(h(]h)]h*]h+]h-]uh!hh]qhX)q}q(h XDDescription of the specific mechanisms that a client may utilize for programmatic interaction with a service. The service specification should include the protocol being used to access the service as well as the structure of messages, protocol specific paths or endpoints, service behavior, and error condition notification.qh!hh"h#h$h\h&}q(h(]h)]h*]h+]h-]uh/Kh]qh9XDDescription of the specific mechanisms that a client may utilize for programmatic interaction with a service. The service specification should include the protocol being used to access the service as well as the structure of messages, protocol specific paths or endpoints, service behavior, and error condition notification.q҅q}q(h hh!hubaubah$hbubeubhC)q}q(h Uh!hqh"h#h$hFh&}q(h(]h)]h*]h+]h-]uh/K!h0hh]q(hI)q}q(h XClientqh!hh"h#h$hMh&}q(h(]h)]h*]h+]h-]uh/Kh]qh9XClientqޅq}q(h hh!hubaubhS)q}q(h XtA client in the context of this document is any application that accesses a service through the service interface. h&}q(h(]h)]h*]h+]h-]uh!hh]qhX)q}q(h XrA client in the context of this document is any application that accesses a service through the service interface.qh!hh"h#h$h\h&}q(h(]h)]h*]h+]h-]uh/K#h]qh9XrA client in the context of this document is any application that accesses a service through the service interface.qꅁq}q(h hh!hubaubah$hbubeubeubeubh)q}q(h Uh!hh"h#h$h%h&}q(h(]h)]h*]h+]qhah-]qhauh/K(h0hh]q(h2)q}q(h XOverviewqh!hh"h#h$h6h&}q(h(]h)]h*]h+]h-]uh/K(h0hh]qh9XOverviewqq}q(h hh!hubaubhX)q}q(h XEService Registration (SR) is a process whereby services offered by Member Nodes and other reliable resources can be registered with DataONE. Services so registered may be discovered through DataONE search mechanisms and utilized by DataONE Investigator Tools and other clients to perform actions on or provide access to data.qh!hh"h#h$h\h&}q(h(]h)]h*]h+]h-]uh/K*h0hh]qh9XEService Registration (SR) is a process whereby services offered by Member Nodes and other reliable resources can be registered with DataONE. Services so registered may be discovered through DataONE search mechanisms and utilized by DataONE Investigator Tools and other clients to perform actions on or provide access to data.rr}r(h hh!hubaubhX)r}r(h XBA general goal of Service Registration (SR) is to assist clients in discovery of services exposed by Member Nodes that may be applicable to a particular type of object. There are several possible mechanisms for recording and exposing this information. One approach is through the Member Node getCapabilities method, with the node description response document modified to include additional basic information about the service(s) provided by the Member Node and the format types each supports. An alternative approach is to add a new MN API method that lists services available for different formats. Yet another approach is to describe services using a type of metadata document, and use the existing infrastructure to synchronize and index the service descriptions so that clients may discover and utilize the capabilities on offer.rh!hh"h#h$h\h&}r(h(]h)]h*]h+]h-]uh/K0h0hh]rh9XBA general goal of Service Registration (SR) is to assist clients in discovery of services exposed by Member Nodes that may be applicable to a particular type of object. There are several possible mechanisms for recording and exposing this information. One approach is through the Member Node getCapabilities method, with the node description response document modified to include additional basic information about the service(s) provided by the Member Node and the format types each supports. An alternative approach is to add a new MN API method that lists services available for different formats. Yet another approach is to describe services using a type of metadata document, and use the existing infrastructure to synchronize and index the service descriptions so that clients may discover and utilize the capabilities on offer.rr }r (h jh!jubaubhX)r }r (h XThe third approach, that os using Service Registration Documents (SRD) to describe services is the chosen approach to registering and advertising services being offered.r h!hh"h#h$h\h&}r(h(]h)]h*]h+]h-]uh/K;h0hh]rh9XThe third approach, that os using Service Registration Documents (SRD) to describe services is the chosen approach to registering and advertising services being offered.rr}r(h j h!j ubaubhX)r}r(h X## Problem being addressedrh!hh"h#h$h\h&}r(h(]h)]h*]h+]h-]uh/K?h0hh]rh9X## Problem being addressedrr}r(h jh!jubaubhX)r}r(h XpThe fundamental issue being addressed is the discovery of services offered by Member Nodes. There is currently no consistent, convenient, universally available mechanism to discover services that are offered by data repositories to assist users with access to data. Services are available for data subsetting and slicing, merging, analysis, visualization, summarization, and so on. DataONE will enable any such services to be registered and discoverable through a search interface, and in some cases incorporated in the the functionality data search interfaces to offer online processing of the data by a registered service.rh!hh"h#h$h\h&}r(h(]h)]h*]h+]h-]uh/KAh0hh]rh9XpThe fundamental issue being addressed is the discovery of services offered by Member Nodes. There is currently no consistent, convenient, universally available mechanism to discover services that are offered by data repositories to assist users with access to data. Services are available for data subsetting and slicing, merging, analysis, visualization, summarization, and so on. DataONE will enable any such services to be registered and discoverable through a search interface, and in some cases incorporated in the the functionality data search interfaces to offer online processing of the data by a registered service.r r!}r"(h jh!jubaubhX)r#}r$(h X## How it worksr%h!hh"h#h$h\h&}r&(h(]h)]h*]h+]h-]uh/KKh0hh]r'h9X## How it worksr(r)}r*(h j%h!j#ubaubhX)r+}r,(h X"Services are described with a service registration document (SRD), similar to how data objects are currently described with a metadata document. SRDs are treated like metadata documents in DataONE. They have unique identifiers, they are immutable, and they are indexed by the search engine.r-h!hh"h#h$h\h&}r.(h(]h)]h*]h+]h-]uh/KMh0hh]r/h9X"Services are described with a service registration document (SRD), similar to how data objects are currently described with a metadata document. SRDs are treated like metadata documents in DataONE. They have unique identifiers, they are immutable, and they are indexed by the search engine.r0r1}r2(h j-h!j+ubaubhX)r3}r4(h XGiven a service that a user would like to advertise, an SRD is created and added to a Member Node. The CNs synchronize the content and index the document and its associated metadata.r5h!hh"h#h$h\h&}r6(h(]h)]h*]h+]h-]uh/KRh0hh]r7h9XGiven a service that a user would like to advertise, an SRD is created and added to a Member Node. The CNs synchronize the content and index the document and its associated metadata.r8r9}r:(h j5h!j3ubaubhX)r;}r<(h XA user can discover the service through the search interface, either by looking for the service specifically or by browsing data search results, and the UI suggesting services applicable for the different data result records.r=h!hh"h#h$h\h&}r>(h(]h)]h*]h+]h-]uh/KVh0hh]r?h9XA user can discover the service through the search interface, either by looking for the service specifically or by browsing data search results, and the UI suggesting services applicable for the different data result records.r@rA}rB(h j=h!j;ubaubhX)rC}rD(h X## Who it benefitsrEh!hh"h#h$h\h&}rF(h(]h)]h*]h+]h-]uh/KZh0hh]rGh9X## Who it benefitsrHrI}rJ(h jEh!jCubaubhX)rK}rL(h X ## Use CasesrMh!hh"h#h$h\h&}rN(h(]h)]h*]h+]h-]uh/K\h0hh]rOh9X ## Use CasesrPrQ}rR(h jMh!jKubaubcdocutils.nodes transition rS)rT}rU(h X -------------rVh!hh"h#h$U transitionrWh&}rX(h(]h)]h*]h+]h-]uh/K`h0hh]ubhX)rY}rZ(h XThe services will be identified by some identifier that is uniquely associated with that service type. Included with the entry will be connection information so that a client application of the service type is able to connect and perform the necessary operations.r[h!hh"h#h$h\h&}r\(h(]h)]h*]h+]h-]uh/Kbh0hh]r]h9XThe services will be identified by some identifier that is uniquely associated with that service type. Included with the entry will be connection information so that a client application of the service type is able to connect and perform the necessary operations.r^r_}r`(h j[h!jYubaubhX)ra}rb(h XConnection to, and interaction with the advertised service is not defined by DataONE APIs. Only the availability of services that may be applicable to different object format types is advertised.rch!hh"h#h$h\h&}rd(h(]h)]h*]h+]h-]uh/Kgh0hh]reh9XConnection to, and interaction with the advertised service is not defined by DataONE APIs. Only the availability of services that may be applicable to different object format types is advertised.rfrg}rh(h jch!jaubaubhX)ri}rj(h XNote that there may be many services that can operate on a particular data type, and any particular service may support multiple types of content.rkh!hh"h#h$h\h&}rl(h(]h)]h*]h+]h-]uh/Kkh0hh]rmh9XNote that there may be many services that can operate on a particular data type, and any particular service may support multiple types of content.rnro}rp(h jkh!jiubaubhX)rq}rr(h XYThe association between service types and object format types will need to be maintained on a service by service basis, since particular service implementations may support different types of content. For example, one instance of OGC-WCS (Web Coverage Service) may support GeoTIFF imagery only, while another may support multiple raster formats.rsh!hh"h#h$h\h&}rt(h(]h)]h*]h+]h-]uh/Knh0hh]ruh9XYThe association between service types and object format types will need to be maintained on a service by service basis, since particular service implementations may support different types of content. For example, one instance of OGC-WCS (Web Coverage Service) may support GeoTIFF imagery only, while another may support multiple raster formats.rvrw}rx(h jsh!jqubaubhX)ry}rz(h XIf all service information is returned in getCapabilites, then the entry for a service record in the services list may be structured as (cardinality indicated in parentheses)::h!hh"h#h$h\h&}r{(h(]h)]h*]h+]h-]uh/Kth0hh]r|h9XIf all service information is returned in getCapabilites, then the entry for a service record in the services list may be structured as (cardinality indicated in parentheses):r}r~}r(h XIf all service information is returned in getCapabilites, then the entry for a service record in the services list may be structured as (cardinality indicated in parentheses):h!jyubaubcdocutils.nodes literal_block r)r}r(h X(1) (0..n) (1) {Unique Service Type identifier} (1) Descriptve human readable name of the service (0..1) Brief human readable description of service to be presented in user interfaces. (1) http://some.service.endpoint/here (1) (1..n) {Some format ID} ... ... h!hh"h#h$U literal_blockrh&}r(U xml:spacerUpreserverh+]h*]h(]h)]h-]uh/Kxh0hh]rh9X(1) (0..n) (1) {Unique Service Type identifier} (1) Descriptve human readable name of the service (0..1) Brief human readable description of service to be presented in user interfaces. (1) http://some.service.endpoint/here (1) (1..n) {Some format ID} ... ... rr}r(h Uh!jubaubhX)r}r(h XIf an API call is added to describe available services then it may be modelled as accessing a collection of services. For example::h!hh"h#h$h\h&}r(h(]h)]h*]h+]h-]uh/Kh0hh]rh9XIf an API call is added to describe available services then it may be modelled as accessing a collection of services. For example:rr}r(h XIf an API call is added to describe available services then it may be modelled as accessing a collection of services. For example:h!jubaubj)r}r(h XsURL: /v2/services API: MN.listServices() -> List of all services on node URL: /v2/services/service/{SERVICE_TYPE_ID} API: MN.getService(SERVICE_TYPE_ID) -> Service description UR: /v2/services/formats/{OBJECT_FORMAT_TYPE} API: MN.listFormatServices(object_format_type) -> List of services applicable to an object formath!hh"h#h$jh&}r(jjh+]h*]h(]h)]h-]uh/Kh0hh]rh9XsURL: /v2/services API: MN.listServices() -> List of all services on node URL: /v2/services/service/{SERVICE_TYPE_ID} API: MN.getService(SERVICE_TYPE_ID) -> Service description UR: /v2/services/formats/{OBJECT_FORMAT_TYPE} API: MN.listFormatServices(object_format_type) -> List of services applicable to an object formatrr}r(h Uh!jubaubhX)r}r(h X{A typical imagined user interaction scenario is described in MNSR-S01. Similar scenarios can be constructed for other combinations of data and service types. For example: a CSV subsetting service might return a selection of rows from a CSV file; a rendering service might provide a HTML rendering of different types of content (such as metadata, resource maps, and data objects).rh!hh"h#h$h\h&}r(h(]h)]h*]h+]h-]uh/Kh0hh]rh9X{A typical imagined user interaction scenario is described in MNSR-S01. Similar scenarios can be constructed for other combinations of data and service types. For example: a CSV subsetting service might return a selection of rows from a CSV file; a rendering service might provide a HTML rendering of different types of content (such as metadata, resource maps, and data objects).rr}r(h jh!jubaubhX)r}r(h X'Services advertised will likely be mostly third-party implemenations, though it is conceivable that this mechanism for advertising the availability of services might also be applied to advertising the availability of DataONE defined services that may be optional for Member Node implementations.rh!hh"h#h$h\h&}r(h(]h)]h*]h+]h-]uh/Kh0hh]rh9X'Services advertised will likely be mostly third-party implemenations, though it is conceivable that this mechanism for advertising the availability of services might also be applied to advertising the availability of DataONE defined services that may be optional for Member Node implementations.rr}r(h jh!jubaubh)r}r(h Uh!hh"h#h$h%h&}r(h(]h)]h*]h+]rhah-]rhauh/Kh0hh]r(h2)r}r(h X!Scenario MNSR-S01, Spatial Subsetrh!jh"h#h$h6h&}r(h(]h)]h*]h+]h-]uh/Kh0hh]rh9X!Scenario MNSR-S01, Spatial Subsetrr}r(h jh!jubaubhX)r}r(h XA user has a PID for a data object. Using a DataONE service aware client tool, the user discovers that the object is a fairly large (system metadata) set of imagery (system metadata, science metadata) that provides high resolution measurements on ground surface reflectance in the range of 400 to 700nm (science metadata). The science metaata describing the imagery indicates a very broad spatial coverage and the the file is too large to justify downloading for the small area of terrain being worked on.rh!jh"h#h$h\h&}r(h(]h)]h*]h+]h-]uh/Kh0hh]rh9XA user has a PID for a data object. Using a DataONE service aware client tool, the user discovers that the object is a fairly large (system metadata) set of imagery (system metadata, science metadata) that provides high resolution measurements on ground surface reflectance in the range of 400 to 700nm (science metadata). The science metaata describing the imagery indicates a very broad spatial coverage and the the file is too large to justify downloading for the small area of terrain being worked on.rr}r(h jh!jubaubhX)r}r(h XThe client tool indicates to the user that a Member Node holding a copy of the data is known to be running a service (MN.getCapabilities) that will allow extraction of a spatial window from the large data object (the OGC Web Coverage Service, indicated by a unique identifier associated with the service type) and also provides the URL of the GetCapabilities endpoint for the service.rh!jh"h#h$h\h&}r(h(]h)]h*]h+]h-]uh/Kh0hh]rh9XThe client tool indicates to the user that a Member Node holding a copy of the data is known to be running a service (MN.getCapabilities) that will allow extraction of a spatial window from the large data object (the OGC Web Coverage Service, indicated by a unique identifier associated with the service type) and also provides the URL of the GetCapabilities endpoint for the service.rr}r(h jh!jubaubhX)r}r(h XThe user utilizes an OGC-WCS client application to connect with the service operating on the Member Node and retrieves the desired window from the coverage identified by the PID.rh!jh"h#h$h\h&}r(h(]h)]h*]h+]h-]uh/Kh0hh]rh9XThe user utilizes an OGC-WCS client application to connect with the service operating on the Member Node and retrieves the desired window from the coverage identified by the PID.rr}r(h jh!jubaubeubh)r}r(h Uh!hh"h#h$h%h&}r(h(]h)]h*]h+]rhah-]rh auh/Kh0hh]r(h2)r}r(h XUse Case MNSR-UC01rh!jh"h#h$h6h&}r(h(]h)]h*]h+]h-]uh/Kh0hh]rh9XUse Case MNSR-UC01rr}r(h jh!jubaubhX)r}r(h XBA client application is able to discover services available at a Member Node through the MN.getCapabilities method. Services thus listed must also provide a link to getCapabilities of the service (or equivalent introspection or well known service endpoint) so that a compatible client may determine interaction parameters.rh!jh"h#h$h\h&}r(h(]h)]h*]h+]h-]uh/Kh0hh]rh9XBA client application is able to discover services available at a Member Node through the MN.getCapabilities method. Services thus listed must also provide a link to getCapabilities of the service (or equivalent introspection or well known service endpoint) so that a compatible client may determine interaction parameters.rr}r(h jh!jubaubeubh)r}r(h Uh!hh"h#h$h%h&}r(h(]h)]h*]h+]rhah-]rh auh/Kh0hh]r(h2)r}r(h XUse Case MNSR-UC02rh!jh"h#h$h6h&}r(h(]h)]h*]h+]h-]uh/Kh0hh]rh9XUse Case MNSR-UC02rr}r(h jh!jubaubhX)r}r(h X1A client application is able to discover services available from registered Member Nodes for a particular object formatType. As for Use Case MNS-UC01, service registrations must provide references to the respective introspection mechanisms so that a compatible client may determine interaction parameters.rh!jh"h#h$h\h&}r(h(]h)]h*]h+]h-]uh/Kh0hh]rh9X1A client application is able to discover services available from registered Member Nodes for a particular object formatType. As for Use Case MNS-UC01, service registrations must provide references to the respective introspection mechanisms so that a compatible client may determine interaction parameters.rr}r(h jh!jubaubeubeubeubah UU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh0hU current_linerNUtransform_messagesr ]r Ureporterr NUid_startr KU autofootnotesr ]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttps://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coder Uenr!U datestampr"NU report_levelr#KU _destinationr$NU halt_levelr%KU strip_classesr&Nh6NUerror_encoding_error_handlerr'Ubackslashreplacer(Udebugr)NUembed_stylesheetr*Uoutput_encoding_error_handlerr+Ustrictr,U sectnum_xformr-KUdump_transformsr.NU docinfo_xformr/KUwarning_streamr0NUpep_file_url_templater1Upep-%04dr2Uexit_status_levelr3KUconfigr4NUstrict_visitorr5NUcloak_email_addressesr6Utrim_footnote_reference_spacer7Uenvr8NUdump_pseudo_xmlr9NUexpose_internalsr:NUsectsubtitle_xformr;U source_linkr<NUrfc_referencesr=NUoutput_encodingr>Uutf-8r?U source_urlr@NUinput_encodingrAU utf-8-sigrBU_disable_configrCNU id_prefixrDUU tab_widthrEKUerror_encodingrFUUTF-8rGU_sourcerHh#Ugettext_compactrIU generatorrJNUdump_internalsrKNU smart_quotesrLU pep_base_urlrMU https://www.python.org/dev/peps/rNUsyntax_highlightrOUlongrPUinput_encoding_error_handlerrQj,Uauto_id_prefixrRUidrSUdoctitle_xformrTUstrip_elements_with_classesrUNU _config_filesrV]Ufile_insertion_enabledrWU raw_enabledrXKU dump_settingsrYNubUsymbol_footnote_startrZKUidsr[}r\(hhhhhhchjhjhjuUsubstitution_namesr]}r^h$h0h&}r_(h(]h+]h*]Usourceh#h)]h-]uU footnotesr`]raUrefidsrb}rcub.