[{"data":1,"prerenderedAt":5033},["ShallowReactive",2],{"navigation-docsEN":3,"navigation-blogEN":725,"docs-EN-\u002Fdocs\u002Fconnectors\u002Fodoo":743,"docsNav-EN-\u002Fdocs":2988,"docsSecNav-EN-\u002Fdocs\u002Fconnectors\u002Fodoo":3188},[4],{"title":5,"path":6,"stem":7,"children":8},"Docs","\u002Fdocs","docs",[9,22,41,53,74,88,114,128,156,167,182,206,412,428,572,647,662,669],{"title":10,"path":6,"stem":11,"description":12,"icon":13,"tags":14},"Documentation","docs\u002Findex","Introduction to documentation on EPCIS and OpenEPCIS tools","heroicons-outline:document-text",[15,16,17,18,19,20,21],"openepcis","epcis-2-0","epcis-documentation","epcis-standard","open-core","open-source","epcis-tools",{"title":23,"path":24,"stem":25,"children":26,"description":28,"icon":29,"tags":40},"Introduction","\u002Fdocs\u002Fintroduction","docs\u002F01.introduction\u002Findex",[27],{"title":23,"path":24,"stem":25,"description":28,"icon":29,"tags":30},"Why EPCIS is necessary and how it can help organizations of all sizes and types.","heroicons-outline:globe-alt",[16,31,32,33,34,35,36,37,38,39],"epcis","epcis-1-2","gs1-epcis-standard","supply-chain","traceability","data-sharing","tracking","tracing","visibility-events",[16,31,32,33,34,35,36,37,38,39],{"title":42,"path":43,"stem":44,"children":45,"description":47,"icon":48,"tags":52},"EPCIS","\u002Fdocs\u002Fepcis","docs\u002F02.epcis\u002Findex",[46],{"title":42,"path":43,"stem":44,"description":47,"icon":48,"tags":49},"Discover the specifics of EPCIS, how it works, and what OpenEPCIS is.","i-custom-open-epcis",[16,31,32,33,50,51,39],"iso-iec-19987","iso-iec-19988",[16,31,32,33,50,51,39],{"title":54,"path":55,"stem":56,"children":57,"description":59,"icon":60,"tags":73},"Format Converter","\u002Fdocs\u002Fformat-converter","docs\u002F03.format-converter\u002Findex",[58],{"title":54,"path":55,"stem":56,"description":59,"icon":60,"tags":61},"OpenEPCIS solution to convert EPCIS 2.0 and 1.2 document or single event from XML to JSON\u002FJSON-LD and vice versa.","heroicons-outline:arrows-right-left",[16,62,63,64,65,66,67,21,68,69,70,71,72],"json","json-ld","xml","events","format-converter","convert","convert-epcis-events","format","converter","epcis-tool","tools",[16,62,63,64,65,66,67,21,68,69,70,71,72],{"title":75,"path":76,"stem":77,"children":78,"description":80,"icon":81,"tags":87},"Version Converter","\u002Fdocs\u002Fversion-converter","docs\u002F04.version-converter\u002Findex",[79],{"title":75,"path":76,"stem":77,"description":80,"icon":81,"tags":82},"OpenEPCIS solution to convert EPCIS XML document from version 1.2 to 2.0 and vice versa.","heroicons:arrows-up-down",[16,32,62,63,64,65,83,67,21,84,85,86,70,71,72],"version-converter","convert-epcis-version","version","epcis-version",[16,32,62,63,64,65,83,67,21,84,85,86,70,71,72],{"title":89,"path":90,"stem":91,"children":92,"description":94,"icon":95,"tags":113},"Identifier Converter","\u002Fdocs\u002Fidentifier-converter","docs\u002F05.identifier-converter\u002Findex",[93],{"title":89,"path":90,"stem":91,"description":94,"icon":95,"tags":96},"OpenEPCIS solution to convert EPCIS instance or class identifier from URN to digital link WebURI and vice versa.","i-heroicons-link",[16,97,98,99,100,101,21,102,103,104,105,106,107,108,109,110,111,112],"gs1-digital-link","urn-format","epc-uri","epc","weburi","gs1-standard","gs1","sscc","gtin","giai","grai","gdti","lgtin","sgtin","gln","gcp",[16,97,98,99,100,101,21,102,103,104,105,106,107,108,109,110,111,112],{"title":115,"path":116,"stem":117,"children":118,"description":120,"icon":121,"tags":127},"Event Hash Generator","\u002Fdocs\u002Fevent-hash-generator","docs\u002F06.event-hash-generator\u002Findex",[119],{"title":115,"path":116,"stem":117,"description":120,"icon":121,"tags":122},"OpenEPCIS solution to generate unique event hash for EPCIS XML or JSON\u002FJSON-LD document or event list.","heroicons-outline:finger-print",[16,123,62,63,64,65,21,124,125,126,71,72],"event-hash","event","hash","generator",[16,123,62,63,64,65,21,124,125,126,71,72],{"title":129,"path":130,"stem":131,"children":132,"description":134,"icon":135,"tags":155},"Test Data Generator","\u002Fdocs\u002Ftest-data-generator","docs\u002F07.test-data-generator\u002Findex",[133,137],{"title":129,"path":130,"stem":131,"description":134,"icon":135,"tags":136},"OpenEPCIS solution to generate a large set of EPCIS test data events for all use cases\u002Fsupply chain requirements.","heroicons-outline:cog",[16,123,62,63,64,65,21,124,125,126,71,72],{"title":138,"path":139,"stem":140,"children":141,"description":143,"icon":144,"tags":154},"EPCIS Implementation Guidelines","\u002Fdocs\u002Ftest-data-generator\u002Fgs1-epcis-implementation-guidelines","docs\u002F07.test-data-generator\u002F01.gs1-epcis-implementation-guidelines\u002Findex",[142],{"title":138,"path":139,"stem":140,"description":143,"icon":144,"tags":145},"EPCIS event examples from the GS1 EPCIS and CBV implementation guidelines, modeled with the OpenEPCIS Test Data Generator.","heroicons-outline:badge-check",[16,62,63,146,21,147,148,149,35,150,151,152,153],"testing","test-data-generator","design","design-template","process-automation","compliance","supply-chain-management","load-tests",[16,62,63,146,21,147,148,149,35,150,151,152,153],[16,123,62,63,64,65,21,124,125,126,71,72],{"title":157,"path":158,"stem":159,"children":160,"description":162,"icon":163,"tags":166},"Test Resource Management","\u002Fdocs\u002Ftest-resource-management","docs\u002F08.test-resource-management\u002Findex",[161],{"title":157,"path":158,"stem":159,"description":162,"icon":163,"tags":164},"Collection of EPCIS 1.2\u002F2.0 documents\u002Fevents in XML\u002FJSON\u002FJSON-LD formats, intended for various testing purposes","heroicons-outline:archive-box",[16,62,63,146,21,165,35,150,151,152,153],"performance-tests",[16,62,63,146,21,165,35,150,151,152,153],{"title":168,"path":169,"stem":170,"children":171,"description":173,"icon":174,"tags":181},"Vocabulary Management","\u002Fdocs\u002Fvocabulary-management","docs\u002F09.vocabulary-management\u002Findex",[172],{"title":168,"path":169,"stem":170,"description":173,"icon":174,"tags":175},"Collection of standardized constants and strings for EPCIS event data.","heroicons-outline:book-open",[16,176,15,177,21,178,35,179,151,152,180],"constants","centralization","standardization","vocabulary","data-dictionary",[16,176,15,177,21,178,35,179,151,152,180],{"title":183,"path":184,"stem":185,"children":186,"description":188,"icon":189,"tags":205},"Dependency Management","\u002Fdocs\u002Fdependency-management","docs\u002F10.dependency-management\u002Findex",[187],{"title":183,"path":184,"stem":185,"description":188,"icon":189,"tags":190},"Centralized Maven Bill of Materials (BOM) for all the OpenEPCIS modules.","heroicons-outline:folder",[191,15,192,193,194,195,196,31,197,198,199,200,201,202,203,204],"maven-bom","dependency-management","java-dependencies","pom","software-dependencies","version-control","open-source-java","build-management","modular-software","dependency-resolution","java-libraries","maven-project","centralized-dependencies","dependency-consistency",[191,15,192,193,194,195,196,31,197,198,199,200,201,202,203,204],{"title":207,"path":208,"stem":209,"children":210,"description":212,"icon":213,"tags":411},"Digital Product Passport","\u002Fdocs\u002Fdigital-product-passport","docs\u002F11.digital-product-passport\u002Findex",[211,221,234,269,307,334,348,356,363,373,400],{"title":207,"path":208,"stem":209,"description":212,"icon":213,"tags":214},"Introduction to Digital Product Passport and how EPCIS enables product traceability for DPP compliance.","heroicons-outline:identification",[215,216,217,31,218,35,219,220],"digital-product-passport","dpp","eu-regulation","sustainability","circular-economy","gs1-web-vocabulary",{"title":222,"path":223,"stem":224,"children":225,"description":227,"icon":228,"tags":233},"ESPR Framework","\u002Fdocs\u002Fdigital-product-passport\u002Fespr-framework","docs\u002F11.digital-product-passport\u002F00.espr-framework\u002Findex",[226],{"title":222,"path":223,"stem":224,"description":227,"icon":228,"tags":229},"Guide to the EU Ecodesign for Sustainable Products Regulation (ESPR) 2024\u002F1781 and how OpenEPCIS supports Digital Product Passport requirements.","heroicons-outline:shield-check",[230,231,218,216,217,232],"espr","ecodesign","en-standards",[230,231,218,216,217,232],{"title":235,"path":236,"stem":237,"children":238,"description":240,"icon":241,"tags":268},"Battery DPP","\u002Fdocs\u002Fdigital-product-passport\u002Fbattery-dpp","docs\u002F11.digital-product-passport\u002F01.battery-dpp\u002Findex",[239,246,252,259],{"title":235,"path":236,"stem":237,"description":240,"icon":241,"tags":242},"GS1-native implementation of EU Battery Regulation 2023\u002F1542 Digital Product Passport using EPCIS 2.0","heroicons:battery-100",[243,244,216,31,103,35,218,245],"battery","eu-battery-regulation","due-diligence",{"title":247,"path":248,"stem":249,"description":250,"icon":174,"tags":251},"Implementation Guide","\u002Fdocs\u002Fdigital-product-passport\u002Fbattery-dpp\u002Fimplementation-guide","docs\u002F11.digital-product-passport\u002F01.battery-dpp\u002F01.implementation-guide","Step-by-step guide for implementing a GS1-native Battery Digital Product Passport with OpenEPCIS extensions",[243,244,216,31,220],{"title":253,"path":254,"stem":255,"description":256,"icon":257,"tags":258},"Event Types","\u002Fdocs\u002Fdigital-product-passport\u002Fbattery-dpp\u002Fevent-types","docs\u002F11.digital-product-passport\u002F01.battery-dpp\u002F02.event-types","Complete reference for all EPCIS event types and sensor measurements in the Battery DPP","heroicons-outline:collection",[243,31,65,39,216],{"title":260,"path":261,"stem":262,"description":263,"icon":13,"tags":264},"Complete Examples","\u002Fdocs\u002Fdigital-product-passport\u002Fbattery-dpp\u002Fcomplete-examples","docs\u002F11.digital-product-passport\u002F01.battery-dpp\u002F05.complete-examples","Reference Battery Digital Product Passport examples mapped to EU Battery Regulation 2023\u002F1542 Annex XIII",[243,265,266,63,267,245],"examples","annex-xiii","carbon-footprint",[243,244,216,31,103,35,218,245],{"title":270,"path":271,"stem":272,"children":273,"description":275,"icon":276,"tags":306},"EUDR","\u002Fdocs\u002Fdigital-product-passport\u002Feudr","docs\u002F11.digital-product-passport\u002F02.eudr\u002Findex",[274,281,287,292,300],{"title":270,"path":271,"stem":272,"description":275,"icon":276,"tags":277},"GS1-native implementation of EU Deforestation Regulation 2023\u002F1115 compliance using EPCIS 2.0","heroicons-outline:globe-europe-africa",[278,279,280,216,31,103,35,218,245],"eudr","deforestation","timber",{"title":247,"path":282,"stem":283,"description":284,"icon":285,"tags":286},"\u002Fdocs\u002Fdigital-product-passport\u002Feudr\u002Fimplementation-guide","docs\u002F11.digital-product-passport\u002F02.eudr\u002F01.implementation-guide","Step-by-step guide for implementing EU Deforestation Regulation compliance using GS1 standards",null,[278,279,280,216,31,245],{"title":253,"path":288,"stem":289,"description":290,"icon":285,"tags":291},"\u002Fdocs\u002Fdigital-product-passport\u002Feudr\u002Fevent-types","docs\u002F11.digital-product-passport\u002F02.eudr\u002F02.event-types","EPCIS event types for EU Deforestation Regulation compliance",[278,31,65,39,216],{"title":293,"path":294,"stem":295,"description":296,"icon":285,"tags":297},"URL Patterns","\u002Fdocs\u002Fdigital-product-passport\u002Feudr\u002Furl-patterns","docs\u002F11.digital-product-passport\u002F02.eudr\u002F03.url-patterns","GS1 Digital Link URL patterns for EUDR implementations",[278,97,298,299,216,245],"resolver","linkset",{"title":260,"path":301,"stem":302,"description":303,"icon":13,"tags":304},"\u002Fdocs\u002Fdigital-product-passport\u002Feudr\u002Fcomplete-examples","docs\u002F11.digital-product-passport\u002F02.eudr\u002F04.complete-examples","Reference EUDR examples — timber product passport, derived product, regulatory notification, harvesting \u002F origin-declaration \u002F processing \u002F supply-chain-transfer \u002F exemption events",[278,265,280,245,305],"geolocation",[278,279,280,216,31,103,35,218,245],{"title":308,"path":309,"stem":310,"children":311,"description":313,"icon":314,"tags":333},"Textile DPP","\u002Fdocs\u002Fdigital-product-passport\u002Ftextile","docs\u002F11.digital-product-passport\u002F03.textile\u002Findex",[312,320,327],{"title":308,"path":309,"stem":310,"description":313,"icon":314,"tags":315},"Digital Product Passport vocabulary for textiles and apparel under the EU Sustainable Textiles Strategy and ESPR 2024\u002F1781.","heroicons-outline:sparkles",[316,317,318,216,218,319],"textile","apparel","footwear","fibre-composition",{"title":247,"path":321,"stem":322,"description":323,"icon":324,"tags":325},"\u002Fdocs\u002Fdigital-product-passport\u002Ftextile\u002Fimplementation-guide","docs\u002F11.digital-product-passport\u002F03.textile\u002F01.implementation-guide","How to assemble a Textile Digital Product Passport against the published openepcis-dpp-ready textile vocabulary","heroicons-outline:scissors",[316,317,318,326],"implementation",{"title":260,"path":328,"stem":329,"description":330,"icon":13,"tags":331},"\u002Fdocs\u002Fdigital-product-passport\u002Ftextile\u002Fcomplete-examples","docs\u002F11.digital-product-passport\u002F03.textile\u002F02.complete-examples","Reference Textile Digital Product Passport documents covering apparel and footwear",[316,265,317,318,332,63],"fiber-composition",[316,317,318,216,218,319],{"title":335,"path":336,"stem":337,"children":338,"description":340,"icon":60,"tags":347},"Interoperability","\u002Fdocs\u002Fdigital-product-passport\u002Finteroperability","docs\u002F11.digital-product-passport\u002F04.interoperability\u002Findex",[339],{"title":335,"path":336,"stem":337,"description":340,"icon":60,"tags":341},"Guide to OpenEPCIS DPP interoperability with GS1, UNTP, CIRPASS2, and ESPR standards.",[342,343,103,344,230,345,346,220],"interoperability","untp","cirpass2","standards","alignment",[342,343,103,344,230,345,346,220],{"title":349,"path":350,"stem":351,"description":352,"icon":29,"tags":353},"DPP Resolution Flow","\u002Fdocs\u002Fdigital-product-passport\u002Fdpp-resolution-flow","docs\u002F11.digital-product-passport\u002F05.dpp-resolution-flow","How OpenEPCIS combined GS1 Digital Link, the IETF linkset format and content negotiation into one DPP resolution flow",[354,97,299,355,298],"walkthrough","content-negotiation",{"title":357,"path":358,"stem":359,"description":360,"icon":361,"tags":362},"Resolver Setup","\u002Fdocs\u002Fdigital-product-passport\u002Fresolver-setup","docs\u002F11.digital-product-passport\u002F06.resolver-setup","How to expose your DPP behind a GS1 Digital Link resolver","heroicons-outline:server",[298,97,299],{"title":364,"path":365,"stem":366,"description":367,"icon":368,"tags":369},"Multi-Component Example","\u002Fdocs\u002Fdigital-product-passport\u002Fmulti-component-example","docs\u002F11.digital-product-passport\u002F07.multi-component-example","How a composite product references separately-passported components via standard GS1 Digital Link and EPCIS aggregation","heroicons-outline:puzzle-piece",[370,371,372,344],"example","components","aggregation",{"title":374,"path":375,"stem":376,"children":377,"description":379,"icon":380,"tags":399},"Electronics DPP","\u002Fdocs\u002Fdigital-product-passport\u002Felectronics","docs\u002F11.digital-product-passport\u002F08.electronics\u002Findex",[378,387,392],{"title":374,"path":375,"stem":376,"description":379,"icon":380,"tags":381},"Digital Product Passport vocabulary for electronic devices under ESPR, the French Repairability Index, EU Right to Repair and WEEE.","heroicons-outline:device-phone-mobile",[382,383,384,385,386],"electronics","repairability","weee","energy-label","right-to-repair",{"title":247,"path":388,"stem":389,"description":390,"icon":174,"tags":391},"\u002Fdocs\u002Fdigital-product-passport\u002Felectronics\u002Fimplementation-guide","docs\u002F11.digital-product-passport\u002F08.electronics\u002F01.implementation-guide","How to assemble an Electronics Digital Product Passport against the published openepcis-dpp-ready electronics vocabulary",[382,326,383,384,385],{"title":260,"path":393,"stem":394,"description":395,"icon":13,"tags":396},"\u002Fdocs\u002Fdigital-product-passport\u002Felectronics\u002Fcomplete-examples","docs\u002F11.digital-product-passport\u002F08.electronics\u002F02.complete-examples","Reference Electronics Digital Product Passport documents covering smartphone, laptop, display and server",[382,265,397,398,63],"smartphone","laptop",[382,383,384,385,386],{"title":401,"path":402,"stem":403,"description":404,"icon":228,"tags":405},"Signed Passports","\u002Fdocs\u002Fdigital-product-passport\u002Fsigned-passports","docs\u002F11.digital-product-passport\u002F09.signed-passports","How OpenEPCIS signs product passports so that software nobody here wrote can verify them — W3C Data Integrity, did:web, and the canonicalization layer that decides whether a signature travels.",[406,407,408,409,342,410],"verifiable-credentials","data-integrity","did-web","canonicalization","trust",[215,216,217,31,218,35,219,220],{"title":413,"path":414,"stem":415,"children":416,"description":418,"icon":419,"tags":427},"Profile Checker","\u002Fdocs\u002Fprofile-checker","docs\u002F12.profile-checker\u002Findex",[417],{"title":413,"path":414,"stem":415,"description":418,"icon":419,"tags":420},"OpenEPCIS tool to define EPCIS event profiles as JSON Schema and validate EPCIS documents or events against them.","heroicons-outline:clipboard-document-check",[16,421,422,423,424,425,426,21,72],"event-profile","profile-checker","json-schema","validation","data-quality","conformance",[16,421,422,423,424,425,426,21,72],{"title":429,"path":430,"stem":431,"children":432,"description":434,"icon":435,"tags":571},"Digital Data Management","\u002Fdocs\u002Fdigital-data-management","docs\u002F13.digital-data-management\u002Findex",[433,440,452,462,473,484,493,505,515,526,535,547,559],{"title":429,"path":430,"stem":431,"description":434,"icon":435,"tags":436},"End-user guide to OpenEPCIS Digital Data Management — curate GS1 master data, publish digital product passports, manage resolver links and analyze scans.","heroicons-outline:circle-stack",[437,438,215,97,439,298],"ddm","master-data","catalog",{"title":441,"path":442,"stem":443,"description":444,"icon":445,"tags":446},"Getting Started","\u002Fdocs\u002Fdigital-data-management\u002Fgetting-started","docs\u002F13.digital-data-management\u002F01.getting-started","Signing in to Digital Data Management, finding your way around the catalog workspace, and setting up your profile and integration tokens.","heroicons-outline:rocket-launch",[437,447,448,449,450,451],"login","keycloak","workspace","roles","profile",{"title":453,"path":454,"stem":455,"description":456,"icon":457,"tags":458},"Products","\u002Fdocs\u002Fdigital-data-management\u002Fproduct-catalog","docs\u002F13.digital-data-management\u002F02.product-catalog","The DDM product catalog — creating products from a passport type, importing in bulk, and keeping the catalog tidy.","heroicons-outline:cube",[437,459,105,460,461,439],"products","passport-type","bulk-import",{"title":463,"path":464,"stem":465,"description":466,"icon":467,"tags":468},"Passport Editor","\u002Fdocs\u002Fdigital-data-management\u002Fpassport-editor","docs\u002F13.digital-data-management\u002F03.passport-editor","One editor for products, organizations and places — ontology-generated forms, rich field widgets, GS1 validation, access levels and full version history.","heroicons-outline:pencil-square",[437,469,63,424,470,471,472],"editor","gpc","access-level","versions",{"title":474,"path":475,"stem":476,"description":477,"icon":478,"tags":479},"Organizations & Places","\u002Fdocs\u002Fdigital-data-management\u002Forganizations-and-places","docs\u002F13.digital-data-management\u002F04.organizations-and-places","GLN-keyed party and location records in DDM — organization roles, primary locations, and the public GLN information pages.","heroicons-outline:building-office-2",[437,480,481,111,482,483],"organizations","places","party","location",{"title":485,"path":486,"stem":487,"description":488,"icon":489,"tags":490},"Linksets","\u002Fdocs\u002Fdigital-data-management\u002Flinksets","docs\u002F13.digital-data-management\u002F05.linksets","Managing the resolver links behind every scan — the linkset explorer, the ownership model, and templated links that adapt to the scanned code.","heroicons-outline:link",[437,299,97,298,491,492],"linktype","templated-links",{"title":494,"path":495,"stem":496,"description":497,"icon":498,"tags":499},"Public Passports","\u002Fdocs\u002Fdigital-data-management\u002Fpublic-passports","docs\u002F13.digital-data-management\u002F06.public-passports","What consumers see — the demo gallery, the passport viewer at model, lot and item level, and template-driven rendering.","heroicons-outline:qr-code",[437,500,501,502,503,504],"passport","qr-code","consumer","templates","digital-link",{"title":506,"path":507,"stem":508,"description":509,"icon":419,"tags":510},"Passport Templates","\u002Fdocs\u002Fdigital-data-management\u002Fpassport-templates","docs\u002F13.digital-data-management\u002F07.passport-templates","What each passport type asks for — field obligations, hidden fields and creation defaults, layered from shipped defaults to deployment and tenant overrides.",[437,503,511,512,513,514],"requirements","obligations","creation-defaults","dpp-ready",{"title":516,"path":517,"stem":518,"description":519,"icon":520,"tags":521},"Field Access","\u002Fdocs\u002Fdigital-data-management\u002Ffield-access","docs\u002F13.digital-data-management\u002F08.field-access","Deciding which data fields consumers, operators and authorities can see — tier by tier, with persona preview and a reviewer workflow.","heroicons-outline:lock-closed",[437,522,523,230,524,525],"field-access","access-tiers","governance","skos",{"title":527,"path":528,"stem":529,"description":530,"icon":29,"tags":531},"Resolver Domains","\u002Fdocs\u002Fdigital-data-management\u002Fresolver-domains","docs\u002F13.digital-data-management\u002F09.resolver-domains","Serving GS1 Digital Links from your own hostname — CNAME setup, verification, and test prefixes to try it without a GS1 license.",[437,298,532,533,534,112],"custom-domain","cname","dns",{"title":536,"path":537,"stem":538,"description":539,"icon":540,"tags":541},"GS1 Sync","\u002Fdocs\u002Fdigital-data-management\u002Fgs1-sync","docs\u002F13.digital-data-management\u002F10.gs1-sync","Publishing your catalog to GS1 Germany — service tokens, licensed prefixes, the key pool, Verified by GS1, and the per-record Sync tab.","heroicons-outline:arrow-path",[437,542,543,544,545,546],"gs1-germany","sync","service-token","key-pool","verified-by-gs1",{"title":548,"path":549,"stem":550,"description":551,"icon":552,"tags":553},"Scan Analytics","\u002Fdocs\u002Fdigital-data-management\u002Fscan-analytics","docs\u002F13.digital-data-management\u002F11.scan-analytics","What only a resolver can know — anonymous scan statistics, demand insights, and a live privacy report that shows exactly what is and is not collected.","heroicons-outline:chart-bar",[437,554,555,556,557,558],"scans","analytics","privacy","k-anonymity","insights",{"title":560,"path":561,"stem":562,"description":563,"icon":564,"tags":565},"Integration Tokens","\u002Fdocs\u002Fdigital-data-management\u002Fconnector-tokens","docs\u002F13.digital-data-management\u002F12.connector-tokens","How a machine gets its own long-lived credential for your catalog — issuing an offline token, naming it, seeing what it did, and revoking it when the system it belonged to is retired.","heroicons-outline:key",[437,566,567,568,569,570,448],"integration","offline-token","connector","erp","pim",[437,438,215,97,439,298],{"title":573,"path":574,"stem":575,"children":576,"description":578,"icon":579},"OpenEPCIS Overview","\u002Fdocs\u002Fplatform-overview","docs\u002F14.platform-overview\u002Findex",[577,580,586,592],{"title":573,"path":574,"stem":575,"description":578,"icon":579},"A GS1-conformant supply-chain data platform — Resolver, Masterdata, EPCIS Events — in open source and business editions.","lucide:layout-dashboard",{"title":581,"path":582,"stem":583,"description":584,"icon":585},"Architecture","\u002Fdocs\u002Fplatform-overview\u002Farchitecture","docs\u002F14.platform-overview\u002F01.architecture","How OpenEPCIS handles identity, isolation, events, and GS1 conformance — the four things that distinguish the platform.","lucide:cpu",{"title":587,"path":588,"stem":589,"description":590,"icon":591},"Feature Matrix","\u002Fdocs\u002Fplatform-overview\u002Ffeature-matrix","docs\u002F14.platform-overview\u002F02.feature-matrix","OpenEPCIS capabilities by edition, aligned to the relevant GS1 standards.","lucide:check-square",{"title":593,"path":594,"stem":595,"children":596,"description":598,"icon":599},"Modules","\u002Fdocs\u002Fplatform-overview\u002Fmodules","docs\u002F14.platform-overview\u002Fmodules\u002Findex",[597,600,607,615,623,629,635,641],{"title":593,"path":594,"stem":595,"description":598,"icon":599},"Seven module families that organise the OpenEPCIS platform — Resolver, Masterdata, EPCIS Events, Formats & Validation, Integration, Testdata, Platform.","lucide:layers",{"title":601,"path":602,"stem":603,"description":604,"icon":605,"tags":606},"GS1 Conformant Resolver","\u002Fdocs\u002Fplatform-overview\u002Fmodules\u002Fresolver","docs\u002F14.platform-overview\u002Fmodules\u002F01.resolver","Resolves GS1 Digital Link URIs to product information, masterdata, EPCIS endpoints, and twelve more standard link types.","lucide:link-2",[298,97,103,299,220],{"title":608,"path":609,"stem":610,"description":611,"icon":612,"tags":613},"GS1 Web Vocabulary & Masterdata","\u002Fdocs\u002Fplatform-overview\u002Fmodules\u002Fmasterdata","docs\u002F14.platform-overview\u002Fmodules\u002F02.masterdata","Web Vocabulary models, masterdata-to-resolver REST pattern, GS1 Germany Activate Plus \u002F GEPIR sync, and the event-driven masterdata bus.","lucide:database",[220,614,103,298,63],"masterdata",{"title":616,"path":617,"stem":618,"description":619,"icon":620,"tags":621},"EPCIS Events — Capture, Query, Subscriptions","\u002Fdocs\u002Fplatform-overview\u002Fmodules\u002Fepcis-events","docs\u002F14.platform-overview\u002Fmodules\u002F03.epcis-events","EPCIS 2.0 REST and SOAP, live streaming subscriptions, resilient pagination, OpenSearch event store.","lucide:activity",[39,16,31,65,622,35],"subscriptions",{"title":624,"path":625,"stem":626,"description":627,"icon":628},"Formats, Validation & Identity","\u002Fdocs\u002Fplatform-overview\u002Fmodules\u002Fformats","docs\u002F14.platform-overview\u002Fmodules\u002F04.formats","XML ↔ JSON-LD conversion, multi-layer validation, identifier translation, idempotent event hashing.","lucide:file-check",{"title":630,"path":631,"stem":632,"description":633,"icon":634},"Integration & Gateways","\u002Fdocs\u002Fplatform-overview\u002Fmodules\u002Fintegration","docs\u002F14.platform-overview\u002Fmodules\u002F05.integration","AS2 gateway for EDI partners, cloud storage, file service, natural-language AI assistant.","lucide:plug",{"title":636,"path":637,"stem":638,"description":639,"icon":640},"Testdata & Developer Tooling","\u002Fdocs\u002Fplatform-overview\u002Fmodules\u002Ftestdata","docs\u002F14.platform-overview\u002Fmodules\u002F06.testdata","Synthetic EPCIS test event generation, reference event collections, conformance test suite, SDKs.","lucide:wrench",{"title":642,"path":643,"stem":644,"description":645,"icon":646},"Platform, Build & Observability","\u002Fdocs\u002Fplatform-overview\u002Fmodules\u002Fplatform","docs\u002F14.platform-overview\u002Fmodules\u002F07.platform","How OpenEPCIS is built, deployed, and observed.","lucide:server",{"title":648,"path":649,"stem":650,"children":651,"description":653,"icon":29,"tags":661},"Vision","\u002Fdocs\u002Fvision","docs\u002F15.vision\u002Findex",[652],{"title":648,"path":649,"stem":650,"description":653,"icon":29,"tags":654},"How UNTP, DIDs, Verifiable Credentials, and EPCIS work together to create unified product identity infrastructure for the connected supply chain.",[655,656,657,406,343,658,659,660],"vision","digital-twin","did","rfid","industry-4-0","web-3-0",[655,656,657,406,343,658,659,660],{"title":663,"path":664,"stem":665,"children":666,"description":668,"icon":634},"API Reference","\u002Fdocs\u002Fapi-reference","docs\u002F16.api-reference\u002Findex",[667],{"title":663,"path":664,"stem":665,"description":668,"icon":634},"Interactive OpenAPI references for the GS1 Digital Link Resolver and the EPCIS 2.0 REST bindings.",{"title":670,"path":671,"stem":672,"children":673,"description":675,"icon":540,"tags":724},"Connectors","\u002Fdocs\u002Fconnectors","docs\u002F16.connectors\u002Findex",[674,682,692,701,707,717],{"title":670,"path":671,"stem":672,"description":675,"icon":540,"tags":676},"How the master data you already keep in a PIM or an ERP becomes two passport forms, a stream of EPCIS events and a resolvable GS1 Digital Link — and how far each connector has come.",[677,678,679,680,681,215,31,298],"connectors","unopim","odoo","erpnext","metasfresh",{"title":683,"path":684,"stem":685,"description":686,"icon":60,"tags":687},"How It Works","\u002Fdocs\u002Fconnectors\u002Fhow-a-connector-works","docs\u002F16.connectors\u002F01.how-a-connector-works","The mechanics of a connector — the outbound half that polls, maps and publishes, the inbound bridge that answers identity questions, and the design rules the code holds you to.",[677,543,688,689,690,691],"mapping","bridge","webhook","idempotency",{"title":693,"path":694,"stem":695,"description":696,"icon":697,"tags":698},"Identifiers","\u002Fdocs\u002Fconnectors\u002Fidentifiers-gtin-and-sku","docs\u002F16.connectors\u002F02.identifiers-gtin-and-sku","One product needs exactly one GS1 identifier — the GTIN. Where the connector finds it, why your SKU is a different thing, and how batch, serial and logistics-unit levels build on top.","heroicons-outline:hashtag",[677,105,699,109,110,104,700],"sku","check-digit",{"title":702,"path":703,"stem":704,"description":705,"icon":540,"tags":706},"UnoPim","\u002Fdocs\u002Fconnectors\u002Funopim","docs\u002F16.connectors\u002F03.unopim","The whole UnoPim route — what has to exist in the PIM, how the connection is configured, what the first sync publishes, and where the data surfaces in DDM and on the published passport page.",[677,678,570,105,688,690,500],{"title":708,"path":709,"stem":710,"description":711,"icon":228,"tags":712},"Events & Credentials","\u002Fdocs\u002Fconnectors\u002Fevents-credentials-and-representations","docs\u002F16.connectors\u002F04.events-credentials-and-representations","What happens after a record is published — how a movement in your source system becomes an EPCIS event, where UNTP answers the same question differently, and how a passport gains a signed, selectively disclosed representation.",[677,31,65,713,714,715,406,343,523,716],"event-types","transformation","error-declaration","representations",{"title":718,"path":719,"stem":720,"description":721,"icon":457,"tags":722},"Odoo walkthrough","\u002Fdocs\u002Fconnectors\u002Fodoo","docs\u002F16.connectors\u002F05.odoo","One warehouse day walked through end to end — goods in, packed onto a pallet, shipped, part of it back, the rest ground into another article, and one report taken back — with the screen and the EPCIS event it produces side by side.",[677,679,31,65,104,372,714,723],"tutorial",[677,678,679,680,681,215,31,298],[726],{"title":727,"path":728,"stem":729,"children":730,"page":742},"Blog","\u002Fblog","blog",[731,737],{"title":732,"path":733,"stem":734,"description":735,"icon":736},"The Web-based DPP doesn't need new infrastructure","\u002Fblog\u002Fdpp-stack-for-agents","blog\u002F01.dpp-stack-for-agents","Three GS1 standards — Digital Link, Web Vocabulary, Conformant Resolver — plus EPCIS 2.0 already cover the agent-facing layer of the Digital Product Passport.","heroicons-outline:newspaper",{"title":738,"path":739,"stem":740,"description":741,"icon":736},"Fascinating in Theory. It Just Doesn't Work in Practice.","\u002Fblog\u002Fblockchain-traceability","blog\u002F02.blockchain-traceability","Why blockchain is the wrong answer to traceability, and why it refuses to die anyway.",false,{"doc":744,"usedFallback":742},{"id":745,"title":746,"body":747,"description":721,"extension":2967,"icon":457,"lastUpdated":2968,"meta":2969,"navigation":2980,"path":719,"seo":2982,"sitemap":2983,"stem":720,"__hash__":2987},"docsEN\u002Fdocs\u002F16.connectors\u002F05.odoo.md","The Odoo connector, step by step",{"type":748,"value":749,"toc":2946},"minimark",[750,755,759,762,765,782,786,796,803,810,816,823,832,843,846,852,855,1030,1045,1050,1059,1065,1085,1089,1092,1098,1385,1388,1416,1426,1432,1442,1446,1453,1459,1465,1469,1472,1478,1485,1620,1627,1742,1745,1752,1756,1759,1864,1871,2067,2070,2074,2081,2095,2251,2258,2262,2269,2272,2400,2407,2411,2418,2424,2575,2585,2589,2592,2598,2824,2831,2842,2846,2853,2859,2874,2877,2883,2893,2899,2903,2910,2929,2933,2942],[751,752,754],"h2",{"id":753},"what-this-page-is","What this page is",[756,757,758],"p",{},"The connector pages before this one explain what a connector does and why an event carries the identifiers it carries. This one does none of that explaining. It walks one warehouse day through Odoo and shows, at every step, the screen you are looking at and the EPCIS event that came out of it.",[756,760,761],{},"The day is a small one on purpose. Sixty kilos of coffee arrive from an importer. Forty-eight of them go into two cases, the cases go onto a pallet, and one case comes off again because the customer only ordered one. That case ships; two kilos come back a week later. The other case is emptied onto the shelf, ten kilos of beans are ground into forty bags of a different article, and the delivery turns out never to have happened at all and has to be taken back.",[756,763,764],{},"Nine screens and twelve events. Every event on this page is real output, copied out of the outbox of the instance in the screenshots — not an illustration written to look right.",[766,767,769],"alert",{"type":768},"info",[756,770,771,772,776,777,781],{},"The identifiers throughout are in the ",[773,774,775],"strong",{},"GS1 952 test range",", which GS1 reserves for exactly this, and every host is an ",[778,779,780],"code",{},"example.org"," placeholder. The instance in the screenshots reaches no repository, which is why the events sit in the first state of the delivery ladder rather than the last. What that ladder is, and what each rung means, is at the end of the page.",[751,783,785],{"id":784},"two-switches-and-a-prefix","Two switches and a prefix",[756,787,788,789,791,792,795],{},"Nothing is reported until a company says so, and the settings say plainly that two different services are involved. The ",[773,790,298],{}," is where master data lives, so that a scan of a Digital Link finds something. The ",[773,793,794],{},"repository"," is where events live. They are usually different hosts, they are configured separately, and a token that may write to one can be refused by the other — capture is its own permission.",[756,797,798],{},[799,800],"img",{"alt":801,"src":802},"The OpenEPCIS connection settings in Odoo | Figure 1: The connection — the resolver, and the OIDC offline token Odoo authenticates with. No password and no permanent access token is kept in the ERP, and access is revoked in Keycloak rather than here","\u002Fimg\u002F16.Connectors\u002Fodoo-settings-connection.png",[756,804,805,806,809],{},"The credential is an ",[773,807,808],{},"offline token",": a refresh token from which short-lived access tokens are minted. It is issued in the OpenEPCIS web interface and pasted in here, deliberately not minted from inside Odoo — that would need Keycloak's deprecated password grant enabled for the whole realm, and would put a user's password through the ERP.",[756,811,812],{},[799,813],{"alt":814,"src":815},"The visibility-event settings in Odoo | Figure 2: The event switch, the repository address, and the company prefix — which is only ever used for logistic units","\u002Fimg\u002F16.Connectors\u002Fodoo-settings-events.png",[756,817,818,819,822],{},"The ",[773,820,821],{},"GS1 company prefix"," deserves a note, because it is the one field here that mints identifiers rather than consuming them. A GTIN comes from a registry; an SSCC does not. A company allocates its own SSCCs from its prefix, and a pallet needs one before it can say what is underneath it. That is the whole reason the field exists, and it is used for nothing else.",[751,824,826,827,831],{"id":825},"where-the-why-of-an-event-comes-from","Where the ",[828,829,830],"em",{},"why"," of an event comes from",[756,833,834,835,838,839,842],{},"An EPCIS event answers four questions — what, when, where and why. The first three a warehouse system already knows. The fourth it does not: Odoo knows a transfer is \"incoming\", but nothing in Odoo knows that GS1's Core Business Vocabulary calls that ",[778,836,837],{},"receiving"," with the goods ",[778,840,841],{},"in_progress",".",[756,844,845],{},"So the mapping is not a rule buried in code. It is two fields on the operation type, pre-filled from Odoo's own codes and refined by the sequence prefix.",[756,847,848],{},[799,849],{"alt":850,"src":851},"The EPCIS block on an operation type | Figure 3: The two fields that decide the why — pre-filled, and never overwritten once a human has chosen something else","\u002Fimg\u002F16.Connectors\u002Fodoo-operation-type.png",[756,853,854],{},"Because the pre-fill reads the sequence prefix as well as the code, a warehouse with multi-step routes ends up with its steps already distinguished:",[856,857,858,877],"table",{},[859,860,861],"thead",{},[862,863,864,868,871,874],"tr",{},[865,866,867],"th",{},"Operation type",[865,869,870],{},"Odoo code",[865,872,873],{},"Business step",[865,875,876],{},"Disposition",[878,879,880,899,918,936,954,973,990,1010],"tbody",{},[862,881,882,886,891,895],{},[883,884,885],"td",{},"Receipts",[883,887,888],{},[778,889,890],{},"incoming",[883,892,893],{},[778,894,837],{},[883,896,897],{},[778,898,841],{},[862,900,901,904,909,914],{},[883,902,903],{},"Pick",[883,905,906],{},[778,907,908],{},"internal",[883,910,911],{},[778,912,913],{},"picking",[883,915,916],{},[778,917,841],{},[862,919,920,923,927,932],{},[883,921,922],{},"Pack",[883,924,925],{},[778,926,908],{},[883,928,929],{},[778,930,931],{},"packing",[883,933,934],{},[778,935,841],{},[862,937,938,941,945,950],{},[883,939,940],{},"Quality Control",[883,942,943],{},[778,944,908],{},[883,946,947],{},[778,948,949],{},"inspecting",[883,951,952],{},[778,953,841],{},[862,955,956,959,963,968],{},[883,957,958],{},"Storage",[883,960,961],{},[778,962,908],{},[883,964,965],{},[778,966,967],{},"storing",[883,969,970],{},[778,971,972],{},"sellable_accessible",[862,974,975,978,982,986],{},[883,976,977],{},"Internal Transfers",[883,979,980],{},[778,981,908],{},[883,983,984],{},[778,985,967],{},[883,987,988],{},[778,989,841],{},[862,991,992,995,1000,1005],{},[883,993,994],{},"Delivery Orders",[883,996,997],{},[778,998,999],{},"outgoing",[883,1001,1002],{},[778,1003,1004],{},"shipping",[883,1006,1007],{},[778,1008,1009],{},"in_transit",[862,1011,1012,1015,1020,1025],{},[883,1013,1014],{},"Manufacturing",[883,1016,1017],{},[778,1018,1019],{},"mrp_operation",[883,1021,1022],{},[778,1023,1024],{},"commissioning",[883,1026,1027],{},[778,1028,1029],{},"active",[756,1031,1032,1033,1036,1037,1040,1041,1044],{},"A choice a person has made is never overwritten by a later pre-fill. That rule is what makes the third field on that screen safe to leave alone: ",[773,1034,1035],{},"Incoming events"," decides what an event arriving ",[828,1038,1039],{},"from"," a partner may do, and it stands at ",[828,1042,1043],{},"show only"," until somebody deliberately changes it.",[1046,1047,1049],"h3",{"id":1048},"the-same-screen-a-different-meaning","The same screen, a different meaning",[756,1051,1052,1053,1055,1056,1058],{},"A point-of-sale terminal looks to the stock module exactly like a delivery: outgoing, ",[778,1054,1004],{},", ",[778,1057,1009],{},". It is not a delivery, and a small bridge addon says so.",[756,1060,1061],{},[799,1062],{"alt":1063,"src":1064},"The EPCIS block on a till's operation type | Figure 4: The same two fields on the operation type a till points at — a sale, not a shipment","\u002Fimg\u002F16.Connectors\u002Fodoo-operation-type-till.png",[756,1066,1067,1068,1071,1072,1074,1075,1077,1078,1074,1081,1084],{},"What makes this operation type a sale is not its name — it is called \"PoS Orders\" either way — but the fact that a till points at it. Pointing a till at an operation type changes none of the codes the pre-fill is computed from, so the bridge hooks the moment the till is ",[828,1069,1070],{},"configured",", and it hands the plain shipment meaning back when the last till is pointed elsewhere. On the instance behind these screenshots the operation type read ",[778,1073,1004],{}," \u002F ",[778,1076,1009],{}," until a till was created, and ",[778,1079,1080],{},"retail_selling",[778,1082,1083],{},"retail_sold"," immediately after.",[751,1086,1088],{"id":1087},"goods-in","Goods in",[756,1090,1091],{},"The receipt is validated in the usual way, and there is nothing EPCIS-shaped about doing it.",[756,1093,1094],{},[799,1095],{"alt":1096,"src":1097},"A validated receipt in Odoo | Figure 5: The receipt as any warehouse validates it — the connector adds a counter to its own events and nothing else to the workflow","\u002Fimg\u002F16.Connectors\u002Fodoo-receipt.png",[1099,1100,1104],"pre",{"className":1101,"code":1102,"language":62,"meta":1103,"style":1103},"language-json shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast monokai","{\n  \"type\": \"ObjectEvent\",\n  \"eventTime\": \"2026-09-02T06:43:33.000Z\",\n  \"eventTimeZoneOffset\": \"+00:00\",\n  \"action\": \"OBSERVE\",\n  \"bizStep\": \"receiving\",\n  \"disposition\": \"in_progress\",\n  \"quantityList\": [\n    {\n      \"epcClass\": \"https:\u002F\u002Fid.gs1.org\u002F01\u002F09520001100000\u002F10\u002FROAST-2609\",\n      \"quantity\": 60.0\n    }\n  ],\n  \"readPoint\": { \"id\": \"https:\u002F\u002Fid.gs1.org\u002F414\u002F9520001000010\" },\n  \"bizLocation\": { \"id\": \"https:\u002F\u002Fid.gs1.org\u002F414\u002F9520001000010\" },\n  \"bizTransactionList\": [\n    {\n      \"type\": \"po\",\n      \"bizTransaction\": \"urn:epcglobal:cbv:bt:9520001000010:PO-2026-0917\"\n    }\n  ],\n  \"sourceList\": [\n    {\n      \"type\": \"owning_party\",\n      \"source\": \"https:\u002F\u002Fid.gs1.org\u002F414\u002F9520001000027\"\n    }\n  ]\n}\n","",[778,1105,1106,1115,1132,1145,1158,1171,1184,1197,1206,1212,1225,1237,1243,1249,1269,1285,1293,1298,1311,1322,1327,1332,1340,1345,1357,1368,1373,1379],{"__ignoreMap":1103},[1107,1108,1111],"span",{"class":1109,"line":1110},"line",1,[1107,1112,1114],{"class":1113},"se58z","{\n",[1107,1116,1118,1122,1125,1129],{"class":1109,"line":1117},2,[1107,1119,1121],{"class":1120},"sSp2P","  \"type\"",[1107,1123,1124],{"class":1113},": ",[1107,1126,1128],{"class":1127},"sTdxB","\"ObjectEvent\"",[1107,1130,1131],{"class":1113},",\n",[1107,1133,1135,1138,1140,1143],{"class":1109,"line":1134},3,[1107,1136,1137],{"class":1120},"  \"eventTime\"",[1107,1139,1124],{"class":1113},[1107,1141,1142],{"class":1127},"\"2026-09-02T06:43:33.000Z\"",[1107,1144,1131],{"class":1113},[1107,1146,1148,1151,1153,1156],{"class":1109,"line":1147},4,[1107,1149,1150],{"class":1120},"  \"eventTimeZoneOffset\"",[1107,1152,1124],{"class":1113},[1107,1154,1155],{"class":1127},"\"+00:00\"",[1107,1157,1131],{"class":1113},[1107,1159,1161,1164,1166,1169],{"class":1109,"line":1160},5,[1107,1162,1163],{"class":1120},"  \"action\"",[1107,1165,1124],{"class":1113},[1107,1167,1168],{"class":1127},"\"OBSERVE\"",[1107,1170,1131],{"class":1113},[1107,1172,1174,1177,1179,1182],{"class":1109,"line":1173},6,[1107,1175,1176],{"class":1120},"  \"bizStep\"",[1107,1178,1124],{"class":1113},[1107,1180,1181],{"class":1127},"\"receiving\"",[1107,1183,1131],{"class":1113},[1107,1185,1187,1190,1192,1195],{"class":1109,"line":1186},7,[1107,1188,1189],{"class":1120},"  \"disposition\"",[1107,1191,1124],{"class":1113},[1107,1193,1194],{"class":1127},"\"in_progress\"",[1107,1196,1131],{"class":1113},[1107,1198,1200,1203],{"class":1109,"line":1199},8,[1107,1201,1202],{"class":1120},"  \"quantityList\"",[1107,1204,1205],{"class":1113},": [\n",[1107,1207,1209],{"class":1109,"line":1208},9,[1107,1210,1211],{"class":1113},"    {\n",[1107,1213,1215,1218,1220,1223],{"class":1109,"line":1214},10,[1107,1216,1217],{"class":1120},"      \"epcClass\"",[1107,1219,1124],{"class":1113},[1107,1221,1222],{"class":1127},"\"https:\u002F\u002Fid.gs1.org\u002F01\u002F09520001100000\u002F10\u002FROAST-2609\"",[1107,1224,1131],{"class":1113},[1107,1226,1228,1231,1233],{"class":1109,"line":1227},11,[1107,1229,1230],{"class":1120},"      \"quantity\"",[1107,1232,1124],{"class":1113},[1107,1234,1236],{"class":1235},"sCHB2","60.0\n",[1107,1238,1240],{"class":1109,"line":1239},12,[1107,1241,1242],{"class":1113},"    }\n",[1107,1244,1246],{"class":1109,"line":1245},13,[1107,1247,1248],{"class":1113},"  ],\n",[1107,1250,1252,1255,1258,1261,1263,1266],{"class":1109,"line":1251},14,[1107,1253,1254],{"class":1120},"  \"readPoint\"",[1107,1256,1257],{"class":1113},": { ",[1107,1259,1260],{"class":1120},"\"id\"",[1107,1262,1124],{"class":1113},[1107,1264,1265],{"class":1127},"\"https:\u002F\u002Fid.gs1.org\u002F414\u002F9520001000010\"",[1107,1267,1268],{"class":1113}," },\n",[1107,1270,1272,1275,1277,1279,1281,1283],{"class":1109,"line":1271},15,[1107,1273,1274],{"class":1120},"  \"bizLocation\"",[1107,1276,1257],{"class":1113},[1107,1278,1260],{"class":1120},[1107,1280,1124],{"class":1113},[1107,1282,1265],{"class":1127},[1107,1284,1268],{"class":1113},[1107,1286,1288,1291],{"class":1109,"line":1287},16,[1107,1289,1290],{"class":1120},"  \"bizTransactionList\"",[1107,1292,1205],{"class":1113},[1107,1294,1296],{"class":1109,"line":1295},17,[1107,1297,1211],{"class":1113},[1107,1299,1301,1304,1306,1309],{"class":1109,"line":1300},18,[1107,1302,1303],{"class":1120},"      \"type\"",[1107,1305,1124],{"class":1113},[1107,1307,1308],{"class":1127},"\"po\"",[1107,1310,1131],{"class":1113},[1107,1312,1314,1317,1319],{"class":1109,"line":1313},19,[1107,1315,1316],{"class":1120},"      \"bizTransaction\"",[1107,1318,1124],{"class":1113},[1107,1320,1321],{"class":1127},"\"urn:epcglobal:cbv:bt:9520001000010:PO-2026-0917\"\n",[1107,1323,1325],{"class":1109,"line":1324},20,[1107,1326,1242],{"class":1113},[1107,1328,1330],{"class":1109,"line":1329},21,[1107,1331,1248],{"class":1113},[1107,1333,1335,1338],{"class":1109,"line":1334},22,[1107,1336,1337],{"class":1120},"  \"sourceList\"",[1107,1339,1205],{"class":1113},[1107,1341,1343],{"class":1109,"line":1342},23,[1107,1344,1211],{"class":1113},[1107,1346,1348,1350,1352,1355],{"class":1109,"line":1347},24,[1107,1349,1303],{"class":1120},[1107,1351,1124],{"class":1113},[1107,1353,1354],{"class":1127},"\"owning_party\"",[1107,1356,1131],{"class":1113},[1107,1358,1360,1363,1365],{"class":1109,"line":1359},25,[1107,1361,1362],{"class":1120},"      \"source\"",[1107,1364,1124],{"class":1113},[1107,1366,1367],{"class":1127},"\"https:\u002F\u002Fid.gs1.org\u002F414\u002F9520001000027\"\n",[1107,1369,1371],{"class":1109,"line":1370},26,[1107,1372,1242],{"class":1113},[1107,1374,1376],{"class":1109,"line":1375},27,[1107,1377,1378],{"class":1113},"  ]\n",[1107,1380,1382],{"class":1109,"line":1381},28,[1107,1383,1384],{"class":1113},"}\n",[756,1386,1387],{},"Four things in that document are decisions rather than transcription.",[756,1389,1390,1391,1394,1395,1398,1399,1402,1403,1406,1407,1410,1411,1413,1414,842],{},"The coffee is ",[773,1392,1393],{},"lot tracked",", so it appears in the ",[778,1396,1397],{},"quantityList"," as an ",[778,1400,1401],{},"epcClass"," and not in the ",[778,1404,1405],{},"epcList",". A lot is a set of things, not a thing: ",[778,1408,1409],{},"\u002F01\u002F{gtin}\u002F10\u002F{lot}"," is an LGTIN, and putting an LGTIN in an ",[778,1412,1405],{}," is the most common way to produce an event that validates and means something else. Serial-tracked goods are the other case, and only those land in the ",[778,1415,1405],{},[756,1417,818,1418,1421,1422,1425],{},[773,1419,1420],{},"quantity carries no unit",", and that is deliberate. EPCIS reads a quantity with no ",[778,1423,1424],{},"uom"," as a piece count, so stating the code for pieces would be redundant — and one fact spelled two ways is worse than redundant, because the quantity element goes into the event hash.",[756,1427,818,1428,1431],{},[773,1429,1430],{},"read point is a GLN",", written as an SGLN Digital Link under AI 414, taken from the location. A raw GLN is accepted by the repository and then found by no query. Where no location on the path carries a GLN, no event is made at all and the reason is posted on the transfer — half an answer is not worth sending.",[756,1433,1434,1435,1441],{},"And the ",[773,1436,1437,1440],{},[778,1438,1439],{},"Origin"," field became the business transaction",". Whatever purchase order reference a warehouse types there is what downstream readers will match on, which is why it is carried rather than invented.",[1046,1443,1445],{"id":1444},"an-event-is-not-master-data","An event is not master data",[756,1447,1448,1449,1452],{},"The event above names the lot as ",[778,1450,1451],{},"\u002F01\u002F09520001100000\u002F10\u002FROAST-2609",", and it does so whether or not anything is published about that lot anywhere. Reporting events and publishing master data are two different decisions, taken in two different places, and the lot form is where the second one lives.",[756,1454,1455],{},[799,1456],{"alt":1457,"src":1458},"A lot with its OpenEPCIS block | Figure 6: The lot — reporting events about it is one switch, publishing it to the catalog as a document of its own is another, and this one is off","\u002Fimg\u002F16.Connectors\u002Fodoo-lot.png",[756,1460,1461,1462,1464],{},"The distinction matters at scan time rather than at capture time. The identifier in the event is well-formed and the repository will store and find it either way; but a phone pointed at ",[778,1463,1451],{}," reaches something only if an instance document has been published under the model's GTIN. And instances hang off the model: a lot whose product is not in the catalog yet is not an error — it waits, says so on its own form, and follows the moment the product lands.",[751,1466,1468],{"id":1467},"onto-a-pallet","Onto a pallet",[756,1470,1471],{},"Two cases and a pallet come into being, and each is given an SSCC at that moment rather than when it is first reported. A unit is identified from the moment it exists; a number handed out later would leave the earlier events unable to name it.",[756,1473,1474],{},[799,1475],{"alt":1476,"src":1477},"A package showing its SSCC | Figure 7: The pallet with the SSCC this installation minted from the company prefix — and the Unpack button, which turns out to matter later","\u002Fimg\u002F16.Connectors\u002Fodoo-package.png",[756,1479,1480,1481,1484],{},"Putting the coffee into a case is an aggregation. Its ",[778,1482,1483],{},"parentID"," is the case's SSCC, and its children are the goods:",[1099,1486,1488],{"className":1101,"code":1487,"language":62,"meta":1103,"style":1103},"{\n  \"type\": \"AggregationEvent\",\n  \"parentID\": \"https:\u002F\u002Fid.gs1.org\u002F00\u002F095200010000000058\",\n  \"action\": \"ADD\",\n  \"bizStep\": \"packing\",\n  \"disposition\": \"in_progress\",\n  \"childQuantityList\": [\n    {\n      \"epcClass\": \"https:\u002F\u002Fid.gs1.org\u002F01\u002F09520001100000\u002F10\u002FROAST-2609\",\n      \"quantity\": 24.0\n    }\n  ],\n  \"readPoint\": { \"id\": \"https:\u002F\u002Fid.gs1.org\u002F414\u002F9520001000010\" },\n  \"bizLocation\": { \"id\": \"https:\u002F\u002Fid.gs1.org\u002F414\u002F9520001000010\" }\n}\n",[778,1489,1490,1494,1505,1517,1528,1539,1549,1556,1560,1570,1579,1583,1587,1601,1616],{"__ignoreMap":1103},[1107,1491,1492],{"class":1109,"line":1110},[1107,1493,1114],{"class":1113},[1107,1495,1496,1498,1500,1503],{"class":1109,"line":1117},[1107,1497,1121],{"class":1120},[1107,1499,1124],{"class":1113},[1107,1501,1502],{"class":1127},"\"AggregationEvent\"",[1107,1504,1131],{"class":1113},[1107,1506,1507,1510,1512,1515],{"class":1109,"line":1134},[1107,1508,1509],{"class":1120},"  \"parentID\"",[1107,1511,1124],{"class":1113},[1107,1513,1514],{"class":1127},"\"https:\u002F\u002Fid.gs1.org\u002F00\u002F095200010000000058\"",[1107,1516,1131],{"class":1113},[1107,1518,1519,1521,1523,1526],{"class":1109,"line":1147},[1107,1520,1163],{"class":1120},[1107,1522,1124],{"class":1113},[1107,1524,1525],{"class":1127},"\"ADD\"",[1107,1527,1131],{"class":1113},[1107,1529,1530,1532,1534,1537],{"class":1109,"line":1160},[1107,1531,1176],{"class":1120},[1107,1533,1124],{"class":1113},[1107,1535,1536],{"class":1127},"\"packing\"",[1107,1538,1131],{"class":1113},[1107,1540,1541,1543,1545,1547],{"class":1109,"line":1173},[1107,1542,1189],{"class":1120},[1107,1544,1124],{"class":1113},[1107,1546,1194],{"class":1127},[1107,1548,1131],{"class":1113},[1107,1550,1551,1554],{"class":1109,"line":1186},[1107,1552,1553],{"class":1120},"  \"childQuantityList\"",[1107,1555,1205],{"class":1113},[1107,1557,1558],{"class":1109,"line":1199},[1107,1559,1211],{"class":1113},[1107,1561,1562,1564,1566,1568],{"class":1109,"line":1208},[1107,1563,1217],{"class":1120},[1107,1565,1124],{"class":1113},[1107,1567,1222],{"class":1127},[1107,1569,1131],{"class":1113},[1107,1571,1572,1574,1576],{"class":1109,"line":1214},[1107,1573,1230],{"class":1120},[1107,1575,1124],{"class":1113},[1107,1577,1578],{"class":1235},"24.0\n",[1107,1580,1581],{"class":1109,"line":1227},[1107,1582,1242],{"class":1113},[1107,1584,1585],{"class":1109,"line":1239},[1107,1586,1248],{"class":1113},[1107,1588,1589,1591,1593,1595,1597,1599],{"class":1109,"line":1245},[1107,1590,1254],{"class":1120},[1107,1592,1257],{"class":1113},[1107,1594,1260],{"class":1120},[1107,1596,1124],{"class":1113},[1107,1598,1265],{"class":1127},[1107,1600,1268],{"class":1113},[1107,1602,1603,1605,1607,1609,1611,1613],{"class":1109,"line":1251},[1107,1604,1274],{"class":1120},[1107,1606,1257],{"class":1113},[1107,1608,1260],{"class":1120},[1107,1610,1124],{"class":1113},[1107,1612,1265],{"class":1127},[1107,1614,1615],{"class":1113}," }\n",[1107,1617,1618],{"class":1109,"line":1271},[1107,1619,1384],{"class":1113},[756,1621,1622,1623,1626],{},"Then the cases go onto the pallet — and this is the event that has no equivalent on Odoo 18, because that release has no nesting to report. The children are ",[773,1624,1625],{},"SSCCs"," rather than trade items:",[1099,1628,1630],{"className":1101,"code":1629,"language":62,"meta":1103,"style":1103},"{\n  \"type\": \"AggregationEvent\",\n  \"parentID\": \"https:\u002F\u002Fid.gs1.org\u002F00\u002F095200010000000041\",\n  \"action\": \"ADD\",\n  \"bizStep\": \"packing\",\n  \"disposition\": \"in_progress\",\n  \"childEPCs\": [\n    \"https:\u002F\u002Fid.gs1.org\u002F00\u002F095200010000000058\",\n    \"https:\u002F\u002Fid.gs1.org\u002F00\u002F095200010000000065\"\n  ],\n  \"readPoint\": { \"id\": \"https:\u002F\u002Fid.gs1.org\u002F414\u002F9520001000010\" },\n  \"bizLocation\": { \"id\": \"https:\u002F\u002Fid.gs1.org\u002F414\u002F9520001000010\" }\n}\n",[778,1631,1632,1636,1646,1657,1667,1677,1687,1694,1701,1706,1710,1724,1738],{"__ignoreMap":1103},[1107,1633,1634],{"class":1109,"line":1110},[1107,1635,1114],{"class":1113},[1107,1637,1638,1640,1642,1644],{"class":1109,"line":1117},[1107,1639,1121],{"class":1120},[1107,1641,1124],{"class":1113},[1107,1643,1502],{"class":1127},[1107,1645,1131],{"class":1113},[1107,1647,1648,1650,1652,1655],{"class":1109,"line":1134},[1107,1649,1509],{"class":1120},[1107,1651,1124],{"class":1113},[1107,1653,1654],{"class":1127},"\"https:\u002F\u002Fid.gs1.org\u002F00\u002F095200010000000041\"",[1107,1656,1131],{"class":1113},[1107,1658,1659,1661,1663,1665],{"class":1109,"line":1147},[1107,1660,1163],{"class":1120},[1107,1662,1124],{"class":1113},[1107,1664,1525],{"class":1127},[1107,1666,1131],{"class":1113},[1107,1668,1669,1671,1673,1675],{"class":1109,"line":1160},[1107,1670,1176],{"class":1120},[1107,1672,1124],{"class":1113},[1107,1674,1536],{"class":1127},[1107,1676,1131],{"class":1113},[1107,1678,1679,1681,1683,1685],{"class":1109,"line":1173},[1107,1680,1189],{"class":1120},[1107,1682,1124],{"class":1113},[1107,1684,1194],{"class":1127},[1107,1686,1131],{"class":1113},[1107,1688,1689,1692],{"class":1109,"line":1186},[1107,1690,1691],{"class":1120},"  \"childEPCs\"",[1107,1693,1205],{"class":1113},[1107,1695,1696,1699],{"class":1109,"line":1199},[1107,1697,1698],{"class":1127},"    \"https:\u002F\u002Fid.gs1.org\u002F00\u002F095200010000000058\"",[1107,1700,1131],{"class":1113},[1107,1702,1703],{"class":1109,"line":1208},[1107,1704,1705],{"class":1127},"    \"https:\u002F\u002Fid.gs1.org\u002F00\u002F095200010000000065\"\n",[1107,1707,1708],{"class":1109,"line":1214},[1107,1709,1248],{"class":1113},[1107,1711,1712,1714,1716,1718,1720,1722],{"class":1109,"line":1227},[1107,1713,1254],{"class":1120},[1107,1715,1257],{"class":1113},[1107,1717,1260],{"class":1120},[1107,1719,1124],{"class":1113},[1107,1721,1265],{"class":1127},[1107,1723,1268],{"class":1113},[1107,1725,1726,1728,1730,1732,1734,1736],{"class":1109,"line":1239},[1107,1727,1274],{"class":1120},[1107,1729,1257],{"class":1113},[1107,1731,1260],{"class":1120},[1107,1733,1124],{"class":1113},[1107,1735,1265],{"class":1127},[1107,1737,1615],{"class":1113},[1107,1739,1740],{"class":1109,"line":1245},[1107,1741,1384],{"class":1113},[756,1743,1744],{},"A pallet of cases is the oldest hierarchy GS1 describes, and the vocabulary never needed extending for it. What was missing was the fact, and only the newer Odoo records it.",[756,1746,1747,1748,1751],{},"Both of these are ",[773,1749,1750],{},"standing statements",", which is the distinction that decides how the rest of the day is reported. A movement is a fact about a moment and can simply be stated. An aggregation answers a question: scan the outer label, and the repository says what is under it. A standing statement that is never withdrawn keeps answering after it has stopped being true — so it has to be reported at both ends.",[751,1753,1755],{"id":1754},"one-case-comes-off-and-ships","One case comes off, and ships",[756,1757,1758],{},"The customer ordered one case, so it leaves the pallet. That is the other end of the statement above:",[1099,1760,1762],{"className":1101,"code":1761,"language":62,"meta":1103,"style":1103},"{\n  \"type\": \"AggregationEvent\",\n  \"parentID\": \"https:\u002F\u002Fid.gs1.org\u002F00\u002F095200010000000041\",\n  \"action\": \"DELETE\",\n  \"bizStep\": \"unpacking\",\n  \"disposition\": \"in_progress\",\n  \"childEPCs\": [\"https:\u002F\u002Fid.gs1.org\u002F00\u002F095200010000000058\"],\n  \"readPoint\": { \"id\": \"https:\u002F\u002Fid.gs1.org\u002F414\u002F9520001000010\" },\n  \"bizLocation\": { \"id\": \"https:\u002F\u002Fid.gs1.org\u002F414\u002F9520001000010\" }\n}\n",[778,1763,1764,1768,1778,1788,1799,1810,1820,1832,1846,1860],{"__ignoreMap":1103},[1107,1765,1766],{"class":1109,"line":1110},[1107,1767,1114],{"class":1113},[1107,1769,1770,1772,1774,1776],{"class":1109,"line":1117},[1107,1771,1121],{"class":1120},[1107,1773,1124],{"class":1113},[1107,1775,1502],{"class":1127},[1107,1777,1131],{"class":1113},[1107,1779,1780,1782,1784,1786],{"class":1109,"line":1134},[1107,1781,1509],{"class":1120},[1107,1783,1124],{"class":1113},[1107,1785,1654],{"class":1127},[1107,1787,1131],{"class":1113},[1107,1789,1790,1792,1794,1797],{"class":1109,"line":1147},[1107,1791,1163],{"class":1120},[1107,1793,1124],{"class":1113},[1107,1795,1796],{"class":1127},"\"DELETE\"",[1107,1798,1131],{"class":1113},[1107,1800,1801,1803,1805,1808],{"class":1109,"line":1160},[1107,1802,1176],{"class":1120},[1107,1804,1124],{"class":1113},[1107,1806,1807],{"class":1127},"\"unpacking\"",[1107,1809,1131],{"class":1113},[1107,1811,1812,1814,1816,1818],{"class":1109,"line":1173},[1107,1813,1189],{"class":1120},[1107,1815,1124],{"class":1113},[1107,1817,1194],{"class":1127},[1107,1819,1131],{"class":1113},[1107,1821,1822,1824,1827,1829],{"class":1109,"line":1186},[1107,1823,1691],{"class":1120},[1107,1825,1826],{"class":1113},": [",[1107,1828,1514],{"class":1127},[1107,1830,1831],{"class":1113},"],\n",[1107,1833,1834,1836,1838,1840,1842,1844],{"class":1109,"line":1199},[1107,1835,1254],{"class":1120},[1107,1837,1257],{"class":1113},[1107,1839,1260],{"class":1120},[1107,1841,1124],{"class":1113},[1107,1843,1265],{"class":1127},[1107,1845,1268],{"class":1113},[1107,1847,1848,1850,1852,1854,1856,1858],{"class":1109,"line":1208},[1107,1849,1274],{"class":1120},[1107,1851,1257],{"class":1113},[1107,1853,1260],{"class":1120},[1107,1855,1124],{"class":1113},[1107,1857,1265],{"class":1127},[1107,1859,1615],{"class":1113},[1107,1861,1862],{"class":1109,"line":1214},[1107,1863,1384],{"class":1113},[756,1865,1866,1867,1870],{},"The case is then added to a delivery as a whole unit, and the delivery is validated. Note what does ",[828,1868,1869],{},"not"," happen: no second packing event. A unit that merely travels was neither packed nor unpacked, and restating an aggregation that never changed would be a claim about a moment that had none.",[1099,1872,1874],{"className":1101,"code":1873,"language":62,"meta":1103,"style":1103},"{\n  \"type\": \"ObjectEvent\",\n  \"action\": \"OBSERVE\",\n  \"bizStep\": \"shipping\",\n  \"disposition\": \"in_transit\",\n  \"quantityList\": [\n    {\n      \"epcClass\": \"https:\u002F\u002Fid.gs1.org\u002F01\u002F09520001100000\u002F10\u002FROAST-2609\",\n      \"quantity\": 24.0\n    }\n  ],\n  \"readPoint\": { \"id\": \"https:\u002F\u002Fid.gs1.org\u002F414\u002F9520001000010\" },\n  \"bizLocation\": { \"id\": \"https:\u002F\u002Fid.gs1.org\u002F414\u002F9520001000010\" },\n  \"bizTransactionList\": [\n    {\n      \"type\": \"desadv\",\n      \"bizTransaction\": \"urn:epcglobal:cbv:bt:9520001000010:WH%2FOUT%2F00001\"\n    }\n  ],\n  \"destinationList\": [\n    {\n      \"type\": \"owning_party\",\n      \"destination\": \"https:\u002F\u002Fid.gs1.org\u002F414\u002F9520001000034\"\n    }\n  ]\n}\n",[778,1875,1876,1880,1890,1900,1911,1922,1928,1932,1942,1950,1954,1958,1972,1986,1992,1996,2007,2016,2020,2024,2031,2035,2045,2055,2059,2063],{"__ignoreMap":1103},[1107,1877,1878],{"class":1109,"line":1110},[1107,1879,1114],{"class":1113},[1107,1881,1882,1884,1886,1888],{"class":1109,"line":1117},[1107,1883,1121],{"class":1120},[1107,1885,1124],{"class":1113},[1107,1887,1128],{"class":1127},[1107,1889,1131],{"class":1113},[1107,1891,1892,1894,1896,1898],{"class":1109,"line":1134},[1107,1893,1163],{"class":1120},[1107,1895,1124],{"class":1113},[1107,1897,1168],{"class":1127},[1107,1899,1131],{"class":1113},[1107,1901,1902,1904,1906,1909],{"class":1109,"line":1147},[1107,1903,1176],{"class":1120},[1107,1905,1124],{"class":1113},[1107,1907,1908],{"class":1127},"\"shipping\"",[1107,1910,1131],{"class":1113},[1107,1912,1913,1915,1917,1920],{"class":1109,"line":1160},[1107,1914,1189],{"class":1120},[1107,1916,1124],{"class":1113},[1107,1918,1919],{"class":1127},"\"in_transit\"",[1107,1921,1131],{"class":1113},[1107,1923,1924,1926],{"class":1109,"line":1173},[1107,1925,1202],{"class":1120},[1107,1927,1205],{"class":1113},[1107,1929,1930],{"class":1109,"line":1186},[1107,1931,1211],{"class":1113},[1107,1933,1934,1936,1938,1940],{"class":1109,"line":1199},[1107,1935,1217],{"class":1120},[1107,1937,1124],{"class":1113},[1107,1939,1222],{"class":1127},[1107,1941,1131],{"class":1113},[1107,1943,1944,1946,1948],{"class":1109,"line":1208},[1107,1945,1230],{"class":1120},[1107,1947,1124],{"class":1113},[1107,1949,1578],{"class":1235},[1107,1951,1952],{"class":1109,"line":1214},[1107,1953,1242],{"class":1113},[1107,1955,1956],{"class":1109,"line":1227},[1107,1957,1248],{"class":1113},[1107,1959,1960,1962,1964,1966,1968,1970],{"class":1109,"line":1239},[1107,1961,1254],{"class":1120},[1107,1963,1257],{"class":1113},[1107,1965,1260],{"class":1120},[1107,1967,1124],{"class":1113},[1107,1969,1265],{"class":1127},[1107,1971,1268],{"class":1113},[1107,1973,1974,1976,1978,1980,1982,1984],{"class":1109,"line":1245},[1107,1975,1274],{"class":1120},[1107,1977,1257],{"class":1113},[1107,1979,1260],{"class":1120},[1107,1981,1124],{"class":1113},[1107,1983,1265],{"class":1127},[1107,1985,1268],{"class":1113},[1107,1987,1988,1990],{"class":1109,"line":1251},[1107,1989,1290],{"class":1120},[1107,1991,1205],{"class":1113},[1107,1993,1994],{"class":1109,"line":1271},[1107,1995,1211],{"class":1113},[1107,1997,1998,2000,2002,2005],{"class":1109,"line":1287},[1107,1999,1303],{"class":1120},[1107,2001,1124],{"class":1113},[1107,2003,2004],{"class":1127},"\"desadv\"",[1107,2006,1131],{"class":1113},[1107,2008,2009,2011,2013],{"class":1109,"line":1295},[1107,2010,1316],{"class":1120},[1107,2012,1124],{"class":1113},[1107,2014,2015],{"class":1127},"\"urn:epcglobal:cbv:bt:9520001000010:WH%2FOUT%2F00001\"\n",[1107,2017,2018],{"class":1109,"line":1300},[1107,2019,1242],{"class":1113},[1107,2021,2022],{"class":1109,"line":1313},[1107,2023,1248],{"class":1113},[1107,2025,2026,2029],{"class":1109,"line":1324},[1107,2027,2028],{"class":1120},"  \"destinationList\"",[1107,2030,1205],{"class":1113},[1107,2032,2033],{"class":1109,"line":1329},[1107,2034,1211],{"class":1113},[1107,2036,2037,2039,2041,2043],{"class":1109,"line":1334},[1107,2038,1303],{"class":1120},[1107,2040,1124],{"class":1113},[1107,2042,1354],{"class":1127},[1107,2044,1131],{"class":1113},[1107,2046,2047,2050,2052],{"class":1109,"line":1342},[1107,2048,2049],{"class":1120},"      \"destination\"",[1107,2051,1124],{"class":1113},[1107,2053,2054],{"class":1127},"\"https:\u002F\u002Fid.gs1.org\u002F414\u002F9520001000034\"\n",[1107,2056,2057],{"class":1109,"line":1347},[1107,2058,1242],{"class":1113},[1107,2060,2061],{"class":1109,"line":1359},[1107,2062,1378],{"class":1113},[1107,2064,2065],{"class":1109,"line":1370},[1107,2066,1384],{"class":1113},[756,2068,2069],{},"The transfer had no purchase order reference of its own, so the despatch advice is named after the transfer, and the customer's GLN travels as the destination party.",[751,2071,2073],{"id":2072},"two-kilos-come-back","Two kilos come back",[756,2075,2076,2077,2080],{},"A return is where a ",[778,2078,2079],{},"TransactionEvent"," finally earns its place, and it is the only place this connector emits one.",[756,2082,2083,2084,2086,2087,2090,2091,2094],{},"Every event above already names the paperwork it belongs to, so associating goods with an order needs no event of its own — stating it again as a ",[778,2085,2079],{}," with ",[778,2088,2089],{},"action=ADD"," would assert the same fact twice. ",[773,2092,2093],{},"Ending"," the association is the thing no other event says. Goods coming back stop belonging to the shipment they went out on, and a receipt does not say that: it says they arrived somewhere.",[1099,2096,2098],{"className":1101,"code":2097,"language":62,"meta":1103,"style":1103},"{\n  \"type\": \"TransactionEvent\",\n  \"action\": \"DELETE\",\n  \"bizStep\": \"receiving\",\n  \"disposition\": \"returned\",\n  \"quantityList\": [\n    {\n      \"epcClass\": \"https:\u002F\u002Fid.gs1.org\u002F01\u002F09520001100000\u002F10\u002FROAST-2609\",\n      \"quantity\": 2.0\n    }\n  ],\n  \"readPoint\": { \"id\": \"https:\u002F\u002Fid.gs1.org\u002F414\u002F9520001000010\" },\n  \"bizLocation\": { \"id\": \"https:\u002F\u002Fid.gs1.org\u002F414\u002F9520001000010\" },\n  \"bizTransactionList\": [\n    {\n      \"type\": \"desadv\",\n      \"bizTransaction\": \"urn:epcglobal:cbv:bt:9520001000010:WH%2FOUT%2F00001\"\n    }\n  ]\n}\n",[778,2099,2100,2104,2115,2125,2135,2146,2152,2156,2166,2175,2179,2183,2197,2211,2217,2221,2231,2239,2243,2247],{"__ignoreMap":1103},[1107,2101,2102],{"class":1109,"line":1110},[1107,2103,1114],{"class":1113},[1107,2105,2106,2108,2110,2113],{"class":1109,"line":1117},[1107,2107,1121],{"class":1120},[1107,2109,1124],{"class":1113},[1107,2111,2112],{"class":1127},"\"TransactionEvent\"",[1107,2114,1131],{"class":1113},[1107,2116,2117,2119,2121,2123],{"class":1109,"line":1134},[1107,2118,1163],{"class":1120},[1107,2120,1124],{"class":1113},[1107,2122,1796],{"class":1127},[1107,2124,1131],{"class":1113},[1107,2126,2127,2129,2131,2133],{"class":1109,"line":1147},[1107,2128,1176],{"class":1120},[1107,2130,1124],{"class":1113},[1107,2132,1181],{"class":1127},[1107,2134,1131],{"class":1113},[1107,2136,2137,2139,2141,2144],{"class":1109,"line":1160},[1107,2138,1189],{"class":1120},[1107,2140,1124],{"class":1113},[1107,2142,2143],{"class":1127},"\"returned\"",[1107,2145,1131],{"class":1113},[1107,2147,2148,2150],{"class":1109,"line":1173},[1107,2149,1202],{"class":1120},[1107,2151,1205],{"class":1113},[1107,2153,2154],{"class":1109,"line":1186},[1107,2155,1211],{"class":1113},[1107,2157,2158,2160,2162,2164],{"class":1109,"line":1199},[1107,2159,1217],{"class":1120},[1107,2161,1124],{"class":1113},[1107,2163,1222],{"class":1127},[1107,2165,1131],{"class":1113},[1107,2167,2168,2170,2172],{"class":1109,"line":1208},[1107,2169,1230],{"class":1120},[1107,2171,1124],{"class":1113},[1107,2173,2174],{"class":1235},"2.0\n",[1107,2176,2177],{"class":1109,"line":1214},[1107,2178,1242],{"class":1113},[1107,2180,2181],{"class":1109,"line":1227},[1107,2182,1248],{"class":1113},[1107,2184,2185,2187,2189,2191,2193,2195],{"class":1109,"line":1239},[1107,2186,1254],{"class":1120},[1107,2188,1257],{"class":1113},[1107,2190,1260],{"class":1120},[1107,2192,1124],{"class":1113},[1107,2194,1265],{"class":1127},[1107,2196,1268],{"class":1113},[1107,2198,2199,2201,2203,2205,2207,2209],{"class":1109,"line":1245},[1107,2200,1274],{"class":1120},[1107,2202,1257],{"class":1113},[1107,2204,1260],{"class":1120},[1107,2206,1124],{"class":1113},[1107,2208,1265],{"class":1127},[1107,2210,1268],{"class":1113},[1107,2212,2213,2215],{"class":1109,"line":1251},[1107,2214,1290],{"class":1120},[1107,2216,1205],{"class":1113},[1107,2218,2219],{"class":1109,"line":1271},[1107,2220,1211],{"class":1113},[1107,2222,2223,2225,2227,2229],{"class":1109,"line":1287},[1107,2224,1303],{"class":1120},[1107,2226,1124],{"class":1113},[1107,2228,2004],{"class":1127},[1107,2230,1131],{"class":1113},[1107,2232,2233,2235,2237],{"class":1109,"line":1295},[1107,2234,1316],{"class":1120},[1107,2236,1124],{"class":1113},[1107,2238,2015],{"class":1127},[1107,2240,2241],{"class":1109,"line":1300},[1107,2242,1242],{"class":1113},[1107,2244,2245],{"class":1109,"line":1313},[1107,2246,1378],{"class":1113},[1107,2248,2249],{"class":1109,"line":1324},[1107,2250,1384],{"class":1113},[756,2252,2253,2254,2257],{},"The transaction it releases is the one the ",[828,2255,2256],{},"original"," transfer named — which is why a return of goods that named no paperwork releases nothing, and reports nothing.",[751,2259,2261],{"id":2260},"the-other-case-is-emptied","The other case is emptied",[756,2263,2264,2265,2268],{},"A warehouse takes a case apart in two quite different ways, and only one of them goes through a transfer. Picking goods off it in a delivery leaves move lines. Pressing ",[773,2266,2267],{},"Unpack"," on the package leaves none at all: it clears the package on the quants and is done.",[756,2270,2271],{},"Reporting only the first would tell the repository about the rarer of the two and stay silent about the everyday one, and an aggregation nobody withdraws keeps answering with goods that have been on the shelf for weeks. So the button says it too:",[1099,2273,2275],{"className":1101,"code":2274,"language":62,"meta":1103,"style":1103},"{\n  \"type\": \"AggregationEvent\",\n  \"parentID\": \"https:\u002F\u002Fid.gs1.org\u002F00\u002F095200010000000065\",\n  \"action\": \"DELETE\",\n  \"bizStep\": \"unpacking\",\n  \"disposition\": \"in_progress\",\n  \"childQuantityList\": [\n    {\n      \"epcClass\": \"https:\u002F\u002Fid.gs1.org\u002F01\u002F09520001100000\u002F10\u002FROAST-2609\",\n      \"quantity\": 24.0\n    }\n  ],\n  \"readPoint\": { \"id\": \"https:\u002F\u002Fid.gs1.org\u002F414\u002F9520001000010\" },\n  \"bizLocation\": { \"id\": \"https:\u002F\u002Fid.gs1.org\u002F414\u002F9520001000010\" }\n}\n",[778,2276,2277,2281,2291,2302,2312,2322,2332,2338,2342,2352,2360,2364,2368,2382,2396],{"__ignoreMap":1103},[1107,2278,2279],{"class":1109,"line":1110},[1107,2280,1114],{"class":1113},[1107,2282,2283,2285,2287,2289],{"class":1109,"line":1117},[1107,2284,1121],{"class":1120},[1107,2286,1124],{"class":1113},[1107,2288,1502],{"class":1127},[1107,2290,1131],{"class":1113},[1107,2292,2293,2295,2297,2300],{"class":1109,"line":1134},[1107,2294,1509],{"class":1120},[1107,2296,1124],{"class":1113},[1107,2298,2299],{"class":1127},"\"https:\u002F\u002Fid.gs1.org\u002F00\u002F095200010000000065\"",[1107,2301,1131],{"class":1113},[1107,2303,2304,2306,2308,2310],{"class":1109,"line":1147},[1107,2305,1163],{"class":1120},[1107,2307,1124],{"class":1113},[1107,2309,1796],{"class":1127},[1107,2311,1131],{"class":1113},[1107,2313,2314,2316,2318,2320],{"class":1109,"line":1160},[1107,2315,1176],{"class":1120},[1107,2317,1124],{"class":1113},[1107,2319,1807],{"class":1127},[1107,2321,1131],{"class":1113},[1107,2323,2324,2326,2328,2330],{"class":1109,"line":1173},[1107,2325,1189],{"class":1120},[1107,2327,1124],{"class":1113},[1107,2329,1194],{"class":1127},[1107,2331,1131],{"class":1113},[1107,2333,2334,2336],{"class":1109,"line":1186},[1107,2335,1553],{"class":1120},[1107,2337,1205],{"class":1113},[1107,2339,2340],{"class":1109,"line":1199},[1107,2341,1211],{"class":1113},[1107,2343,2344,2346,2348,2350],{"class":1109,"line":1208},[1107,2345,1217],{"class":1120},[1107,2347,1124],{"class":1113},[1107,2349,1222],{"class":1127},[1107,2351,1131],{"class":1113},[1107,2353,2354,2356,2358],{"class":1109,"line":1214},[1107,2355,1230],{"class":1120},[1107,2357,1124],{"class":1113},[1107,2359,1578],{"class":1235},[1107,2361,2362],{"class":1109,"line":1227},[1107,2363,1242],{"class":1113},[1107,2365,2366],{"class":1109,"line":1239},[1107,2367,1248],{"class":1113},[1107,2369,2370,2372,2374,2376,2378,2380],{"class":1109,"line":1245},[1107,2371,1254],{"class":1120},[1107,2373,1257],{"class":1113},[1107,2375,1260],{"class":1120},[1107,2377,1124],{"class":1113},[1107,2379,1265],{"class":1127},[1107,2381,1268],{"class":1113},[1107,2383,2384,2386,2388,2390,2392,2394],{"class":1109,"line":1251},[1107,2385,1274],{"class":1120},[1107,2387,1257],{"class":1113},[1107,2389,1260],{"class":1120},[1107,2391,1124],{"class":1113},[1107,2393,1265],{"class":1127},[1107,2395,1615],{"class":1113},[1107,2397,2398],{"class":1109,"line":1271},[1107,2399,1384],{"class":1113},[756,2401,2402,2403,2406],{},"Everything that event needs is read ",[828,2404,2405],{},"before"," the button runs, and that is more than it looks: afterwards the quants no longer name the unit, so the contents are gone — and so is the unit's location, which Odoo computes from those same quants.",[751,2408,2410],{"id":2409},"beans-become-ground-coffee","Beans become ground coffee",[756,2412,2413,2414,2417],{},"Grinding is the one movement where the identifiers going in are not the identifiers coming out, and that is exactly what a ",[778,2415,2416],{},"TransformationEvent"," is for. It hangs on the manufacturing order rather than on a transfer, and it lives in a bridge addon of its own so that a database without Manufacturing never loads it.",[756,2419,2420],{},[799,2421],{"alt":2422,"src":2423},"A completed manufacturing order | Figure 8: The manufacturing order — one event carries the whole order, not one per component","\u002Fimg\u002F16.Connectors\u002Fodoo-manufacturing.png",[1099,2425,2427],{"className":1101,"code":2426,"language":62,"meta":1103,"style":1103},"{\n  \"type\": \"TransformationEvent\",\n  \"inputQuantityList\": [\n    {\n      \"epcClass\": \"https:\u002F\u002Fid.gs1.org\u002F01\u002F09520001100000\u002F10\u002FROAST-2609\",\n      \"quantity\": 10.0\n    }\n  ],\n  \"outputQuantityList\": [\n    {\n      \"epcClass\": \"https:\u002F\u002Fid.gs1.org\u002F01\u002F09520001100017\u002F10\u002FGROUND-2609\",\n      \"quantity\": 40.0\n    }\n  ],\n  \"bizStep\": \"commissioning\",\n  \"disposition\": \"active\",\n  \"readPoint\": { \"id\": \"https:\u002F\u002Fid.gs1.org\u002F414\u002F9520001000010\" },\n  \"bizLocation\": { \"id\": \"https:\u002F\u002Fid.gs1.org\u002F414\u002F9520001000010\" }\n}\n",[778,2428,2429,2433,2444,2451,2455,2465,2474,2478,2482,2489,2493,2504,2513,2517,2521,2532,2543,2557,2571],{"__ignoreMap":1103},[1107,2430,2431],{"class":1109,"line":1110},[1107,2432,1114],{"class":1113},[1107,2434,2435,2437,2439,2442],{"class":1109,"line":1117},[1107,2436,1121],{"class":1120},[1107,2438,1124],{"class":1113},[1107,2440,2441],{"class":1127},"\"TransformationEvent\"",[1107,2443,1131],{"class":1113},[1107,2445,2446,2449],{"class":1109,"line":1134},[1107,2447,2448],{"class":1120},"  \"inputQuantityList\"",[1107,2450,1205],{"class":1113},[1107,2452,2453],{"class":1109,"line":1147},[1107,2454,1211],{"class":1113},[1107,2456,2457,2459,2461,2463],{"class":1109,"line":1160},[1107,2458,1217],{"class":1120},[1107,2460,1124],{"class":1113},[1107,2462,1222],{"class":1127},[1107,2464,1131],{"class":1113},[1107,2466,2467,2469,2471],{"class":1109,"line":1173},[1107,2468,1230],{"class":1120},[1107,2470,1124],{"class":1113},[1107,2472,2473],{"class":1235},"10.0\n",[1107,2475,2476],{"class":1109,"line":1186},[1107,2477,1242],{"class":1113},[1107,2479,2480],{"class":1109,"line":1199},[1107,2481,1248],{"class":1113},[1107,2483,2484,2487],{"class":1109,"line":1208},[1107,2485,2486],{"class":1120},"  \"outputQuantityList\"",[1107,2488,1205],{"class":1113},[1107,2490,2491],{"class":1109,"line":1214},[1107,2492,1211],{"class":1113},[1107,2494,2495,2497,2499,2502],{"class":1109,"line":1227},[1107,2496,1217],{"class":1120},[1107,2498,1124],{"class":1113},[1107,2500,2501],{"class":1127},"\"https:\u002F\u002Fid.gs1.org\u002F01\u002F09520001100017\u002F10\u002FGROUND-2609\"",[1107,2503,1131],{"class":1113},[1107,2505,2506,2508,2510],{"class":1109,"line":1239},[1107,2507,1230],{"class":1120},[1107,2509,1124],{"class":1113},[1107,2511,2512],{"class":1235},"40.0\n",[1107,2514,2515],{"class":1109,"line":1245},[1107,2516,1242],{"class":1113},[1107,2518,2519],{"class":1109,"line":1251},[1107,2520,1248],{"class":1113},[1107,2522,2523,2525,2527,2530],{"class":1109,"line":1271},[1107,2524,1176],{"class":1120},[1107,2526,1124],{"class":1113},[1107,2528,2529],{"class":1127},"\"commissioning\"",[1107,2531,1131],{"class":1113},[1107,2533,2534,2536,2538,2541],{"class":1109,"line":1287},[1107,2535,1189],{"class":1120},[1107,2537,1124],{"class":1113},[1107,2539,2540],{"class":1127},"\"active\"",[1107,2542,1131],{"class":1113},[1107,2544,2545,2547,2549,2551,2553,2555],{"class":1109,"line":1295},[1107,2546,1254],{"class":1120},[1107,2548,1257],{"class":1113},[1107,2550,1260],{"class":1120},[1107,2552,1124],{"class":1113},[1107,2554,1265],{"class":1127},[1107,2556,1268],{"class":1113},[1107,2558,2559,2561,2563,2565,2567,2569],{"class":1109,"line":1300},[1107,2560,1274],{"class":1120},[1107,2562,1257],{"class":1113},[1107,2564,1260],{"class":1120},[1107,2566,1124],{"class":1113},[1107,2568,1265],{"class":1127},[1107,2570,1615],{"class":1113},[1107,2572,2573],{"class":1109,"line":1313},[1107,2574,1384],{"class":1113},[756,2576,2577,2578,2584],{},"It carries ",[773,2579,2580,2581],{},"no ",[778,2582,2583],{},"action"," — it is the one event type that has none, because there is nothing to add to or remove from. And a half transformation is refused rather than sent: an event with inputs and no outputs asserts that goods vanished.",[751,2586,2588],{"id":2587},"taking-a-report-back","Taking a report back",[756,2590,2591],{},"The delivery turns out never to have happened. An event cannot be pulled out of a repository — somebody may already have read it — and it should not be. EPCIS answers this with an error declaration, and the shape of that answer is the reason the whole identity scheme holds together.",[756,2593,2594],{},[799,2595],{"alt":2596,"src":2597},"A withdrawn event and its correction | Figure 9: The original stays, greyed out and marked as corrected, and the withdrawal stands beside it","\u002Fimg\u002F16.Connectors\u002Fodoo-event-withdrawn.png",[1099,2599,2601],{"className":1101,"code":2600,"language":62,"meta":1103,"style":1103},"{\n  \"type\": \"ObjectEvent\",\n  \"action\": \"OBSERVE\",\n  \"bizStep\": \"shipping\",\n  \"disposition\": \"in_transit\",\n  \"quantityList\": [\n    {\n      \"epcClass\": \"https:\u002F\u002Fid.gs1.org\u002F01\u002F09520001100000\u002F10\u002FROAST-2609\",\n      \"quantity\": 24.0\n    }\n  ],\n  \"readPoint\": { \"id\": \"https:\u002F\u002Fid.gs1.org\u002F414\u002F9520001000010\" },\n  \"bizLocation\": { \"id\": \"https:\u002F\u002Fid.gs1.org\u002F414\u002F9520001000010\" },\n  \"bizTransactionList\": [\n    {\n      \"type\": \"desadv\",\n      \"bizTransaction\": \"urn:epcglobal:cbv:bt:9520001000010:WH%2FOUT%2F00001\"\n    }\n  ],\n  \"destinationList\": [\n    {\n      \"type\": \"owning_party\",\n      \"destination\": \"https:\u002F\u002Fid.gs1.org\u002F414\u002F9520001000034\"\n    }\n  ],\n  \"errorDeclaration\": {\n    \"declarationTime\": \"2026-09-02T06:46:20.614Z\",\n    \"reason\": \"did_not_occur\"\n  }\n}\n",[778,2602,2603,2607,2617,2627,2637,2647,2653,2657,2667,2675,2679,2683,2697,2711,2717,2721,2731,2739,2743,2747,2753,2757,2767,2775,2779,2783,2791,2803,2813,2819],{"__ignoreMap":1103},[1107,2604,2605],{"class":1109,"line":1110},[1107,2606,1114],{"class":1113},[1107,2608,2609,2611,2613,2615],{"class":1109,"line":1117},[1107,2610,1121],{"class":1120},[1107,2612,1124],{"class":1113},[1107,2614,1128],{"class":1127},[1107,2616,1131],{"class":1113},[1107,2618,2619,2621,2623,2625],{"class":1109,"line":1134},[1107,2620,1163],{"class":1120},[1107,2622,1124],{"class":1113},[1107,2624,1168],{"class":1127},[1107,2626,1131],{"class":1113},[1107,2628,2629,2631,2633,2635],{"class":1109,"line":1147},[1107,2630,1176],{"class":1120},[1107,2632,1124],{"class":1113},[1107,2634,1908],{"class":1127},[1107,2636,1131],{"class":1113},[1107,2638,2639,2641,2643,2645],{"class":1109,"line":1160},[1107,2640,1189],{"class":1120},[1107,2642,1124],{"class":1113},[1107,2644,1919],{"class":1127},[1107,2646,1131],{"class":1113},[1107,2648,2649,2651],{"class":1109,"line":1173},[1107,2650,1202],{"class":1120},[1107,2652,1205],{"class":1113},[1107,2654,2655],{"class":1109,"line":1186},[1107,2656,1211],{"class":1113},[1107,2658,2659,2661,2663,2665],{"class":1109,"line":1199},[1107,2660,1217],{"class":1120},[1107,2662,1124],{"class":1113},[1107,2664,1222],{"class":1127},[1107,2666,1131],{"class":1113},[1107,2668,2669,2671,2673],{"class":1109,"line":1208},[1107,2670,1230],{"class":1120},[1107,2672,1124],{"class":1113},[1107,2674,1578],{"class":1235},[1107,2676,2677],{"class":1109,"line":1214},[1107,2678,1242],{"class":1113},[1107,2680,2681],{"class":1109,"line":1227},[1107,2682,1248],{"class":1113},[1107,2684,2685,2687,2689,2691,2693,2695],{"class":1109,"line":1239},[1107,2686,1254],{"class":1120},[1107,2688,1257],{"class":1113},[1107,2690,1260],{"class":1120},[1107,2692,1124],{"class":1113},[1107,2694,1265],{"class":1127},[1107,2696,1268],{"class":1113},[1107,2698,2699,2701,2703,2705,2707,2709],{"class":1109,"line":1245},[1107,2700,1274],{"class":1120},[1107,2702,1257],{"class":1113},[1107,2704,1260],{"class":1120},[1107,2706,1124],{"class":1113},[1107,2708,1265],{"class":1127},[1107,2710,1268],{"class":1113},[1107,2712,2713,2715],{"class":1109,"line":1251},[1107,2714,1290],{"class":1120},[1107,2716,1205],{"class":1113},[1107,2718,2719],{"class":1109,"line":1271},[1107,2720,1211],{"class":1113},[1107,2722,2723,2725,2727,2729],{"class":1109,"line":1287},[1107,2724,1303],{"class":1120},[1107,2726,1124],{"class":1113},[1107,2728,2004],{"class":1127},[1107,2730,1131],{"class":1113},[1107,2732,2733,2735,2737],{"class":1109,"line":1295},[1107,2734,1316],{"class":1120},[1107,2736,1124],{"class":1113},[1107,2738,2015],{"class":1127},[1107,2740,2741],{"class":1109,"line":1300},[1107,2742,1242],{"class":1113},[1107,2744,2745],{"class":1109,"line":1313},[1107,2746,1248],{"class":1113},[1107,2748,2749,2751],{"class":1109,"line":1324},[1107,2750,2028],{"class":1120},[1107,2752,1205],{"class":1113},[1107,2754,2755],{"class":1109,"line":1329},[1107,2756,1211],{"class":1113},[1107,2758,2759,2761,2763,2765],{"class":1109,"line":1334},[1107,2760,1303],{"class":1120},[1107,2762,1124],{"class":1113},[1107,2764,1354],{"class":1127},[1107,2766,1131],{"class":1113},[1107,2768,2769,2771,2773],{"class":1109,"line":1342},[1107,2770,2049],{"class":1120},[1107,2772,1124],{"class":1113},[1107,2774,2054],{"class":1127},[1107,2776,2777],{"class":1109,"line":1347},[1107,2778,1242],{"class":1113},[1107,2780,2781],{"class":1109,"line":1359},[1107,2782,1248],{"class":1113},[1107,2784,2785,2788],{"class":1109,"line":1370},[1107,2786,2787],{"class":1120},"  \"errorDeclaration\"",[1107,2789,2790],{"class":1113},": {\n",[1107,2792,2793,2796,2798,2801],{"class":1109,"line":1375},[1107,2794,2795],{"class":1120},"    \"declarationTime\"",[1107,2797,1124],{"class":1113},[1107,2799,2800],{"class":1127},"\"2026-09-02T06:46:20.614Z\"",[1107,2802,1131],{"class":1113},[1107,2804,2805,2808,2810],{"class":1109,"line":1381},[1107,2806,2807],{"class":1120},"    \"reason\"",[1107,2809,1124],{"class":1113},[1107,2811,2812],{"class":1127},"\"did_not_occur\"\n",[1107,2814,2816],{"class":1109,"line":2815},29,[1107,2817,2818],{"class":1113},"  }\n",[1107,2820,2822],{"class":1109,"line":2821},30,[1107,2823,1384],{"class":1113},[756,2825,2826,2827,2830],{},"The withdrawal is the original event again, with a declaration attached. The declaration fields are excluded from the canonical event hash, so the correction carries ",[773,2828,2829],{},"the same identity"," as the event it corrects: the repository recognises which event is meant without Odoo ever having learned what it was called.",[756,2832,2833,2834,2837,2838,2841],{},"Only ",[778,2835,2836],{},"did_not_occur"," is offered. The other CBV reason, ",[778,2839,2840],{},"incorrect_data",", keeps the occurrence and disputes the description — which means naming the corrected events as well, and this connector mints none.",[751,2843,2845],{"id":2844},"the-outbox-and-the-two-identifiers","The outbox, and the two identifiers",[756,2847,2848,2849,2852],{},"Reporting must never be the reason a transfer fails. A warehouse operator pressing ",[828,2850,2851],{},"Validate"," can do nothing about an unreachable repository and should not be told about it, so nothing is sent at that moment: the transfer writes rows into an outbox, and a scheduled job delivers them.",[756,2854,2855],{},[799,2856],{"alt":2857,"src":2858},"The EPCIS events outbox | Figure 10: One warehouse day in twelve rows, oldest at the bottom","\u002Fimg\u002F16.Connectors\u002Fodoo-outbox.png",[756,2860,2861,2862,2865,2866,2869,2870,2873],{},"Delivery is ",[773,2863,2864],{},"two answers, not one",", and the outbox keeps them apart. ",[828,2867,2868],{},"Accepted"," means the repository has taken the document into custody. ",[828,2871,2872],{},"Captured"," means it is stored. A queue that deletes its row on the 202 reports success for events that were rejected minutes later; a capture job the repository does not recognise is explicitly not counted as success, because a rejected document and a forgotten one answer alike. After five attempts a row stops asking and says it cannot be confirmed.",[756,2875,2876],{},"Open a row and both identifiers are visible, which is worth a moment because they do different jobs.",[756,2878,2879],{},[799,2880],{"alt":2881,"src":2882},"An event and its document | Figure 11: The nesting event — the state ladder, the expected event ID, the idempotency key, and the document as it will be sent","\u002Fimg\u002F16.Connectors\u002Fodoo-event-nesting.png",[756,2884,818,2885,2888,2889,2892],{},[773,2886,2887],{},"expected event ID"," is the canonical CBV event hash, ",[778,2890,2891],{},"ni:\u002F\u002F\u002Fsha-256;\u003Chex>?ver=CBV2.0",", computed over everything the event asserts. It is not a name anyone chose: anyone holding the event can recompute it, which is what makes it an identity rather than an allocation. Two companies describing the same observation arrive at the same identifier without having agreed on anything beforehand. Odoo computes it here so that it can recognise its own events coming back, and sends the document without it — the repository computes the same hash when it stores the event, and there is exactly one canonicalisation, on the side that keeps the event.",[756,2894,818,2895,2898],{},[773,2896,2897],{},"idempotency key"," is private bookkeeping. It is derived from the database, the transfer and the identifiers, with a unique index per company, so the same movement cannot enter the outbox twice. It is not the event's name and it never leaves Odoo.",[751,2900,2902],{"id":2901},"reproducing-this","Reproducing this",[756,2904,2905,2906,2909],{},"The instance in these screenshots is a throwaway: Odoo 19 with the six connector addons, seeded with exactly the day described above and pointed at hosts that do not exist. The images are not taken by hand — ",[778,2907,2908],{},"apps\u002Fopenepcis-home\u002Fscripts\u002Fodoo-screenshots.mjs"," drives a headless browser through the same screens in one run, so they can be renewed when the addon changes instead of quietly going stale.",[756,2911,2912,2913,2920,2921,2924,2925,2928],{},"The addons live in ",[2914,2915,2919],"a",{"href":2916,"rel":2917},"https:\u002F\u002Fgithub.com\u002Fopenepcis\u002Fopenepcis-odoo",[2918],"nofollow","openepcis-odoo"," under LGPL-3, on two branches: ",[778,2922,2923],{},"19.0"," for the version shown here, and ",[778,2926,2927],{},"18.0"," for the current Odoo long-term release. The two carry the same six addons and differ only where Odoo itself does; the one event on this page that has no counterpart on 18.0 is the pallet of cases, because Odoo 18 has no nested units to report.",[1046,2930,2932],{"id":2931},"about-the-screenshots","About the screenshots",[756,2934,2935,2936,2938,2939,2941],{},"Odoo 19 with no demo data, so that nothing on screen distracts from the day being walked through. Every identifier is in the GS1 952 test range, check digits included. Hosts are ",[778,2937,780],{}," placeholders and the offline token is a literal placeholder, so this instance publishes to nobody and never did. The delivery states were seeded locally: the two rows that read ",[828,2940,2872],{}," were never captured by any repository, because the error declaration can only be raised against a captured event and the withdrawal is worth showing.",[2943,2944,2945],"style",{},"html pre.shiki code .se58z, html code.shiki .se58z{--shiki-light:#0E1116;--shiki-default:#0E1116;--shiki-dark:#F0F3F6;--shiki-sepia:#F8F8F2}html pre.shiki code .sSp2P, html code.shiki .sSp2P{--shiki-light:#024C1A;--shiki-light-font-style:inherit;--shiki-default:#024C1A;--shiki-default-font-style:inherit;--shiki-dark:#72F088;--shiki-dark-font-style:inherit;--shiki-sepia:#66D9EF;--shiki-sepia-font-style:italic}html pre.shiki code .sTdxB, html code.shiki .sTdxB{--shiki-light:#032563;--shiki-default:#032563;--shiki-dark:#ADDCFF;--shiki-sepia:#CFCFC2}html pre.shiki code .sCHB2, html code.shiki .sCHB2{--shiki-light:#023B95;--shiki-default:#023B95;--shiki-dark:#91CBFF;--shiki-sepia:#AE81FF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}html.sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}",{"title":1103,"searchDepth":1117,"depth":1117,"links":2947},[2948,2949,2950,2954,2957,2958,2959,2960,2961,2962,2963,2964],{"id":753,"depth":1117,"text":754},{"id":784,"depth":1117,"text":785},{"id":825,"depth":1117,"text":2951,"children":2952},"Where the why of an event comes from",[2953],{"id":1048,"depth":1134,"text":1049},{"id":1087,"depth":1117,"text":1088,"children":2955},[2956],{"id":1444,"depth":1134,"text":1445},{"id":1467,"depth":1117,"text":1468},{"id":1754,"depth":1117,"text":1755},{"id":2072,"depth":1117,"text":2073},{"id":2260,"depth":1117,"text":2261},{"id":2409,"depth":1117,"text":2410},{"id":2587,"depth":1117,"text":2588},{"id":2844,"depth":1117,"text":2845},{"id":2901,"depth":1117,"text":2902,"children":2965},[2966],{"id":2931,"depth":1134,"text":2932},"md","2026-09-02T00:00:00.000Z",{"head":2970,"readingTime":2975},{"meta":2971},[2972],{"name":2973,"content":2974},"keywords","Odoo EPCIS connector, Odoo ERP integration, ObjectEvent from transfer, AggregationEvent SSCC, nested packages, pallet of cases, TransactionEvent return, TransformationEvent manufacturing, retail_selling till, error declaration, event hash, idempotency key",{"text":2976,"minutes":2977,"time":2978,"words":2979},"14 min read",13.515,810900,2703,{"title":718,"tags":2981},[677,679,31,65,104,372,714,723],{"title":746,"description":721},{"loc":719,"lastmod":2984,"changefreq":2985,"priority":2986},"2026-09-02","monthly",0.8,"POc5N9ZRtuZlzb0kQjgrQfE2GV3Mt3sbY5kQKXxNUZg",[2989],{"title":5,"path":6,"stem":7,"children":2990},[2991,2993,2998,3003,3008,3013,3018,3023,3033,3038,3043,3048,3113,3118,3147,3165,3170,3173],{"title":10,"path":6,"stem":11,"description":12,"icon":13,"tags":2992},[15,16,17,18,19,20,21],{"title":23,"path":24,"stem":25,"children":2994,"description":28,"icon":29,"tags":2997},[2995],{"title":23,"path":24,"stem":25,"description":28,"icon":29,"tags":2996},[16,31,32,33,34,35,36,37,38,39],[16,31,32,33,34,35,36,37,38,39],{"title":42,"path":43,"stem":44,"children":2999,"description":47,"icon":48,"tags":3002},[3000],{"title":42,"path":43,"stem":44,"description":47,"icon":48,"tags":3001},[16,31,32,33,50,51,39],[16,31,32,33,50,51,39],{"title":54,"path":55,"stem":56,"children":3004,"description":59,"icon":60,"tags":3007},[3005],{"title":54,"path":55,"stem":56,"description":59,"icon":60,"tags":3006},[16,62,63,64,65,66,67,21,68,69,70,71,72],[16,62,63,64,65,66,67,21,68,69,70,71,72],{"title":75,"path":76,"stem":77,"children":3009,"description":80,"icon":81,"tags":3012},[3010],{"title":75,"path":76,"stem":77,"description":80,"icon":81,"tags":3011},[16,32,62,63,64,65,83,67,21,84,85,86,70,71,72],[16,32,62,63,64,65,83,67,21,84,85,86,70,71,72],{"title":89,"path":90,"stem":91,"children":3014,"description":94,"icon":95,"tags":3017},[3015],{"title":89,"path":90,"stem":91,"description":94,"icon":95,"tags":3016},[16,97,98,99,100,101,21,102,103,104,105,106,107,108,109,110,111,112],[16,97,98,99,100,101,21,102,103,104,105,106,107,108,109,110,111,112],{"title":115,"path":116,"stem":117,"children":3019,"description":120,"icon":121,"tags":3022},[3020],{"title":115,"path":116,"stem":117,"description":120,"icon":121,"tags":3021},[16,123,62,63,64,65,21,124,125,126,71,72],[16,123,62,63,64,65,21,124,125,126,71,72],{"title":129,"path":130,"stem":131,"children":3024,"description":134,"icon":135,"tags":3032},[3025,3027],{"title":129,"path":130,"stem":131,"description":134,"icon":135,"tags":3026},[16,123,62,63,64,65,21,124,125,126,71,72],{"title":138,"path":139,"stem":140,"children":3028,"description":143,"icon":144,"tags":3031},[3029],{"title":138,"path":139,"stem":140,"description":143,"icon":144,"tags":3030},[16,62,63,146,21,147,148,149,35,150,151,152,153],[16,62,63,146,21,147,148,149,35,150,151,152,153],[16,123,62,63,64,65,21,124,125,126,71,72],{"title":157,"path":158,"stem":159,"children":3034,"description":162,"icon":163,"tags":3037},[3035],{"title":157,"path":158,"stem":159,"description":162,"icon":163,"tags":3036},[16,62,63,146,21,165,35,150,151,152,153],[16,62,63,146,21,165,35,150,151,152,153],{"title":168,"path":169,"stem":170,"children":3039,"description":173,"icon":174,"tags":3042},[3040],{"title":168,"path":169,"stem":170,"description":173,"icon":174,"tags":3041},[16,176,15,177,21,178,35,179,151,152,180],[16,176,15,177,21,178,35,179,151,152,180],{"title":183,"path":184,"stem":185,"children":3044,"description":188,"icon":189,"tags":3047},[3045],{"title":183,"path":184,"stem":185,"description":188,"icon":189,"tags":3046},[191,15,192,193,194,195,196,31,197,198,199,200,201,202,203,204],[191,15,192,193,194,195,196,31,197,198,199,200,201,202,203,204],{"title":207,"path":208,"stem":209,"children":3049,"description":212,"icon":213,"tags":3112},[3050,3052,3057,3068,3081,3090,3095,3097,3099,3101,3110],{"title":207,"path":208,"stem":209,"description":212,"icon":213,"tags":3051},[215,216,217,31,218,35,219,220],{"title":222,"path":223,"stem":224,"children":3053,"description":227,"icon":228,"tags":3056},[3054],{"title":222,"path":223,"stem":224,"description":227,"icon":228,"tags":3055},[230,231,218,216,217,232],[230,231,218,216,217,232],{"title":235,"path":236,"stem":237,"children":3058,"description":240,"icon":241,"tags":3067},[3059,3061,3063,3065],{"title":235,"path":236,"stem":237,"description":240,"icon":241,"tags":3060},[243,244,216,31,103,35,218,245],{"title":247,"path":248,"stem":249,"description":250,"icon":174,"tags":3062},[243,244,216,31,220],{"title":253,"path":254,"stem":255,"description":256,"icon":257,"tags":3064},[243,31,65,39,216],{"title":260,"path":261,"stem":262,"description":263,"icon":13,"tags":3066},[243,265,266,63,267,245],[243,244,216,31,103,35,218,245],{"title":270,"path":271,"stem":272,"children":3069,"description":275,"icon":276,"tags":3080},[3070,3072,3074,3076,3078],{"title":270,"path":271,"stem":272,"description":275,"icon":276,"tags":3071},[278,279,280,216,31,103,35,218,245],{"title":247,"path":282,"stem":283,"description":284,"icon":285,"tags":3073},[278,279,280,216,31,245],{"title":253,"path":288,"stem":289,"description":290,"icon":285,"tags":3075},[278,31,65,39,216],{"title":293,"path":294,"stem":295,"description":296,"icon":285,"tags":3077},[278,97,298,299,216,245],{"title":260,"path":301,"stem":302,"description":303,"icon":13,"tags":3079},[278,265,280,245,305],[278,279,280,216,31,103,35,218,245],{"title":308,"path":309,"stem":310,"children":3082,"description":313,"icon":314,"tags":3089},[3083,3085,3087],{"title":308,"path":309,"stem":310,"description":313,"icon":314,"tags":3084},[316,317,318,216,218,319],{"title":247,"path":321,"stem":322,"description":323,"icon":324,"tags":3086},[316,317,318,326],{"title":260,"path":328,"stem":329,"description":330,"icon":13,"tags":3088},[316,265,317,318,332,63],[316,317,318,216,218,319],{"title":335,"path":336,"stem":337,"children":3091,"description":340,"icon":60,"tags":3094},[3092],{"title":335,"path":336,"stem":337,"description":340,"icon":60,"tags":3093},[342,343,103,344,230,345,346,220],[342,343,103,344,230,345,346,220],{"title":349,"path":350,"stem":351,"description":352,"icon":29,"tags":3096},[354,97,299,355,298],{"title":357,"path":358,"stem":359,"description":360,"icon":361,"tags":3098},[298,97,299],{"title":364,"path":365,"stem":366,"description":367,"icon":368,"tags":3100},[370,371,372,344],{"title":374,"path":375,"stem":376,"children":3102,"description":379,"icon":380,"tags":3109},[3103,3105,3107],{"title":374,"path":375,"stem":376,"description":379,"icon":380,"tags":3104},[382,383,384,385,386],{"title":247,"path":388,"stem":389,"description":390,"icon":174,"tags":3106},[382,326,383,384,385],{"title":260,"path":393,"stem":394,"description":395,"icon":13,"tags":3108},[382,265,397,398,63],[382,383,384,385,386],{"title":401,"path":402,"stem":403,"description":404,"icon":228,"tags":3111},[406,407,408,409,342,410],[215,216,217,31,218,35,219,220],{"title":413,"path":414,"stem":415,"children":3114,"description":418,"icon":419,"tags":3117},[3115],{"title":413,"path":414,"stem":415,"description":418,"icon":419,"tags":3116},[16,421,422,423,424,425,426,21,72],[16,421,422,423,424,425,426,21,72],{"title":429,"path":430,"stem":431,"children":3119,"description":434,"icon":435,"tags":3146},[3120,3122,3124,3126,3128,3130,3132,3134,3136,3138,3140,3142,3144],{"title":429,"path":430,"stem":431,"description":434,"icon":435,"tags":3121},[437,438,215,97,439,298],{"title":441,"path":442,"stem":443,"description":444,"icon":445,"tags":3123},[437,447,448,449,450,451],{"title":453,"path":454,"stem":455,"description":456,"icon":457,"tags":3125},[437,459,105,460,461,439],{"title":463,"path":464,"stem":465,"description":466,"icon":467,"tags":3127},[437,469,63,424,470,471,472],{"title":474,"path":475,"stem":476,"description":477,"icon":478,"tags":3129},[437,480,481,111,482,483],{"title":485,"path":486,"stem":487,"description":488,"icon":489,"tags":3131},[437,299,97,298,491,492],{"title":494,"path":495,"stem":496,"description":497,"icon":498,"tags":3133},[437,500,501,502,503,504],{"title":506,"path":507,"stem":508,"description":509,"icon":419,"tags":3135},[437,503,511,512,513,514],{"title":516,"path":517,"stem":518,"description":519,"icon":520,"tags":3137},[437,522,523,230,524,525],{"title":527,"path":528,"stem":529,"description":530,"icon":29,"tags":3139},[437,298,532,533,534,112],{"title":536,"path":537,"stem":538,"description":539,"icon":540,"tags":3141},[437,542,543,544,545,546],{"title":548,"path":549,"stem":550,"description":551,"icon":552,"tags":3143},[437,554,555,556,557,558],{"title":560,"path":561,"stem":562,"description":563,"icon":564,"tags":3145},[437,566,567,568,569,570,448],[437,438,215,97,439,298],{"title":573,"path":574,"stem":575,"children":3148,"description":578,"icon":579},[3149,3150,3151,3152],{"title":573,"path":574,"stem":575,"description":578,"icon":579},{"title":581,"path":582,"stem":583,"description":584,"icon":585},{"title":587,"path":588,"stem":589,"description":590,"icon":591},{"title":593,"path":594,"stem":595,"children":3153,"description":598,"icon":599},[3154,3155,3157,3159,3161,3162,3163,3164],{"title":593,"path":594,"stem":595,"description":598,"icon":599},{"title":601,"path":602,"stem":603,"description":604,"icon":605,"tags":3156},[298,97,103,299,220],{"title":608,"path":609,"stem":610,"description":611,"icon":612,"tags":3158},[220,614,103,298,63],{"title":616,"path":617,"stem":618,"description":619,"icon":620,"tags":3160},[39,16,31,65,622,35],{"title":624,"path":625,"stem":626,"description":627,"icon":628},{"title":630,"path":631,"stem":632,"description":633,"icon":634},{"title":636,"path":637,"stem":638,"description":639,"icon":640},{"title":642,"path":643,"stem":644,"description":645,"icon":646},{"title":648,"path":649,"stem":650,"children":3166,"description":653,"icon":29,"tags":3169},[3167],{"title":648,"path":649,"stem":650,"description":653,"icon":29,"tags":3168},[655,656,657,406,343,658,659,660],[655,656,657,406,343,658,659,660],{"title":663,"path":664,"stem":665,"children":3171,"description":668,"icon":634},[3172],{"title":663,"path":664,"stem":665,"description":668,"icon":634},{"title":670,"path":671,"stem":672,"children":3174,"description":675,"icon":540,"tags":3187},[3175,3177,3179,3181,3183,3185],{"title":670,"path":671,"stem":672,"description":675,"icon":540,"tags":3176},[677,678,679,680,681,215,31,298],{"title":683,"path":684,"stem":685,"description":686,"icon":60,"tags":3178},[677,543,688,689,690,691],{"title":693,"path":694,"stem":695,"description":696,"icon":697,"tags":3180},[677,105,699,109,110,104,700],{"title":702,"path":703,"stem":704,"description":705,"icon":540,"tags":3182},[677,678,570,105,688,690,500],{"title":708,"path":709,"stem":710,"description":711,"icon":228,"tags":3184},[677,31,65,713,714,715,406,343,523,716],{"title":718,"path":719,"stem":720,"description":721,"icon":457,"tags":3186},[677,679,31,65,104,372,714,723],[677,678,679,680,681,215,31,298],{"id":745,"title":746,"body":3189,"description":721,"extension":2967,"icon":457,"lastUpdated":2968,"meta":5024,"navigation":5029,"path":719,"seo":5031,"sitemap":5032,"stem":720,"__hash__":2987},{"type":748,"value":3190,"toc":5004},[3191,3193,3195,3197,3199,3207,3209,3215,3219,3223,3227,3231,3235,3241,3243,3247,3249,3393,3401,3403,3409,3413,3425,3427,3429,3433,3641,3643,3659,3665,3669,3675,3677,3681,3685,3689,3691,3693,3697,3701,3827,3831,3941,3943,3947,3949,3951,4051,4055,4243,4245,4247,4251,4259,4411,4415,4417,4421,4423,4549,4553,4555,4559,4563,4705,4711,4713,4715,4719,4935,4939,4945,4947,4951,4955,4963,4965,4969,4975,4979,4981,4985,4994,4996,5002],[751,3192,754],{"id":753},[756,3194,758],{},[756,3196,761],{},[756,3198,764],{},[766,3200,3201],{"type":768},[756,3202,771,3203,776,3205,781],{},[773,3204,775],{},[778,3206,780],{},[751,3208,785],{"id":784},[756,3210,788,3211,791,3213,795],{},[773,3212,298],{},[773,3214,794],{},[756,3216,3217],{},[799,3218],{"alt":801,"src":802},[756,3220,805,3221,809],{},[773,3222,808],{},[756,3224,3225],{},[799,3226],{"alt":814,"src":815},[756,3228,818,3229,822],{},[773,3230,821],{},[751,3232,826,3233,831],{"id":825},[828,3234,830],{},[756,3236,834,3237,838,3239,842],{},[778,3238,837],{},[778,3240,841],{},[756,3242,845],{},[756,3244,3245],{},[799,3246],{"alt":850,"src":851},[756,3248,854],{},[856,3250,3251,3263],{},[859,3252,3253],{},[862,3254,3255,3257,3259,3261],{},[865,3256,867],{},[865,3258,870],{},[865,3260,873],{},[865,3262,876],{},[878,3264,3265,3281,3297,3313,3329,3345,3361,3377],{},[862,3266,3267,3269,3273,3277],{},[883,3268,885],{},[883,3270,3271],{},[778,3272,890],{},[883,3274,3275],{},[778,3276,837],{},[883,3278,3279],{},[778,3280,841],{},[862,3282,3283,3285,3289,3293],{},[883,3284,903],{},[883,3286,3287],{},[778,3288,908],{},[883,3290,3291],{},[778,3292,913],{},[883,3294,3295],{},[778,3296,841],{},[862,3298,3299,3301,3305,3309],{},[883,3300,922],{},[883,3302,3303],{},[778,3304,908],{},[883,3306,3307],{},[778,3308,931],{},[883,3310,3311],{},[778,3312,841],{},[862,3314,3315,3317,3321,3325],{},[883,3316,940],{},[883,3318,3319],{},[778,3320,908],{},[883,3322,3323],{},[778,3324,949],{},[883,3326,3327],{},[778,3328,841],{},[862,3330,3331,3333,3337,3341],{},[883,3332,958],{},[883,3334,3335],{},[778,3336,908],{},[883,3338,3339],{},[778,3340,967],{},[883,3342,3343],{},[778,3344,972],{},[862,3346,3347,3349,3353,3357],{},[883,3348,977],{},[883,3350,3351],{},[778,3352,908],{},[883,3354,3355],{},[778,3356,967],{},[883,3358,3359],{},[778,3360,841],{},[862,3362,3363,3365,3369,3373],{},[883,3364,994],{},[883,3366,3367],{},[778,3368,999],{},[883,3370,3371],{},[778,3372,1004],{},[883,3374,3375],{},[778,3376,1009],{},[862,3378,3379,3381,3385,3389],{},[883,3380,1014],{},[883,3382,3383],{},[778,3384,1019],{},[883,3386,3387],{},[778,3388,1024],{},[883,3390,3391],{},[778,3392,1029],{},[756,3394,1032,3395,1036,3397,1040,3399,1044],{},[773,3396,1035],{},[828,3398,1039],{},[828,3400,1043],{},[1046,3402,1049],{"id":1048},[756,3404,1052,3405,1055,3407,1058],{},[778,3406,1004],{},[778,3408,1009],{},[756,3410,3411],{},[799,3412],{"alt":1063,"src":1064},[756,3414,1067,3415,1071,3417,1074,3419,1077,3421,1074,3423,1084],{},[828,3416,1070],{},[778,3418,1004],{},[778,3420,1009],{},[778,3422,1080],{},[778,3424,1083],{},[751,3426,1088],{"id":1087},[756,3428,1091],{},[756,3430,3431],{},[799,3432],{"alt":1096,"src":1097},[1099,3434,3435],{"className":1101,"code":1102,"language":62,"meta":1103,"style":1103},[778,3436,3437,3441,3451,3461,3471,3481,3491,3501,3507,3511,3521,3529,3533,3537,3551,3565,3571,3575,3585,3593,3597,3601,3607,3611,3621,3629,3633,3637],{"__ignoreMap":1103},[1107,3438,3439],{"class":1109,"line":1110},[1107,3440,1114],{"class":1113},[1107,3442,3443,3445,3447,3449],{"class":1109,"line":1117},[1107,3444,1121],{"class":1120},[1107,3446,1124],{"class":1113},[1107,3448,1128],{"class":1127},[1107,3450,1131],{"class":1113},[1107,3452,3453,3455,3457,3459],{"class":1109,"line":1134},[1107,3454,1137],{"class":1120},[1107,3456,1124],{"class":1113},[1107,3458,1142],{"class":1127},[1107,3460,1131],{"class":1113},[1107,3462,3463,3465,3467,3469],{"class":1109,"line":1147},[1107,3464,1150],{"class":1120},[1107,3466,1124],{"class":1113},[1107,3468,1155],{"class":1127},[1107,3470,1131],{"class":1113},[1107,3472,3473,3475,3477,3479],{"class":1109,"line":1160},[1107,3474,1163],{"class":1120},[1107,3476,1124],{"class":1113},[1107,3478,1168],{"class":1127},[1107,3480,1131],{"class":1113},[1107,3482,3483,3485,3487,3489],{"class":1109,"line":1173},[1107,3484,1176],{"class":1120},[1107,3486,1124],{"class":1113},[1107,3488,1181],{"class":1127},[1107,3490,1131],{"class":1113},[1107,3492,3493,3495,3497,3499],{"class":1109,"line":1186},[1107,3494,1189],{"class":1120},[1107,3496,1124],{"class":1113},[1107,3498,1194],{"class":1127},[1107,3500,1131],{"class":1113},[1107,3502,3503,3505],{"class":1109,"line":1199},[1107,3504,1202],{"class":1120},[1107,3506,1205],{"class":1113},[1107,3508,3509],{"class":1109,"line":1208},[1107,3510,1211],{"class":1113},[1107,3512,3513,3515,3517,3519],{"class":1109,"line":1214},[1107,3514,1217],{"class":1120},[1107,3516,1124],{"class":1113},[1107,3518,1222],{"class":1127},[1107,3520,1131],{"class":1113},[1107,3522,3523,3525,3527],{"class":1109,"line":1227},[1107,3524,1230],{"class":1120},[1107,3526,1124],{"class":1113},[1107,3528,1236],{"class":1235},[1107,3530,3531],{"class":1109,"line":1239},[1107,3532,1242],{"class":1113},[1107,3534,3535],{"class":1109,"line":1245},[1107,3536,1248],{"class":1113},[1107,3538,3539,3541,3543,3545,3547,3549],{"class":1109,"line":1251},[1107,3540,1254],{"class":1120},[1107,3542,1257],{"class":1113},[1107,3544,1260],{"class":1120},[1107,3546,1124],{"class":1113},[1107,3548,1265],{"class":1127},[1107,3550,1268],{"class":1113},[1107,3552,3553,3555,3557,3559,3561,3563],{"class":1109,"line":1271},[1107,3554,1274],{"class":1120},[1107,3556,1257],{"class":1113},[1107,3558,1260],{"class":1120},[1107,3560,1124],{"class":1113},[1107,3562,1265],{"class":1127},[1107,3564,1268],{"class":1113},[1107,3566,3567,3569],{"class":1109,"line":1287},[1107,3568,1290],{"class":1120},[1107,3570,1205],{"class":1113},[1107,3572,3573],{"class":1109,"line":1295},[1107,3574,1211],{"class":1113},[1107,3576,3577,3579,3581,3583],{"class":1109,"line":1300},[1107,3578,1303],{"class":1120},[1107,3580,1124],{"class":1113},[1107,3582,1308],{"class":1127},[1107,3584,1131],{"class":1113},[1107,3586,3587,3589,3591],{"class":1109,"line":1313},[1107,3588,1316],{"class":1120},[1107,3590,1124],{"class":1113},[1107,3592,1321],{"class":1127},[1107,3594,3595],{"class":1109,"line":1324},[1107,3596,1242],{"class":1113},[1107,3598,3599],{"class":1109,"line":1329},[1107,3600,1248],{"class":1113},[1107,3602,3603,3605],{"class":1109,"line":1334},[1107,3604,1337],{"class":1120},[1107,3606,1205],{"class":1113},[1107,3608,3609],{"class":1109,"line":1342},[1107,3610,1211],{"class":1113},[1107,3612,3613,3615,3617,3619],{"class":1109,"line":1347},[1107,3614,1303],{"class":1120},[1107,3616,1124],{"class":1113},[1107,3618,1354],{"class":1127},[1107,3620,1131],{"class":1113},[1107,3622,3623,3625,3627],{"class":1109,"line":1359},[1107,3624,1362],{"class":1120},[1107,3626,1124],{"class":1113},[1107,3628,1367],{"class":1127},[1107,3630,3631],{"class":1109,"line":1370},[1107,3632,1242],{"class":1113},[1107,3634,3635],{"class":1109,"line":1375},[1107,3636,1378],{"class":1113},[1107,3638,3639],{"class":1109,"line":1381},[1107,3640,1384],{"class":1113},[756,3642,1387],{},[756,3644,1390,3645,1394,3647,1398,3649,1402,3651,1406,3653,1410,3655,1413,3657,842],{},[773,3646,1393],{},[778,3648,1397],{},[778,3650,1401],{},[778,3652,1405],{},[778,3654,1409],{},[778,3656,1405],{},[778,3658,1405],{},[756,3660,818,3661,1421,3663,1425],{},[773,3662,1420],{},[778,3664,1424],{},[756,3666,818,3667,1431],{},[773,3668,1430],{},[756,3670,1434,3671,1441],{},[773,3672,3673,1440],{},[778,3674,1439],{},[1046,3676,1445],{"id":1444},[756,3678,1448,3679,1452],{},[778,3680,1451],{},[756,3682,3683],{},[799,3684],{"alt":1457,"src":1458},[756,3686,1461,3687,1464],{},[778,3688,1451],{},[751,3690,1468],{"id":1467},[756,3692,1471],{},[756,3694,3695],{},[799,3696],{"alt":1476,"src":1477},[756,3698,1480,3699,1484],{},[778,3700,1483],{},[1099,3702,3703],{"className":1101,"code":1487,"language":62,"meta":1103,"style":1103},[778,3704,3705,3709,3719,3729,3739,3749,3759,3765,3769,3779,3787,3791,3795,3809,3823],{"__ignoreMap":1103},[1107,3706,3707],{"class":1109,"line":1110},[1107,3708,1114],{"class":1113},[1107,3710,3711,3713,3715,3717],{"class":1109,"line":1117},[1107,3712,1121],{"class":1120},[1107,3714,1124],{"class":1113},[1107,3716,1502],{"class":1127},[1107,3718,1131],{"class":1113},[1107,3720,3721,3723,3725,3727],{"class":1109,"line":1134},[1107,3722,1509],{"class":1120},[1107,3724,1124],{"class":1113},[1107,3726,1514],{"class":1127},[1107,3728,1131],{"class":1113},[1107,3730,3731,3733,3735,3737],{"class":1109,"line":1147},[1107,3732,1163],{"class":1120},[1107,3734,1124],{"class":1113},[1107,3736,1525],{"class":1127},[1107,3738,1131],{"class":1113},[1107,3740,3741,3743,3745,3747],{"class":1109,"line":1160},[1107,3742,1176],{"class":1120},[1107,3744,1124],{"class":1113},[1107,3746,1536],{"class":1127},[1107,3748,1131],{"class":1113},[1107,3750,3751,3753,3755,3757],{"class":1109,"line":1173},[1107,3752,1189],{"class":1120},[1107,3754,1124],{"class":1113},[1107,3756,1194],{"class":1127},[1107,3758,1131],{"class":1113},[1107,3760,3761,3763],{"class":1109,"line":1186},[1107,3762,1553],{"class":1120},[1107,3764,1205],{"class":1113},[1107,3766,3767],{"class":1109,"line":1199},[1107,3768,1211],{"class":1113},[1107,3770,3771,3773,3775,3777],{"class":1109,"line":1208},[1107,3772,1217],{"class":1120},[1107,3774,1124],{"class":1113},[1107,3776,1222],{"class":1127},[1107,3778,1131],{"class":1113},[1107,3780,3781,3783,3785],{"class":1109,"line":1214},[1107,3782,1230],{"class":1120},[1107,3784,1124],{"class":1113},[1107,3786,1578],{"class":1235},[1107,3788,3789],{"class":1109,"line":1227},[1107,3790,1242],{"class":1113},[1107,3792,3793],{"class":1109,"line":1239},[1107,3794,1248],{"class":1113},[1107,3796,3797,3799,3801,3803,3805,3807],{"class":1109,"line":1245},[1107,3798,1254],{"class":1120},[1107,3800,1257],{"class":1113},[1107,3802,1260],{"class":1120},[1107,3804,1124],{"class":1113},[1107,3806,1265],{"class":1127},[1107,3808,1268],{"class":1113},[1107,3810,3811,3813,3815,3817,3819,3821],{"class":1109,"line":1251},[1107,3812,1274],{"class":1120},[1107,3814,1257],{"class":1113},[1107,3816,1260],{"class":1120},[1107,3818,1124],{"class":1113},[1107,3820,1265],{"class":1127},[1107,3822,1615],{"class":1113},[1107,3824,3825],{"class":1109,"line":1271},[1107,3826,1384],{"class":1113},[756,3828,1622,3829,1626],{},[773,3830,1625],{},[1099,3832,3833],{"className":1101,"code":1629,"language":62,"meta":1103,"style":1103},[778,3834,3835,3839,3849,3859,3869,3879,3889,3895,3901,3905,3909,3923,3937],{"__ignoreMap":1103},[1107,3836,3837],{"class":1109,"line":1110},[1107,3838,1114],{"class":1113},[1107,3840,3841,3843,3845,3847],{"class":1109,"line":1117},[1107,3842,1121],{"class":1120},[1107,3844,1124],{"class":1113},[1107,3846,1502],{"class":1127},[1107,3848,1131],{"class":1113},[1107,3850,3851,3853,3855,3857],{"class":1109,"line":1134},[1107,3852,1509],{"class":1120},[1107,3854,1124],{"class":1113},[1107,3856,1654],{"class":1127},[1107,3858,1131],{"class":1113},[1107,3860,3861,3863,3865,3867],{"class":1109,"line":1147},[1107,3862,1163],{"class":1120},[1107,3864,1124],{"class":1113},[1107,3866,1525],{"class":1127},[1107,3868,1131],{"class":1113},[1107,3870,3871,3873,3875,3877],{"class":1109,"line":1160},[1107,3872,1176],{"class":1120},[1107,3874,1124],{"class":1113},[1107,3876,1536],{"class":1127},[1107,3878,1131],{"class":1113},[1107,3880,3881,3883,3885,3887],{"class":1109,"line":1173},[1107,3882,1189],{"class":1120},[1107,3884,1124],{"class":1113},[1107,3886,1194],{"class":1127},[1107,3888,1131],{"class":1113},[1107,3890,3891,3893],{"class":1109,"line":1186},[1107,3892,1691],{"class":1120},[1107,3894,1205],{"class":1113},[1107,3896,3897,3899],{"class":1109,"line":1199},[1107,3898,1698],{"class":1127},[1107,3900,1131],{"class":1113},[1107,3902,3903],{"class":1109,"line":1208},[1107,3904,1705],{"class":1127},[1107,3906,3907],{"class":1109,"line":1214},[1107,3908,1248],{"class":1113},[1107,3910,3911,3913,3915,3917,3919,3921],{"class":1109,"line":1227},[1107,3912,1254],{"class":1120},[1107,3914,1257],{"class":1113},[1107,3916,1260],{"class":1120},[1107,3918,1124],{"class":1113},[1107,3920,1265],{"class":1127},[1107,3922,1268],{"class":1113},[1107,3924,3925,3927,3929,3931,3933,3935],{"class":1109,"line":1239},[1107,3926,1274],{"class":1120},[1107,3928,1257],{"class":1113},[1107,3930,1260],{"class":1120},[1107,3932,1124],{"class":1113},[1107,3934,1265],{"class":1127},[1107,3936,1615],{"class":1113},[1107,3938,3939],{"class":1109,"line":1245},[1107,3940,1384],{"class":1113},[756,3942,1744],{},[756,3944,1747,3945,1751],{},[773,3946,1750],{},[751,3948,1755],{"id":1754},[756,3950,1758],{},[1099,3952,3953],{"className":1101,"code":1761,"language":62,"meta":1103,"style":1103},[778,3954,3955,3959,3969,3979,3989,3999,4009,4019,4033,4047],{"__ignoreMap":1103},[1107,3956,3957],{"class":1109,"line":1110},[1107,3958,1114],{"class":1113},[1107,3960,3961,3963,3965,3967],{"class":1109,"line":1117},[1107,3962,1121],{"class":1120},[1107,3964,1124],{"class":1113},[1107,3966,1502],{"class":1127},[1107,3968,1131],{"class":1113},[1107,3970,3971,3973,3975,3977],{"class":1109,"line":1134},[1107,3972,1509],{"class":1120},[1107,3974,1124],{"class":1113},[1107,3976,1654],{"class":1127},[1107,3978,1131],{"class":1113},[1107,3980,3981,3983,3985,3987],{"class":1109,"line":1147},[1107,3982,1163],{"class":1120},[1107,3984,1124],{"class":1113},[1107,3986,1796],{"class":1127},[1107,3988,1131],{"class":1113},[1107,3990,3991,3993,3995,3997],{"class":1109,"line":1160},[1107,3992,1176],{"class":1120},[1107,3994,1124],{"class":1113},[1107,3996,1807],{"class":1127},[1107,3998,1131],{"class":1113},[1107,4000,4001,4003,4005,4007],{"class":1109,"line":1173},[1107,4002,1189],{"class":1120},[1107,4004,1124],{"class":1113},[1107,4006,1194],{"class":1127},[1107,4008,1131],{"class":1113},[1107,4010,4011,4013,4015,4017],{"class":1109,"line":1186},[1107,4012,1691],{"class":1120},[1107,4014,1826],{"class":1113},[1107,4016,1514],{"class":1127},[1107,4018,1831],{"class":1113},[1107,4020,4021,4023,4025,4027,4029,4031],{"class":1109,"line":1199},[1107,4022,1254],{"class":1120},[1107,4024,1257],{"class":1113},[1107,4026,1260],{"class":1120},[1107,4028,1124],{"class":1113},[1107,4030,1265],{"class":1127},[1107,4032,1268],{"class":1113},[1107,4034,4035,4037,4039,4041,4043,4045],{"class":1109,"line":1208},[1107,4036,1274],{"class":1120},[1107,4038,1257],{"class":1113},[1107,4040,1260],{"class":1120},[1107,4042,1124],{"class":1113},[1107,4044,1265],{"class":1127},[1107,4046,1615],{"class":1113},[1107,4048,4049],{"class":1109,"line":1214},[1107,4050,1384],{"class":1113},[756,4052,1866,4053,1870],{},[828,4054,1869],{},[1099,4056,4057],{"className":1101,"code":1873,"language":62,"meta":1103,"style":1103},[778,4058,4059,4063,4073,4083,4093,4103,4109,4113,4123,4131,4135,4139,4153,4167,4173,4177,4187,4195,4199,4203,4209,4213,4223,4231,4235,4239],{"__ignoreMap":1103},[1107,4060,4061],{"class":1109,"line":1110},[1107,4062,1114],{"class":1113},[1107,4064,4065,4067,4069,4071],{"class":1109,"line":1117},[1107,4066,1121],{"class":1120},[1107,4068,1124],{"class":1113},[1107,4070,1128],{"class":1127},[1107,4072,1131],{"class":1113},[1107,4074,4075,4077,4079,4081],{"class":1109,"line":1134},[1107,4076,1163],{"class":1120},[1107,4078,1124],{"class":1113},[1107,4080,1168],{"class":1127},[1107,4082,1131],{"class":1113},[1107,4084,4085,4087,4089,4091],{"class":1109,"line":1147},[1107,4086,1176],{"class":1120},[1107,4088,1124],{"class":1113},[1107,4090,1908],{"class":1127},[1107,4092,1131],{"class":1113},[1107,4094,4095,4097,4099,4101],{"class":1109,"line":1160},[1107,4096,1189],{"class":1120},[1107,4098,1124],{"class":1113},[1107,4100,1919],{"class":1127},[1107,4102,1131],{"class":1113},[1107,4104,4105,4107],{"class":1109,"line":1173},[1107,4106,1202],{"class":1120},[1107,4108,1205],{"class":1113},[1107,4110,4111],{"class":1109,"line":1186},[1107,4112,1211],{"class":1113},[1107,4114,4115,4117,4119,4121],{"class":1109,"line":1199},[1107,4116,1217],{"class":1120},[1107,4118,1124],{"class":1113},[1107,4120,1222],{"class":1127},[1107,4122,1131],{"class":1113},[1107,4124,4125,4127,4129],{"class":1109,"line":1208},[1107,4126,1230],{"class":1120},[1107,4128,1124],{"class":1113},[1107,4130,1578],{"class":1235},[1107,4132,4133],{"class":1109,"line":1214},[1107,4134,1242],{"class":1113},[1107,4136,4137],{"class":1109,"line":1227},[1107,4138,1248],{"class":1113},[1107,4140,4141,4143,4145,4147,4149,4151],{"class":1109,"line":1239},[1107,4142,1254],{"class":1120},[1107,4144,1257],{"class":1113},[1107,4146,1260],{"class":1120},[1107,4148,1124],{"class":1113},[1107,4150,1265],{"class":1127},[1107,4152,1268],{"class":1113},[1107,4154,4155,4157,4159,4161,4163,4165],{"class":1109,"line":1245},[1107,4156,1274],{"class":1120},[1107,4158,1257],{"class":1113},[1107,4160,1260],{"class":1120},[1107,4162,1124],{"class":1113},[1107,4164,1265],{"class":1127},[1107,4166,1268],{"class":1113},[1107,4168,4169,4171],{"class":1109,"line":1251},[1107,4170,1290],{"class":1120},[1107,4172,1205],{"class":1113},[1107,4174,4175],{"class":1109,"line":1271},[1107,4176,1211],{"class":1113},[1107,4178,4179,4181,4183,4185],{"class":1109,"line":1287},[1107,4180,1303],{"class":1120},[1107,4182,1124],{"class":1113},[1107,4184,2004],{"class":1127},[1107,4186,1131],{"class":1113},[1107,4188,4189,4191,4193],{"class":1109,"line":1295},[1107,4190,1316],{"class":1120},[1107,4192,1124],{"class":1113},[1107,4194,2015],{"class":1127},[1107,4196,4197],{"class":1109,"line":1300},[1107,4198,1242],{"class":1113},[1107,4200,4201],{"class":1109,"line":1313},[1107,4202,1248],{"class":1113},[1107,4204,4205,4207],{"class":1109,"line":1324},[1107,4206,2028],{"class":1120},[1107,4208,1205],{"class":1113},[1107,4210,4211],{"class":1109,"line":1329},[1107,4212,1211],{"class":1113},[1107,4214,4215,4217,4219,4221],{"class":1109,"line":1334},[1107,4216,1303],{"class":1120},[1107,4218,1124],{"class":1113},[1107,4220,1354],{"class":1127},[1107,4222,1131],{"class":1113},[1107,4224,4225,4227,4229],{"class":1109,"line":1342},[1107,4226,2049],{"class":1120},[1107,4228,1124],{"class":1113},[1107,4230,2054],{"class":1127},[1107,4232,4233],{"class":1109,"line":1347},[1107,4234,1242],{"class":1113},[1107,4236,4237],{"class":1109,"line":1359},[1107,4238,1378],{"class":1113},[1107,4240,4241],{"class":1109,"line":1370},[1107,4242,1384],{"class":1113},[756,4244,2069],{},[751,4246,2073],{"id":2072},[756,4248,2076,4249,2080],{},[778,4250,2079],{},[756,4252,2083,4253,2086,4255,2090,4257,2094],{},[778,4254,2079],{},[778,4256,2089],{},[773,4258,2093],{},[1099,4260,4261],{"className":1101,"code":2097,"language":62,"meta":1103,"style":1103},[778,4262,4263,4267,4277,4287,4297,4307,4313,4317,4327,4335,4339,4343,4357,4371,4377,4381,4391,4399,4403,4407],{"__ignoreMap":1103},[1107,4264,4265],{"class":1109,"line":1110},[1107,4266,1114],{"class":1113},[1107,4268,4269,4271,4273,4275],{"class":1109,"line":1117},[1107,4270,1121],{"class":1120},[1107,4272,1124],{"class":1113},[1107,4274,2112],{"class":1127},[1107,4276,1131],{"class":1113},[1107,4278,4279,4281,4283,4285],{"class":1109,"line":1134},[1107,4280,1163],{"class":1120},[1107,4282,1124],{"class":1113},[1107,4284,1796],{"class":1127},[1107,4286,1131],{"class":1113},[1107,4288,4289,4291,4293,4295],{"class":1109,"line":1147},[1107,4290,1176],{"class":1120},[1107,4292,1124],{"class":1113},[1107,4294,1181],{"class":1127},[1107,4296,1131],{"class":1113},[1107,4298,4299,4301,4303,4305],{"class":1109,"line":1160},[1107,4300,1189],{"class":1120},[1107,4302,1124],{"class":1113},[1107,4304,2143],{"class":1127},[1107,4306,1131],{"class":1113},[1107,4308,4309,4311],{"class":1109,"line":1173},[1107,4310,1202],{"class":1120},[1107,4312,1205],{"class":1113},[1107,4314,4315],{"class":1109,"line":1186},[1107,4316,1211],{"class":1113},[1107,4318,4319,4321,4323,4325],{"class":1109,"line":1199},[1107,4320,1217],{"class":1120},[1107,4322,1124],{"class":1113},[1107,4324,1222],{"class":1127},[1107,4326,1131],{"class":1113},[1107,4328,4329,4331,4333],{"class":1109,"line":1208},[1107,4330,1230],{"class":1120},[1107,4332,1124],{"class":1113},[1107,4334,2174],{"class":1235},[1107,4336,4337],{"class":1109,"line":1214},[1107,4338,1242],{"class":1113},[1107,4340,4341],{"class":1109,"line":1227},[1107,4342,1248],{"class":1113},[1107,4344,4345,4347,4349,4351,4353,4355],{"class":1109,"line":1239},[1107,4346,1254],{"class":1120},[1107,4348,1257],{"class":1113},[1107,4350,1260],{"class":1120},[1107,4352,1124],{"class":1113},[1107,4354,1265],{"class":1127},[1107,4356,1268],{"class":1113},[1107,4358,4359,4361,4363,4365,4367,4369],{"class":1109,"line":1245},[1107,4360,1274],{"class":1120},[1107,4362,1257],{"class":1113},[1107,4364,1260],{"class":1120},[1107,4366,1124],{"class":1113},[1107,4368,1265],{"class":1127},[1107,4370,1268],{"class":1113},[1107,4372,4373,4375],{"class":1109,"line":1251},[1107,4374,1290],{"class":1120},[1107,4376,1205],{"class":1113},[1107,4378,4379],{"class":1109,"line":1271},[1107,4380,1211],{"class":1113},[1107,4382,4383,4385,4387,4389],{"class":1109,"line":1287},[1107,4384,1303],{"class":1120},[1107,4386,1124],{"class":1113},[1107,4388,2004],{"class":1127},[1107,4390,1131],{"class":1113},[1107,4392,4393,4395,4397],{"class":1109,"line":1295},[1107,4394,1316],{"class":1120},[1107,4396,1124],{"class":1113},[1107,4398,2015],{"class":1127},[1107,4400,4401],{"class":1109,"line":1300},[1107,4402,1242],{"class":1113},[1107,4404,4405],{"class":1109,"line":1313},[1107,4406,1378],{"class":1113},[1107,4408,4409],{"class":1109,"line":1324},[1107,4410,1384],{"class":1113},[756,4412,2253,4413,2257],{},[828,4414,2256],{},[751,4416,2261],{"id":2260},[756,4418,2264,4419,2268],{},[773,4420,2267],{},[756,4422,2271],{},[1099,4424,4425],{"className":1101,"code":2274,"language":62,"meta":1103,"style":1103},[778,4426,4427,4431,4441,4451,4461,4471,4481,4487,4491,4501,4509,4513,4517,4531,4545],{"__ignoreMap":1103},[1107,4428,4429],{"class":1109,"line":1110},[1107,4430,1114],{"class":1113},[1107,4432,4433,4435,4437,4439],{"class":1109,"line":1117},[1107,4434,1121],{"class":1120},[1107,4436,1124],{"class":1113},[1107,4438,1502],{"class":1127},[1107,4440,1131],{"class":1113},[1107,4442,4443,4445,4447,4449],{"class":1109,"line":1134},[1107,4444,1509],{"class":1120},[1107,4446,1124],{"class":1113},[1107,4448,2299],{"class":1127},[1107,4450,1131],{"class":1113},[1107,4452,4453,4455,4457,4459],{"class":1109,"line":1147},[1107,4454,1163],{"class":1120},[1107,4456,1124],{"class":1113},[1107,4458,1796],{"class":1127},[1107,4460,1131],{"class":1113},[1107,4462,4463,4465,4467,4469],{"class":1109,"line":1160},[1107,4464,1176],{"class":1120},[1107,4466,1124],{"class":1113},[1107,4468,1807],{"class":1127},[1107,4470,1131],{"class":1113},[1107,4472,4473,4475,4477,4479],{"class":1109,"line":1173},[1107,4474,1189],{"class":1120},[1107,4476,1124],{"class":1113},[1107,4478,1194],{"class":1127},[1107,4480,1131],{"class":1113},[1107,4482,4483,4485],{"class":1109,"line":1186},[1107,4484,1553],{"class":1120},[1107,4486,1205],{"class":1113},[1107,4488,4489],{"class":1109,"line":1199},[1107,4490,1211],{"class":1113},[1107,4492,4493,4495,4497,4499],{"class":1109,"line":1208},[1107,4494,1217],{"class":1120},[1107,4496,1124],{"class":1113},[1107,4498,1222],{"class":1127},[1107,4500,1131],{"class":1113},[1107,4502,4503,4505,4507],{"class":1109,"line":1214},[1107,4504,1230],{"class":1120},[1107,4506,1124],{"class":1113},[1107,4508,1578],{"class":1235},[1107,4510,4511],{"class":1109,"line":1227},[1107,4512,1242],{"class":1113},[1107,4514,4515],{"class":1109,"line":1239},[1107,4516,1248],{"class":1113},[1107,4518,4519,4521,4523,4525,4527,4529],{"class":1109,"line":1245},[1107,4520,1254],{"class":1120},[1107,4522,1257],{"class":1113},[1107,4524,1260],{"class":1120},[1107,4526,1124],{"class":1113},[1107,4528,1265],{"class":1127},[1107,4530,1268],{"class":1113},[1107,4532,4533,4535,4537,4539,4541,4543],{"class":1109,"line":1251},[1107,4534,1274],{"class":1120},[1107,4536,1257],{"class":1113},[1107,4538,1260],{"class":1120},[1107,4540,1124],{"class":1113},[1107,4542,1265],{"class":1127},[1107,4544,1615],{"class":1113},[1107,4546,4547],{"class":1109,"line":1271},[1107,4548,1384],{"class":1113},[756,4550,2402,4551,2406],{},[828,4552,2405],{},[751,4554,2410],{"id":2409},[756,4556,2413,4557,2417],{},[778,4558,2416],{},[756,4560,4561],{},[799,4562],{"alt":2422,"src":2423},[1099,4564,4565],{"className":1101,"code":2426,"language":62,"meta":1103,"style":1103},[778,4566,4567,4571,4581,4587,4591,4601,4609,4613,4617,4623,4627,4637,4645,4649,4653,4663,4673,4687,4701],{"__ignoreMap":1103},[1107,4568,4569],{"class":1109,"line":1110},[1107,4570,1114],{"class":1113},[1107,4572,4573,4575,4577,4579],{"class":1109,"line":1117},[1107,4574,1121],{"class":1120},[1107,4576,1124],{"class":1113},[1107,4578,2441],{"class":1127},[1107,4580,1131],{"class":1113},[1107,4582,4583,4585],{"class":1109,"line":1134},[1107,4584,2448],{"class":1120},[1107,4586,1205],{"class":1113},[1107,4588,4589],{"class":1109,"line":1147},[1107,4590,1211],{"class":1113},[1107,4592,4593,4595,4597,4599],{"class":1109,"line":1160},[1107,4594,1217],{"class":1120},[1107,4596,1124],{"class":1113},[1107,4598,1222],{"class":1127},[1107,4600,1131],{"class":1113},[1107,4602,4603,4605,4607],{"class":1109,"line":1173},[1107,4604,1230],{"class":1120},[1107,4606,1124],{"class":1113},[1107,4608,2473],{"class":1235},[1107,4610,4611],{"class":1109,"line":1186},[1107,4612,1242],{"class":1113},[1107,4614,4615],{"class":1109,"line":1199},[1107,4616,1248],{"class":1113},[1107,4618,4619,4621],{"class":1109,"line":1208},[1107,4620,2486],{"class":1120},[1107,4622,1205],{"class":1113},[1107,4624,4625],{"class":1109,"line":1214},[1107,4626,1211],{"class":1113},[1107,4628,4629,4631,4633,4635],{"class":1109,"line":1227},[1107,4630,1217],{"class":1120},[1107,4632,1124],{"class":1113},[1107,4634,2501],{"class":1127},[1107,4636,1131],{"class":1113},[1107,4638,4639,4641,4643],{"class":1109,"line":1239},[1107,4640,1230],{"class":1120},[1107,4642,1124],{"class":1113},[1107,4644,2512],{"class":1235},[1107,4646,4647],{"class":1109,"line":1245},[1107,4648,1242],{"class":1113},[1107,4650,4651],{"class":1109,"line":1251},[1107,4652,1248],{"class":1113},[1107,4654,4655,4657,4659,4661],{"class":1109,"line":1271},[1107,4656,1176],{"class":1120},[1107,4658,1124],{"class":1113},[1107,4660,2529],{"class":1127},[1107,4662,1131],{"class":1113},[1107,4664,4665,4667,4669,4671],{"class":1109,"line":1287},[1107,4666,1189],{"class":1120},[1107,4668,1124],{"class":1113},[1107,4670,2540],{"class":1127},[1107,4672,1131],{"class":1113},[1107,4674,4675,4677,4679,4681,4683,4685],{"class":1109,"line":1295},[1107,4676,1254],{"class":1120},[1107,4678,1257],{"class":1113},[1107,4680,1260],{"class":1120},[1107,4682,1124],{"class":1113},[1107,4684,1265],{"class":1127},[1107,4686,1268],{"class":1113},[1107,4688,4689,4691,4693,4695,4697,4699],{"class":1109,"line":1300},[1107,4690,1274],{"class":1120},[1107,4692,1257],{"class":1113},[1107,4694,1260],{"class":1120},[1107,4696,1124],{"class":1113},[1107,4698,1265],{"class":1127},[1107,4700,1615],{"class":1113},[1107,4702,4703],{"class":1109,"line":1313},[1107,4704,1384],{"class":1113},[756,4706,2577,4707,2584],{},[773,4708,2580,4709],{},[778,4710,2583],{},[751,4712,2588],{"id":2587},[756,4714,2591],{},[756,4716,4717],{},[799,4718],{"alt":2596,"src":2597},[1099,4720,4721],{"className":1101,"code":2600,"language":62,"meta":1103,"style":1103},[778,4722,4723,4727,4737,4747,4757,4767,4773,4777,4787,4795,4799,4803,4817,4831,4837,4841,4851,4859,4863,4867,4873,4877,4887,4895,4899,4903,4909,4919,4927,4931],{"__ignoreMap":1103},[1107,4724,4725],{"class":1109,"line":1110},[1107,4726,1114],{"class":1113},[1107,4728,4729,4731,4733,4735],{"class":1109,"line":1117},[1107,4730,1121],{"class":1120},[1107,4732,1124],{"class":1113},[1107,4734,1128],{"class":1127},[1107,4736,1131],{"class":1113},[1107,4738,4739,4741,4743,4745],{"class":1109,"line":1134},[1107,4740,1163],{"class":1120},[1107,4742,1124],{"class":1113},[1107,4744,1168],{"class":1127},[1107,4746,1131],{"class":1113},[1107,4748,4749,4751,4753,4755],{"class":1109,"line":1147},[1107,4750,1176],{"class":1120},[1107,4752,1124],{"class":1113},[1107,4754,1908],{"class":1127},[1107,4756,1131],{"class":1113},[1107,4758,4759,4761,4763,4765],{"class":1109,"line":1160},[1107,4760,1189],{"class":1120},[1107,4762,1124],{"class":1113},[1107,4764,1919],{"class":1127},[1107,4766,1131],{"class":1113},[1107,4768,4769,4771],{"class":1109,"line":1173},[1107,4770,1202],{"class":1120},[1107,4772,1205],{"class":1113},[1107,4774,4775],{"class":1109,"line":1186},[1107,4776,1211],{"class":1113},[1107,4778,4779,4781,4783,4785],{"class":1109,"line":1199},[1107,4780,1217],{"class":1120},[1107,4782,1124],{"class":1113},[1107,4784,1222],{"class":1127},[1107,4786,1131],{"class":1113},[1107,4788,4789,4791,4793],{"class":1109,"line":1208},[1107,4790,1230],{"class":1120},[1107,4792,1124],{"class":1113},[1107,4794,1578],{"class":1235},[1107,4796,4797],{"class":1109,"line":1214},[1107,4798,1242],{"class":1113},[1107,4800,4801],{"class":1109,"line":1227},[1107,4802,1248],{"class":1113},[1107,4804,4805,4807,4809,4811,4813,4815],{"class":1109,"line":1239},[1107,4806,1254],{"class":1120},[1107,4808,1257],{"class":1113},[1107,4810,1260],{"class":1120},[1107,4812,1124],{"class":1113},[1107,4814,1265],{"class":1127},[1107,4816,1268],{"class":1113},[1107,4818,4819,4821,4823,4825,4827,4829],{"class":1109,"line":1245},[1107,4820,1274],{"class":1120},[1107,4822,1257],{"class":1113},[1107,4824,1260],{"class":1120},[1107,4826,1124],{"class":1113},[1107,4828,1265],{"class":1127},[1107,4830,1268],{"class":1113},[1107,4832,4833,4835],{"class":1109,"line":1251},[1107,4834,1290],{"class":1120},[1107,4836,1205],{"class":1113},[1107,4838,4839],{"class":1109,"line":1271},[1107,4840,1211],{"class":1113},[1107,4842,4843,4845,4847,4849],{"class":1109,"line":1287},[1107,4844,1303],{"class":1120},[1107,4846,1124],{"class":1113},[1107,4848,2004],{"class":1127},[1107,4850,1131],{"class":1113},[1107,4852,4853,4855,4857],{"class":1109,"line":1295},[1107,4854,1316],{"class":1120},[1107,4856,1124],{"class":1113},[1107,4858,2015],{"class":1127},[1107,4860,4861],{"class":1109,"line":1300},[1107,4862,1242],{"class":1113},[1107,4864,4865],{"class":1109,"line":1313},[1107,4866,1248],{"class":1113},[1107,4868,4869,4871],{"class":1109,"line":1324},[1107,4870,2028],{"class":1120},[1107,4872,1205],{"class":1113},[1107,4874,4875],{"class":1109,"line":1329},[1107,4876,1211],{"class":1113},[1107,4878,4879,4881,4883,4885],{"class":1109,"line":1334},[1107,4880,1303],{"class":1120},[1107,4882,1124],{"class":1113},[1107,4884,1354],{"class":1127},[1107,4886,1131],{"class":1113},[1107,4888,4889,4891,4893],{"class":1109,"line":1342},[1107,4890,2049],{"class":1120},[1107,4892,1124],{"class":1113},[1107,4894,2054],{"class":1127},[1107,4896,4897],{"class":1109,"line":1347},[1107,4898,1242],{"class":1113},[1107,4900,4901],{"class":1109,"line":1359},[1107,4902,1248],{"class":1113},[1107,4904,4905,4907],{"class":1109,"line":1370},[1107,4906,2787],{"class":1120},[1107,4908,2790],{"class":1113},[1107,4910,4911,4913,4915,4917],{"class":1109,"line":1375},[1107,4912,2795],{"class":1120},[1107,4914,1124],{"class":1113},[1107,4916,2800],{"class":1127},[1107,4918,1131],{"class":1113},[1107,4920,4921,4923,4925],{"class":1109,"line":1381},[1107,4922,2807],{"class":1120},[1107,4924,1124],{"class":1113},[1107,4926,2812],{"class":1127},[1107,4928,4929],{"class":1109,"line":2815},[1107,4930,2818],{"class":1113},[1107,4932,4933],{"class":1109,"line":2821},[1107,4934,1384],{"class":1113},[756,4936,2826,4937,2830],{},[773,4938,2829],{},[756,4940,2833,4941,2837,4943,2841],{},[778,4942,2836],{},[778,4944,2840],{},[751,4946,2845],{"id":2844},[756,4948,2848,4949,2852],{},[828,4950,2851],{},[756,4952,4953],{},[799,4954],{"alt":2857,"src":2858},[756,4956,2861,4957,2865,4959,2869,4961,2873],{},[773,4958,2864],{},[828,4960,2868],{},[828,4962,2872],{},[756,4964,2876],{},[756,4966,4967],{},[799,4968],{"alt":2881,"src":2882},[756,4970,818,4971,2888,4973,2892],{},[773,4972,2887],{},[778,4974,2891],{},[756,4976,818,4977,2898],{},[773,4978,2897],{},[751,4980,2902],{"id":2901},[756,4982,2905,4983,2909],{},[778,4984,2908],{},[756,4986,2912,4987,2920,4990,2924,4992,2928],{},[2914,4988,2919],{"href":2916,"rel":4989},[2918],[778,4991,2923],{},[778,4993,2927],{},[1046,4995,2932],{"id":2931},[756,4997,2935,4998,2938,5000,2941],{},[778,4999,780],{},[828,5001,2872],{},[2943,5003,2945],{},{"title":1103,"searchDepth":1117,"depth":1117,"links":5005},[5006,5007,5008,5011,5014,5015,5016,5017,5018,5019,5020,5021],{"id":753,"depth":1117,"text":754},{"id":784,"depth":1117,"text":785},{"id":825,"depth":1117,"text":2951,"children":5009},[5010],{"id":1048,"depth":1134,"text":1049},{"id":1087,"depth":1117,"text":1088,"children":5012},[5013],{"id":1444,"depth":1134,"text":1445},{"id":1467,"depth":1117,"text":1468},{"id":1754,"depth":1117,"text":1755},{"id":2072,"depth":1117,"text":2073},{"id":2260,"depth":1117,"text":2261},{"id":2409,"depth":1117,"text":2410},{"id":2587,"depth":1117,"text":2588},{"id":2844,"depth":1117,"text":2845},{"id":2901,"depth":1117,"text":2902,"children":5022},[5023],{"id":2931,"depth":1134,"text":2932},{"head":5025,"readingTime":5028},{"meta":5026},[5027],{"name":2973,"content":2974},{"text":2976,"minutes":2977,"time":2978,"words":2979},{"title":718,"tags":5030},[677,679,31,65,104,372,714,723],{"title":746,"description":721},{"loc":719,"lastmod":2984,"changefreq":2985,"priority":2986},1788349686115]