@argonprotocol/mainchain 1.4.3 → 1.4.4-dev.abb08dac

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/browser/artifacts/contracts/ArgonToken.sol/ArgonToken.json +671 -0
  2. package/browser/artifacts/contracts/ArgonotToken.sol/ArgonotToken.json +671 -0
  3. package/browser/artifacts/contracts/MintingGateway.sol/MintingGateway.json +1688 -0
  4. package/browser/artifacts/contracts/ProxyArtifacts.sol/ProxyAdmin.json +135 -0
  5. package/browser/artifacts/contracts/ProxyArtifacts.sol/TransparentUpgradeableProxy.json +131 -0
  6. package/browser/index.d.ts +2875 -1792
  7. package/browser/index.js +6827 -200
  8. package/browser/index.js.map +1 -1
  9. package/lib/artifacts/contracts/ArgonToken.sol/ArgonToken.json +671 -0
  10. package/lib/artifacts/contracts/ArgonotToken.sol/ArgonotToken.json +671 -0
  11. package/lib/artifacts/contracts/MintingGateway.sol/MintingGateway.json +1688 -0
  12. package/lib/artifacts/contracts/ProxyArtifacts.sol/ProxyAdmin.json +135 -0
  13. package/lib/artifacts/contracts/ProxyArtifacts.sol/TransparentUpgradeableProxy.json +131 -0
  14. package/lib/index.cjs +6915 -266
  15. package/lib/index.cjs.map +1 -1
  16. package/lib/index.d.cts +2875 -1792
  17. package/lib/index.d.ts +2875 -1792
  18. package/lib/index.js +6855 -206
  19. package/lib/index.js.map +1 -1
  20. package/package.json +29 -26
  21. package/src/interfaces/augment-api-consts.ts +656 -0
  22. package/src/interfaces/augment-api-errors.ts +1376 -0
  23. package/src/interfaces/augment-api-events.ts +2098 -0
  24. package/src/interfaces/augment-api-query.ts +1809 -0
  25. package/src/interfaces/augment-api-rpc.ts +1133 -0
  26. package/src/interfaces/augment-api-runtime.ts +306 -0
  27. package/src/interfaces/augment-api-tx.ts +2298 -0
  28. package/src/interfaces/augment-api.ts +10 -0
  29. package/src/interfaces/augment-types.ts +2692 -0
  30. package/src/interfaces/definitions.ts +42 -0
  31. package/src/interfaces/ethereum/index.ts +4 -0
  32. package/src/interfaces/ethereum/types.ts +66 -0
  33. package/src/interfaces/lookup.ts +4167 -0
  34. package/src/interfaces/registry.ts +598 -0
  35. package/src/interfaces/types-lookup.ts +4868 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../metadata.json","../runtime_version.json","../genesis.json","../src/WageProtector.ts","../src/utils.ts","../src/TxResult.ts","../src/TxSubmitter.ts","../src/keyringUtils.ts","../src/header.ts","../src/Vault.ts","../src/convert.ts","../src/BitcoinLock.ts","../src/PriceIndex.ts","../src/index.ts"],"names":["BN","BigNumber","result","registry"],"mappings":"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","file":"index.js","sourcesContent":["{\n \"jsonrpc\": \"2.0\",\n \"id\": \"1\",\n \"result\": \"0x6d6574610ecd08000c1c73705f636f72651863727970746f2c4163636f756e7449643332000004000401205b75383b2033325d0000040000032000000008000800000503000c08306672616d655f73797374656d2c4163636f756e74496e666f08144e6f6e636501102c4163636f756e74446174610114001401146e6f6e63651001144e6f6e6365000124636f6e73756d657273100120526566436f756e7400012470726f766964657273100120526566436f756e7400012c73756666696369656e7473100120526566436f756e740001106461746114012c4163636f756e74446174610000100000050500140c3c70616c6c65745f62616c616e6365731474797065732c4163636f756e7444617461041c42616c616e63650118001001106672656518011c42616c616e6365000120726573657276656418011c42616c616e636500011866726f7a656e18011c42616c616e6365000114666c6167731c01284578747261466c61677300001800000507001c0c3c70616c6c65745f62616c616e636573147479706573284578747261466c61677300000400180110753132380000200000050000240c346672616d655f737570706f7274206469737061746368405065724469737061746368436c6173730404540128000c01186e6f726d616c2801045400012c6f7065726174696f6e616c280104540001246d616e6461746f7279280104540000280c2873705f77656967687473247765696768745f76321857656967687400000801207265665f74696d652c010c75363400012870726f6f665f73697a652c010c75363400002c000006300030000005060034083c7072696d69746976655f74797065731048323536000004000401205b75383b2033325d00003800000208003c102873705f72756e74696d651c67656e65726963186469676573741844696765737400000401106c6f677340013c5665633c4469676573744974656d3e000040000002440044102873705f72756e74696d651c67656e6572696318646967657374284469676573744974656d0001142850726552756e74696d650800480144436f6e73656e737573456e67696e654964000038011c5665633c75383e00060024436f6e73656e7375730800480144436f6e73656e737573456e67696e654964000038011c5665633c75383e000400105365616c0800480144436f6e73656e737573456e67696e654964000038011c5665633c75383e000500144f74686572040038011c5665633c75383e0000006452756e74696d65456e7669726f6e6d656e745570646174656400080000480000030400000008004c00000250005008306672616d655f73797374656d2c4576656e745265636f7264080445015404540134000c011470686173655502011450686173650001146576656e7454010445000118746f70696373590201185665633c543e00005408346172676f6e5f72756e74696d653052756e74696d654576656e7400017c1853797374656d04005801706672616d655f73797374656d3a3a4576656e743c52756e74696d653e0000001c44696765737473040080017870616c6c65745f646967657374733a3a4576656e743c52756e74696d653e000100204d756c7469736967040084017c70616c6c65745f6d756c74697369673a3a4576656e743c52756e74696d653e0003001450726f7879040094017070616c6c65745f70726f78793a3a4576656e743c52756e74696d653e000400284d696e696e67536c6f740400a4018870616c6c65745f6d696e696e675f736c6f743a3a4576656e743c52756e74696d653e00060030426974636f696e5574786f730400c8019070616c6c65745f626974636f696e5f7574786f733a3a4576656e743c52756e74696d653e000700185661756c74730400dc017470616c6c65745f7661756c74733a3a4576656e743c52756e74696d653e00080030426974636f696e4c6f636b730400e4019070616c6c65745f626974636f696e5f6c6f636b733a3a4576656e743c52756e74696d653e000900204e6f7461726965730400f0017c70616c6c65745f6e6f7461726965733a3a4576656e743c52756e74696d653e000a00204e6f7465626f6f6b04001501017c70616c6c65745f6e6f7465626f6f6b3a3a4576656e743c52756e74696d653e000b0034436861696e5472616e7366657204003101019470616c6c65745f636861696e5f7472616e736665723a3a4576656e743c52756e74696d653e000c0034426c6f636b5365616c5370656304003501019870616c6c65745f626c6f636b5f7365616c5f737065633a3a4576656e743c52756e74696d653e000d001c446f6d61696e7304003901017870616c6c65745f646f6d61696e733a3a4576656e743c52756e74696d653e000e00285072696365496e64657804006101018870616c6c65745f70726963655f696e6465783a3a4576656e743c52756e74696d653e000f001c4772616e64706104006501015470616c6c65745f6772616e6470613a3a4576656e7400110030426c6f636b5265776172647304007101019070616c6c65745f626c6f636b5f726577617264733a3a4576656e743c52756e74696d653e001300104d696e7404008901016c70616c6c65745f6d696e743a3a4576656e743c52756e74696d653e0014002042616c616e6365730400990101ec70616c6c65745f62616c616e6365733a3a4576656e743c52756e74696d652c2070616c6c65745f62616c616e6365733a3a496e7374616e6365313e001500244f776e6572736869700400bd0101ec70616c6c65745f62616c616e6365733a3a4576656e743c52756e74696d652c2070616c6c65745f62616c616e6365733a3a496e7374616e6365323e0016001c547850617573650400c101017c70616c6c65745f74785f70617573653a3a4576656e743c52756e74696d653e001700485472616e73616374696f6e5061796d656e740400cd0101a870616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4576656e743c52756e74696d653e0018001c5574696c6974790400d101015470616c6c65745f7574696c6974793a3a4576656e74001900105375646f0400d501016c70616c6c65745f7375646f3a3a4576656e743c52756e74696d653e001a001049736d700400d901016c70616c6c65745f69736d703a3a4576656e743c52756e74696d653e001b002c49736d704772616e64706104000102017069736d705f6772616e6470613a3a4576656e743c52756e74696d653e001c002c487970657262726964676504000902018870616c6c65745f68797065726272696467653a3a4576656e743c52756e74696d653e001d0030546f6b656e4761746577617904002102019070616c6c65745f746f6b656e5f676174657761793a3a4576656e743c52756e74696d653e001e0020547265617375727904002502017c70616c6c65745f74726561737572793a3a4576656e743c52756e74696d653e001f0028466565436f6e74726f6c04002902018870616c6c65745f6665655f636f6e74726f6c3a3a4576656e743c52756e74696d653e00200048496e626f756e645472616e736665724c6f670400350201ac70616c6c65745f696e626f756e645f7472616e736665725f6c6f673a3a4576656e743c52756e74696d653e0021004c4f7065726174696f6e616c4163636f756e747304004d0201ac70616c6c65745f6f7065726174696f6e616c5f6163636f756e74733a3a4576656e743c52756e74696d653e00220000580c306672616d655f73797374656d1870616c6c6574144576656e740404540001204045787472696e7369635375636365737304013464697370617463685f696e666f5c014444697370617463684576656e74496e666f00000490416e2065787472696e73696320636f6d706c65746564207375636365737366756c6c792e3c45787472696e7369634661696c656408013864697370617463685f6572726f7268013444697370617463684572726f7200013464697370617463685f696e666f5c014444697370617463684576656e74496e666f00010450416e2065787472696e736963206661696c65642e2c436f64655570646174656400020450603a636f6465602077617320757064617465642e284e65774163636f756e7404011c6163636f756e74000130543a3a4163636f756e7449640003046841206e6577206163636f756e742077617320637265617465642e344b696c6c65644163636f756e7404011c6163636f756e74000130543a3a4163636f756e74496400040458416e206163636f756e7420776173207265617065642e2052656d61726b656408011873656e646572000130543a3a4163636f756e7449640001106861736834011c543a3a48617368000504704f6e206f6e2d636861696e2072656d61726b2068617070656e65642e4455706772616465417574686f72697a6564080124636f64655f6861736834011c543a3a48617368000134636865636b5f76657273696f6e200110626f6f6c00060468416e20757067726164652077617320617574686f72697a65642e8052656a6563746564496e76616c6964417574686f72697a656455706772616465080124636f64655f6861736834011c543a3a486173680001146572726f7268013444697370617463684572726f720007041101416e20696e76616c696420617574686f72697a65642075706772616465207761732072656a6563746564207768696c6520747279696e6720746f206170706c792069742e04704576656e7420666f72207468652053797374656d2070616c6c65742e5c08306672616d655f73797374656d4444697370617463684576656e74496e666f00000c0118776569676874280118576569676874000114636c6173736001344469737061746368436c617373000120706179735f666565640110506179730000600c346672616d655f737570706f7274206469737061746368344469737061746368436c61737300010c184e6f726d616c0000002c4f7065726174696f6e616c000100244d616e6461746f727900020000640c346672616d655f737570706f727420646973706174636810506179730001080c596573000000084e6f0001000068082873705f72756e74696d653444697370617463684572726f7200013c144f746865720000003043616e6e6f744c6f6f6b7570000100244261644f726967696e000200184d6f64756c6504006c012c4d6f64756c654572726f7200030044436f6e73756d657252656d61696e696e670004002c4e6f50726f76696465727300050040546f6f4d616e79436f6e73756d65727300060014546f6b656e0400700128546f6b656e4572726f720007002841726974686d65746963040074013c41726974686d657469634572726f72000800345472616e73616374696f6e616c04007801485472616e73616374696f6e616c4572726f7200090024457868617573746564000a0028436f7272757074696f6e000b002c556e617661696c61626c65000c0038526f6f744e6f74416c6c6f776564000d00105472696504007c0124547269654572726f72000e00006c082873705f72756e74696d652c4d6f64756c654572726f720000080114696e64657808010875380001146572726f7248018c5b75383b204d41585f4d4f44554c455f4552524f525f454e434f4445445f53495a455d000070082873705f72756e74696d6528546f6b656e4572726f720001284046756e6473556e617661696c61626c65000000304f6e6c7950726f76696465720001003042656c6f774d696e696d756d0002003043616e6e6f7443726561746500030030556e6b6e6f776e41737365740004001846726f7a656e0005002c556e737570706f727465640006004043616e6e6f74437265617465486f6c64000700344e6f74457870656e6461626c650008001c426c6f636b65640009000074083473705f61726974686d657469633c41726974686d657469634572726f7200010c24556e646572666c6f77000000204f766572666c6f77000100384469766973696f6e42795a65726f0002000078082873705f72756e74696d65485472616e73616374696f6e616c4572726f72000108304c696d6974526561636865640000001c4e6f4c61796572000100007c0c2873705f72756e74696d653070726f76696e675f7472696524547269654572726f7200013840496e76616c69645374617465526f6f7400000048496e636f6d706c65746544617461626173650001005056616c75654174496e636f6d706c6574654b6579000200304465636f6465724572726f720003002c496e76616c696448617368000400304475706c69636174654b65790005003845787472616e656f75734e6f64650006003c45787472616e656f757356616c75650007005c45787472616e656f7573486173685265666572656e636500080054496e76616c69644368696c645265666572656e63650009003456616c75654d69736d61746368000a003c496e636f6d706c65746550726f6f66000b0030526f6f744d69736d61746368000c002c4465636f64654572726f72000d0000800c3870616c6c65745f646967657374731870616c6c6574144576656e74040454000100047c54686520604576656e746020656e756d206f6620746869732070616c6c6574840c3c70616c6c65745f6d756c74697369671870616c6c6574144576656e740404540001142c4e65774d756c74697369670c0124617070726f76696e67000130543a3a4163636f756e7449640001206d756c7469736967000130543a3a4163636f756e74496400012463616c6c5f6861736804012043616c6c486173680000048c41206e6577206d756c7469736967206f7065726174696f6e2068617320626567756e2e404d756c7469736967417070726f76616c100124617070726f76696e67000130543a3a4163636f756e74496400012474696d65706f696e7488017054696d65706f696e743c426c6f636b4e756d626572466f723c543e3e0001206d756c7469736967000130543a3a4163636f756e74496400012463616c6c5f6861736804012043616c6c48617368000104c841206d756c7469736967206f7065726174696f6e20686173206265656e20617070726f76656420627920736f6d656f6e652e404d756c74697369674578656375746564140124617070726f76696e67000130543a3a4163636f756e74496400012474696d65706f696e7488017054696d65706f696e743c426c6f636b4e756d626572466f723c543e3e0001206d756c7469736967000130543a3a4163636f756e74496400012463616c6c5f6861736804012043616c6c48617368000118726573756c748c01384469737061746368526573756c740002049c41206d756c7469736967206f7065726174696f6e20686173206265656e2065786563757465642e444d756c746973696743616e63656c6c656410012863616e63656c6c696e67000130543a3a4163636f756e74496400012474696d65706f696e7488017054696d65706f696e743c426c6f636b4e756d626572466f723c543e3e0001206d756c7469736967000130543a3a4163636f756e74496400012463616c6c5f6861736804012043616c6c48617368000304a041206d756c7469736967206f7065726174696f6e20686173206265656e2063616e63656c6c65642e304465706f736974506f6b656410010c77686f000130543a3a4163636f756e74496400012463616c6c5f6861736804012043616c6c4861736800012c6f6c645f6465706f73697418013042616c616e63654f663c543e00012c6e65775f6465706f73697418013042616c616e63654f663c543e000404f0546865206465706f73697420666f722061206d756c7469736967206f7065726174696f6e20686173206265656e20757064617465642f706f6b65642e047c54686520604576656e746020656e756d206f6620746869732070616c6c657488083c70616c6c65745f6d756c74697369672454696d65706f696e74042c426c6f636b4e756d62657201100008011868656967687410012c426c6f636b4e756d626572000114696e64657810010c75333200008c0418526573756c740804540190044501680108084f6b040090000000000c4572720400680000010000900000040000940c3070616c6c65745f70726f78791870616c6c6574144576656e7404045400011c3450726f78794578656375746564040118726573756c748c01384469737061746368526573756c74000004bc412070726f78792077617320657865637574656420636f72726563746c792c20776974682074686520676976656e2e2c507572654372656174656418011070757265000130543a3a4163636f756e74496400010c77686f000130543a3a4163636f756e74496400012870726f78795f74797065980130543a3a50726f787954797065000150646973616d626967756174696f6e5f696e6465789c010c7531360001086174100144426c6f636b4e756d626572466f723c543e00013c65787472696e7369635f696e64657810010c753332000108dc412070757265206163636f756e7420686173206265656e2063726561746564206279206e65772070726f7879207769746820676976656e90646973616d626967756174696f6e20696e64657820616e642070726f787920747970652e28507572654b696c6c656410011070757265000130543a3a4163636f756e74496400011c737061776e6572000130543a3a4163636f756e74496400012870726f78795f74797065980130543a3a50726f787954797065000150646973616d626967756174696f6e5f696e6465789c010c7531360002049c4120707572652070726f787920776173206b696c6c65642062792069747320737061776e65722e24416e6e6f756e6365640c01107265616c000130543a3a4163636f756e74496400011470726f7879000130543a3a4163636f756e74496400012463616c6c5f6861736834013443616c6c486173684f663c543e000304e0416e20616e6e6f756e63656d656e742077617320706c6163656420746f206d616b6520612063616c6c20696e20746865206675747572652e2850726f7879416464656410012464656c656761746f72000130543a3a4163636f756e74496400012464656c656761746565000130543a3a4163636f756e74496400012870726f78795f74797065980130543a3a50726f78795479706500011464656c6179100144426c6f636b4e756d626572466f723c543e00040448412070726f7879207761732061646465642e3050726f787952656d6f76656410012464656c656761746f72000130543a3a4163636f756e74496400012464656c656761746565000130543a3a4163636f756e74496400012870726f78795f74797065980130543a3a50726f78795479706500011464656c6179100144426c6f636b4e756d626572466f723c543e00050450412070726f7879207761732072656d6f7665642e304465706f736974506f6b656410010c77686f000130543a3a4163636f756e7449640001106b696e64a0012c4465706f7369744b696e6400012c6f6c645f6465706f73697418013042616c616e63654f663c543e00012c6e65775f6465706f73697418013042616c616e63654f663c543e000604090141206465706f7369742073746f72656420666f722070726f78696573206f7220616e6e6f756e63656d656e74732077617320706f6b6564202f20757064617465642e047c54686520604576656e746020656e756d206f6620746869732070616c6c65749808346172676f6e5f72756e74696d652450726f7879547970650001200c416e790000002c4e6f6e5472616e73666572000100285072696365496e646578000200244d696e696e67426964000300504d696e696e674269645265616c506179734665650004001c426974636f696e000500285661756c7441646d696e00060050426974636f696e496e697469616c697a65466f72000700009c0000050400a0083070616c6c65745f70726f78792c4465706f7369744b696e640001081c50726f7869657300000034416e6e6f756e63656d656e747300010000a40c4870616c6c65745f6d696e696e675f736c6f741870616c6c6574144576656e7404045400011c244e65774d696e6572730c01286e65775f6d696e657273a801b4426f756e6465645665633c526567697374726174696f6e3c543e2c20543a3a4d6178436f686f727453697a653e00013c72656c65617365645f6d696e65727310010c7533320001206672616d655f696430011c4672616d6549640000003c536c6f7442696464657241646465640c01286163636f756e745f6964000130543a3a4163636f756e7449640001286269645f616d6f756e74180128543a3a42616c616e6365000114696e64657810010c75333200010044536c6f7442696464657244726f707065640801286163636f756e745f6964000130543a3a4163636f756e7449640001587072657365727665645f6172676f6e6f745f686f6c64200110626f6f6c0002005452656c656173654d696e6572536561744572726f720801286163636f756e745f6964000130543a3a4163636f756e7449640001146572726f7268013444697370617463684572726f72000300684d696e696e67436f6e66696775726174696f6e557064617465640c01887469636b735f6265666f72655f6269645f656e645f666f725f7672665f636c6f73653001105469636b00014c7469636b735f6265747765656e5f736c6f74733001105469636b000178736c6f745f62696464696e675f73746172745f61667465725f7469636b733001105469636b000400404d696e696e6742696473436c6f7365640401206672616d655f696430011c4672616d654964000504f4426964732061726520636c6f7365642064756520746f20746865205652462072616e646f6d697a65642066756e6374696f6e2074726967676572696e673c52656c656173654269644572726f720801286163636f756e745f6964000130543a3a4163636f756e7449640001146572726f7268013444697370617463684572726f72000600047c54686520604576656e746020656e756d206f6620746869732070616c6c6574a80c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401ac045300000400c401185665633c543e0000ac0c406172676f6e5f7072696d69746976657328626c6f636b5f7365616c484d696e696e67526567697374726174696f6e0c244163636f756e74496401001c42616c616e63650118104b65797301b0001c01286163636f756e745f69640001244163636f756e74496400016065787465726e616c5f66756e64696e675f6163636f756e74bc01444f7074696f6e3c4163636f756e7449643e00010c626964c0011c42616c616e63650001206172676f6e6f7473c0011c42616c616e6365000138617574686f726974795f6b657973b001104b6579730001447374617274696e675f6672616d655f69642c011c4672616d65496400012c6269645f61745f7469636b2c01105469636b0000b008346172676f6e5f72756e74696d652c53657373696f6e4b657973000008011c6772616e647061b401d03c4772616e647061206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c6963000150626c6f636b5f7365616c5f617574686f72697479b801dc3c4d696e696e67536c6f74206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c69630000b40c5073705f636f6e73656e7375735f6772616e6470610c617070185075626c69630000040004013c656432353531393a3a5075626c69630000b810406172676f6e5f7072696d69746976657328626c6f636b5f7365616c0c617070185075626c69630000040004013c656432353531393a3a5075626c69630000bc04184f7074696f6e04045401000108104e6f6e6500000010536f6d650400000000010000c00000061800c4000002ac00c80c5070616c6c65745f626974636f696e5f7574786f731870616c6c6574144576656e7404045400011c305574786f566572696669656408011c7574786f5f69643001185574786f49640001447361746f736869735f72656365697665643001205361746f73686973000000305574786f52656a656374656410011c7574786f5f69643001185574786f49640001207574786f5f726566cc011c5574786f52656600013c72656a65637465645f726561736f6ed80154426974636f696e52656a6563746564526561736f6e0001447361746f736869735f72656365697665643001205361746f73686973000100245574786f5370656e7408011c7574786f5f69643001185574786f4964000130626c6f636b5f686569676874300134426974636f696e486569676874000200345574786f556e7761746368656404011c7574786f5f69643001185574786f4964000300385574786f5370656e744572726f7208011c7574786f5f69643001185574786f49640001146572726f7268013444697370617463684572726f72000400445574786f56657269666965644572726f7208011c7574786f5f69643001185574786f49640001146572726f7268013444697370617463684572726f72000500445574786f52656a65637465644572726f7208011c7574786f5f69643001185574786f49640001146572726f7268013444697370617463684572726f72000600047c54686520604576656e746020656e756d206f6620746869732070616c6c6574cc0c406172676f6e5f7072696d6974697665731c626974636f696e1c5574786f526566000008011074786964d00118483235364c650001306f75747075745f696e646578d4010c7533320000d00c406172676f6e5f7072696d6974697665731c626974636f696e18483235364c65000004000401205b75383b2033325d0000d40000061000d80c406172676f6e5f7072696d6974697665731c626974636f696e54426974636f696e52656a6563746564526561736f6e000110705361746f736869734f757473696465416363657074656452616e6765000000145370656e740001004c566572696669636174696f6e457870697265640002003c416c7265616479566572696669656400030000dc0c3470616c6c65745f7661756c74731870616c6c6574144576656e7404045400013c305661756c74437265617465641401207661756c745f696410011c5661756c74496400013873656375726974697a6174696f6e180128543a3a42616c616e636500015073656375726974697a6174696f6e5f726174696fe0012446697865645531323800014c6f70657261746f725f6163636f756e745f6964000130543a3a4163636f756e74496400012c6f70656e65645f7469636b3001105469636b000000345661756c744d6f6469666965641001207661756c745f696410011c5661756c74496400013873656375726974697a6174696f6e180128543a3a42616c616e636504c0546865206e65772073656375726974697a6174696f6e20616d6f756e74206166746572206d6f64696669636174696f6e015473656375726974697a6174696f6e5f746172676574180128543a3a42616c616e63650449015468652073656375726974697a6174696f6e2074617267657420616d6f756e74206166746572206d6f64696669636174696f6e20287468697320697320746865206c6f6e67207465726d2074617267657429015073656375726974697a6174696f6e5f726174696fe00124466978656455313238000100645661756c745465726d734368616e67655363686564756c65640801207661756c745f696410011c5661756c74496400012c6368616e67655f7469636b3001105469636b000200445661756c745465726d734368616e6765640401207661756c745f696410011c5661756c7449640003002c5661756c74436c6f7365640c01207661756c745f696410011c5661756c74496400016073656375726974697a6174696f6e5f72656d61696e696e67180128543a3a42616c616e636500015c73656375726974697a6174696f6e5f72656c6561736564180128543a3a42616c616e6365000400585661756c74426974636f696e587075624368616e67650401207661756c745f696410011c5661756c7449640005005c5661756c74526576656e7565556e636f6c6c65637465640c01207661756c745f696410011c5661756c7449640001206672616d655f696430011c4672616d654964000118616d6f756e74180128543a3a42616c616e636500060439015661756c7420726576656e756520776173206e6f7420636f6c6c65637465642077697468696e207468652072657175697265642077696e646f772c20736f20686173206265656e206275726e6564385661756c74436f6c6c65637465640801207661756c745f696410011c5661756c74496400011c726576656e7565180128543a3a42616c616e63650007040901546865207661756c7420636f6c6c656374656420726576656e756520616e6420636f7369676e656420616c6c2070656e64696e6720626974636f696e206c6f636b732c46756e64734c6f636b65641801207661756c745f696410011c5661756c7449640001186c6f636b6572000130543a3a4163636f756e7449640001486c69717569646974795f70726f6d69736564180128543a3a42616c616e636500012869735f72617463686574200110626f6f6c00012c6665655f726576656e7565180128543a3a42616c616e63650001486469645f7573655f6665655f636f75706f6e200110626f6f6c0008004046756e644c6f636b43616e63656c65640801207661756c745f696410011c5661756c744964000118616d6f756e74180128543a3a42616c616e63650009006046756e64735363686564756c6564466f7252656c656173650c01207661756c745f696410011c5661756c74496400013873656375726974697a6174696f6e180128543a3a42616c616e636500013872656c656173655f686569676874300134426974636f696e486569676874000a00584c6f7374426974636f696e436f6d70656e73617465641001207661756c745f696410011c5661756c74496400012c62656e6566696369617279000130543a3a4163636f756e744964000138746f5f62656e6566696369617279180128543a3a42616c616e63650001186275726e6564180128543a3a42616c616e6365000b003446756e647352656c65617365640801207661756c745f696410011c5661756c74496400013873656375726974697a6174696f6e180128543a3a42616c616e6365000c004846756e647352656c65617365644572726f720801207661756c745f696410011c5661756c7449640001146572726f7268013444697370617463684572726f72000d005854726561737572795265636f7264696e674572726f721001207661756c745f696410011c5661756c7449640001206672616d655f696430011c4672616d6549640001387661756c745f6561726e696e6773180128543a3a42616c616e63650001146572726f7268013444697370617463684572726f72000e00047c54686520604576656e746020656e756d206f6620746869732070616c6c6574e00c3473705f61726974686d657469632c66697865645f706f696e742446697865645531323800000400180110753132380000e40c5070616c6c65745f626974636f696e5f6c6f636b731870616c6c6574144576656e7404045400013848426974636f696e4c6f636b437265617465641c011c7574786f5f69643001185574786f49640001207661756c745f696410011c5661756c7449640001486c69717569646974795f70726f6d69736564180128543a3a42616c616e636500013873656375726974697a6174696f6e180128543a3a42616c616e63650001486c6f636b65645f6d61726b65745f72617465180128543a3a42616c616e63650001286163636f756e745f6964000130543a3a4163636f756e74496400013073656375726974795f666565180128543a3a42616c616e636500000050426974636f696e4c6f636b52617463686574656420011c7574786f5f69643001185574786f49640001207661756c745f696410011c5661756c7449640001486c69717569646974795f70726f6d69736564180128543a3a42616c616e63650001506f726967696e616c5f6d61726b65745f72617465180128543a3a42616c616e636500013073656375726974795f666565180128543a3a42616c616e63650001586e65775f6c6f636b65645f6d61726b65745f72617465180128543a3a42616c616e6365000134616d6f756e745f6275726e6564180128543a3a42616c616e63650001286163636f756e745f6964000130543a3a4163636f756e74496400010044426974636f696e4c6f636b4275726e65640c011c7574786f5f69643001185574786f49640001207661756c745f696410011c5661756c7449640001387761735f7574786f5f7370656e74200110626f6f6c00020068426974636f696e5574786f436f7369676e52657175657374656408011c7574786f5f69643001185574786f49640001207661756c745f696410011c5661756c7449640003004c426974636f696e5574786f436f7369676e65640c011c7574786f5f69643001185574786f49640001207661756c745f696410011c5661756c7449640001247369676e6174757265e80140426974636f696e5369676e617475726500040060426974636f696e5370656e74416674657252656c6561736508011c7574786f5f69643001185574786f49640001207661756c745f696410011c5661756c74496400050050426974636f696e436f7369676e5061737444756510011c7574786f5f69643001185574786f49640001207661756c745f696410011c5661756c74496400014c636f6d70656e736174696f6e5f616d6f756e74180128543a3a42616c616e6365000158636f6d70656e73617465645f6163636f756e745f6964000130543a3a4163636f756e74496400060048436f7369676e4f7665726475654572726f7208011c7574786f5f69643001185574786f49640001146572726f7268013444697370617463684572726f720007040901416e206572726f72206f63637572726564207768696c6520726566756e64696e6720616e206f76657264756520636f7369676e656420626974636f696e206c6f636b4c4c6f636b45787069726174696f6e4572726f7208011c7574786f5f69643001185574786f49640001146572726f7268013444697370617463684572726f72000804a4416e206572726f72206f63637572726564207768696c6520636f6d706c6574696e672061206c6f636b504f727068616e65645574786f526563656976656410011c7574786f5f69643001185574786f49640001207574786f5f726566cc011c5574786f5265660001207661756c745f696410011c5661756c7449640001207361746f736869733001205361746f73686973000900704f727068616e65645574786f52656c6561736552657175657374656410011c7574786f5f69643001185574786f49640001207574786f5f726566cc011c5574786f5265660001207661756c745f696410011c5661756c7449640001286163636f756e745f6964000130543a3a4163636f756e744964000a00504f727068616e65645574786f436f7369676e656414011c7574786f5f69643001185574786f49640001207574786f5f726566cc011c5574786f5265660001207661756c745f696410011c5661756c7449640001286163636f756e745f6964000130543a3a4163636f756e7449640001247369676e6174757265e80140426974636f696e5369676e6174757265000b005c5574786f46756e64656446726f6d43616e64696461746510011c7574786f5f69643001185574786f49640001207574786f5f726566cc011c5574786f5265660001207661756c745f696410011c5661756c7449640001286163636f756e745f6964000130543a3a4163636f756e744964000c005c53656375726974697a6174696f6e496e6372656173656410011c7574786f5f69643001185574786f49640001207661756c745f696410011c5661756c7449640001306e65775f7361746f736869733001205361746f736869730001286163636f756e745f6964000130543a3a4163636f756e744964000d00047c54686520604576656e746020656e756d206f6620746869732070616c6c6574e80c406172676f6e5f7072696d6974697665731c626974636f696e40426974636f696e5369676e617475726500000400ec0170426f756e6465645665633c75382c20436f6e73745533323c37343e3e0000ec0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e0000f00c3c70616c6c65745f6e6f7461726965731870616c6c6574144576656e74040454000114384e6f7461727950726f706f7365640c01406f70657261746f725f6163636f756e74000130543a3a4163636f756e7449640001106d657461f4013c4e6f746172794d6574614f663c543e00011c65787069726573100144426c6f636b4e756d626572466f723c543e000004a4412075736572206861732070726f706f736564206f7065726174696e672061732061206e6f746172793c4e6f746172794163746976617465640401186e6f74617279110101444e6f746172795265636f72644f663c543e0001048c41206e6f746172792070726f706f73616c20686173206265656e206163636570746564584e6f746172794d6574615570646174655175657565640c01246e6f746172795f69641001204e6f7461727949640001106d657461f4013c4e6f746172794d6574614f663c543e0001386566666563746976655f7469636b3001105469636b000204844e6f74617279206d657461646174612071756575656420666f7220757064617465444e6f746172794d657461557064617465640801246e6f746172795f69641001204e6f7461727949640001106d657461f4013c4e6f746172794d6574614f663c543e0003045c4e6f74617279206d657461646174612075706461746564544e6f746172794d6574615570646174654572726f720c01246e6f746172795f69641001204e6f7461727949640001146572726f7268013444697370617463684572726f720001106d657461f4013c4e6f746172794d6574614f663c543e000404844572726f72207570646174696e6720717565756564206e6f7461727920696e666f047c54686520604576656e746020656e756d206f6620746869732070616c6c6574f40c406172676f6e5f7072696d697469766573186e6f74617279284e6f746172794d65746104204d6178486f73747300000c01106e616d65f801284e6f746172794e616d650001187075626c69630401304e6f746172795075626c6963000114686f73747301010168426f756e6465645665633c486f73742c204d6178486f7374733e0000f80c406172676f6e5f7072696d697469766573186e6f74617279284e6f746172794e616d6500000400fc0170426f756e6465645665633c75382c20436f6e73745533323c35353e3e0000fc0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e000001010c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540105010453000004000d0101185665633c543e000005010c406172676f6e5f7072696d69746976657310686f737410486f73740000040009010174426f756e6465645665633c75382c20436f6e73745533323c3235333e3e000009010c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e00000d0100000205010011010c406172676f6e5f7072696d697469766573186e6f74617279304e6f746172795265636f72640c244163636f756e74496401002c426c6f636b4e756d6265720110204d6178486f73747300001801246e6f746172795f6964d401204e6f74617279496400014c6f70657261746f725f6163636f756e745f69640001244163636f756e74496400013c6163746976617465645f626c6f636bd4012c426c6f636b4e756d6265720001486d6574615f757064617465645f626c6f636bd4012c426c6f636b4e756d6265720001446d6574615f757064617465645f7469636b2c01105469636b0001106d657461f401504e6f746172794d6574613c4d6178486f7374733e000015010c3c70616c6c65745f6e6f7465626f6f6b1870616c6c6574144576656e7404045400010c444e6f7465626f6f6b5375626d69747465640801246e6f746172795f69641001204e6f74617279496400013c6e6f7465626f6f6b5f6e756d6265721001384e6f7465626f6f6b4e756d626572000000504e6f7465626f6f6b41756469744661696c7572651001246e6f746172795f69641001204e6f74617279496400013c6e6f7465626f6f6b5f6e756d6265721001384e6f7465626f6f6b4e756d6265720001346e6f7465626f6f6b5f686173683401104832353600015066697273745f6661696c7572655f726561736f6e1901014c4e6f7465626f6f6b5665726966794572726f72000100644e6f7465626f6f6b5265616479466f72526570726f636573730801246e6f746172795f69641001204e6f74617279496400013c6e6f7465626f6f6b5f6e756d6265721001384e6f7465626f6f6b4e756d626572000200047c54686520604576656e746020656e756d206f6620746869732070616c6c657419010c486172676f6e5f6e6f746172795f6175646974146572726f722c5665726966794572726f720001ec504d697373696e674163636f756e744f726967696e0801286163636f756e745f696400012c4163636f756e74496433320001306163636f756e745f747970651d01012c4163636f756e745479706500000048486973746f72794c6f6f6b75704572726f72040118736f75726365210101644163636f756e74486973746f72794c6f6f6b75704572726f7200010060496e76616c69644163636f756e744368616e67656c69737400020064496e76616c6964436861696e5472616e73666572734c69737400030060496e76616c696442616c616e63654368616e6765526f6f7400040060496e76616c69644865616465725461785265636f7264656400050050496e76616c696450726576696f75734e6f6e636500060058496e76616c696450726576696f757342616c616e636500070070496e76616c696450726576696f75734163636f756e744f726967696e00080090496e76616c696450726576696f757342616c616e63654368616e67654e6f7465626f6f6b00090050496e76616c696442616c616e63654368616e6765000a0074496e76616c696442616c616e63654368616e67655369676e61747572650401306368616e67655f696e6465789c010c753136000b0054496e76616c69644e6f7465526563697069656e7473000c004842616c616e63654368616e67654572726f720c01306368616e67655f696e6465789c010c7531360001286e6f74655f696e6465789c010c75313600011c6d6573736167652501013c4d61784c656e677468537472696e67000d0068496e76616c69644e657442616c616e63654368616e6765736574000e004c496e73756666696369656e7442616c616e636510011c62616c616e636518011075313238000118616d6f756e74180110753132380001286e6f74655f696e6465789c010c7531360001306368616e67655f696e6465789c010c753136000f004845786365656465644d617842616c616e636510011c62616c616e636518011075313238000118616d6f756e74180110753132380001286e6f74655f696e6465789c010c7531360001306368616e67655f696e6465789c010c7531360010005442616c616e63654368616e67654d69736d617463680c01306368616e67655f696e6465789c010c75313600014070726f76696465645f62616c616e63651801107531323800014863616c63756c617465645f62616c616e63652d010110693132380011005c42616c616e63654368616e67654e6f744e65745a65726f08011073656e741801107531323800011c636c61696d65641801107531323800120070496e76616c6964446f6d61696e4c65617365416c6c6f636174696f6e0013006854617842616c616e63654368616e67654e6f744e65745a65726f08011073656e741801107531323800011c636c61696d6564180110753132380014004c4d697373696e6742616c616e636550726f6f660015006c496e76616c696450726576696f757342616c616e636550726f6f660016004c496e76616c69644e6f7465626f6f6b4861736800170064496e76616c69644e6f7465626f6f6b4865616465724861736800180058496e76616c69644e6f7465626f6f6b56657273696f6e001900584475706c6963617465436861696e5472616e73666572001a00684475706c6963617465644163636f756e744f726967696e556964001b0058496e76616c69644e6f746172795369676e6174757265001c0054496e76616c696453656372657450726f7669646564001d00384e6f7465626f6f6b546f6f4f6c64001e005c436174636875704e6f7465626f6f6b734d697373696e67001f002c4465636f64654572726f72002000744163636f756e744368616e6e656c486f6c64446f65736e744578697374002100704163636f756e74416c72656164794861734368616e6e656c486f6c640022006c4368616e6e656c486f6c644e6f745265616479466f72436c61696d08013063757272656e745f7469636b3001105469636b000128636c61696d5f7469636b3001105469636b002300344163636f756e744c6f636b6564002400584d697373696e674368616e6e656c486f6c644e6f746500250058496e76616c69644368616e6e656c486f6c644e6f746500260068496e76616c69644368616e6e656c486f6c64436c61696d6572730027006c4368616e6e656c486f6c644e6f746542656c6f774d696e696d756d00280054496e76616c69645461784e6f74654163636f756e740029004c496e76616c69645461784f7065726174696f6e002a005c496e73756666696369656e74546178496e636c756465640c01207461785f73656e74180110753132380001207461785f6f776564180110753132380001286163636f756e745f696400012c4163636f756e7449643332002b0060496e73756666696369656e74426c6f636b566f7465546178002c0048496e656c696769626c65546178566f746572002d0064426c6f636b566f7465496e76616c69645369676e6174757265002e0068496e76616c6964426c6f636b566f7465416c6c6f636174696f6e002f0050496e76616c6964426c6f636b566f7465526f6f7400300058496e76616c6964426c6f636b566f746573436f756e740031005c496e76616c6964426c6f636b566f74696e67506f77657200320050496e76616c6964426c6f636b566f74654c6973740033004c496e76616c6964436f6d7075746550726f6f6600340058496e76616c6964426c6f636b566f7465536f7572636500350070496e73756666696369656e74426c6f636b566f74654d696e696d756d00360050496e76616c6964426c6f636b566f74655469636b0801107469636b3001105469636b0001346e6f7465626f6f6b5f7469636b3001105469636b0037005c496e76616c696444656661756c74426c6f636b566f746500380074496e76616c696444656661756c74426c6f636b566f7465417574686f72080118617574686f7200012c4163636f756e7449643332000120657870656374656400012c4163636f756e7449643332003900484e6f44656661756c74426c6f636b566f7465003a00001d010c406172676f6e5f7072696d6974697665731c6163636f756e742c4163636f756e74547970650001080c5461780000001c4465706f73697400010000210108486172676f6e5f6e6f746172795f6175646974644163636f756e74486973746f72794c6f6f6b75704572726f7200011030526f6f744e6f74466f756e64000000484c6173744368616e67654e6f74466f756e640001006c496e76616c69645472616e73666572546f4c6f63616c636861696e00020068426c6f636b53706563696669636174696f6e4e6f74466f756e640003000025010c486172676f6e5f6e6f746172795f6175646974146572726f723c4d61784c656e677468537472696e670000040029010174426f756e6465645665633c75382c20436f6e73745533323c3130303e3e000029010c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e00002d010000050d0031010c5470616c6c65745f636861696e5f7472616e736665721870616c6c6574144576656e7404045400011c505472616e73666572546f4c6f63616c636861696e1401286163636f756e745f69640001983c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a4163636f756e744964000118616d6f756e741801583c5420617320436f6e6669673e3a3a42616c616e636500012c7472616e736665725f69641001585472616e73666572546f4c6f63616c636861696e49640001246e6f746172795f69641001204e6f74617279496400013c65787069726174696f6e5f7469636b3001105469636b0000046846756e64732073656e7420746f2061206c6f63616c636861696e6c5472616e73666572546f4c6f63616c636861696e457870697265640c01286163636f756e745f69640001983c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a4163636f756e74496400012c7472616e736665725f69641001585472616e73666572546f4c6f63616c636861696e49640001246e6f746172795f69641001204e6f746172794964000104b85472616e7366657220746f206c6f63616c636861696e206578706972656420616e6420726f6c6c6564206261636b585472616e7366657246726f6d4c6f63616c636861696e0c01286163636f756e745f69640001983c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a4163636f756e744964000118616d6f756e741801583c5420617320436f6e6669673e3a3a42616c616e63650001246e6f746172795f69641001204e6f746172794964000204945472616e736665722066726f6d204c6f63616c636861696e20746f204d61696e636861696e6c5472616e7366657246726f6d4c6f63616c636861696e4572726f721401286163636f756e745f69640001983c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a4163636f756e744964000118616d6f756e741801583c5420617320436f6e6669673e3a3a42616c616e63650001246e6f746172795f69641001204e6f74617279496400013c6e6f7465626f6f6b5f6e756d6265721001384e6f7465626f6f6b4e756d6265720001146572726f7268013444697370617463684572726f720003049041207472616e7366657220696e746f20746865206d61696e636861696e206661696c65647c5472616e73666572546f4c6f63616c636861696e526566756e644572726f721401286163636f756e745f69640001983c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a4163636f756e74496400012c7472616e736665725f69641001585472616e73666572546f4c6f63616c636861696e49640001246e6f746172795f69641001204e6f74617279496400013c6e6f7465626f6f6b5f6e756d6265721001384e6f7465626f6f6b4e756d6265720001146572726f7268013444697370617463684572726f72000404dc416e2065787069726564207472616e7366657220746f206c6f63616c636861696e206661696c656420746f20626520726566756e646564a0506f737369626c65496e76616c69644c6f63616c636861696e5472616e73666572416c6c6f7765640c012c7472616e736665725f69641001585472616e73666572546f4c6f63616c636861696e49640001246e6f746172795f69641001204e6f74617279496400013c6e6f7465626f6f6b5f6e756d6265721001384e6f7465626f6f6b4e756d626572000508450141206c6f63616c636861696e207472616e7366657220636f756c64206e6f7420626520636c65616e65642075702070726f7065726c792e20506f737369626c6520696e76616c6964207472616e73666572586e656564696e6720696e7665737469676174696f6e2e345461786174696f6e4572726f721001246e6f746172795f69641001204e6f74617279496400013c6e6f7465626f6f6b5f6e756d6265721001384e6f7465626f6f6b4e756d62657200010c7461781801583c5420617320436f6e6669673e3a3a42616c616e63650001146572726f7268013444697370617463684572726f720006043c5461786174696f6e206661696c6564047c54686520604576656e746020656e756d206f6620746869732070616c6c657435010c5870616c6c65745f626c6f636b5f7365616c5f737065631870616c6c6574144576656e740404540001084c566f74654d696e696d756d41646a757374656410015065787065637465645f626c6f636b5f766f7465731801107531323800014861637475616c5f626c6f636b5f766f7465731801107531323800014873746172745f766f74655f6d696e696d756d18012c566f74654d696e696d756d0001406e65775f766f74655f6d696e696d756d18012c566f74654d696e696d756d00000064436f6d70757465446966666963756c747941646a757374656410014c65787065637465645f626c6f636b5f74696d6530010c75363400014461637475616c5f626c6f636b5f74696d6530010c75363400014073746172745f646966666963756c7479180144436f6d70757465446966666963756c74790001386e65775f646966666963756c7479180144436f6d70757465446966666963756c7479000100047c54686520604576656e746020656e756d206f6620746869732070616c6c657439010c3870616c6c65745f646f6d61696e731870616c6c6574144576656e74040454000118445a6f6e655265636f72645570646174656408012c646f6d61696e5f68617368340128446f6d61696e4861736800012c7a6f6e655f7265636f72643d0101605a6f6e655265636f72643c543a3a4163636f756e7449643e000004804120646f6d61696e207a6f6e65207265636f726420776173207570646174656440446f6d61696e5265676973746572656408012c646f6d61696e5f68617368340128446f6d61696e48617368000130726567697374726174696f6e5d010180446f6d61696e526567697374726174696f6e3c543a3a4163636f756e7449643e0001045c4120646f6d61696e20776173207265676973746572656434446f6d61696e52656e6577656404012c646f6d61696e5f68617368340128446f6d61696e486173680002045c4120646f6d61696e20776173207265676973746572656434446f6d61696e4578706972656404012c646f6d61696e5f68617368340128446f6d61696e48617368000304504120646f6d61696e20776173206578706972656468446f6d61696e526567697374726174696f6e43616e63656c656408012c646f6d61696e5f68617368340128446f6d61696e48617368000130726567697374726174696f6e5d010180446f6d61696e526567697374726174696f6e3c543a3a4163636f756e7449643e00040841014120646f6d61696e20726567697374726174696f6e207761732063616e63656c65642064756520746f206120636f6e666c696374696e6720726567697374726174696f6e20696e207468652073616d65107469636b5c446f6d61696e526567697374726174696f6e4572726f720c012c646f6d61696e5f68617368340128446f6d61696e486173680001286163636f756e745f696400012c4163636f756e74496433320001146572726f7268013444697370617463684572726f72000504b04120646f6d61696e20726567697374726174696f6e206661696c65642064756520746f20616e206572726f72047c54686520604576656e746020656e756d206f6620746869732070616c6c65743d010c406172676f6e5f7072696d69746976657318646f6d61696e285a6f6e655265636f726404244163636f756e7449640100000c013c7061796d656e745f6163636f756e740001244163636f756e7449640001246e6f746172795f69641001204e6f74617279496400012076657273696f6e73410101cc426f756e64656442547265654d61703c53656d7665722c2056657273696f6e486f73742c20436f6e73745533323c3530303e3e000041010c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b01450104560149010453000004005101013842547265654d61703c4b2c20563e000045010c406172676f6e5f7072696d69746976657318646f6d61696e1853656d76657200000c01146d616a6f7210010c7533320001146d696e6f7210010c753332000114706174636810010c753332000049010c406172676f6e5f7072696d69746976657318646f6d61696e2c56657273696f6e486f737400000801306461746173746f72655f69644d010170426f756e6465645665633c75382c20436f6e73745533323c35303e3e000110686f737405010110486f737400004d010c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e00005101042042547265654d617008044b01450104560149010004005501000000550100000259010059010000040845014901005d01083870616c6c65745f646f6d61696e7348446f6d61696e526567697374726174696f6e04244163636f756e7449640100000801286163636f756e745f69640001244163636f756e744964000148726567697374657265645f61745f7469636b3001105469636b000061010c4870616c6c65745f70726963655f696e6465781870616c6c6574144576656e74040454000108204e6577496e646578000004c44576656e7420656d6974746564207768656e2061206e657720707269636520696e646578206973207375626d69747465643c4f70657261746f724368616e67656404012c6f70657261746f725f6964000130543a3a4163636f756e744964000100047c54686520604576656e746020656e756d206f6620746869732070616c6c657465010c3870616c6c65745f6772616e6470611870616c6c6574144576656e7400010c384e6577417574686f726974696573040134617574686f726974795f73657469010134417574686f726974794c6973740000048c4e657720617574686f726974792073657420686173206265656e206170706c6965642e185061757365640001049843757272656e7420617574686f726974792073657420686173206265656e207061757365642e1c526573756d65640002049c43757272656e7420617574686f726974792073657420686173206265656e20726573756d65642e047c54686520604576656e746020656e756d206f6620746869732070616c6c657469010000026d01006d0100000408b4300071010c5070616c6c65745f626c6f636b5f726577617264731870616c6c6574144576656e74040454000108345265776172644372656174656404011c72657761726473750101a85665633c426c6f636b5061796f75743c543a3a4163636f756e7449642c20543a3a42616c616e63653e3e000000445265776172644372656174654572726f721001286163636f756e745f6964000130543a3a4163636f756e7449640001186172676f6e73850101484f7074696f6e3c543a3a42616c616e63653e0001246f776e657273686970850101484f7074696f6e3c543a3a42616c616e63653e0001146572726f7268013444697370617463684572726f72000100047c54686520604576656e746020656e756d206f6620746869732070616c6c6574750100000279010079010c406172676f6e5f7072696d69746976657328626c6f636b5f7365616c2c426c6f636b5061796f757408244163636f756e74496401001c42616c616e63650118001401286163636f756e745f69640001244163636f756e7449640001246f776e657273686970c0011c42616c616e63650001186172676f6e73c0011c42616c616e636500012c7265776172645f747970657d01013c426c6f636b52657761726454797065000150626c6f636b5f7365616c5f617574686f72697479810101704f7074696f6e3c426c6f636b5365616c417574686f7269747949643e00007d010c406172676f6e5f7072696d69746976657328626c6f636b5f7365616c3c426c6f636b5265776172645479706500010c144d696e657200000014566f7465720001002c50726f666974536861726500020000810104184f7074696f6e04045401b80108104e6f6e6500000010536f6d650400b80000010000850104184f7074696f6e04045401180108104e6f6e6500000010536f6d65040018000001000089010c2c70616c6c65745f6d696e741870616c6c6574144576656e7404045400010c2c426974636f696e4d696e740c01286163636f756e745f6964000130543a3a4163636f756e74496400011c7574786f5f69648d0101384f7074696f6e3c5574786f49643e000118616d6f756e74180128543a3a42616c616e63650000044c416e7920626974636f696e73206d696e746564284d696e696e674d696e74100118616d6f756e74180128543a3a42616c616e63650001247065725f6d696e6572180128543a3a42616c616e63650001246172676f6e5f637069910101204172676f6e4350490001246c6971756964697479180128543a3a42616c616e6365000108610154686520616d6f756e74206f66206d6963726f676f6e73206d696e74656420666f72206d696e696e672e204e4f54453a206163636f756e74732062656c6f77204578697374656e7469616c204465706f7369742077696c6c4c6e6f742062652061626c6520746f206d696e74244d696e744572726f721401246d696e745f74797065950101204d696e74547970650001286163636f756e745f6964000130543a3a4163636f756e74496400011c7574786f5f69648d0101384f7074696f6e3c5574786f49643e000118616d6f756e74180128543a3a42616c616e63650001146572726f7268013444697370617463684572726f720002085d014572726f727320656e636f756e7465726564207768696c65206d696e74696e672e204d6f7374206f6674656e2064756520746f206d696e7420616d6f756e74207374696c6c2062656c6f77204578697374656e7469616c1c4465706f736974047c54686520604576656e746020656e756d206f6620746869732070616c6c65748d0104184f7074696f6e04045401300108104e6f6e6500000010536f6d65040030000001000091010c3473705f61726974686d657469632c66697865645f706f696e7424466978656449313238000004002d01011069313238000095010c2c70616c6c65745f6d696e741870616c6c6574204d696e74547970650001081c426974636f696e000000184d696e696e670001000099010c3c70616c6c65745f62616c616e6365731870616c6c6574144576656e740804540004490001781c456e646f77656408011c6163636f756e74000130543a3a4163636f756e744964000130667265655f62616c616e6365180128543a3a42616c616e6365000004b8416e206163636f756e74207761732063726561746564207769746820736f6d6520667265652062616c616e63652e20447573744c6f737408011c6163636f756e74000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650001083d01416e206163636f756e74207761732072656d6f7665642077686f73652062616c616e636520776173206e6f6e2d7a65726f206275742062656c6f77204578697374656e7469616c4465706f7369742c78726573756c74696e6720696e20616e206f75747269676874206c6f73732e205472616e736665720c011066726f6d000130543a3a4163636f756e744964000108746f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650002044c5472616e73666572207375636365656465642e2842616c616e636553657408010c77686f000130543a3a4163636f756e74496400011066726565180128543a3a42616c616e636500030468412062616c616e6365207761732073657420627920726f6f742e20526573657276656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000404e0536f6d652062616c616e63652077617320726573657276656420286d6f7665642066726f6d206672656520746f207265736572766564292e28556e726573657276656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000504e8536f6d652062616c616e63652077617320756e726573657276656420286d6f7665642066726f6d20726573657276656420746f2066726565292e4852657365727665526570617472696174656410011066726f6d000130543a3a4163636f756e744964000108746f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500014864657374696e6174696f6e5f7374617475739d0101185374617475730006084d01536f6d652062616c616e636520776173206d6f7665642066726f6d207468652072657365727665206f6620746865206669727374206163636f756e7420746f20746865207365636f6e64206163636f756e742ed846696e616c20617267756d656e7420696e64696361746573207468652064657374696e6174696f6e2062616c616e636520747970652e1c4465706f73697408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000704d8536f6d6520616d6f756e7420776173206465706f73697465642028652e672e20666f72207472616e73616374696f6e2066656573292e20576974686472617708010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650008041d01536f6d6520616d6f756e74207761732077697468647261776e2066726f6d20746865206163636f756e742028652e672e20666f72207472616e73616374696f6e2066656573292e1c536c617368656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650009040101536f6d6520616d6f756e74207761732072656d6f7665642066726f6d20746865206163636f756e742028652e672e20666f72206d69736265686176696f72292e184d696e74656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000a049c536f6d6520616d6f756e7420776173206d696e74656420696e746f20616e206163636f756e742e304d696e746564437265646974040118616d6f756e74180128543a3a42616c616e6365000b04e0536f6d6520637265646974207761732062616c616e63656420616e6420616464656420746f2074686520546f74616c49737375616e63652e184275726e656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000c049c536f6d6520616d6f756e7420776173206275726e65642066726f6d20616e206163636f756e742e284275726e656444656274040118616d6f756e74180128543a3a42616c616e6365000d04cc536f6d65206465627420686173206265656e2064726f707065642066726f6d2074686520546f74616c2049737375616e63652e2453757370656e64656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000e041501536f6d6520616d6f756e74207761732073757370656e6465642066726f6d20616e206163636f756e74202869742063616e20626520726573746f726564206c61746572292e20526573746f72656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000f04a4536f6d6520616d6f756e742077617320726573746f72656420696e746f20616e206163636f756e742e20557067726164656404010c77686f000130543a3a4163636f756e74496400100460416e206163636f756e74207761732075706772616465642e18497373756564040118616d6f756e74180128543a3a42616c616e63650011042d01546f74616c2069737375616e63652077617320696e637265617365642062792060616d6f756e74602c206372656174696e6720612063726564697420746f2062652062616c616e6365642e2452657363696e646564040118616d6f756e74180128543a3a42616c616e63650012042501546f74616c2069737375616e636520776173206465637265617365642062792060616d6f756e74602c206372656174696e672061206465627420746f2062652062616c616e6365642e184c6f636b656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500130460536f6d652062616c616e636520776173206c6f636b65642e20556e6c6f636b656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500140468536f6d652062616c616e63652077617320756e6c6f636b65642e1846726f7a656e08010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500150460536f6d652062616c616e6365207761732066726f7a656e2e1854686177656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500160460536f6d652062616c616e636520776173207468617765642e4c546f74616c49737375616e6365466f7263656408010c6f6c64180128543a3a42616c616e636500010c6e6577180128543a3a42616c616e6365001704ac5468652060546f74616c49737375616e6365602077617320666f72636566756c6c79206368616e6765642e1048656c640c0118726561736f6ea1010150543a3a52756e74696d65486f6c64526561736f6e00010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500180480536f6d652062616c616e63652077617320706c61636564206f6e20686f6c642e284275726e656448656c640c0118726561736f6ea1010150543a3a52756e74696d65486f6c64526561736f6e00010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365001904a048656c642062616c616e636520776173206275726e65642066726f6d20616e206163636f756e742e385472616e736665724f6e486f6c64100118726561736f6ea1010150543a3a52756e74696d65486f6c64526561736f6e000118736f75726365000130543a3a4163636f756e74496400011064657374000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365001a04150141207472616e73666572206f662060616d6f756e7460206f6e20686f6c642066726f6d2060736f757263656020746f206064657374602077617320696e697469617465642e3c5472616e73666572416e64486f6c64100118726561736f6ea1010150543a3a52756e74696d65486f6c64526561736f6e000118736f75726365000130543a3a4163636f756e74496400011064657374000130543a3a4163636f756e74496400012c7472616e73666572726564180128543a3a42616c616e6365001b04090154686520607472616e73666572726564602062616c616e636520697320706c61636564206f6e20686f6c642061742074686520606465737460206163636f756e742e2052656c65617365640c0118726561736f6ea1010150543a3a52756e74696d65486f6c64526561736f6e00010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365001c0490536f6d652062616c616e6365207761732072656c65617365642066726f6d20686f6c642e28556e65787065637465640400b9010138556e65787065637465644b696e64001d04b0416e20756e65787065637465642f646566656e73697665206576656e7420776173207472696767657265642e047c54686520604576656e746020656e756d206f6620746869732070616c6c65749d0114346672616d655f737570706f72741874726169747318746f6b656e73106d6973633442616c616e6365537461747573000108104672656500000020526573657276656400010000a10108346172676f6e5f72756e74696d654452756e74696d65486f6c64526561736f6e000114284d696e696e67536c6f740400a501017870616c6c65745f6d696e696e675f736c6f743a3a486f6c64526561736f6e000600185661756c74730400a901016470616c6c65745f7661756c74733a3a486f6c64526561736f6e00080030426974636f696e4c6f636b730400ad01018070616c6c65745f626974636f696e5f6c6f636b733a3a486f6c64526561736f6e00090030426c6f636b526577617264730400b101018070616c6c65745f626c6f636b5f726577617264733a3a486f6c64526561736f6e0013002054726561737572790400b501016c70616c6c65745f74726561737572793a3a486f6c64526561736f6e001f0000a5010c4870616c6c65745f6d696e696e675f736c6f741870616c6c657428486f6c64526561736f6e0001043c526567697374657241734d696e657200000000a9010c3470616c6c65745f7661756c74731870616c6c657428486f6c64526561736f6e00010c28456e7465725661756c74000000344f626c69676174696f6e4665650001003850656e64696e67436f6c6c65637400020000ad010c5070616c6c65745f626974636f696e5f6c6f636b731870616c6c657428486f6c64526561736f6e0001044852656c65617365426974636f696e4c6f636b00000000b1010c5070616c6c65745f626c6f636b5f726577617264731870616c6c657428486f6c64526561736f6e000104404d617475726174696f6e506572696f6400000000b5010c3c70616c6c65745f74726561737572791870616c6c657428486f6c64526561736f6e00010454436f6e7472696275746564546f547265617375727900000000b9010c3c70616c6c65745f62616c616e6365731870616c6c657438556e65787065637465644b696e640001083842616c616e636555706461746564000000544661696c6564546f4d75746174654163636f756e7400010000bd010c3c70616c6c65745f62616c616e6365731870616c6c6574144576656e740804540004490001781c456e646f77656408011c6163636f756e74000130543a3a4163636f756e744964000130667265655f62616c616e6365180128543a3a42616c616e6365000004b8416e206163636f756e74207761732063726561746564207769746820736f6d6520667265652062616c616e63652e20447573744c6f737408011c6163636f756e74000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650001083d01416e206163636f756e74207761732072656d6f7665642077686f73652062616c616e636520776173206e6f6e2d7a65726f206275742062656c6f77204578697374656e7469616c4465706f7369742c78726573756c74696e6720696e20616e206f75747269676874206c6f73732e205472616e736665720c011066726f6d000130543a3a4163636f756e744964000108746f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650002044c5472616e73666572207375636365656465642e2842616c616e636553657408010c77686f000130543a3a4163636f756e74496400011066726565180128543a3a42616c616e636500030468412062616c616e6365207761732073657420627920726f6f742e20526573657276656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000404e0536f6d652062616c616e63652077617320726573657276656420286d6f7665642066726f6d206672656520746f207265736572766564292e28556e726573657276656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000504e8536f6d652062616c616e63652077617320756e726573657276656420286d6f7665642066726f6d20726573657276656420746f2066726565292e4852657365727665526570617472696174656410011066726f6d000130543a3a4163636f756e744964000108746f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500014864657374696e6174696f6e5f7374617475739d0101185374617475730006084d01536f6d652062616c616e636520776173206d6f7665642066726f6d207468652072657365727665206f6620746865206669727374206163636f756e7420746f20746865207365636f6e64206163636f756e742ed846696e616c20617267756d656e7420696e64696361746573207468652064657374696e6174696f6e2062616c616e636520747970652e1c4465706f73697408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000704d8536f6d6520616d6f756e7420776173206465706f73697465642028652e672e20666f72207472616e73616374696f6e2066656573292e20576974686472617708010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650008041d01536f6d6520616d6f756e74207761732077697468647261776e2066726f6d20746865206163636f756e742028652e672e20666f72207472616e73616374696f6e2066656573292e1c536c617368656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650009040101536f6d6520616d6f756e74207761732072656d6f7665642066726f6d20746865206163636f756e742028652e672e20666f72206d69736265686176696f72292e184d696e74656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000a049c536f6d6520616d6f756e7420776173206d696e74656420696e746f20616e206163636f756e742e304d696e746564437265646974040118616d6f756e74180128543a3a42616c616e6365000b04e0536f6d6520637265646974207761732062616c616e63656420616e6420616464656420746f2074686520546f74616c49737375616e63652e184275726e656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000c049c536f6d6520616d6f756e7420776173206275726e65642066726f6d20616e206163636f756e742e284275726e656444656274040118616d6f756e74180128543a3a42616c616e6365000d04cc536f6d65206465627420686173206265656e2064726f707065642066726f6d2074686520546f74616c2049737375616e63652e2453757370656e64656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000e041501536f6d6520616d6f756e74207761732073757370656e6465642066726f6d20616e206163636f756e74202869742063616e20626520726573746f726564206c61746572292e20526573746f72656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000f04a4536f6d6520616d6f756e742077617320726573746f72656420696e746f20616e206163636f756e742e20557067726164656404010c77686f000130543a3a4163636f756e74496400100460416e206163636f756e74207761732075706772616465642e18497373756564040118616d6f756e74180128543a3a42616c616e63650011042d01546f74616c2069737375616e63652077617320696e637265617365642062792060616d6f756e74602c206372656174696e6720612063726564697420746f2062652062616c616e6365642e2452657363696e646564040118616d6f756e74180128543a3a42616c616e63650012042501546f74616c2069737375616e636520776173206465637265617365642062792060616d6f756e74602c206372656174696e672061206465627420746f2062652062616c616e6365642e184c6f636b656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500130460536f6d652062616c616e636520776173206c6f636b65642e20556e6c6f636b656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500140468536f6d652062616c616e63652077617320756e6c6f636b65642e1846726f7a656e08010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500150460536f6d652062616c616e6365207761732066726f7a656e2e1854686177656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500160460536f6d652062616c616e636520776173207468617765642e4c546f74616c49737375616e6365466f7263656408010c6f6c64180128543a3a42616c616e636500010c6e6577180128543a3a42616c616e6365001704ac5468652060546f74616c49737375616e6365602077617320666f72636566756c6c79206368616e6765642e1048656c640c0118726561736f6ea1010150543a3a52756e74696d65486f6c64526561736f6e00010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500180480536f6d652062616c616e63652077617320706c61636564206f6e20686f6c642e284275726e656448656c640c0118726561736f6ea1010150543a3a52756e74696d65486f6c64526561736f6e00010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365001904a048656c642062616c616e636520776173206275726e65642066726f6d20616e206163636f756e742e385472616e736665724f6e486f6c64100118726561736f6ea1010150543a3a52756e74696d65486f6c64526561736f6e000118736f75726365000130543a3a4163636f756e74496400011064657374000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365001a04150141207472616e73666572206f662060616d6f756e7460206f6e20686f6c642066726f6d2060736f757263656020746f206064657374602077617320696e697469617465642e3c5472616e73666572416e64486f6c64100118726561736f6ea1010150543a3a52756e74696d65486f6c64526561736f6e000118736f75726365000130543a3a4163636f756e74496400011064657374000130543a3a4163636f756e74496400012c7472616e73666572726564180128543a3a42616c616e6365001b04090154686520607472616e73666572726564602062616c616e636520697320706c61636564206f6e20686f6c642061742074686520606465737460206163636f756e742e2052656c65617365640c0118726561736f6ea1010150543a3a52756e74696d65486f6c64526561736f6e00010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365001c0490536f6d652062616c616e6365207761732072656c65617365642066726f6d20686f6c642e28556e65787065637465640400b9010138556e65787065637465644b696e64001d04b0416e20756e65787065637465642f646566656e73697665206576656e7420776173207472696767657265642e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574c1010c3c70616c6c65745f74785f70617573651870616c6c6574144576656e740404540001082843616c6c50617573656404012466756c6c5f6e616d65c501015052756e74696d6543616c6c4e616d654f663c543e000004b8546869732070616c6c65742c206f7220612073706563696669632063616c6c206973206e6f77207061757365642e3043616c6c556e70617573656404012466756c6c5f6e616d65c501015052756e74696d6543616c6c4e616d654f663c543e000104c0546869732070616c6c65742c206f7220612073706563696669632063616c6c206973206e6f7720756e7061757365642e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574c50100000408c901c90100c9010c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e0000cd010c6870616c6c65745f7472616e73616374696f6e5f7061796d656e741870616c6c6574144576656e74040454000104485472616e73616374696f6e466565506169640c010c77686f000130543a3a4163636f756e74496400012861637475616c5f66656518013042616c616e63654f663c543e00010c74697018013042616c616e63654f663c543e000008590141207472616e73616374696f6e20666565206061637475616c5f666565602c206f662077686963682060746970602077617320616464656420746f20746865206d696e696d756d20696e636c7573696f6e206665652c5c686173206265656e2070616964206279206077686f602e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574d1010c3870616c6c65745f7574696c6974791870616c6c6574144576656e74000120404261746368496e746572727570746564080114696e64657810010c7533320001146572726f7268013444697370617463684572726f7200000855014261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792e20496e646578206f66206669727374206661696c696e6720646973706174636820676976656e2c2061734877656c6c20617320746865206572726f722e384261746368436f6d706c65746564000104c84261746368206f66206469737061746368657320636f6d706c657465642066756c6c792077697468206e6f206572726f722e604261746368436f6d706c65746564576974684572726f7273000204b44261746368206f66206469737061746368657320636f6d706c657465642062757420686173206572726f72732e344974656d436f6d706c657465640003041d01412073696e676c65206974656d2077697468696e2061204261746368206f6620646973706174636865732068617320636f6d706c657465642077697468206e6f206572726f722e284974656d4661696c65640401146572726f7268013444697370617463684572726f720004041101412073696e676c65206974656d2077697468696e2061204261746368206f6620646973706174636865732068617320636f6d706c657465642077697468206572726f722e30446973706174636865644173040118726573756c748c01384469737061746368526573756c7400050458412063616c6c2077617320646973706174636865642e444966456c73654d61696e53756363657373000604644d61696e2063616c6c2077617320646973706174636865642e504966456c736546616c6c6261636b43616c6c65640401286d61696e5f6572726f7268013444697370617463684572726f72000704845468652066616c6c6261636b2063616c6c2077617320646973706174636865642e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574d5010c2c70616c6c65745f7375646f1870616c6c6574144576656e7404045400011014537564696404012c7375646f5f726573756c748c01384469737061746368526573756c7404b454686520726573756c74206f66207468652063616c6c206d61646520627920746865207375646f20757365722e00047041207375646f2063616c6c206a75737420746f6f6b20706c6163652e284b65794368616e67656408010c6f6c64bc01504f7074696f6e3c543a3a4163636f756e7449643e04b4546865206f6c64207375646f206b657920286966206f6e65207761732070726576696f75736c7920736574292e010c6e6577000130543a3a4163636f756e7449640488546865206e6577207375646f206b657920286966206f6e652077617320736574292e010478546865207375646f206b657920686173206265656e20757064617465642e284b657952656d6f76656400020480546865206b657920776173207065726d616e656e746c792072656d6f7665642e285375646f4173446f6e6504012c7375646f5f726573756c748c01384469737061746368526573756c7404b454686520726573756c74206f66207468652063616c6c206d61646520627920746865207375646f20757365722e0304c841205b7375646f5f61735d2850616c6c65743a3a7375646f5f6173292063616c6c206a75737420746f6f6b20706c6163652e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574d9010c2c70616c6c65745f69736d701870616c6c6574144576656e740404540001344c53746174654d616368696e655570646174656408014073746174655f6d616368696e655f6964dd01013853746174654d616368696e65496404605374617465206d616368696e65206964656e74696669657201346c61746573745f68656967687430010c753634046c5374617465206d616368696e65206c61746573742068656967687400041101456d6974746564207768656e2061207374617465206d616368696e65206973207375636365737366756c6c79207570646174656420746f2061206e657720686569676874545374617465436f6d6d69746d656e745665746f6564080118686569676874e501014853746174654d616368696e6548656967687404505374617465206d616368696e652068656967687401246669736865726d616ee9010170426f756e6465645665633c75382c20436f6e73745533323c33323e3e0454726573706f6e7369626c65206669736865726d616e0104e0456d6974746564207768656e206120737461746520636f6d6d69746d656e74206973207665746f65642062792061206669736865726d616e58436f6e73656e737573436c69656e744372656174656404014c636f6e73656e7375735f636c69656e745f6964480144436f6e73656e737573436c69656e744964044c436f6e73656e73757320636c69656e742069640204c8496e646963617465732074686174206120636f6e73656e73757320636c69656e7420686173206265656e206372656174656454436f6e73656e737573436c69656e7446726f7a656e04014c636f6e73656e7375735f636c69656e745f6964480144436f6e73656e737573436c69656e744964044c436f6e73656e73757320636c69656e742069640304c8496e646963617465732074686174206120636f6e73656e73757320636c69656e7420686173206265656e206372656174656420526573706f6e7365140128646573745f636861696ee101013053746174654d616368696e6504a8436861696e2074686174207468697320726573706f6e73652077696c6c20626520726f7574656420746f0130736f757263655f636861696ee101013053746174654d616368696e650478536f7572636520436861696e20666f72207468697320726573706f6e73650134726571756573745f6e6f6e636530010c75363404c04e6f6e636520666f72207468652072657175657374207768696368207468697320726573706f6e736520697320666f720128636f6d6d69746d656e7434011048323536044c526573706f6e736520436f6d6d69746d656e7401387265715f636f6d6d69746d656e743401104832353604485265717565737420636f6d6d69746d656e7404049c416e204f7574676f696e6720526573706f6e736520686173206265656e206465706f73697465641c52657175657374100128646573745f636861696ee101013053746174654d616368696e6504a4436861696e2074686174207468697320726571756573742077696c6c20626520726f7574656420746f0130736f757263655f636861696ee101013053746174654d616368696e650460536f7572636520436861696e20666f7220726571756573740134726571756573745f6e6f6e636530010c753634043452657175657374206e6f6e63650128636f6d6d69746d656e74340110483235360428436f6d6d69746d656e74050498416e204f7574676f696e67205265717565737420686173206265656e206465706f7369746564184572726f72730401186572726f7273ed0101485665633c48616e646c696e674572726f723e045c4d6573736167652068616e646c696e67206572726f727306049c536f6d65206572726f72732068616e646c696e6720736f6d652069736d70206d6573736167657348506f73745265717565737448616e646c65640400f901015852657175657374526573706f6e736548616e646c656400070450506f737420526571756573742048616e646c65644c506f7374526573706f6e736548616e646c65640400f901015852657175657374526573706f6e736548616e646c656400080454506f737420526573706f6e73652048616e646c6564444765745265717565737448616e646c65640400f901015852657175657374526573706f6e736548616e646c65640009045047657420526573706f6e73652048616e646c656464506f73745265717565737454696d656f757448616e646c65640400fd01013854696d656f757448616e646c6564000a0470506f737420726571756573742074696d656f75742068616e646c656468506f7374526573706f6e736554696d656f757448616e646c65640400fd01013854696d656f757448616e646c6564000b0474506f737420726573706f6e73652074696d656f75742068616e646c6564604765745265717565737454696d656f757448616e646c65640400fd01013854696d656f757448616e646c6564000c046c47657420726571756573742074696d656f75742068616e646c6564043450616c6c6574204576656e7473dd010c1069736d7024636f6e73656e7375733853746174654d616368696e654964000008012073746174655f6964e101013053746174654d616368696e65000148636f6e73656e7375735f73746174655f6964480140436f6e73656e737573537461746549640000e1010c1069736d7010686f73743053746174654d616368696e650001180c45766d040010010c75333200000020506f6c6b61646f74040010010c753332000100184b7573616d61040010010c753332000200245375627374726174650400480140436f6e73656e737573537461746549640003002854656e6465726d696e740400480140436f6e73656e737573537461746549640004001452656c617908011472656c6179480140436f6e73656e7375735374617465496400011c706172615f696410010c75333200050000e5010c1069736d7024636f6e73656e7375734853746174654d616368696e6548656967687400000801086964dd01013853746174654d616368696e65496400011868656967687430010c7536340000e9010c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e0000ed01000002f10100f1010c2c70616c6c65745f69736d70186572726f72733448616e646c696e674572726f72000004011c6d657373616765f5010178426f756e6465645665633c75382c20436f6e73745533323c313030303e3e0000f5010c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e0000f9010c1069736d70186576656e74735852657175657374526573706f6e736548616e646c65640000080128636f6d6d69746d656e743401104832353600011c72656c6179657238011c5665633c75383e0000fd010c1069736d70186576656e74733854696d656f757448616e646c656400000c0128636f6d6d69746d656e7434011048323536000118736f75726365e101013053746174654d616368696e6500011064657374e101013053746174654d616368696e65000001020c3069736d705f6772616e6470611870616c6c6574144576656e740404540001084453746174654d616368696e65416464656404013873746174655f6d616368696e6573050201445665633c53746174654d616368696e653e0478546865207374617465206d616368696e657320696e207175657374696f6e0004ac5374617465206d616368696e65732068617665206265656e20616464656420746f2077686974656c6973744c53746174654d616368696e6552656d6f76656404013873746174655f6d616368696e6573050201445665633c53746174654d616368696e653e0478546865207374617465206d616368696e657320696e207175657374696f6e0104cc5374617465206d616368696e65732068617665206265656e2072656d6f7665642066726f6d207468652077686974656c69737404744576656e747320656d697474656420627920746869732070616c6c65740502000002e1010009020c4870616c6c65745f68797065726272696467651870616c6c6574144576656e7404045400010844486f7374506172616d735570646174656408010c6f6c640d0201e056657273696f6e6564486f7374506172616d733c3c542061732070616c6c65745f69736d703a3a436f6e6669673e3a3a42616c616e63653e044c546865206f6c6420686f737420706172616d73010c6e65770d0201e056657273696f6e6564486f7374506172616d733c3c542061732070616c6c65745f69736d703a3a436f6e6669673e3a3a42616c616e63653e044c546865206e657720686f737420706172616d7300041901487970657262726964676520676f7665726e616e636520686173206e6f772075706461746564206974277320686f737420706172616d73206f6e207468697320636861696e2e4c52656c6179657246656557697468647261776e080118616d6f756e7418018c3c542061732070616c6c65745f69736d703a3a436f6e6669673e3a3a42616c616e6365047454686520616d6f756e742074686174207761732077697468647261776e011c6163636f756e74000130543a3a4163636f756e7449640468546865207769746864726177616c2062656e6566696369617279010484412072656c61796572206861732077697468647261776e20736f6d652066656573047c54686520604576656e746020656e756d206f6620746869732070616c6c65740d02084870616c6c65745f68797065726272696467654c56657273696f6e6564486f7374506172616d73041c42616c616e636501180104085631040011020170537562737472617465486f7374506172616d733c42616c616e63653e000000001102084870616c6c65745f68797065726272696467654c537562737472617465486f7374506172616d730404420118000c015064656661756c745f7065725f627974655f666565180104420001347065725f627974655f666565731502016442547265654d61703c53746174654d616368696e652c20423e00015861737365745f726567697374726174696f6e5f6665651801044200001502042042547265654d617008044b01e10104560118000400190200000019020000021d02001d0200000408e101180021020c5070616c6c65745f746f6b656e5f676174657761791870616c6c6574144576656e740404540001143c417373657454656c65706f7274656414011066726f6d000130543a3a4163636f756e7449640438536f75726365206163636f756e740108746f34011048323536048862656e6566696369617279206163636f756e74206f6e2064657374696e6174696f6e0118616d6f756e741801d83c543a3a4e617469766543757272656e63792061732043757272656e63793c543a3a4163636f756e7449643e3e3a3a42616c616e63650448416d6f756e74207472616e73666572726564011064657374e101013053746174654d616368696e65044444657374696e6174696f6e20636861696e0128636f6d6d69746d656e743401104832353604485265717565737420636f6d6d69746d656e74000470416e20617373657420686173206265656e2074656c65706f7274656434417373657452656365697665640c012c62656e6566696369617279000130543a3a4163636f756e744964048462656e6566696369617279206163636f756e74206f6e2072656c6179636861696e0118616d6f756e7418010d013c3c5420617320436f6e6669673e3a3a4e617469766543757272656e63792061732043757272656e63793c543a3a4163636f756e7449643e3e3a3a0a42616c616e63650448416d6f756e74207472616e736665727265640118736f75726365e101013053746174654d616368696e65044444657374696e6174696f6e20636861696e01041d01416e20617373657420686173206265656e20726563656976656420616e64207472616e7366657272656420746f207468652062656e65666963696172792773206163636f756e74344173736574526566756e6465640c012c62656e6566696369617279000130543a3a4163636f756e744964048462656e6566696369617279206163636f756e74206f6e2072656c6179636861696e0118616d6f756e7418010d013c3c5420617320436f6e6669673e3a3a4e617469766543757272656e63792061732043757272656e63793c543a3a4163636f756e7449643e3e3a3a0a42616c616e63650448416d6f756e74207472616e736665727265640118736f75726365e101013053746174654d616368696e65044444657374696e6174696f6e20636861696e02041d01416e20617373657420686173206265656e20726566756e64656420616e64207472616e7366657272656420746f207468652062656e65666963696172792773206163636f756e7488455243363136304173736574526567697374726174696f6e44697370617463686564040128636f6d6d69746d656e743401104832353604485265717565737420636f6d6d69746d656e740304e045524336313630206173736574206372656174696f6e2072657175657374206469737061746368656420746f206879706572627269646765584173736574526567697374657265644c6f63616c6c790801206c6f63616c5f6964100128417373657449643c543e0448546865206c6f63616c206173736574206964012061737365745f696434011048323536046854686520746f6b656e2067617465776179206173736574206964040490416e20617373657420686173206265656e2072656769737465726564206c6f63616c6c7904d450616c6c6574206576656e747320746861742066756e6374696f6e7320696e20746869732070616c6c65742063616e20656d69742e25020c3c70616c6c65745f74726561737572791870616c6c6574144576656e7404045400011c64436f756c644e6f7444697374726962757465426964506f6f6c1801286163636f756e745f6964000130543a3a4163636f756e7449640001206672616d655f696430011c4672616d6549640001207661756c745f696410011c5661756c744964000118616d6f756e74180128543a3a42616c616e636500013864697370617463685f6572726f7268013444697370617463684572726f7200013069735f666f725f7661756c74200110626f6f6c000004a4416e206572726f72206f6363757272656420646973747269627574696e6720612062696420706f6f6c50436f756c644e6f7446756e6454726561737572790c01206672616d655f696430011c4672616d654964000118616d6f756e74180128543a3a42616c616e636500013864697370617463685f6572726f7268013444697370617463684572726f720001040101416e206572726f72206f6363757272656420726573657276696e672074726561737572792072657365727665732066726f6d207468652062696420706f6f6c2e48426964506f6f6c44697374726962757465641001206672616d655f696430011c4672616d6549640001506269645f706f6f6c5f6469737472696275746564180128543a3a42616c616e636500014474726561737572795f7265736572766573180128543a3a42616c616e636500013c6269645f706f6f6c5f73686172657310010c753332000204d046756e64732066726f6d20746865206163746976652062696420706f6f6c2068617665206265656e206469737472696275746564604e657874426964506f6f6c4361706974616c4c6f636b65640c01206672616d655f696430011c4672616d65496400015c746f74616c5f6163746976617465645f6361706974616c180128543a3a42616c616e636500015070617274696369706174696e675f7661756c747310010c75333200030490546865206e6578742062696420706f6f6c20686173206265656e206c6f636b656420696e744572726f72526566756e64696e6754726561737572794361706974616c1401206672616d655f696430011c4672616d6549640001207661756c745f696410011c5661756c744964000118616d6f756e74180128543a3a42616c616e63650001286163636f756e745f6964000130543a3a4163636f756e74496400013864697370617463685f6572726f7268013444697370617463684572726f72000404b8416e206572726f72206f636375727265642072656c656173696e67206120636f6e7472696275746f7220686f6c645c526566756e64656454726561737572794361706974616c1001206672616d655f696430011c4672616d6549640001207661756c745f696410011c5661756c744964000118616d6f756e74180128543a3a42616c616e63650001286163636f756e745f6964000130543a3a4163636f756e7449640005084501536f6d65206d696e696e6720626f6e64206361706974616c2077617320726566756e6465642062656361757365207661756c742073656375726974697a6564207361746f7368697320286073617473202acc73656375726974697a6174696f6e20726174696f60292077657265206c6f776572207468616e20626f6e64206361706974616c545661756c7446756e646572416c6c6f636174696f6e1001207661756c745f696410011c5661756c7449640001286163636f756e745f6964000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500013c70726576696f75735f616d6f756e74850101484f7074696f6e3c543a3a42616c616e63653e000604b4412066756e646572206861732073657420746865697220616c6c6f636174696f6e20666f722061207661756c74047c54686520604576656e746020656e756d206f6620746869732070616c6c657429020c4870616c6c65745f6665655f636f6e74726f6c1870616c6c6574144576656e7404045400010828466565536b69707065640401186f726967696e2d0201c03c543a3a52756e74696d654f726967696e206173204f726967696e54726169743e3a3a50616c6c6574734f726967696e0000047841207472616e73616374696f6e206665652077617320736b69707065642e3046656544656c6567617465640c01186f726967696e2d0201c03c543a3a52756e74696d654f726967696e206173204f726967696e54726169743e3a3a50616c6c6574734f726967696e00011066726f6d000130543a3a4163636f756e744964000108746f000130543a3a4163636f756e7449640001047c41207472616e73616374696f6e20666565207761732064656c656761746564047c54686520604576656e746020656e756d206f6620746869732070616c6c65742d0208346172676f6e5f72756e74696d65304f726967696e43616c6c65720001041873797374656d0400310201746672616d655f73797374656d3a3a4f726967696e3c52756e74696d653e0000000031020c346672616d655f737570706f7274206469737061746368245261774f726967696e04244163636f756e7449640100011010526f6f74000000185369676e656404000001244163636f756e744964000100104e6f6e6500020028417574686f72697a65640003000035020c6c70616c6c65745f696e626f756e645f7472616e736665725f6c6f671870616c6c6574144576656e7404045400010868496e626f756e6445766d5472616e736665725265636f726465640401207472616e7366657239020154496e626f756e6445766d5472616e736665723c543e000004dc41207175616c696679696e6720696e626f756e6420546f6b656e47617465776179207265717565737420776173207265636f726465642e64496e626f756e6445766d5472616e7366657244726f707065640c0118736f75726365e101013053746174654d616368696e650001146e6f6e636530010c753634000118726561736f6e49020164496e626f756e645472616e7366657244726f70526561736f6e000104b84120546f6b656e476174657761792072657175657374207761732069676e6f726564206f722064726f707065642e047c54686520604576656e746020656e756d206f6620746869732070616c6c657439020c6c70616c6c65745f696e626f756e645f7472616e736665725f6c6f671870616c6c657448496e626f756e6445766d5472616e7366657204045400001c0118736f75726365e101013053746174654d616368696e650001146e6f6e636530010c75363400012065766d5f66726f6d3d02011048313630000108746f000130543a3a4163636f756e74496400012861737365745f6b696e644502012441737365744b696e64000118616d6f756e7418011c42616c616e6365000140657870697265735f61745f626c6f636b100144426c6f636b4e756d626572466f723c543e00003d02083c7072696d69746976655f7479706573104831363000000400410201205b75383b2032305d0000410200000314000000080045020c6c70616c6c65745f696e626f756e645f7472616e736665725f6c6f671870616c6c65742441737365744b696e64000108144172676f6e0000001c4172676f6e6f740001000049020c6c70616c6c65745f696e626f756e645f7472616e736665725f6c6f671870616c6c657464496e626f756e645472616e7366657244726f70526561736f6e00012430426f6479546f6f4c617267650000003c4162694465636f64654661696c6564000100304e6f6e45766d536f7572636500020030556e6b6e6f776e417373657400030040556e737570706f72746564417373657400040040556e6b6e6f776e507265636973696f6e00050034496e76616c6964416d6f756e7400060048416d6f756e7442656c6f774d696e696d756d0007004c45787069726174696f6e517565756546756c6c000800004d020c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c6574144576656e7404045400011c704f7065726174696f6e616c4163636f756e745265676973746572656414014c6f7065726174696f6e616c5f6163636f756e74000130543a3a4163636f756e7449640001347661756c745f6163636f756e74000130543a3a4163636f756e7449640001586d696e696e675f66756e64696e675f6163636f756e74000130543a3a4163636f756e7449640001486d696e696e675f626f745f6163636f756e74000130543a3a4163636f756e74496400011c73706f6e736f72bc01504f7074696f6e3c543a3a4163636f756e7449643e000004fc416e206f7065726174696f6e616c206163636f756e74207761732072656769737465726564207769746820697473206c696e6b6564206163636f756e74732e584163636f756e7457656e744f7065726174696f6e616c04011c6163636f756e74000130543a3a4163636f756e7449640001047c4163636f756e7420686173206265636f6d65206f7065726174696f6e616c2e5c4f7065726174696f6e616c5265776172644561726e65640c011c6163636f756e74000130543a3a4163636f756e74496400012c7265776172645f6b696e64510201544f7065726174696f6e616c5265776172644b696e64000118616d6f756e74180128543a3a42616c616e6365000204b4412072657761726420686173206265656e2071756575656420666f72207472656173757279207061796f75742e784f7065726174696f6e616c526577617264456e71756575654661696c65640c011c6163636f756e74000130543a3a4163636f756e74496400012c7265776172645f6b696e64510201544f7065726174696f6e616c5265776172644b696e64000118616d6f756e74180128543a3a42616c616e6365000304e052657761726420656e7175657565206661696c65642062656361757365207468652070656e64696e672071756575652069732066756c6c2e5052657761726473436f6e6669675570646174656408016c6f7065726174696f6e616c5f726566657272616c5f726577617264180128543a3a42616c616e6365000154726566657272616c5f626f6e75735f726577617264180128543a3a42616c616e63650004048852657761726420636f6e6669672076616c756573207765726520757064617465642e644f7065726174696f6e616c50726f6772657373466f726365641c011c6163636f756e74000130543a3a4163636f756e74496400016c7570646174655f6f7065726174696f6e616c5f70726f6772657373200110626f6f6c0001506861735f756e69737761705f7472616e73666572200110626f6f6c0001347661756c745f63726561746564200110626f6f6c00017c6861735f74726561737572795f706f6f6c5f70617274696369706174696f6e200110626f6f6c0001586f627365727665645f626974636f696e5f746f74616c180128543a3a42616c616e63650001686f627365727665645f6d696e696e675f736561745f746f74616c10010c753332000504a04f7065726174696f6e616c2070726f67726573732077617320666f7263656420627920726f6f742e58456e637279707465645365727665725570646174656408011c73706f6e736f72000130543a3a4163636f756e74496400011c73706f6e736565000130543a3a4163636f756e744964000604f4412073706f6e736f7220757064617465642074686520656e6372797074656420736572766572207061796c6f616420666f7220612073706f6e7365652e047c54686520604576656e746020656e756d206f6620746869732070616c6c657451020c406172676f6e5f7072696d6974697665732470726f766964657273544f7065726174696f6e616c5265776172644b696e640001082841637469766174696f6e00000034526566657272616c426f6e757300010000550208306672616d655f73797374656d14506861736500010c384170706c7945787472696e736963040010010c7533320000003046696e616c697a6174696f6e00010038496e697469616c697a6174696f6e00020000590200000234005d02000002610200610200000408101000650208306672616d655f73797374656d584c61737452756e74696d6555706772616465496e666f0000080130737065635f76657273696f6ed4014c636f6465633a3a436f6d706163743c7533323e000124737065635f6e616d6569020144436f773c277374617469632c207374723e00006902040c436f77040454016d020004006d020000006d020000050200710208306672616d655f73797374656d60436f646555706772616465417574686f72697a6174696f6e0404540000080124636f64655f6861736834011c543a3a48617368000134636865636b5f76657273696f6e200110626f6f6c000075020c306672616d655f73797374656d1870616c6c65741043616c6c04045400012c1872656d61726b04011872656d61726b38011c5665633c75383e00000c684d616b6520736f6d65206f6e2d636861696e2072656d61726b2e008843616e20626520657865637574656420627920657665727920606f726967696e602e387365745f686561705f7061676573040114706167657330010c753634000104f853657420746865206e756d626572206f6620706167657320696e2074686520576562417373656d626c7920656e7669726f6e6d656e74277320686561702e207365745f636f6465040110636f646538011c5665633c75383e0002046453657420746865206e65772072756e74696d6520636f64652e5c7365745f636f64655f776974686f75745f636865636b73040110636f646538011c5665633c75383e000310190153657420746865206e65772072756e74696d6520636f646520776974686f757420646f696e6720616e7920636865636b73206f662074686520676976656e2060636f6465602e0051014e6f746520746861742072756e74696d652075706772616465732077696c6c206e6f742072756e20696620746869732069732063616c6c656420776974682061206e6f742d696e6372656173696e6720737065632076657273696f6e212c7365745f73746f726167650401146974656d73790201345665633c4b657956616c75653e0004046853657420736f6d65206974656d73206f662073746f726167652e306b696c6c5f73746f726167650401106b657973810201205665633c4b65793e000504744b696c6c20736f6d65206974656d732066726f6d2073746f726167652e2c6b696c6c5f70726566697808011870726566697838010c4b657900011c7375626b65797310010c75333200061011014b696c6c20616c6c2073746f72616765206974656d7320776974682061206b657920746861742073746172747320776974682074686520676976656e207072656669782e0039012a2a4e4f54453a2a2a2057652072656c79206f6e2074686520526f6f74206f726967696e20746f2070726f7669646520757320746865206e756d626572206f66207375626b65797320756e6465723d0174686520707265666978207765206172652072656d6f76696e6720746f2061636375726174656c792063616c63756c6174652074686520776569676874206f6620746869732066756e6374696f6e2e4472656d61726b5f776974685f6576656e7404011872656d61726b38011c5665633c75383e000704a44d616b6520736f6d65206f6e2d636861696e2072656d61726b20616e6420656d6974206576656e742e44617574686f72697a655f75706772616465040124636f64655f6861736834011c543a3a486173680009106101417574686f72697a6520616e207570677261646520746f206120676976656e2060636f64655f686173686020666f72207468652072756e74696d652e205468652072756e74696d652063616e20626520737570706c696564186c617465722e007c546869732063616c6c20726571756972657320526f6f74206f726967696e2e80617574686f72697a655f757067726164655f776974686f75745f636865636b73040124636f64655f6861736834011c543a3a48617368000a206101417574686f72697a6520616e207570677261646520746f206120676976656e2060636f64655f686173686020666f72207468652072756e74696d652e205468652072756e74696d652063616e20626520737570706c696564186c617465722e005d015741524e494e473a205468697320617574686f72697a657320616e207570677261646520746861742077696c6c2074616b6520706c61636520776974686f757420616e792073616665747920636865636b732c20666f7259016578616d706c652074686174207468652073706563206e616d652072656d61696e73207468652073616d6520616e642074686174207468652076657273696f6e206e756d62657220696e637265617365732e204e6f74f07265636f6d6d656e64656420666f72206e6f726d616c207573652e205573652060617574686f72697a655f757067726164656020696e73746561642e007c546869732063616c6c20726571756972657320526f6f74206f726967696e2e606170706c795f617574686f72697a65645f75706772616465040110636f646538011c5665633c75383e000b24550150726f766964652074686520707265696d616765202872756e74696d652062696e617279292060636f64656020666f7220616e2075706772616465207468617420686173206265656e20617574686f72697a65642e00490149662074686520617574686f72697a6174696f6e20726571756972656420612076657273696f6e20636865636b2c20746869732063616c6c2077696c6c20656e73757265207468652073706563206e616d65e872656d61696e7320756e6368616e67656420616e6420746861742074686520737065632076657273696f6e2068617320696e637265617365642e005901446570656e64696e67206f6e207468652072756e74696d65277320604f6e536574436f64656020636f6e66696775726174696f6e2c20746869732066756e6374696f6e206d6179206469726563746c79206170706c791101746865206e65772060636f64656020696e207468652073616d6520626c6f636b206f7220617474656d707420746f207363686564756c652074686520757067726164652e0060416c6c206f726967696e732061726520616c6c6f7765642e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e79020000027d02007d02000004083838008102000002380085020c306672616d655f73797374656d186c696d69747330426c6f636b5765696768747300000c0128626173655f626c6f636b2801185765696768740001246d61785f626c6f636b2801185765696768740001247065725f636c617373890201845065724469737061746368436c6173733c57656967687473506572436c6173733e000089020c346672616d655f737570706f7274206469737061746368405065724469737061746368436c617373040454018d02000c01186e6f726d616c8d0201045400012c6f7065726174696f6e616c8d020104540001246d616e6461746f72798d0201045400008d020c306672616d655f73797374656d186c696d6974733c57656967687473506572436c6173730000100138626173655f65787472696e7369632801185765696768740001346d61785f65787472696e736963910201384f7074696f6e3c5765696768743e0001246d61785f746f74616c910201384f7074696f6e3c5765696768743e0001207265736572766564910201384f7074696f6e3c5765696768743e0000910204184f7074696f6e04045401280108104e6f6e6500000010536f6d65040028000001000095020c306672616d655f73797374656d186c696d6974732c426c6f636b4c656e677468000004010c6d6178990201545065724469737061746368436c6173733c7533323e000099020c346672616d655f737570706f7274206469737061746368405065724469737061746368436c6173730404540110000c01186e6f726d616c1001045400012c6f7065726174696f6e616c100104540001246d616e6461746f72791001045400009d02082873705f776569676874733c52756e74696d65446257656967687400000801107265616430010c753634000114777269746530010c7536340000a102082873705f76657273696f6e3852756e74696d6556657273696f6e0000200124737065635f6e616d6569020144436f773c277374617469632c207374723e000124696d706c5f6e616d6569020144436f773c277374617469632c207374723e000144617574686f72696e675f76657273696f6e10010c753332000130737065635f76657273696f6e10010c753332000130696d706c5f76657273696f6e10010c75333200011061706973a502011c4170697356656300014c7472616e73616374696f6e5f76657273696f6e10010c75333200013873797374656d5f76657273696f6e08010875380000a502040c436f7704045401a902000400a902000000a902000002ad0200ad0200000408b1021000b102000003080000000800b5020c306672616d655f73797374656d1870616c6c6574144572726f720404540001243c496e76616c6964537065634e616d650000081101546865206e616d65206f662073706563696669636174696f6e20646f6573206e6f74206d61746368206265747765656e207468652063757272656e742072756e74696d6550616e6420746865206e65772072756e74696d652e685370656356657273696f6e4e65656473546f496e63726561736500010841015468652073706563696669636174696f6e2076657273696f6e206973206e6f7420616c6c6f77656420746f206465637265617365206265747765656e207468652063757272656e742072756e74696d6550616e6420746865206e65772072756e74696d652e744661696c6564546f4578747261637452756e74696d6556657273696f6e00020cec4661696c656420746f2065787472616374207468652072756e74696d652076657273696f6e2066726f6d20746865206e65772072756e74696d652e0009014569746865722063616c6c696e672060436f72655f76657273696f6e60206f72206465636f64696e67206052756e74696d6556657273696f6e60206661696c65642e4c4e6f6e44656661756c74436f6d706f73697465000304fc537569636964652063616c6c6564207768656e20746865206163636f756e7420686173206e6f6e2d64656661756c7420636f6d706f7369746520646174612e3c4e6f6e5a65726f526566436f756e74000404350154686572652069732061206e6f6e2d7a65726f207265666572656e636520636f756e742070726576656e74696e6720746865206163636f756e742066726f6d206265696e67207075726765642e3043616c6c46696c7465726564000504d0546865206f726967696e2066696c7465722070726576656e74207468652063616c6c20746f20626520646973706174636865642e6c4d756c7469426c6f636b4d6967726174696f6e734f6e676f696e67000604550141206d756c74692d626c6f636b206d6967726174696f6e206973206f6e676f696e6720616e642070726576656e7473207468652063757272656e7420636f64652066726f6d206265696e67207265706c616365642e444e6f7468696e67417574686f72697a6564000704584e6f207570677261646520617574686f72697a65642e30556e617574686f72697a656400080494546865207375626d697474656420636f6465206973206e6f7420617574686f72697a65642e046c4572726f7220666f72207468652053797374656d2070616c6c6574b9020c406172676f6e5f7072696d6974697665731c6469676573747324446967657374736574084c4e6f7465626f6f6b5665726966794572726f72011901244163636f756e7449640100001c0118617574686f720001244163636f756e744964000128626c6f636b5f766f7465bd02013c426c6f636b566f7465446967657374000128766f74696e675f6b6579c10201744f7074696f6e3c506172656e74566f74696e674b65794469676573743e000128666f726b5f706f776572cd0201444f7074696f6e3c466f726b506f7765723e0001286672616d655f696e666fe10201444f7074696f6e3c4672616d65496e666f3e0001107469636be90201285469636b4469676573740001246e6f7465626f6f6b73ed02018c4e6f7465626f6f6b4469676573743c4e6f7465626f6f6b5665726966794572726f723e0000bd020c406172676f6e5f7072696d6974697665731c646967657374733c426c6f636b566f74654469676573740000080130766f74696e675f706f776572c00140426c6f636b566f74696e67506f77657200012c766f7465735f636f756e74d4010c7533320000c10204184f7074696f6e04045401c5020108104e6f6e6500000010536f6d650400c5020000010000c5020c406172676f6e5f7072696d6974697665731c6469676573747354506172656e74566f74696e674b65794469676573740000040144706172656e745f766f74696e675f6b6579c90201444f7074696f6e3c566f74696e674b65793e0000c90204184f7074696f6e04045401340108104e6f6e6500000010536f6d650400340000010000cd0204184f7074696f6e04045401d1020108104e6f6e6500000010536f6d650400d1020000010000d1020c406172676f6e5f7072696d69746976657328666f726b5f706f77657224466f726b506f77657200001c013869735f6c61746573745f766f7465200110626f6f6c0001246e6f7465626f6f6b732c010c753634000130766f74696e675f706f776572d5020110553235360001347365616c5f737472656e677468d502011055323536000160746f74616c5f636f6d707574655f646966666963756c7479d50201105532353600014c766f74655f637265617465645f626c6f636b73c00110753132380001446d696e65725f6e6f6e63655f73636f7265dd0201304f7074696f6e3c553235363e0000d502083c7072696d69746976655f7479706573105532353600000400d90201205b7536343b20345d0000d902000003040000003000dd0204184f7074696f6e04045401d5020108104e6f6e6500000010536f6d650400d5020000010000e10204184f7074696f6e04045401e5020108104e6f6e6500000010536f6d650400e5020000010000e5020c406172676f6e5f7072696d6974697665731c64696765737473244672616d65496e666f00000c01206672616d655f69642c011c4672616d6549640001706672616d655f7265776172645f7469636b735f72656d61696e696e67d4010c75333200013069735f6e65775f6672616d65200110626f6f6c0000e9020c406172676f6e5f7072696d697469766573107469636b285469636b446967657374000004003001105469636b0000ed020c406172676f6e5f7072696d6974697665731c64696765737473384e6f7465626f6f6b446967657374042c5665726966794572726f72011901000401246e6f7465626f6f6b73f10201ec426f756e6465645665633c4e6f7465626f6f6b4175646974526573756c743c5665726966794572726f723e2c20436f6e73745533323c3235363e3e0000f1020c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401f502045300000400fd0201185665633c543e0000f5020c406172676f6e5f7072696d697469766573206e6f7465626f6f6b4c4e6f7465626f6f6b4175646974526573756c74042c5665726966794572726f72011901001001246e6f746172795f6964d401204e6f74617279496400013c6e6f7465626f6f6b5f6e756d626572d401384e6f7465626f6f6b4e756d6265720001107469636b2c01105469636b00014c61756469745f66697273745f6661696c757265f902014c4f7074696f6e3c5665726966794572726f723e0000f90204184f7074696f6e0404540119010108104e6f6e6500000010536f6d65040019010000010000fd02000002f5020001030c3870616c6c65745f646967657374731870616c6c6574144572726f72040454000134604475706c6963617465426c6f636b566f74654469676573740000047c4475706c696361746520426c6f636b566f746544696765737420666f756e64544475706c6963617465417574686f72446967657374000104704475706c696361746520417574686f7244696765737420666f756e644c4475706c69636174655469636b446967657374000204684475706c6963617465205469636b44696765737420666f756e64784475706c6963617465506172656e74566f74696e674b6579446967657374000304944475706c696361746520506172656e74566f74696e674b657944696765737420666f756e645c4475706c69636174654e6f7465626f6f6b446967657374000404784475706c6963617465204e6f7465626f6f6b44696765737420666f756e64604475706c6963617465466f726b506f7765724469676573740005047c4475706c696361746520466f726b506f77657244696765737420666f756e64584d697373696e67426c6f636b566f74654469676573740006045c4d697373696e6720426c6f636b566f74654469676573744c4d697373696e67417574686f72446967657374000704504d697373696e6720417574686f72446967657374444d697373696e675469636b446967657374000804484d697373696e67205469636b446967657374704d697373696e67506172656e74566f74696e674b6579446967657374000904744d697373696e6720506172656e74566f74696e674b6579446967657374544d697373696e674e6f7465626f6f6b446967657374000a04584d697373696e67204e6f7465626f6f6b44696765737450436f756c644e6f744465636f6465446967657374000b04604661696c656420746f206465636f64652064696765737473604475706c69636174654672616d65496e666f446967657374000c04644475706c6963617465204672616d65496e666f20666f756e64048054686520604572726f726020656e756d206f6620746869732070616c6c65742e05030c4070616c6c65745f74696d657374616d701870616c6c65741043616c6c0404540001040c73657404010c6e6f772c0124543a3a4d6f6d656e7400004c54536574207468652063757272656e742074696d652e005501546869732063616c6c2073686f756c6420626520696e766f6b65642065786163746c79206f6e63652070657220626c6f636b2e2049742077696c6c2070616e6963206174207468652066696e616c697a6174696f6ed470686173652c20696620746869732063616c6c206861736e2774206265656e20696e766f6b656420627920746861742074696d652e0041015468652074696d657374616d702073686f756c642062652067726561746572207468616e207468652070726576696f7573206f6e652062792074686520616d6f756e7420737065636966696564206279685b60436f6e6669673a3a4d696e696d756d506572696f64605d2e00c4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f4e6f6e655f2e0051015468697320646973706174636820636c617373206973205f4d616e6461746f72795f20746f20656e73757265206974206765747320657865637574656420696e2074686520626c6f636b2e204265206177617265510174686174206368616e67696e672074686520636f6d706c6578697479206f6620746869732063616c6c20636f756c6420726573756c742065786861757374696e6720746865207265736f757263657320696e206184626c6f636b20746f206578656375746520616e79206f746865722063616c6c732e0034232320436f6d706c657869747931012d20604f2831296020284e6f7465207468617420696d706c656d656e746174696f6e73206f6620604f6e54696d657374616d7053657460206d75737420616c736f20626520604f283129602955012d20312073746f72616765207265616420616e6420312073746f72616765206d75746174696f6e2028636f64656320604f283129602062656361757365206f6620604469645570646174653a3a74616b656020696e402020606f6e5f66696e616c697a656029d42d2031206576656e742068616e646c657220606f6e5f74696d657374616d705f736574602e204d75737420626520604f283129602e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e0903000004080004000d03083c70616c6c65745f6d756c7469736967204d756c7469736967102c426c6f636b4e756d62657201101c42616c616e63650118244163636f756e7449640100304d6178417070726f76616c7300001001107768656e88015854696d65706f696e743c426c6f636b4e756d6265723e00011c6465706f73697418011c42616c616e63650001246465706f7369746f720001244163636f756e744964000124617070726f76616c731103018c426f756e6465645665633c4163636f756e7449642c204d6178417070726f76616c733e000011030c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540100045300000400150301185665633c543e00001503000002000019030c3c70616c6c65745f6d756c74697369671870616c6c65741043616c6c0404540001145061735f6d756c74695f7468726573686f6c645f310801446f746865725f7369676e61746f72696573150301445665633c543a3a4163636f756e7449643e00011063616c6c1d03017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e0000305101496d6d6564696174656c792064697370617463682061206d756c74692d7369676e61747572652063616c6c207573696e6720612073696e676c6520617070726f76616c2066726f6d207468652063616c6c65722e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e003d012d20606f746865725f7369676e61746f72696573603a20546865206163636f756e747320286f74686572207468616e207468652073656e646572292077686f206172652070617274206f662074686501016d756c74692d7369676e61747572652c2062757420646f206e6f7420706172746963697061746520696e2074686520617070726f76616c2070726f636573732e882d206063616c6c603a205468652063616c6c20746f2062652065786563757465642e00b8526573756c74206973206571756976616c656e7420746f20746865206469737061746368656420726573756c742e0034232320436f6d706c657869747919014f285a202b204329207768657265205a20697320746865206c656e677468206f66207468652063616c6c20616e6420432069747320657865637574696f6e207765696768742e2061735f6d756c74691401247468726573686f6c649c010c7531360001446f746865725f7369676e61746f72696573150301445665633c543a3a4163636f756e7449643e00013c6d617962655f74696d65706f696e74510501904f7074696f6e3c54696d65706f696e743c426c6f636b4e756d626572466f723c543e3e3e00011063616c6c1d03017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e0001286d61785f77656967687428011857656967687400019c5501526567697374657220617070726f76616c20666f72206120646973706174636820746f206265206d6164652066726f6d20612064657465726d696e697374696320636f6d706f73697465206163636f756e74206966f8617070726f766564206279206120746f74616c206f6620607468726573686f6c64202d203160206f6620606f746865725f7369676e61746f72696573602e00b049662074686572652061726520656e6f7567682c207468656e206469737061746368207468652063616c6c2e002d015061796d656e743a20604465706f73697442617365602077696c6c20626520726573657276656420696620746869732069732074686520666972737420617070726f76616c2c20706c75733d01607468726573686f6c64602074696d657320604465706f736974466163746f72602e2049742069732072657475726e6564206f6e636520746869732064697370617463682068617070656e73206f723469732063616e63656c6c65642e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e0055012d20607468726573686f6c64603a2054686520746f74616c206e756d626572206f6620617070726f76616c7320666f722074686973206469737061746368206265666f72652069742069732065786563757465642e41012d20606f746865725f7369676e61746f72696573603a20546865206163636f756e747320286f74686572207468616e207468652073656e646572292077686f2063616e20617070726f766520746869736c64697370617463682e204d6179206e6f7420626520656d7074792e59012d20606d617962655f74696d65706f696e74603a20496620746869732069732074686520666972737420617070726f76616c2c207468656e2074686973206d75737420626520604e6f6e65602e20496620697420697351016e6f742074686520666972737420617070726f76616c2c207468656e206974206d7573742062652060536f6d65602c2077697468207468652074696d65706f696e742028626c6f636b206e756d62657220616e64d47472616e73616374696f6e20696e64657829206f662074686520666972737420617070726f76616c207472616e73616374696f6e2e882d206063616c6c603a205468652063616c6c20746f2062652065786563757465642e001d014e4f54453a20556e6c6573732074686973206973207468652066696e616c20617070726f76616c2c20796f752077696c6c2067656e6572616c6c792077616e7420746f20757365190160617070726f76655f61735f6d756c74696020696e73746561642c2073696e6365206974206f6e6c7920726571756972657320612068617368206f66207468652063616c6c2e005901526573756c74206973206571756976616c656e7420746f20746865206469737061746368656420726573756c7420696620607468726573686f6c64602069732065786163746c79206031602e204f746865727769736555016f6e20737563636573732c20726573756c7420697320604f6b6020616e642074686520726573756c742066726f6d2074686520696e746572696f722063616c6c2c206966206974207761732065786563757465642cdc6d617920626520666f756e6420696e20746865206465706f736974656420604d756c7469736967457865637574656460206576656e742e0034232320436f6d706c6578697479502d20604f2853202b205a202b2043616c6c29602ecc2d20557020746f206f6e652062616c616e63652d72657365727665206f7220756e72657365727665206f7065726174696f6e2e3d012d204f6e6520706173737468726f756768206f7065726174696f6e2c206f6e6520696e736572742c20626f746820604f285329602077686572652060536020697320746865206e756d626572206f66450120207369676e61746f726965732e206053602069732063617070656420627920604d61785369676e61746f72696573602c207769746820776569676874206265696e672070726f706f7274696f6e616c2e21012d204f6e652063616c6c20656e636f6465202620686173682c20626f7468206f6620636f6d706c657869747920604f285a296020776865726520605a602069732074782d6c656e2ebc2d204f6e6520656e636f6465202620686173682c20626f7468206f6620636f6d706c657869747920604f285329602ed42d20557020746f206f6e652062696e6172792073656172636820616e6420696e736572742028604f286c6f6753202b20532960292ef82d20492f4f3a2031207265616420604f285329602c20757020746f2031206d757461746520604f285329602e20557020746f206f6e652072656d6f76652e302d204f6e65206576656e742e6c2d2054686520776569676874206f6620746865206063616c6c602e4d012d2053746f726167653a20696e7365727473206f6e65206974656d2c2076616c75652073697a6520626f756e64656420627920604d61785369676e61746f72696573602c20776974682061206465706f7369741901202074616b656e20666f7220697473206c69666574696d65206f6620604465706f73697442617365202b207468726573686f6c64202a204465706f736974466163746f72602e40617070726f76655f61735f6d756c74691401247468726573686f6c649c010c7531360001446f746865725f7369676e61746f72696573150301445665633c543a3a4163636f756e7449643e00013c6d617962655f74696d65706f696e74510501904f7074696f6e3c54696d65706f696e743c426c6f636b4e756d626572466f723c543e3e3e00012463616c6c5f686173680401205b75383b2033325d0001286d61785f7765696768742801185765696768740002785501526567697374657220617070726f76616c20666f72206120646973706174636820746f206265206d6164652066726f6d20612064657465726d696e697374696320636f6d706f73697465206163636f756e74206966f8617070726f766564206279206120746f74616c206f6620607468726573686f6c64202d203160206f6620606f746865725f7369676e61746f72696573602e002d015061796d656e743a20604465706f73697442617365602077696c6c20626520726573657276656420696620746869732069732074686520666972737420617070726f76616c2c20706c75733d01607468726573686f6c64602074696d657320604465706f736974466163746f72602e2049742069732072657475726e6564206f6e636520746869732064697370617463682068617070656e73206f723469732063616e63656c6c65642e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e0055012d20607468726573686f6c64603a2054686520746f74616c206e756d626572206f6620617070726f76616c7320666f722074686973206469737061746368206265666f72652069742069732065786563757465642e41012d20606f746865725f7369676e61746f72696573603a20546865206163636f756e747320286f74686572207468616e207468652073656e646572292077686f2063616e20617070726f766520746869736c64697370617463682e204d6179206e6f7420626520656d7074792e59012d20606d617962655f74696d65706f696e74603a20496620746869732069732074686520666972737420617070726f76616c2c207468656e2074686973206d75737420626520604e6f6e65602e20496620697420697351016e6f742074686520666972737420617070726f76616c2c207468656e206974206d7573742062652060536f6d65602c2077697468207468652074696d65706f696e742028626c6f636b206e756d62657220616e64d47472616e73616374696f6e20696e64657829206f662074686520666972737420617070726f76616c207472616e73616374696f6e2ecc2d206063616c6c5f68617368603a205468652068617368206f66207468652063616c6c20746f2062652065786563757465642e0035014e4f54453a2049662074686973206973207468652066696e616c20617070726f76616c2c20796f752077696c6c2077616e7420746f20757365206061735f6d756c74696020696e73746561642e0034232320436f6d706c6578697479242d20604f285329602ecc2d20557020746f206f6e652062616c616e63652d72657365727665206f7220756e72657365727665206f7065726174696f6e2e3d012d204f6e6520706173737468726f756768206f7065726174696f6e2c206f6e6520696e736572742c20626f746820604f285329602077686572652060536020697320746865206e756d626572206f66450120207369676e61746f726965732e206053602069732063617070656420627920604d61785369676e61746f72696573602c207769746820776569676874206265696e672070726f706f7274696f6e616c2ebc2d204f6e6520656e636f6465202620686173682c20626f7468206f6620636f6d706c657869747920604f285329602ed42d20557020746f206f6e652062696e6172792073656172636820616e6420696e736572742028604f286c6f6753202b20532960292ef82d20492f4f3a2031207265616420604f285329602c20757020746f2031206d757461746520604f285329602e20557020746f206f6e652072656d6f76652e302d204f6e65206576656e742e4d012d2053746f726167653a20696e7365727473206f6e65206974656d2c2076616c75652073697a6520626f756e64656420627920604d61785369676e61746f72696573602c20776974682061206465706f7369741901202074616b656e20666f7220697473206c69666574696d65206f6620604465706f73697442617365202b207468726573686f6c64202a204465706f736974466163746f72602e3c63616e63656c5f61735f6d756c74691001247468726573686f6c649c010c7531360001446f746865725f7369676e61746f72696573150301445665633c543a3a4163636f756e7449643e00012474696d65706f696e7488017054696d65706f696e743c426c6f636b4e756d626572466f723c543e3e00012463616c6c5f686173680401205b75383b2033325d000354550143616e63656c2061207072652d6578697374696e672c206f6e2d676f696e67206d756c7469736967207472616e73616374696f6e2e20416e79206465706f7369742072657365727665642070726576696f75736c79c4666f722074686973206f7065726174696f6e2077696c6c20626520756e7265736572766564206f6e20737563636573732e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e0055012d20607468726573686f6c64603a2054686520746f74616c206e756d626572206f6620617070726f76616c7320666f722074686973206469737061746368206265666f72652069742069732065786563757465642e41012d20606f746865725f7369676e61746f72696573603a20546865206163636f756e747320286f74686572207468616e207468652073656e646572292077686f2063616e20617070726f766520746869736c64697370617463682e204d6179206e6f7420626520656d7074792e5d012d206074696d65706f696e74603a205468652074696d65706f696e742028626c6f636b206e756d62657220616e64207472616e73616374696f6e20696e64657829206f662074686520666972737420617070726f76616c787472616e73616374696f6e20666f7220746869732064697370617463682ecc2d206063616c6c5f68617368603a205468652068617368206f66207468652063616c6c20746f2062652065786563757465642e0034232320436f6d706c6578697479242d20604f285329602ecc2d20557020746f206f6e652062616c616e63652d72657365727665206f7220756e72657365727665206f7065726174696f6e2e3d012d204f6e6520706173737468726f756768206f7065726174696f6e2c206f6e6520696e736572742c20626f746820604f285329602077686572652060536020697320746865206e756d626572206f66450120207369676e61746f726965732e206053602069732063617070656420627920604d61785369676e61746f72696573602c207769746820776569676874206265696e672070726f706f7274696f6e616c2ebc2d204f6e6520656e636f6465202620686173682c20626f7468206f6620636f6d706c657869747920604f285329602e302d204f6e65206576656e742e842d20492f4f3a2031207265616420604f285329602c206f6e652072656d6f76652e702d2053746f726167653a2072656d6f766573206f6e65206974656d2e30706f6b655f6465706f7369740c01247468726573686f6c649c010c7531360001446f746865725f7369676e61746f72696573150301445665633c543a3a4163636f756e7449643e00012463616c6c5f686173680401205b75383b2033325d000434f4506f6b6520746865206465706f73697420726573657276656420666f7220616e206578697374696e67206d756c7469736967206f7065726174696f6e2e006101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64206d75737420626520746865206f726967696e616c206465706f7369746f72206f665c746865206d756c7469736967206f7065726174696f6e2e000101546865207472616e73616374696f6e206665652069732077616976656420696620746865206465706f73697420616d6f756e7420686173206368616e6765642e0019012d20607468726573686f6c64603a2054686520746f74616c206e756d626572206f6620617070726f76616c73206e656564656420666f722074686973206d756c74697369672e3d012d20606f746865725f7369676e61746f72696573603a20546865206163636f756e747320286f74686572207468616e207468652073656e646572292077686f206172652070617274206f66207468652c20206d756c74697369672e05012d206063616c6c5f68617368603a205468652068617368206f66207468652063616c6c2074686973206465706f73697420697320726573657276656420666f722e008c456d69747320604465706f736974506f6b656460206966207375636365737366756c2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e1d0308346172676f6e5f72756e74696d652c52756e74696d6543616c6c0001741853797374656d0400750201ad0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c53797374656d2c2052756e74696d653e0000002454696d657374616d700400050301b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c54696d657374616d702c2052756e74696d653e000200204d756c74697369670400190301b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4d756c74697369672c2052756e74696d653e0003001450726f78790400210301a90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c50726f78792c2052756e74696d653e000400145469636b730400310301a90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5469636b732c2052756e74696d653e000500284d696e696e67536c6f740400350301bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4d696e696e67536c6f742c2052756e74696d653e00060030426974636f696e5574786f730400390301c50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426974636f696e5574786f732c2052756e74696d653e000700185661756c74730400590301ad0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5661756c74732c2052756e74696d653e00080030426974636f696e4c6f636b730400790301c50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426974636f696e4c6f636b732c2052756e74696d653e000900204e6f7461726965730400a10301b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4e6f7461726965732c2052756e74696d653e000a00204e6f7465626f6f6b0400a50301b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4e6f7465626f6f6b2c2052756e74696d653e000b0034436861696e5472616e736665720400e10301c90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436861696e5472616e736665722c2052756e74696d653e000c0034426c6f636b5365616c537065630400e50301c90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426c6f636b5365616c537065632c2052756e74696d653e000d001c446f6d61696e730400e90301b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c446f6d61696e732c2052756e74696d653e000e00285072696365496e6465780400ed0301bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5072696365496e6465782c2052756e74696d653e000f001c4772616e6470610400f50301b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4772616e6470612c2052756e74696d653e00110024426c6f636b5365616c0400210401b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426c6f636b5365616c2c2052756e74696d653e00120030426c6f636b5265776172647304003d0401c50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426c6f636b526577617264732c2052756e74696d653e001300104d696e740400410401a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4d696e742c2052756e74696d653e0014002042616c616e6365730400450401b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c42616c616e6365732c2052756e74696d653e001500244f776e65727368697004004d0401b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4f776e6572736869702c2052756e74696d653e0016001c547850617573650400510401b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c547850617573652c2052756e74696d653e0017001c5574696c6974790400550401b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5574696c6974792c2052756e74696d653e001900105375646f04005d0401a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5375646f2c2052756e74696d653e001a001049736d700400610401a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c49736d702c2052756e74696d653e001b002c49736d704772616e6470610400e90401c10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c49736d704772616e6470612c2052756e74696d653e001c0030546f6b656e476174657761790400f50401c50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c546f6b656e476174657761792c2052756e74696d653e001e002054726561737572790400250501b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c54726561737572792c2052756e74696d653e001f004c4f7065726174696f6e616c4163636f756e74730400290501e10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4f7065726174696f6e616c4163636f756e74732c2052756e74696d653e0022000021030c3070616c6c65745f70726f78791870616c6c65741043616c6c04045400012c1470726f78790c01107265616c250301504163636f756e7449644c6f6f6b75704f663c543e000140666f7263655f70726f78795f747970652d0301504f7074696f6e3c543a3a50726f7879547970653e00011063616c6c1d03017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e0000244d0144697370617463682074686520676976656e206063616c6c602066726f6d20616e206163636f756e742074686174207468652073656e64657220697320617574686f726973656420666f72207468726f75676830606164645f70726f7879602e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002c506172616d65746572733a0d012d20607265616c603a20546865206163636f756e742074686174207468652070726f78792077696c6c206d616b6520612063616c6c206f6e20626568616c66206f662e61012d2060666f7263655f70726f78795f74797065603a2053706563696679207468652065786163742070726f7879207479706520746f206265207573656420616e6420636865636b656420666f7220746869732063616c6c2ed02d206063616c6c603a205468652063616c6c20746f206265206d6164652062792074686520607265616c60206163636f756e742e246164645f70726f78790c012064656c6567617465250301504163636f756e7449644c6f6f6b75704f663c543e00012870726f78795f74797065980130543a3a50726f78795479706500011464656c6179100144426c6f636b4e756d626572466f723c543e0001244501526567697374657220612070726f7879206163636f756e7420666f72207468652073656e64657220746861742069732061626c6520746f206d616b652063616c6c73206f6e2069747320626568616c662e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002c506172616d65746572733a11012d206070726f7879603a20546865206163636f756e74207468617420746865206063616c6c65726020776f756c64206c696b6520746f206d616b6520612070726f78792efc2d206070726f78795f74797065603a20546865207065726d697373696f6e7320616c6c6f77656420666f7220746869732070726f7879206163636f756e742e4d012d206064656c6179603a2054686520616e6e6f756e63656d656e7420706572696f64207265717569726564206f662074686520696e697469616c2070726f78792e2057696c6c2067656e6572616c6c79206265147a65726f2e3072656d6f76655f70726f78790c012064656c6567617465250301504163636f756e7449644c6f6f6b75704f663c543e00012870726f78795f74797065980130543a3a50726f78795479706500011464656c6179100144426c6f636b4e756d626572466f723c543e00021ca8556e726567697374657220612070726f7879206163636f756e7420666f72207468652073656e6465722e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002c506172616d65746572733a25012d206070726f7879603a20546865206163636f756e74207468617420746865206063616c6c65726020776f756c64206c696b6520746f2072656d6f766520617320612070726f78792e41012d206070726f78795f74797065603a20546865207065726d697373696f6e732063757272656e746c7920656e61626c656420666f72207468652072656d6f7665642070726f7879206163636f756e742e3872656d6f76655f70726f78696573000318b4556e726567697374657220616c6c2070726f7879206163636f756e747320666f72207468652073656e6465722e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e005d015741524e494e473a2054686973206d61792062652063616c6c6564206f6e206163636f756e7473206372656174656420627920606372656174655f70757265602c20686f776576657220696620646f6e652c207468656e590174686520756e726573657276656420666565732077696c6c20626520696e61636365737369626c652e202a2a416c6c2061636365737320746f2074686973206163636f756e742077696c6c206265206c6f73742e2a2a2c6372656174655f707572650c012870726f78795f74797065980130543a3a50726f78795479706500011464656c6179100144426c6f636b4e756d626572466f723c543e000114696e6465789c010c7531360004483901537061776e2061206672657368206e6577206163636f756e7420746861742069732067756172616e7465656420746f206265206f746865727769736520696e61636365737369626c652c20616e64fc696e697469616c697a65206974207769746820612070726f7879206f66206070726f78795f747970656020666f7220606f726967696e602073656e6465722e006c5265717569726573206120605369676e656460206f726967696e2e0051012d206070726f78795f74797065603a205468652074797065206f66207468652070726f78792074686174207468652073656e6465722077696c6c2062652072656769737465726564206173206f766572207468654d016e6577206163636f756e742e20546869732077696c6c20616c6d6f737420616c7761797320626520746865206d6f7374207065726d697373697665206050726f7879547970656020706f737369626c6520746f78616c6c6f7720666f72206d6178696d756d20666c65786962696c6974792e51012d2060696e646578603a204120646973616d626967756174696f6e20696e6465782c20696e206361736520746869732069732063616c6c6564206d756c7469706c652074696d657320696e207468652073616d655d017472616e73616374696f6e2028652e672e207769746820607574696c6974793a3a626174636860292e20556e6c65737320796f75277265207573696e67206062617463686020796f752070726f6261626c79206a7573744077616e7420746f20757365206030602e4d012d206064656c6179603a2054686520616e6e6f756e63656d656e7420706572696f64207265717569726564206f662074686520696e697469616c2070726f78792e2057696c6c2067656e6572616c6c79206265147a65726f2e0051014661696c73207769746820604475706c69636174656020696620746869732068617320616c7265616479206265656e2063616c6c656420696e2074686973207472616e73616374696f6e2c2066726f6d207468659873616d652073656e6465722c2077697468207468652073616d6520706172616d65746572732e00e44661696c732069662074686572652061726520696e73756666696369656e742066756e647320746f2070617920666f72206465706f7369742e246b696c6c5f7075726514011c737061776e6572250301504163636f756e7449644c6f6f6b75704f663c543e00012870726f78795f74797065980130543a3a50726f787954797065000114696e6465789c010c753136000118686569676874d40144426c6f636b4e756d626572466f723c543e0001246578745f696e646578d4010c753332000540a052656d6f76657320612070726576696f75736c7920737061776e656420707572652070726f78792e0049015741524e494e473a202a2a416c6c2061636365737320746f2074686973206163636f756e742077696c6c206265206c6f73742e2a2a20416e792066756e64732068656c6420696e2069742077696c6c20626534696e61636365737369626c652e0059015265717569726573206120605369676e656460206f726967696e2c20616e64207468652073656e646572206163636f756e74206d7573742068617665206265656e206372656174656420627920612063616c6c20746fb0606372656174655f7075726560207769746820636f72726573706f6e64696e6720706172616d65746572732e0055012d2060737061776e6572603a20546865206163636f756e742074686174206f726967696e616c6c792063616c6c656420606372656174655f707572656020746f206372656174652074686973206163636f756e742e55012d2060696e646578603a2054686520646973616d626967756174696f6e20696e646578206f726967696e616c6c792070617373656420746f20606372656174655f70757265602e2050726f6261626c79206030602e09012d206070726f78795f74797065603a205468652070726f78792074797065206f726967696e616c6c792070617373656420746f20606372656174655f70757265602e45012d2060686569676874603a2054686520686569676874206f662074686520636861696e207768656e207468652063616c6c20746f20606372656174655f7075726560207761732070726f6365737365642e51012d20606578745f696e646578603a205468652065787472696e73696320696e64657820696e207768696368207468652063616c6c20746f20606372656174655f7075726560207761732070726f6365737365642e0035014661696c73207769746820604e6f5065726d697373696f6e6020696e2063617365207468652063616c6c6572206973206e6f7420612070726576696f75736c7920637265617465642070757265f86163636f756e742077686f736520606372656174655f70757265602063616c6c2068617320636f72726573706f6e64696e6720706172616d65746572732e20616e6e6f756e63650801107265616c250301504163636f756e7449644c6f6f6b75704f663c543e00012463616c6c5f6861736834013443616c6c486173684f663c543e00063c05015075626c697368207468652068617368206f6620612070726f78792d63616c6c20746861742077696c6c206265206d61646520696e20746865206675747572652e005d0154686973206d7573742062652063616c6c656420736f6d65206e756d626572206f6620626c6f636b73206265666f72652074686520636f72726573706f6e64696e67206070726f78796020697320617474656d7074656425016966207468652064656c6179206173736f6369617465642077697468207468652070726f78792072656c6174696f6e736869702069732067726561746572207468616e207a65726f2e0011014e6f206d6f7265207468616e20604d617850656e64696e676020616e6e6f756e63656d656e7473206d6179206265206d61646520617420616e79206f6e652074696d652e000901546869732077696c6c2074616b652061206465706f736974206f662060416e6e6f756e63656d656e744465706f736974466163746f72602061732077656c6c206173190160416e6e6f756e63656d656e744465706f736974426173656020696620746865726520617265206e6f206f746865722070656e64696e6720616e6e6f756e63656d656e74732e002501546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e6420612070726f7879206f6620607265616c602e002c506172616d65746572733a0d012d20607265616c603a20546865206163636f756e742074686174207468652070726f78792077696c6c206d616b6520612063616c6c206f6e20626568616c66206f662e15012d206063616c6c5f68617368603a205468652068617368206f66207468652063616c6c20746f206265206d6164652062792074686520607265616c60206163636f756e742e4c72656d6f76655f616e6e6f756e63656d656e740801107265616c250301504163636f756e7449644c6f6f6b75704f663c543e00012463616c6c5f6861736834013443616c6c486173684f663c543e0007287052656d6f7665206120676976656e20616e6e6f756e63656d656e742e0059014d61792062652063616c6c656420627920612070726f7879206163636f756e7420746f2072656d6f766520612063616c6c20746865792070726576696f75736c7920616e6e6f756e63656420616e642072657475726e30746865206465706f7369742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002c506172616d65746572733a0d012d20607265616c603a20546865206163636f756e742074686174207468652070726f78792077696c6c206d616b6520612063616c6c206f6e20626568616c66206f662e15012d206063616c6c5f68617368603a205468652068617368206f66207468652063616c6c20746f206265206d6164652062792074686520607265616c60206163636f756e742e4c72656a6563745f616e6e6f756e63656d656e7408012064656c6567617465250301504163636f756e7449644c6f6f6b75704f663c543e00012463616c6c5f6861736834013443616c6c486173684f663c543e000828b052656d6f76652074686520676976656e20616e6e6f756e63656d656e74206f6620612064656c65676174652e0061014d61792062652063616c6c6564206279206120746172676574202870726f7869656429206163636f756e7420746f2072656d6f766520612063616c6c2074686174206f6e65206f662074686569722064656c6567617465732501286064656c656761746560292068617320616e6e6f756e63656420746865792077616e7420746f20657865637574652e20546865206465706f7369742069732072657475726e65642e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002c506172616d65746572733af42d206064656c6567617465603a20546865206163636f756e7420746861742070726576696f75736c7920616e6e6f756e636564207468652063616c6c2ebc2d206063616c6c5f68617368603a205468652068617368206f66207468652063616c6c20746f206265206d6164652e3c70726f78795f616e6e6f756e63656410012064656c6567617465250301504163636f756e7449644c6f6f6b75704f663c543e0001107265616c250301504163636f756e7449644c6f6f6b75704f663c543e000140666f7263655f70726f78795f747970652d0301504f7074696f6e3c543a3a50726f7879547970653e00011063616c6c1d03017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00092c4d0144697370617463682074686520676976656e206063616c6c602066726f6d20616e206163636f756e742074686174207468652073656e64657220697320617574686f72697a656420666f72207468726f75676830606164645f70726f7879602e00a852656d6f76657320616e7920636f72726573706f6e64696e6720616e6e6f756e63656d656e742873292e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002c506172616d65746572733a0d012d20607265616c603a20546865206163636f756e742074686174207468652070726f78792077696c6c206d616b6520612063616c6c206f6e20626568616c66206f662e61012d2060666f7263655f70726f78795f74797065603a2053706563696679207468652065786163742070726f7879207479706520746f206265207573656420616e6420636865636b656420666f7220746869732063616c6c2ed02d206063616c6c603a205468652063616c6c20746f206265206d6164652062792074686520607265616c60206163636f756e742e30706f6b655f6465706f736974000a204901506f6b65202f2041646a757374206465706f73697473206d61646520666f722070726f7869657320616e6420616e6e6f756e63656d656e7473206261736564206f6e2063757272656e742076616c7565732e0d01546869732063616e2062652075736564206279206163636f756e747320746f20706f737369626c79206c6f776572207468656972206c6f636b656420616d6f756e742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e000101546865207472616e73616374696f6e206665652069732077616976656420696620746865206465706f73697420616d6f756e7420686173206368616e6765642e008c456d69747320604465706f736974506f6b656460206966207375636365737366756c2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e25030c2873705f72756e74696d65306d756c746961646472657373304d756c74694164647265737308244163636f756e7449640100304163636f756e74496e6465780190011408496404000001244163636f756e74496400000014496e6465780400290301304163636f756e74496e6465780001000c526177040038011c5665633c75383e0002002441646472657373333204000401205b75383b2033325d000300244164647265737332300400410201205b75383b2032305d00040000290300000690002d0304184f7074696f6e04045401980108104e6f6e6500000010536f6d65040098000001000031030c3070616c6c65745f7469636b731870616c6c65741043616c6c040454000100040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e35030c4870616c6c65745f6d696e696e675f736c6f741870616c6c65741043616c6c0404540001080c6269640c010c626964180128543a3a42616c616e63650001106b657973b0011c543a3a4b6579730001446d696e696e675f6163636f756e745f6964bc01504f7074696f6e3c543a3a4163636f756e7449643e00005861015375626d697420612062696420666f722061206d696e696e6720736c6f7420696e20746865206e65787420636f686f72742e204f6e636520616c6c2073706f7473206172652066696c6c656420696e20746865206e657874f4636f686f72742c2061206269646465722063616e20626520737570706c616e74656420627920737570706c79696e67206120686967686572206269642e00b84561636820736c6f742068617320604d6178436f686f727453697a65602073706f747320617661696c61626c652e005101546f20626520656c696769626c6520666f72206120736c6f742c20796f75206d757374206861766520746865207265717569726564206f776e65727368697020746f6b656e7320286172676f6e6f74732920696e590174686973206163636f756e742e2054686520726571756972656420616d6f756e742069732063616c63756c6174656420617320612070657263656e74616765206f662074686520746f74616c206f776e6572736869705501746f6b656e7320696e20746865206e6574776f726b2e20546869732070657263656e746167652069732061646a7573746564206265666f72652074686520626567696e6e696e67206f66206561636820736c6f742e004501496620796f757220626964206973206e6f206c6f6e6765722077696e6e696e672c20612060536c6f7442696464657244726f7070656460206576656e742077696c6c20626520656d69747465642e2042792d016d6f6e69746f72696e6720666f722074686973206576656e742c20796f752077696c6c2062652061626c6520746f20656e7375726520796f7572206269642069732061636365707465642e000d014e4f54453a2062696464696e6720666f72206561636820736c6f742077696c6c20626520636c6f73656420617420612072616e646f6d20626c6f636b2077697468696e3d01606d696e696e675f636f6e6669672e7469636b735f6265666f72655f6269645f656e645f666f725f7672665f636c6f73656020626c6f636b73206f662074686520736c6f7420656e642074696d652e00610154686520736c6f74206475726174696f6e2063616e2062652063616c63756c617465642061732060426c6f636b734265747765656e536c6f7473202a204d61784d696e657273202f204d6178436f686f727453697a65602e002c506172616d65746572733a902d2060626964603a2054686520616d6f756e74206f66206172676f6e7320746f206269644d012d20606b657973603a205468652073657373696f6e2022686f7422206b65797320666f722074686520736c6f742028426c6f636b5365616c417574686f72697479496420616e64204772616e6470614964292e59012d20606d696e696e675f6163636f756e745f6964603a2054686973206163636f756e745f696420616c6c6f777320796f7520746f206f7065726174652061732074686973206d696e6572206163636f756e742069642c01012020627574207573652066756e64696e6720286172676f6e6f747320616e6420626964292066726f6d20746865207375626d697474696e67206163636f756e746c636f6e6669677572655f6d696e696e675f736c6f745f64656c61790801446d696e696e675f736c6f745f64656c61798d0101304f7074696f6e3c5469636b3e0001887469636b735f6265666f72655f6269645f656e645f666f725f7672665f636c6f73658d0101304f7074696f6e3c5469636b3e000104bc41646d696e2066756e6374696f6e20746f2075706461746520746865206d696e696e6720736c6f742064656c61792e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e39030c5070616c6c65745f626974636f696e5f7574786f731870616c6c65741043616c6c0404540001141073796e630401247574786f5f73796e633d03013c426974636f696e5574786f53796e63000004e85375626d6974746564207768656e206120626974636f696e205554584f20686173206265656e206d6f766564206f7220636f6e6669726d65642e4c7365745f636f6e6669726d65645f626c6f636b080138626974636f696e5f686569676874300134426974636f696e486569676874000148626974636f696e5f626c6f636b5f68617368d00140426974636f696e426c6f636b4861736800011449015365747320746865206d6f737420726563656e7420636f6e6669726d656420626974636f696e20626c6f636b2068656967687420286f6e6c792065786563757461626c6520627920746865204f7261636c65444f70657261746f72206163636f756e7429002c2320417267756d656e747311012a2060626974636f696e5f68656967687460202d20746865206c617465737420626974636f696e20626c6f636b2068656967687420746f20626520636f6e6669726d6564307365745f6f70657261746f720401286163636f756e745f6964000130543a3a4163636f756e74496400021025015365747320746865206f7261636c65206f70657261746f72206163636f756e7420696420286f6e6c792065786563757461626c652062792074686520526f6f74206163636f756e7429002c2320417267756d656e7473bc2a20606163636f756e745f696460202d20746865206163636f756e74206964206f6620746865206f70657261746f726066756e645f776974685f7574786f5f63616e64696461746508011c7574786f5f69643001185574786f49640001207574786f5f726566cc011c5574786f52656600030cec42696e6420612063616e646964617465205554584f20726566206173207468652066756e64696e67205554584f20666f7220697473206c6f636b2e3d01546865206c6f636b732070616c6c657420617574686f72697a6573207468652070726f6d6f74696f6e3b20746869732070616c6c65742062696e6473207468652072656620616e6420626567696e7324747261636b696e672e5472656a6563745f7574786f5f63616e64696461746508011c7574786f5f69643001185574786f49640001207574786f5f726566cc011c5574786f526566000408450152656a65637420612070656e64696e672063616e646964617465205554584f20616e64206d6174657269616c697a6520697420617320616e206f727068616e207468726f75676820746865206c6f636b731c70616c6c65742e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e3d030c406172676f6e5f7072696d69746976657324696e686572656e74733c426974636f696e5574786f53796e6300000c01147370656e74410301545665633c426974636f696e5574786f5370656e643e00011866756e6465644d03015c5665633c426974636f696e5574786f46756e64696e673e00013473796e635f746f5f626c6f636b55030130426974636f696e426c6f636b0000410300000245030045030c406172676f6e5f7072696d69746976657324696e686572656e747340426974636f696e5574786f5370656e6400000c011c7574786f5f69642c01185574786f49640001207574786f5f7265664903013c4f7074696f6e3c5574786f5265663e000138626974636f696e5f6865696768742c0134426974636f696e4865696768740000490304184f7074696f6e04045401cc0108104e6f6e6500000010536f6d650400cc00000100004d0300000251030051030c406172676f6e5f7072696d69746976657324696e686572656e747348426974636f696e5574786f46756e64696e67000014011c7574786f5f69642c01185574786f49640001207574786f5f726566cc011c5574786f5265660001207361746f736869732c01205361746f7368697300014465787065637465645f7361746f736869732c01205361746f73686973000138626974636f696e5f6865696768742c0134426974636f696e486569676874000055030c406172676f6e5f7072696d6974697665731c626974636f696e30426974636f696e426c6f636b0000080130626c6f636b5f6865696768742c0134426974636f696e486569676874000128626c6f636b5f68617368d00140426974636f696e426c6f636b48617368000059030c3470616c6c65745f7661756c74731870616c6c65741043616c6c040454000118186372656174650401307661756c745f636f6e6669675d03015c5661756c74436f6e6669673c543a3a42616c616e63653e000000386d6f646966795f66756e64696e670c01207661756c745f696410011c5661756c74496400013873656375726974697a6174696f6e180128543a3a42616c616e636500015073656375726974697a6174696f6e5f726174696fe0012446697865645531323800012061014d6f646966792066756e647320616c6c6f636174656420627920746865207661756c742e20546869732077696c6c206e6f74206166666563742069737375656420626974636f696e206c6f636b732c206275742077696c6cc86166666563742074686520616d6f756e74206f662066756e647320617661696c61626c6520666f72206e6577206f6e65732e00ec5468652073656375726974697a6174696f6e2070657263656e74206d757374206265206d61696e7461696e6564206f7220696e637265617365642e00610154686520616d6f756e7420616c6c6f6361746564206d6179206e6f7420676f2062656c6f7720746865206578697374696e6720726573657276656420616d6f756e74732c2062757420796f752063616e2072656c656173654d0166756e647320696e2074686973207661756c7420617320626974636f696e206c6f636b73206172652072656c65617365642e20546f2073746f702069737375696e6720616e79206d6f726520626974636f696e6c6c6f636b732c20757365207468652060636c6f736560206170692e306d6f646966795f7465726d730801207661756c745f696410011c5661756c7449640001147465726d73610301585661756c745465726d733c543a3a42616c616e63653e00020849014368616e676520746865207465726d73206f662074686973207661756c742e20546865206368616e67652077696c6c206265206170706c69656420617420746865206e657874206d696e696e6720736c6f7415016368616e67652074686174206973206174206c6561737420604d696e5465726d734d6f64696669636174696f6e426c6f636b44656c61796020626c6f636b7320617761792e14636c6f73650401207661756c745f696410011c5661756c744964000308410153746f70206f66666572696e67206164646974696f6e616c20626974636f696e206c6f636b732066726f6d2074686973207661756c742e2057696c6c206e6f7420616666656374206578697374696e671d016c6f636b732e2041732066756e6473206172652072657475726e65642c20746865792077696c6c2062652072656c656173656420746f20746865207661756c74206f776e65722e507265706c6163655f626974636f696e5f787075620801207661756c745f696410011c5661756c744964000130626974636f696e5f78707562710301444f7061717565426974636f696e5870756200040c61015265706c6163652074686520626974636f696e20787075626b657920666f722074686973207661756c742e20546869732077696c6c206e6f7420616666656374206578697374696e6720626974636f696e206c6f636b732c31016275742077696c6c206265207573656420666f7220616e79206c6f636b73206166746572207468697320706f696e742e2057696c6c2062652072656a656374656420696620616c726561647914757365642e1c636f6c6c6563740401207661756c745f696410011c5661756c744964000500040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e5d030c3470616c6c65745f7661756c74731870616c6c65742c5661756c74436f6e666967041c42616c616e63650118001001147465726d736103014c5661756c745465726d733c42616c616e63653e00013873656375726974697a6174696f6ec0011c42616c616e636500013c626974636f696e5f787075626b6579710301444f7061717565426974636f696e5870756200015073656375726974697a6174696f6e5f726174696f65030124466978656455313238000061030c406172676f6e5f7072696d697469766573147661756c74285661756c745465726d73041c42616c616e63650118000c016c626974636f696e5f616e6e75616c5f70657263656e745f7261746565030124466978656455313238000140626974636f696e5f626173655f666565c0011c42616c616e636500015c74726561737572795f70726f6669745f73686172696e676903011c5065726d696c6c00006503000006e00069030000066d03006d030c3473705f61726974686d65746963287065725f7468696e67731c5065726d696c6c0000040010010c753332000071030c406172676f6e5f7072696d6974697665731c626974636f696e444f7061717565426974636f696e5870756200000400750301205b75383b2037385d000075030000034e000000080079030c5070616c6c65745f626974636f696e5f6c6f636b731870616c6c65741043616c6c04045400012828696e697469616c697a651001207661756c745f696410011c5661756c7449640001207361746f736869732c01205361746f73686973000138626974636f696e5f7075626b65797d03015c436f6d70726573736564426974636f696e5075626b657900011c6f7074696f6e73850301584f7074696f6e3c4c6f636b4f7074696f6e733c543e3e0000205901496e697469616c697a65206120626974636f696e206c6f636b2e20546869732077696c6c206372656174652061204c6f636b6564426974636f696e20666f7220746865207375626d697474696e67206163636f756e74a8616e64206c6f672074686520426974636f696e20536372697074206861736820746f204576656e74732e005d01546865207075626b6579207375626d697474656420686572652077696c6c206265207573656420746f20637265617465206120736372697074207075626b657920746861742077696c6c206265207573656420696e2061b474696d656c6f636b206d756c74697369672073637269707420746f206c6f636b2074686520626974636f696e2e0039014e4f54453a204120226c6f636b2d657222206d7573742073656e642062746320746f2074686520636f7369676e6572205554584f206164647265737320746f2022636f6d706c6574652220746865d04c6f636b6564426974636f696e20616e6420626520616464656420746f2074686520426974636f696e204d696e74206c696e652e3c726571756573745f72656c656173650c011c7574786f5f69643001185574786f4964000140746f5f7363726970745f7075626b65799903014c426974636f696e5363726970745075626b657900014c626974636f696e5f6e6574776f726b5f6665653001205361746f7368697300011851015375626d6974746564206279206120426974636f696e20686f6c64657220746f2074726967676572207468652072656c65617365206f66207468656972205574786f206f7574206f662074686520636f7369676e45017363726970742e2041207472616e73616374696f6e207370656e64696e6720746865205554584f2073686f756c64206265207072652d6372656174656420736f20746861742074686520736967686173683d0163616e206265207375626d697474656420686572652e20546865207661756c74206f70657261746f722077696c6c2068617665203130206461797320746f20636f756e7465722d7369676e2074686555017472616e73616374696f6e2e2049742077696c6c206265207075626c6973686564207769746820746865207075626c6963206b6579206173206120426974636f696e5574786f436f7369676e6564204576656e742e003d014f776e6572206d757374207375626d6974206120736372697074207075626b657920616e6420616c736f20612066656520746f2070617920746f2074686520626974636f696e206e6574776f726b2e38636f7369676e5f72656c6561736508011c7574786f5f69643001185574786f49640001247369676e6174757265e80140426974636f696e5369676e617475726500021461015375626d69747465642062792061205661756c74206f70657261746f7220746f20636f7369676e207468652072656c65617365206f66206120626974636f696e207574786f2e2054686520426974636f696e206f776e6572550172656c65617365206665652077696c6c206265206275726e65642c20616e6420746865206c6f636b2077696c6c20626520616c6c6f77656420746f2065787069726520776974686f757420612070656e616c74792e004d0154686973206973207375626d69747465642061732061206e6f2d666565207472616e73616374696f6e206f666620636861696e20746f20616c6c6f77206b65797320746f2072656d61696e20696e20636f6c642077616c6c6574732e1c7261746368657408011c7574786f5f69643001185574786f496400011c6f7074696f6e73850301584f7074696f6e3c4c6f636b4f7074696f6e733c543e3e000338410152617463686574696e6720616c6c6f77732061207573657220746f206368616e676520746865206c6f636b207072696365206f6620746865697220626974636f696e206c6f636b2e2054686973206973510166756e6374696f6e616c6c79207468652073616d652061732072656c656173696e6720616e642072652d696e697469616c697a696e672c2062757420697420616c6c6f77732061207573657220746f20736b6970610173656e64696e67207472616e73616374696f6e73207468726f75676820626974636f696e20616e6420616e79206173736f63696174656420666565732e20497420616c736f20616c6c6f777320796f7520746f20737461794d016f6e20796f7572206f726967696e616c206c6f636b2065787069726174696f6e20776974686f757420686176696e6720746f20706179207468652066756c6c2079656172206f66206665657320616761696e2e00610152617463686574696e672022646f776e22202d207768656e20746865207072696365206f6620626974636f696e206973206c6f776572207468616e20796f7572206c6f636b2070726963652c20796f7520706179207468655d0166756c6c2072656c6561736520707269636520616e6420676574206164646564206261636b20746f20746865206d696e74207175657565206174207468652063757272656e74206d61726b657420726174652e20596f755901706f636b65742074686520646966666572656e6365206265747765656e2074686520616c7265616479206d696e74656420226c6f636b2070726963652220616e6420746865206e6577206d61726b65742076616c7565550128776869636820796f75206a75737420686164206275726e6564292e20596f7572206e6577206c6f636b2070726963652069732073657420746f20746865206d61726b6574206c6f772c20736f20796f752063616eb874616b6520616476616e74616765206f66207261746368657473202275702220696e20746865206675747572652e00550152617463686574696e672022757022202d207768656e20746865207072696365206f6620626974636f696e20697320686967686572207468616e20796f7572206c6f636b2070726963652c20796f75207061792061610170726f72617465642066656520666f72207468652072656d61696e646572206f6620796f7572206578697374696e67206c6f636b206475726174696f6e2e20596f752061726520616464656420746f20746865206d696e742d01717565756520666f722074686520646966666572656e636520696e20796f7572206e6577206c6f636b207072696365207673207468652070726576696f7573206c6f636b2070726963652e8061646d696e5f6d6f646966795f6d696e696d756d5f6c6f636b65645f736174730401207361746f736869733001205361746f7368697300040074726571756573745f6f727068616e65645f7574786f5f72656c656173650c01207574786f5f726566cc011c5574786f526566000140746f5f7363726970745f7075626b65799903014c426974636f696e5363726970745075626b657900014c626974636f696e5f6e6574776f726b5f6665653001205361746f7368697300050070636f7369676e5f6f727068616e65645f7574786f5f72656c656173650c01306f727068616e5f6f776e6572000130543a3a4163636f756e7449640001207574786f5f726566cc011c5574786f5265660001247369676e6174757265e80140426974636f696e5369676e617475726500061c41014e4f54453a2054686520607369676e61747572656020706172616d65746572206973204e4f54207665726966696564206f6e2d636861696e2e20546865206f727068616e207265636f726420646f657339016e6f742072657461696e2074686520636f7369676e207363726970742061726773206e656564656420666f7220766572696669636174696f6e2028746865792061726520636c65616e6564207570f4776974682074686520426974636f696e4c6f636b292e20546865207369676e617475726520697320706173736564207468726f75676820746f207468654101604f727068616e65645574786f436f7369676e656460206576656e7420736f20746865206c6f636b206f776e65722063616e20636f6e7374727563742074686520426974636f696e2072656c6561736535017472616e73616374696f6e206f66662d636861696e2e20412067617262616765207369676e6174757265206d65616e7320746865206f776e65722063616e2774207370656e6420e28094206e6f41016f6e2d636861696e2064616d6167652e20546f20616464206f6e2d636861696e20766572696669636174696f6e2c2074686520636f7369676e20736372697074206172677320776f756c64206e656564f0746f2062652073746f72656420696e20604f727068616e65645574786f60202873746f72616765206d6967726174696f6e207265717569726564292e4c72656769737465725f6665655f636f75706f6e0c01187075626c696304013c737232353531393a3a5075626c69630001306d61785f7361746f736869732c01205361746f736869730001406d61785f6665655f706c75735f746970850101484f7074696f6e3c543a3a42616c616e63653e00070038696e697469616c697a655f666f721401286163636f756e745f6964000130543a3a4163636f756e7449640001207661756c745f696410011c5661756c7449640001207361746f736869732c01205361746f73686973000138626974636f696e5f7075626b65797d03015c436f6d70726573736564426974636f696e5075626b657900011c6f7074696f6e73850301584f7074696f6e3c4c6f636b4f7074696f6e733c543e3e0008005c696e6372656173655f73656375726974697a6174696f6e08011c7574786f5f69643001185574786f49640001306e65775f7361746f736869732c01205361746f73686973000900040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e7d030c406172676f6e5f7072696d6974697665731c626974636f696e5c436f6d70726573736564426974636f696e5075626b657900000400810301205b75383b2033335d00008103000003210000000800850304184f7074696f6e0404540189030108104e6f6e6500000010536f6d6504008903000001000089030c5070616c6c65745f626974636f696e5f6c6f636b731870616c6c65742c4c6f636b4f7074696f6e730404540001040856310801446d6963726f676f6e735f7065725f627463850101484f7074696f6e3c543a3a42616c616e63653e0001406665655f636f75706f6e5f70726f6f668d0301584f7074696f6e3c466565436f75706f6e50726f6f663e000000008d0304184f7074696f6e0404540191030108104e6f6e6500000010536f6d6504009103000001000091030c5070616c6c65745f626974636f696e5f6c6f636b731870616c6c657438466565436f75706f6e50726f6f6600000801187075626c696304013c737232353531393a3a5075626c69630001247369676e617475726595030148737232353531393a3a5369676e61747572650000950300000340000000080099030c406172676f6e5f7072696d6974697665731c626974636f696e4c426974636f696e5363726970745075626b6579000004009d030170426f756e6465645665633c75382c20436f6e73745533323c33343e3e00009d030c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e0000a1030c3c70616c6c65745f6e6f7461726965731870616c6c65741043616c6c04045400010c1c70726f706f73650401106d657461f4013c4e6f746172794d6574614f663c543e0000002061637469766174650401406f70657261746f725f6163636f756e74000130543a3a4163636f756e744964000100187570646174650c01246e6f746172795f6964d401204e6f7461727949640001106d657461f4013c4e6f746172794d6574614f663c543e0001386566666563746976655f7469636b2c01105469636b000208610155706461746520746865206d65746164617461206f662061206e6f746172792c20746f206265206566666563746976652061742074686520676976656e207469636b206865696768742c207768696368206d757374206265b03e3d204d6574614368616e6765735469636b44656c6179207469636b7320696e20746865206675747572652e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ea5030c3c70616c6c65745f6e6f7465626f6f6b1870616c6c65741043616c6c040454000108187375626d69740401246e6f7465626f6f6b73a90301645665633c5369676e65644e6f7465626f6f6b4865616465723e00000018756e6c6f636b0401246e6f746172795f69641001204e6f746172794964000100040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ea903000002ad0300ad030c406172676f6e5f7072696d697469766573206e6f7465626f6f6b505369676e65644e6f7465626f6f6b4865616465720000080118686561646572b10301384e6f7465626f6f6b4865616465720001247369676e61747572659503013c4e6f746172795369676e61747572650000b1030c406172676f6e5f7072696d697469766573206e6f7465626f6f6b384e6f7465626f6f6b48656164657200003c011c76657273696f6eb503010c75313600013c6e6f7465626f6f6b5f6e756d626572d401384e6f7465626f6f6b4e756d6265720001107469636b2c01105469636b00010c746178c00110753132380001246e6f746172795f6964d401204e6f74617279496400013c636861696e5f7472616e7366657273b90301bc426f756e6465645665633c436861696e5472616e736665722c204d61784e6f7465626f6f6b5472616e73666572733e0001546368616e6765645f6163636f756e74735f726f6f743401104832353600015c6368616e6765645f6163636f756e745f6f726967696e73c50301c4426f756e6465645665633c4163636f756e744f726967696e2c20436f6e73745533323c7b207533323a3a4d4158207d3e3e000140626c6f636b5f766f7465735f726f6f7434011048323536000144626c6f636b5f766f7465735f636f756e74d4010c753332000144626c6f636b735f776974685f766f746573d1030180426f756e6465645665633c483235362c20436f6e73745533323c313030303e3e000148626c6f636b5f766f74696e675f706f776572c00140426c6f636b566f74696e67506f77657200012c7365637265745f686173683401484e6f7465626f6f6b53656372657448617368000134706172656e745f736563726574c90201584f7074696f6e3c4e6f7465626f6f6b5365637265743e00011c646f6d61696e73d50301e8426f756e6465645665633c28446f6d61696e486173682c204163636f756e744964292c204d6178446f6d61696e735065724e6f7465626f6f6b3e0000b5030000069c00b9030c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401bd03045300000400c10301185665633c543e0000bd030c406172676f6e5f7072696d697469766573206e6f7465626f6f6b34436861696e5472616e736665720001082c546f4d61696e636861696e0801286163636f756e745f69640001244163636f756e744964000118616d6f756e74c001107531323800000030546f4c6f63616c636861696e04012c7472616e736665725f6964d401585472616e73666572546f4c6f63616c636861696e496400010000c103000002bd0300c5030c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401c903045300000400cd0301185665633c543e0000c9030c406172676f6e5f7072696d6974697665733862616c616e63655f6368616e6765344163636f756e744f726967696e000008013c6e6f7465626f6f6b5f6e756d626572d401384e6f7465626f6f6b4e756d62657200012c6163636f756e745f756964d401404163636f756e744f726967696e5569640000cd03000002c90300d1030c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540134045300000400590201185665633c543e0000d5030c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401d903045300000400dd0301185665633c543e0000d90300000408340000dd03000002d90300e1030c5470616c6c65745f636861696e5f7472616e736665721870616c6c65741043616c6c0404540001044873656e645f746f5f6c6f63616c636861696e080118616d6f756e74c001583c5420617320436f6e6669673e3a3a42616c616e63650001246e6f746172795f69641001204e6f746172794964000000040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ee5030c5870616c6c65745f626c6f636b5f7365616c5f737065631870616c6c65741043616c6c04045400010424636f6e666967757265080130766f74655f6d696e696d756d8501014c4f7074696f6e3c566f74654d696e696d756d3e000148636f6d707574655f646966666963756c7479850101304f7074696f6e3c753132383e000000040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ee9030c3870616c6c65745f646f6d61696e731870616c6c65741043616c6c0404540001043c7365745f7a6f6e655f7265636f726408012c646f6d61696e5f68617368340128446f6d61696e4861736800012c7a6f6e655f7265636f72643d0101605a6f6e655265636f72643c543a3a4163636f756e7449643e000000040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732eed030c4870616c6c65745f70726963655f696e6465781870616c6c65741043616c6c040454000108187375626d6974040114696e646578f10301285072696365496e64657800000435015375626d697420746865206c617465737420707269636520696e6465782e204f6e6c792076616c696420666f722074686520636f6e66696775726564206f70657261746f72206163636f756e74307365745f6f70657261746f720401286163636f756e745f6964000130543a3a4163636f756e74496400011009015365747320746865206f70657261746f72206163636f756e7420696420286f6e6c792065786563757461626c652062792074686520526f6f74206163636f756e7429002c2320417267756d656e7473bc2a20606163636f756e745f696460202d20746865206163636f756e74206964206f6620746865206f70657261746f72040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ef103084870616c6c65745f70726963655f696e646578285072696365496e64657800001801346274635f7573645f7072696365650301244669786564553132380001446172676f6e6f745f7573645f7072696365e0012446697865645531323800013c6172676f6e5f7573645f7072696365650301244669786564553132380001586172676f6e5f7573645f7461726765745f7072696365e001244669786564553132380001946172676f6e5f74696d655f77656967687465645f617665726167655f6c697175696469747918011c42616c616e63650001107469636b2c01105469636b0000f5030c3870616c6c65745f6772616e6470611870616c6c65741043616c6c04045400010c4c7265706f72745f65717569766f636174696f6e08014865717569766f636174696f6e5f70726f6f66f90301c8426f783c45717569766f636174696f6e50726f6f663c543a3a486173682c20426c6f636b4e756d626572466f723c543e3e3e00013c6b65795f6f776e65725f70726f6f661d040140543a3a4b65794f776e657250726f6f6600001009015265706f727420766f7465722065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667920746865f465717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66f8616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63654477696c6c206265207265706f727465642e707265706f72745f65717569766f636174696f6e5f756e7369676e656408014865717569766f636174696f6e5f70726f6f66f90301c8426f783c45717569766f636174696f6e50726f6f663c543a3a486173682c20426c6f636b4e756d626572466f723c543e3e3e00013c6b65795f6f776e65725f70726f6f661d040140543a3a4b65794f776e657250726f6f6600012409015265706f727420766f7465722065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667920746865f465717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66f8616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63654477696c6c206265207265706f727465642e000d01546869732065787472696e736963206d7573742062652063616c6c656420756e7369676e656420616e642069742069732065787065637465642074686174206f6e6c791501626c6f636b20617574686f72732077696c6c2063616c6c206974202876616c69646174656420696e206056616c6964617465556e7369676e656460292c2061732073756368150169662074686520626c6f636b20617574686f7220697320646566696e65642069742077696c6c20626520646566696e6564206173207468652065717569766f636174696f6e247265706f727465722e306e6f74655f7374616c6c656408011464656c6179100144426c6f636b4e756d626572466f723c543e00016c626573745f66696e616c697a65645f626c6f636b5f6e756d626572100144426c6f636b4e756d626572466f723c543e0002303d014e6f74652074686174207468652063757272656e7420617574686f7269747920736574206f6620746865204752414e4450412066696e616c6974792067616467657420686173207374616c6c65642e006101546869732077696c6c2074726967676572206120666f7263656420617574686f7269747920736574206368616e67652061742074686520626567696e6e696e67206f6620746865206e6578742073657373696f6e2c20746f6101626520656e6163746564206064656c61796020626c6f636b7320616674657220746861742e20546865206064656c6179602073686f756c64206265206869676820656e6f75676820746f20736166656c7920617373756d654901746861742074686520626c6f636b207369676e616c6c696e672074686520666f72636564206368616e67652077696c6c206e6f742062652072652d6f7267656420652e672e203130303020626c6f636b732e5d0154686520626c6f636b2070726f64756374696f6e207261746520287768696368206d617920626520736c6f77656420646f776e2062656361757365206f662066696e616c697479206c616767696e67292073686f756c64510162652074616b656e20696e746f206163636f756e74207768656e2063686f6f73696e6720746865206064656c6179602e20546865204752414e44504120766f74657273206261736564206f6e20746865206e65775501617574686f726974792077696c6c20737461727420766f74696e67206f6e20746f70206f662060626573745f66696e616c697a65645f626c6f636b5f6e756d6265726020666f72206e65772066696e616c697a65644d01626c6f636b732e2060626573745f66696e616c697a65645f626c6f636b5f6e756d626572602073686f756c64206265207468652068696768657374206f6620746865206c61746573742066696e616c697a6564c4626c6f636b206f6620616c6c2076616c696461746f7273206f6620746865206e657720617574686f72697479207365742e00584f6e6c792063616c6c61626c6520627920726f6f742e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ef903085073705f636f6e73656e7375735f6772616e6470614445717569766f636174696f6e50726f6f660804480134044e0110000801187365745f6964300114536574496400013065717569766f636174696f6efd03014845717569766f636174696f6e3c482c204e3e0000fd03085073705f636f6e73656e7375735f6772616e6470613045717569766f636174696f6e0804480134044e011001081c507265766f74650400010401890166696e616c6974795f6772616e6470613a3a45717569766f636174696f6e3c417574686f7269747949642c2066696e616c6974795f6772616e6470613a3a507265766f74653c0a482c204e3e2c20417574686f726974795369676e61747572652c3e00000024507265636f6d6d69740400110401910166696e616c6974795f6772616e6470613a3a45717569766f636174696f6e3c417574686f7269747949642c2066696e616c6974795f6772616e6470613a3a507265636f6d6d69740a3c482c204e3e2c20417574686f726974795369676e61747572652c3e000100000104084066696e616c6974795f6772616e6470613045717569766f636174696f6e0c08496401b40456010504045301090400100130726f756e645f6e756d62657230010c7536340001206964656e74697479b40108496400011466697273740d04011828562c2053290001187365636f6e640d04011828562c20532900000504084066696e616c6974795f6772616e6470611c507265766f74650804480134044e01100008012c7461726765745f68617368340104480001347461726765745f6e756d6265721001044e000009040c5073705f636f6e73656e7375735f6772616e6470610c617070245369676e61747572650000040095030148656432353531393a3a5369676e617475726500000d040000040805040904001104084066696e616c6974795f6772616e6470613045717569766f636174696f6e0c08496401b40456011504045301090400100130726f756e645f6e756d62657230010c7536340001206964656e74697479b40108496400011466697273741904011828562c2053290001187365636f6e641904011828562c20532900001504084066696e616c6974795f6772616e64706124507265636f6d6d69740804480134044e01100008012c7461726765745f68617368340104480001347461726765745f6e756d6265721001044e000019040000040815040904001d04081c73705f636f726510566f69640001000021040c4470616c6c65745f626c6f636b5f7365616c1870616c6c65741043616c6c040454000104146170706c790401107365616c25040144426c6f636b5365616c496e686572656e74000000040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e25040c406172676f6e5f7072696d69746976657324696e686572656e747344426c6f636b5365616c496e686572656e7400010810566f74651801347365616c5f737472656e677468d5020110553235360001246e6f746172795f6964d401204e6f746172794964000158736f757263655f6e6f7465626f6f6b5f6e756d626572d401384e6f7465626f6f6b4e756d626572000154736f757263655f6e6f7465626f6f6b5f70726f6f662904012c4d65726b6c6550726f6f66000128626c6f636b5f766f746531040124426c6f636b566f74650001446d696e65725f6e6f6e63655f73636f7265dd0201304f7074696f6e3c553235363e0000001c436f6d707574650001000029040c406172676f6e5f7072696d6974697665733862616c616e63655f6368616e67652c4d65726b6c6550726f6f6600000c011470726f6f662d0401a0426f756e6465645665633c483235362c20436f6e73745533323c7b207533323a3a4d4158207d3e3e0001406e756d6265725f6f665f6c6561766573d4010c7533320001286c6561665f696e646578d4010c75333200002d040c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540134045300000400590201185665633c543e000031040c406172676f6e5f7072696d69746976657328626c6f636b5f766f746528426c6f636b566f7465540410486173680134001c01286163636f756e745f69640001244163636f756e744964000128626c6f636b5f6861736834011048617368000114696e646578d4010c753332000114706f776572c00140426c6f636b566f74696e67506f7765720001247369676e6174757265350401384d756c74695369676e6174757265000160626c6f636b5f726577617264735f6163636f756e745f69640001244163636f756e7449640001107469636b2c01105469636b00003504082873705f72756e74696d65384d756c74695369676e61747572650001101c45643235353139040095030148656432353531393a3a5369676e61747572650000001c53723235353139040095030148737232353531393a3a5369676e617475726500010014456364736104003904014065636473613a3a5369676e61747572650002000c45746804003904015865636473613a3a4b656363616b5369676e61747572650003000039040000034100000008003d040c5070616c6c65745f626c6f636b5f726577617264731870616c6c65741043616c6c040454000104607365745f626c6f636b5f726577617264735f706175736564040118706175736564200110626f6f6c000000040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e41040c2c70616c6c65745f6d696e741870616c6c65741043616c6c040454000100040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e45040c3c70616c6c65745f62616c616e6365731870616c6c65741043616c6c080454000449000124507472616e736665725f616c6c6f775f646561746808011064657374250301504163636f756e7449644c6f6f6b75704f663c543e00011476616c7565c00128543a3a42616c616e636500001cd45472616e7366657220736f6d65206c697175696420667265652062616c616e636520746f20616e6f74686572206163636f756e742e003501607472616e736665725f616c6c6f775f6465617468602077696c6c207365742074686520604672656542616c616e636560206f66207468652073656e64657220616e642072656365697665722e11014966207468652073656e6465722773206163636f756e742069732062656c6f7720746865206578697374656e7469616c206465706f736974206173206120726573756c74b06f6620746865207472616e736665722c20746865206163636f756e742077696c6c206265207265617065642e001501546865206469737061746368206f726967696e20666f7220746869732063616c6c206d75737420626520605369676e65646020627920746865207472616e736163746f722e38666f7263655f7472616e736665720c0118736f75726365250301504163636f756e7449644c6f6f6b75704f663c543e00011064657374250301504163636f756e7449644c6f6f6b75704f663c543e00011476616c7565c00128543a3a42616c616e6365000208610145786163746c7920617320607472616e736665725f616c6c6f775f6465617468602c2065786365707420746865206f726967696e206d75737420626520726f6f7420616e642074686520736f75726365206163636f756e74446d6179206265207370656369666965642e4c7472616e736665725f6b6565705f616c69766508011064657374250301504163636f756e7449644c6f6f6b75704f663c543e00011476616c7565c00128543a3a42616c616e6365000318590153616d6520617320746865205b607472616e736665725f616c6c6f775f6465617468605d2063616c6c2c206275742077697468206120636865636b207468617420746865207472616e736665722077696c6c206e6f74606b696c6c20746865206f726967696e206163636f756e742e00e8393925206f66207468652074696d6520796f752077616e74205b607472616e736665725f616c6c6f775f6465617468605d20696e73746561642e00f05b607472616e736665725f616c6c6f775f6465617468605d3a207374727563742e50616c6c65742e68746d6c236d6574686f642e7472616e73666572307472616e736665725f616c6c08011064657374250301504163636f756e7449644c6f6f6b75704f663c543e0001286b6565705f616c697665200110626f6f6c00043c05015472616e736665722074686520656e74697265207472616e7366657261626c652062616c616e63652066726f6d207468652063616c6c6572206163636f756e742e0059014e4f54453a20546869732066756e6374696f6e206f6e6c7920617474656d70747320746f207472616e73666572205f7472616e7366657261626c655f2062616c616e6365732e2054686973206d65616e7320746861746101616e79206c6f636b65642c2072657365727665642c206f72206578697374656e7469616c206465706f7369747320287768656e20606b6565705f616c6976656020697320607472756560292c2077696c6c206e6f742062655d017472616e7366657272656420627920746869732066756e6374696f6e2e20546f20656e73757265207468617420746869732066756e6374696f6e20726573756c747320696e2061206b696c6c6564206163636f756e742c4501796f75206d69676874206e65656420746f207072657061726520746865206163636f756e742062792072656d6f76696e6720616e79207265666572656e636520636f756e746572732c2073746f72616765406465706f736974732c206574632e2e2e00c0546865206469737061746368206f726967696e206f6620746869732063616c6c206d757374206265205369676e65642e00a02d206064657374603a2054686520726563697069656e74206f6620746865207472616e736665722e59012d20606b6565705f616c697665603a204120626f6f6c65616e20746f2064657465726d696e652069662074686520607472616e736665725f616c6c60206f7065726174696f6e2073686f756c642073656e6420616c6c4d0120206f66207468652066756e647320746865206163636f756e74206861732c2063617573696e67207468652073656e646572206163636f756e7420746f206265206b696c6c6564202866616c7365292c206f72590120207472616e736665722065766572797468696e6720657863657074206174206c6561737420746865206578697374656e7469616c206465706f7369742c2077686963682077696c6c2067756172616e74656520746f9c20206b656570207468652073656e646572206163636f756e7420616c697665202874727565292e3c666f7263655f756e7265736572766508010c77686f250301504163636f756e7449644c6f6f6b75704f663c543e000118616d6f756e74180128543a3a42616c616e636500050cb0556e7265736572766520736f6d652062616c616e63652066726f6d2061207573657220627920666f7263652e006c43616e206f6e6c792062652063616c6c656420627920524f4f542e40757067726164655f6163636f756e747304010c77686f150301445665633c543a3a4163636f756e7449643e0006207055706772616465206120737065636966696564206163636f756e742e00742d20606f726967696e603a204d75737420626520605369676e6564602e902d206077686f603a20546865206163636f756e7420746f2062652075706772616465642e005501546869732077696c6c20776169766520746865207472616e73616374696f6e20666565206966206174206c6561737420616c6c2062757420313025206f6620746865206163636f756e7473206e656564656420746f410162652075706772616465642e20285765206c657420736f6d65206e6f74206861766520746f206265207570677261646564206a75737420696e206f7264657220746f20616c6c6f7720666f722074686558706f73736962696c697479206f6620636875726e292e44666f7263655f7365745f62616c616e636508010c77686f250301504163636f756e7449644c6f6f6b75704f663c543e0001206e65775f66726565c00128543a3a42616c616e636500080cac5365742074686520726567756c61722062616c616e6365206f66206120676976656e206163636f756e742e00b0546865206469737061746368206f726967696e20666f7220746869732063616c6c2069732060726f6f74602e6c666f7263655f61646a7573745f746f74616c5f69737375616e6365080124646972656374696f6e4904014c41646a7573746d656e74446972656374696f6e00011464656c7461c00128543a3a42616c616e6365000914b841646a7573742074686520746f74616c2069737375616e636520696e20612073617475726174696e67207761792e00fc43616e206f6e6c792062652063616c6c656420627920726f6f7420616e6420616c77617973206e65656473206120706f736974697665206064656c7461602e002423204578616d706c65106275726e08011476616c7565c00128543a3a42616c616e63650001286b6565705f616c697665200110626f6f6c000a1cfc4275726e2074686520737065636966696564206c697175696420667265652062616c616e63652066726f6d20746865206f726967696e206163636f756e742e002501496620746865206f726967696e2773206163636f756e7420656e64732075702062656c6f7720746865206578697374656e7469616c206465706f736974206173206120726573756c7409016f6620746865206275726e20616e6420606b6565705f616c697665602069732066616c73652c20746865206163636f756e742077696c6c206265207265617065642e005101556e6c696b652073656e64696e672066756e647320746f2061205f6275726e5f20616464726573732c207768696368206d6572656c79206d616b6573207468652066756e647320696e61636365737369626c652c21017468697320606275726e60206f7065726174696f6e2077696c6c2072656475636520746f74616c2069737375616e63652062792074686520616d6f756e74205f6275726e65645f2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e49040c3c70616c6c65745f62616c616e6365731474797065734c41646a7573746d656e74446972656374696f6e00010820496e637265617365000000204465637265617365000100004d040c3c70616c6c65745f62616c616e6365731870616c6c65741043616c6c080454000449000124507472616e736665725f616c6c6f775f646561746808011064657374250301504163636f756e7449644c6f6f6b75704f663c543e00011476616c7565c00128543a3a42616c616e636500001cd45472616e7366657220736f6d65206c697175696420667265652062616c616e636520746f20616e6f74686572206163636f756e742e003501607472616e736665725f616c6c6f775f6465617468602077696c6c207365742074686520604672656542616c616e636560206f66207468652073656e64657220616e642072656365697665722e11014966207468652073656e6465722773206163636f756e742069732062656c6f7720746865206578697374656e7469616c206465706f736974206173206120726573756c74b06f6620746865207472616e736665722c20746865206163636f756e742077696c6c206265207265617065642e001501546865206469737061746368206f726967696e20666f7220746869732063616c6c206d75737420626520605369676e65646020627920746865207472616e736163746f722e38666f7263655f7472616e736665720c0118736f75726365250301504163636f756e7449644c6f6f6b75704f663c543e00011064657374250301504163636f756e7449644c6f6f6b75704f663c543e00011476616c7565c00128543a3a42616c616e6365000208610145786163746c7920617320607472616e736665725f616c6c6f775f6465617468602c2065786365707420746865206f726967696e206d75737420626520726f6f7420616e642074686520736f75726365206163636f756e74446d6179206265207370656369666965642e4c7472616e736665725f6b6565705f616c69766508011064657374250301504163636f756e7449644c6f6f6b75704f663c543e00011476616c7565c00128543a3a42616c616e6365000318590153616d6520617320746865205b607472616e736665725f616c6c6f775f6465617468605d2063616c6c2c206275742077697468206120636865636b207468617420746865207472616e736665722077696c6c206e6f74606b696c6c20746865206f726967696e206163636f756e742e00e8393925206f66207468652074696d6520796f752077616e74205b607472616e736665725f616c6c6f775f6465617468605d20696e73746561642e00f05b607472616e736665725f616c6c6f775f6465617468605d3a207374727563742e50616c6c65742e68746d6c236d6574686f642e7472616e73666572307472616e736665725f616c6c08011064657374250301504163636f756e7449644c6f6f6b75704f663c543e0001286b6565705f616c697665200110626f6f6c00043c05015472616e736665722074686520656e74697265207472616e7366657261626c652062616c616e63652066726f6d207468652063616c6c6572206163636f756e742e0059014e4f54453a20546869732066756e6374696f6e206f6e6c7920617474656d70747320746f207472616e73666572205f7472616e7366657261626c655f2062616c616e6365732e2054686973206d65616e7320746861746101616e79206c6f636b65642c2072657365727665642c206f72206578697374656e7469616c206465706f7369747320287768656e20606b6565705f616c6976656020697320607472756560292c2077696c6c206e6f742062655d017472616e7366657272656420627920746869732066756e6374696f6e2e20546f20656e73757265207468617420746869732066756e6374696f6e20726573756c747320696e2061206b696c6c6564206163636f756e742c4501796f75206d69676874206e65656420746f207072657061726520746865206163636f756e742062792072656d6f76696e6720616e79207265666572656e636520636f756e746572732c2073746f72616765406465706f736974732c206574632e2e2e00c0546865206469737061746368206f726967696e206f6620746869732063616c6c206d757374206265205369676e65642e00a02d206064657374603a2054686520726563697069656e74206f6620746865207472616e736665722e59012d20606b6565705f616c697665603a204120626f6f6c65616e20746f2064657465726d696e652069662074686520607472616e736665725f616c6c60206f7065726174696f6e2073686f756c642073656e6420616c6c4d0120206f66207468652066756e647320746865206163636f756e74206861732c2063617573696e67207468652073656e646572206163636f756e7420746f206265206b696c6c6564202866616c7365292c206f72590120207472616e736665722065766572797468696e6720657863657074206174206c6561737420746865206578697374656e7469616c206465706f7369742c2077686963682077696c6c2067756172616e74656520746f9c20206b656570207468652073656e646572206163636f756e7420616c697665202874727565292e3c666f7263655f756e7265736572766508010c77686f250301504163636f756e7449644c6f6f6b75704f663c543e000118616d6f756e74180128543a3a42616c616e636500050cb0556e7265736572766520736f6d652062616c616e63652066726f6d2061207573657220627920666f7263652e006c43616e206f6e6c792062652063616c6c656420627920524f4f542e40757067726164655f6163636f756e747304010c77686f150301445665633c543a3a4163636f756e7449643e0006207055706772616465206120737065636966696564206163636f756e742e00742d20606f726967696e603a204d75737420626520605369676e6564602e902d206077686f603a20546865206163636f756e7420746f2062652075706772616465642e005501546869732077696c6c20776169766520746865207472616e73616374696f6e20666565206966206174206c6561737420616c6c2062757420313025206f6620746865206163636f756e7473206e656564656420746f410162652075706772616465642e20285765206c657420736f6d65206e6f74206861766520746f206265207570677261646564206a75737420696e206f7264657220746f20616c6c6f7720666f722074686558706f73736962696c697479206f6620636875726e292e44666f7263655f7365745f62616c616e636508010c77686f250301504163636f756e7449644c6f6f6b75704f663c543e0001206e65775f66726565c00128543a3a42616c616e636500080cac5365742074686520726567756c61722062616c616e6365206f66206120676976656e206163636f756e742e00b0546865206469737061746368206f726967696e20666f7220746869732063616c6c2069732060726f6f74602e6c666f7263655f61646a7573745f746f74616c5f69737375616e6365080124646972656374696f6e4904014c41646a7573746d656e74446972656374696f6e00011464656c7461c00128543a3a42616c616e6365000914b841646a7573742074686520746f74616c2069737375616e636520696e20612073617475726174696e67207761792e00fc43616e206f6e6c792062652063616c6c656420627920726f6f7420616e6420616c77617973206e65656473206120706f736974697665206064656c7461602e002423204578616d706c65106275726e08011476616c7565c00128543a3a42616c616e63650001286b6565705f616c697665200110626f6f6c000a1cfc4275726e2074686520737065636966696564206c697175696420667265652062616c616e63652066726f6d20746865206f726967696e206163636f756e742e002501496620746865206f726967696e2773206163636f756e7420656e64732075702062656c6f7720746865206578697374656e7469616c206465706f736974206173206120726573756c7409016f6620746865206275726e20616e6420606b6565705f616c697665602069732066616c73652c20746865206163636f756e742077696c6c206265207265617065642e005101556e6c696b652073656e64696e672066756e647320746f2061205f6275726e5f20616464726573732c207768696368206d6572656c79206d616b6573207468652066756e647320696e61636365737369626c652c21017468697320606275726e60206f7065726174696f6e2077696c6c2072656475636520746f74616c2069737375616e63652062792074686520616d6f756e74205f6275726e65645f2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e51040c3c70616c6c65745f74785f70617573651870616c6c65741043616c6c04045400010814706175736504012466756c6c5f6e616d65c501015052756e74696d6543616c6c4e616d654f663c543e00001034506175736520612063616c6c2e00b843616e206f6e6c792062652063616c6c6564206279205b60436f6e6669673a3a50617573654f726967696e605d2ec0456d69747320616e205b604576656e743a3a43616c6c506175736564605d206576656e74206f6e20737563636573732e1c756e70617573650401146964656e74c501015052756e74696d6543616c6c4e616d654f663c543e00011040556e2d706175736520612063616c6c2e00c043616e206f6e6c792062652063616c6c6564206279205b60436f6e6669673a3a556e70617573654f726967696e605d2ec8456d69747320616e205b604576656e743a3a43616c6c556e706175736564605d206576656e74206f6e20737563636573732e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e55040c3870616c6c65745f7574696c6974791870616c6c65741043616c6c04045400012014626174636804011463616c6c735904017c5665633c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e0000487c53656e642061206261746368206f662064697370617463682063616c6c732e00b04d61792062652063616c6c65642066726f6d20616e79206f726967696e2065786365707420604e6f6e65602e005d012d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e20546865206e756d626572206f662063616c6c206d757374206e6f74390120206578636565642074686520636f6e7374616e743a2060626174636865645f63616c6c735f6c696d6974602028617661696c61626c6520696e20636f6e7374616e74206d65746164617461292e0055014966206f726967696e20697320726f6f74207468656e207468652063616c6c7320617265206469737061746368656420776974686f757420636865636b696e67206f726967696e2066696c7465722e202854686973ec696e636c7564657320627970617373696e6720606672616d655f73797374656d3a3a436f6e6669673a3a4261736543616c6c46696c74657260292e0034232320436f6d706c6578697479d02d204f284329207768657265204320697320746865206e756d626572206f662063616c6c7320746f20626520626174636865642e005501546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732e20546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e31016576656e74206973206465706f73697465642e20496620612063616c6c206661696c656420616e64207468652062617463682077617320696e7465727275707465642c207468656e207468655501604261746368496e74657272757074656460206576656e74206973206465706f73697465642c20616c6f6e67207769746820746865206e756d626572206f66207375636365737366756c2063616c6c73206d6164654d01616e6420746865206572726f72206f6620746865206661696c65642063616c6c2e20496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c65746564604c6576656e74206973206465706f73697465642e3461735f64657269766174697665080114696e6465789c010c75313600011063616c6c1d03017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000134dc53656e6420612063616c6c207468726f75676820616e20696e64657865642070736575646f6e796d206f66207468652073656e6465722e00550146696c7465722066726f6d206f726967696e206172652070617373656420616c6f6e672e205468652063616c6c2077696c6c2062652064697370617463686564207769746820616e206f726967696e207768696368bc757365207468652073616d652066696c74657220617320746865206f726967696e206f6620746869732063616c6c2e0045014e4f54453a20496620796f75206e65656420746f20656e73757265207468617420616e79206163636f756e742d62617365642066696c746572696e67206973206e6f7420686f6e6f7265642028692e652e61016265636175736520796f7520657870656374206070726f78796020746f2068617665206265656e2075736564207072696f7220696e207468652063616c6c20737461636b20616e6420796f7520646f206e6f742077616e7451017468652063616c6c207265737472696374696f6e7320746f206170706c7920746f20616e79207375622d6163636f756e7473292c207468656e20757365206061735f6d756c74695f7468726573686f6c645f31607c696e20746865204d756c74697369672070616c6c657420696e73746561642e00f44e4f54453a205072696f7220746f2076657273696f6e202a31322c2074686973207761732063616c6c6564206061735f6c696d697465645f737562602e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e2462617463685f616c6c04011463616c6c735904017c5665633c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000234ec53656e642061206261746368206f662064697370617463682063616c6c7320616e642061746f6d6963616c6c792065786563757465207468656d2e21015468652077686f6c65207472616e73616374696f6e2077696c6c20726f6c6c6261636b20616e64206661696c20696620616e79206f66207468652063616c6c73206661696c65642e00b04d61792062652063616c6c65642066726f6d20616e79206f726967696e2065786365707420604e6f6e65602e005d012d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e20546865206e756d626572206f662063616c6c206d757374206e6f74390120206578636565642074686520636f6e7374616e743a2060626174636865645f63616c6c735f6c696d6974602028617661696c61626c6520696e20636f6e7374616e74206d65746164617461292e0055014966206f726967696e20697320726f6f74207468656e207468652063616c6c7320617265206469737061746368656420776974686f757420636865636b696e67206f726967696e2066696c7465722e202854686973ec696e636c7564657320627970617373696e6720606672616d655f73797374656d3a3a436f6e6669673a3a4261736543616c6c46696c74657260292e0034232320436f6d706c6578697479d02d204f284329207768657265204320697320746865206e756d626572206f662063616c6c7320746f20626520626174636865642e2c64697370617463685f617308012461735f6f726967696e2d020154426f783c543a3a50616c6c6574734f726967696e3e00011063616c6c1d03017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000318c84469737061746368657320612066756e6374696f6e2063616c6c207769746820612070726f7669646564206f726967696e2e00c4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f2e0034232320436f6d706c65786974791c2d204f2831292e2c666f7263655f626174636804011463616c6c735904017c5665633c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e0004347c53656e642061206261746368206f662064697370617463682063616c6c732ed4556e6c696b6520606261746368602c20697420616c6c6f7773206572726f727320616e6420776f6e277420696e746572727570742e00b04d61792062652063616c6c65642066726f6d20616e79206f726967696e2065786365707420604e6f6e65602e005d012d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e20546865206e756d626572206f662063616c6c206d757374206e6f74390120206578636565642074686520636f6e7374616e743a2060626174636865645f63616c6c735f6c696d6974602028617661696c61626c6520696e20636f6e7374616e74206d65746164617461292e004d014966206f726967696e20697320726f6f74207468656e207468652063616c6c732061726520646973706174636820776974686f757420636865636b696e67206f726967696e2066696c7465722e202854686973ec696e636c7564657320627970617373696e6720606672616d655f73797374656d3a3a436f6e6669673a3a4261736543616c6c46696c74657260292e0034232320436f6d706c6578697479d02d204f284329207768657265204320697320746865206e756d626572206f662063616c6c7320746f20626520626174636865642e2c776974685f77656967687408011063616c6c1d03017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000118776569676874280118576569676874000518c4446973706174636820612066756e6374696f6e2063616c6c2077697468206120737065636966696564207765696768742e002d01546869732066756e6374696f6e20646f6573206e6f7420636865636b2074686520776569676874206f66207468652063616c6c2c20616e6420696e737465616420616c6c6f777320746865b8526f6f74206f726967696e20746f20737065636966792074686520776569676874206f66207468652063616c6c2e00c4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f2e1c69665f656c73650801106d61696e1d03017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00012066616c6c6261636b1d03017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00065c1501446973706174636820612066616c6c6261636b2063616c6c20696e20746865206576656e7420746865206d61696e2063616c6c206661696c7320746f20657865637574652eb04d61792062652063616c6c65642066726f6d20616e79206f726967696e2065786365707420604e6f6e65602e00e4546869732066756e6374696f6e20666972737420617474656d70747320746f2064697370617463682074686520606d61696e602063616c6c2ed449662074686520606d61696e602063616c6c206661696c732c20746865206066616c6c6261636b6020697320617474656d7465642e15016966207468652066616c6c6261636b206973207375636365737366756c6c7920646973706174636865642c207468652077656967687473206f6620626f74682063616c6c73250161726520616363756d756c6174656420616e6420616e206576656e7420636f6e7461696e696e6720746865206d61696e2063616c6c206572726f72206973206465706f73697465642e00dc496e20746865206576656e74206f6620612066616c6c6261636b206661696c757265207468652077686f6c652063616c6c206661696c7368776974682074686520776569676874732072657475726e65642e0041012d20606d61696e603a20546865206d61696e2063616c6c20746f20626520646973706174636865642e205468697320697320746865207072696d61727920616374696f6e20746f20657865637574652e3d012d206066616c6c6261636b603a205468652066616c6c6261636b2063616c6c20746f206265206469737061746368656420696e20636173652074686520606d61696e602063616c6c206661696c732e00442323204469737061746368204c6f67696341012d20496620746865206f726967696e2069732060726f6f74602c20626f746820746865206d61696e20616e642066616c6c6261636b2063616c6c732061726520657865637574656420776974686f75747820206170706c79696e6720616e79206f726967696e2066696c746572732e49012d20496620746865206f726967696e206973206e6f742060726f6f74602c20746865206f726967696e2066696c746572206973206170706c69656420746f20626f74682074686520606d61696e6020616e644c20206066616c6c6261636b602063616c6c732e002c232320557365204361736559012d20536f6d6520757365206361736573206d6967687420696e766f6c7665207375626d697474696e672061206062617463686020747970652063616c6c20696e20656974686572206d61696e2c2066616c6c6261636b2820206f7220626f74682e5064697370617463685f61735f66616c6c69626c6508012461735f6f726967696e2d020154426f783c543a3a50616c6c6574734f726967696e3e00011063616c6c1d03017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000714c84469737061746368657320612066756e6374696f6e2063616c6c207769746820612070726f7669646564206f726967696e2e005101416c6d6f7374207468652073616d65206173205b6050616c6c65743a3a64697370617463685f6173605d2062757420666f72776172647320616e79206572726f72206f662074686520696e6e65722063616c6c2e00c4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e59040000021d03005d040c2c70616c6c65745f7375646f1870616c6c65741043616c6c040454000114107375646f04011063616c6c1d03017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000004350141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e547375646f5f756e636865636b65645f77656967687408011063616c6c1d03017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000118776569676874280118576569676874000114350141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e2d01546869732066756e6374696f6e20646f6573206e6f7420636865636b2074686520776569676874206f66207468652063616c6c2c20616e6420696e737465616420616c6c6f777320746865b05375646f207573657220746f20737065636966792074686520776569676874206f66207468652063616c6c2e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e1c7365745f6b657904010c6e6577250301504163636f756e7449644c6f6f6b75704f663c543e0002085d0141757468656e74696361746573207468652063757272656e74207375646f206b657920616e6420736574732074686520676976656e204163636f756e7449642028606e6577602920617320746865206e6577207375646f106b65792e1c7375646f5f617308010c77686f250301504163636f756e7449644c6f6f6b75704f663c543e00011063616c6c1d03017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e0003104d0141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c207769746820605369676e656460206f726967696e2066726f6d406120676976656e206163636f756e742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e2872656d6f76655f6b657900040c845065726d616e656e746c792072656d6f76657320746865207375646f206b65792e006c2a2a546869732063616e6e6f7420626520756e2d646f6e652e2a2a040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e61040c2c70616c6c65745f69736d701870616c6c65741043616c6c0404540001103c68616e646c655f756e7369676e65640401206d65737361676573650401305665633c4d6573736167653e000028590145786563757465207468652070726f7669646564206261746368206f662049534d50206d657373616765732c20746869732077696c6c2073686f72742d6369726375697420616e642072657665727420696620616e795d016f66207468652070726f7669646564206d657373616765732061726520696e76616c69642e205468697320697320616e20756e7369676e65642065787472696e7369632074686174207065726d69747320616e796f6e655501657865637574652049534d50206d6573736167657320666f7220667265652c2070726f7669646564207468657920686176652076616c69642070726f6f667320616e6420746865206d657373616765732068617665786e6f74206265656e2070726576696f75736c792070726f6365737365642e00e8546865206469737061746368206f726967696e20666f7220746869732063616c6c206d75737420626520616e20756e7369676e6564206f6e652e00c02d20606d65737361676573603a20746865206d6573736167657320746f2068616e646c65206f722070726f636573732e002d01456d69747320646966666572656e74206d657373616765206576656e7473206261736564206f6e20746865204d657373616765207265636569766564206966207375636365737366756c2e5c6372656174655f636f6e73656e7375735f636c69656e7404011c6d657373616765bd040150437265617465436f6e73656e737573537461746500021c5501437265617465206120636f6e73656e73757320636c69656e742c207573696e672061207375626a6563746976656c792063686f73656e20636f6e73656e7375732073746174652e20546869732063616e20616c736f39016265207573656420746f206f766572777269746520616e206578697374696e6720636f6e73656e7375732073746174652e20546865206469737061746368206f726967696e20666f7220746869737863616c6c206d7573742062652060543a3a41646d696e4f726967696e602e00b42d20606d657373616765603a205b60437265617465436f6e73656e7375735374617465605d207374727563742e00d8456d697473205b604576656e743a3a436f6e73656e737573436c69656e7443726561746564605d206966207375636365737366756c2e587570646174655f636f6e73656e7375735f737461746504011c6d657373616765dd040150557064617465436f6e73656e73757353746174650003101d014d6f646966792074686520756e626f6e64696e6720706572696f6420616e64206368616c6c656e676520706572696f6420666f72206120636f6e73656e7375732073746174652eec546865206469737061746368206f726967696e20666f7220746869732063616c6c206d7573742062652060543a3a41646d696e4f726967696e602e00ac2d20606d657373616765603a2060557064617465436f6e73656e737573537461746560207374727563742e3066756e645f6d65737361676504011c6d657373616765e104017446756e644d657373616765506172616d733c543a3a42616c616e63653e0004106101416464206d6f72652066756e647320746f2061206d657373616765202872657175657374206f7220726573706f6e73652920746f206265207573656420666f722064656c697665727920616e6420657865637574696f6e2e00550153686f756c64206e6f742062652063616c6c6564206f6e2061206d657373616765207468617420686173206265656e20636f6d706c65746564202864656c697665726564206f722074696d65642d6f7574292061738474686f73652066756e64732077696c6c206265206c6f737420666f72657665722e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e650400000269040069040c1069736d70246d6573736167696e671c4d65737361676500011424436f6e73656e73757304006d040140436f6e73656e7375734d65737361676500000028467261756450726f6f66040071040144467261756450726f6f664d6573736167650001001c52657175657374040075040138526571756573744d65737361676500020020526573706f6e736504008504013c526573706f6e73654d6573736167650003001c54696d656f75740400b504013854696d656f75744d657373616765000400006d040c1069736d70246d6573736167696e6740436f6e73656e7375734d65737361676500000c013c636f6e73656e7375735f70726f6f6638011c5665633c75383e000148636f6e73656e7375735f73746174655f6964480140436f6e73656e737573537461746549640001187369676e657238011c5665633c75383e000071040c1069736d70246d6573736167696e6744467261756450726f6f664d657373616765000010011c70726f6f665f3138011c5665633c75383e00011c70726f6f665f3238011c5665633c75383e000148636f6e73656e7375735f73746174655f6964480140436f6e73656e737573537461746549640001187369676e657238011c5665633c75383e000075040c1069736d70246d6573736167696e6738526571756573744d65737361676500000c01207265717565737473790401405665633c506f7374526571756573743e00011470726f6f668104011450726f6f660001187369676e657238011c5665633c75383e000079040000027d04007d040c1069736d7018726f757465722c506f73745265717565737400001c0118736f75726365e101013053746174654d616368696e6500011064657374e101013053746174654d616368696e650001146e6f6e636530010c75363400011066726f6d38011c5665633c75383e000108746f38011c5665633c75383e00014474696d656f75745f74696d657374616d7030010c753634000110626f647938011c5665633c75383e000081040c1069736d70246d6573736167696e671450726f6f660000080118686569676874e501014853746174654d616368696e6548656967687400011470726f6f6638011c5665633c75383e000085040c1069736d70246d6573736167696e673c526573706f6e73654d65737361676500000c0120646174616772616d8904013c52657175657374526573706f6e736500011470726f6f668104011450726f6f660001187369676e657238011c5665633c75383e000089040c1069736d7018726f757465723c52657175657374526573706f6e73650001081c5265717565737404008d0401305665633c526571756573743e00000020526573706f6e73650400990401345665633c526573706f6e73653e000100008d0400000291040091040c1069736d7018726f757465721c5265717565737400010810506f737404007d04012c506f7374526571756573740000000c476574040095040128476574526571756573740001000095040c1069736d7018726f7574657228476574526571756573740000200118736f75726365e101013053746174654d616368696e6500011064657374e101013053746174654d616368696e650001146e6f6e636530010c75363400011066726f6d38011c5665633c75383e0001106b657973810201305665633c5665633c75383e3e00011868656967687430010c75363400011c636f6e7465787438011c5665633c75383e00014474696d656f75745f74696d657374616d7030010c753634000099040000029d04009d040c1069736d7018726f7574657220526573706f6e736500010810506f73740400a1040130506f7374526573706f6e73650000000c4765740400a504012c476574526573706f6e736500010000a1040c1069736d7018726f7574657230506f7374526573706f6e736500000c0110706f73747d04012c506f737452657175657374000120726573706f6e736538011c5665633c75383e00014474696d656f75745f74696d657374616d7030010c7536340000a5040c1069736d7018726f757465722c476574526573706f6e7365000008010c676574950401284765745265717565737400011876616c756573a90401445665633c53746f7261676556616c75653e0000a904000002ad0400ad040c1069736d7018726f757465723053746f7261676556616c7565000008010c6b657938011c5665633c75383e00011476616c7565b104013c4f7074696f6e3c5665633c75383e3e0000b10404184f7074696f6e04045401380108104e6f6e6500000010536f6d650400380000010000b5040c1069736d70246d6573736167696e673854696d656f75744d65737361676500010c10506f737408012072657175657374738d0401305665633c526571756573743e00013474696d656f75745f70726f6f668104011450726f6f6600000030506f7374526573706f6e7365080124726573706f6e736573b90401445665633c506f7374526573706f6e73653e00013474696d656f75745f70726f6f668104011450726f6f660001000c47657404012072657175657374738d0401305665633c526571756573743e00020000b904000002a10400bd040c1069736d70246d6573736167696e6750437265617465436f6e73656e7375735374617465000018013c636f6e73656e7375735f737461746538011c5665633c75383e00014c636f6e73656e7375735f636c69656e745f6964480144436f6e73656e737573436c69656e744964000148636f6e73656e7375735f73746174655f6964480140436f6e73656e73757353746174654964000140756e626f6e64696e675f706572696f6430010c7536340001446368616c6c656e67655f706572696f6473c104016c42547265654d61703c53746174654d616368696e652c207536343e00016473746174655f6d616368696e655f636f6d6d69746d656e7473cd0401b05665633c2853746174654d616368696e6549642c205374617465436f6d6d69746d656e74486569676874293e0000c104042042547265654d617008044b01e10104560130000400c504000000c504000002c90400c90400000408e1013000cd04000002d10400d10400000408dd01d50400d5040c1069736d70246d6573736167696e67545374617465436f6d6d69746d656e744865696768740000080128636f6d6d69746d656e74d904013c5374617465436f6d6d69746d656e7400011868656967687430010c7536340000d9040c1069736d7024636f6e73656e7375733c5374617465436f6d6d69746d656e7400000c012474696d657374616d7030010c7536340001306f7665726c61795f726f6f74c90201304f7074696f6e3c483235363e00012873746174655f726f6f74340110483235360000dd040c2c70616c6c65745f69736d70147574696c7350557064617465436f6e73656e737573537461746500000c0148636f6e73656e7375735f73746174655f6964480140436f6e73656e73757353746174654964000140756e626f6e64696e675f706572696f648d01012c4f7074696f6e3c7536343e0001446368616c6c656e67655f706572696f6473c104016c42547265654d61703c53746174654d616368696e652c207536343e0000e1040c2c70616c6c65745f69736d70147574696c734446756e644d657373616765506172616d73041c42616c616e6365011800080128636f6d6d69746d656e74e50401444d657373616765436f6d6d69746d656e74000118616d6f756e7418011c42616c616e63650000e5040c2c70616c6c65745f69736d70147574696c73444d657373616765436f6d6d69746d656e740001081c5265717565737404003401104832353600000020526573706f6e736504003401104832353600010000e9040c3069736d705f6772616e6470611870616c6c65741043616c6c040454000108486164645f73746174655f6d616368696e65730401486e65775f73746174655f6d616368696e6573ed0401505665633c41646453746174654d616368696e653e000004010141646420736f6d652061207374617465206d616368696e6520746f20746865206c697374206f6620737570706f72746564207374617465206d616368696e65735472656d6f76655f73746174655f6d616368696e657304013873746174655f6d616368696e6573050201445665633c53746174654d616368696e653e000104010152656d6f76652061207374617465206d616368696e652066726f6d20746865206c697374206f6620737570706f72746564207374617465206d616368696e6573040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732eed04000002f10400f104083069736d705f6772616e6470613c41646453746174654d616368696e65000008013473746174655f6d616368696e65e101013053746174654d616368696e65000134736c6f745f6475726174696f6e30010c7536340000f5040c5070616c6c65745f746f6b656e5f676174657761791870616c6c65741043616c6c0404540001102074656c65706f7274040118706172616d73f90401790154656c65706f7274506172616d733c417373657449643c543e2c3c3c5420617320436f6e6669673e3a3a4e617469766543757272656e63792061730a43757272656e63793c543a3a4163636f756e7449643e3e3a3a42616c616e63652c3e0000087054656c65706f7274732061207265676973746572656420617373657431016c6f636b732074686520617373657420616e6420646973706174636865732061207265717565737420746f20746f6b656e2067617465776179206f6e207468652064657374696e6174696f6e6c7365745f746f6b656e5f676174657761795f616464726573736573040124616464726573736573fd04017c42547265654d61703c53746174654d616368696e652c205665633c75383e3e000104c85365742074686520746f6b656e2067617465776179206164647265737320666f722073706563696669656420636861696e73506372656174655f657263363136305f61737365740401146173736574090501744173736574526567697374726174696f6e3c417373657449643c543e3e00020c2d015265676973746572732061206d756c74692d636861696e204552433631363020617373657420776974686f75742073656e64696e6720616e7920646973706174636820726571756573742e5501596f752073686f756c64207573652072656769737465725f61737365745f6c6f63616c6c79207768656e20796f752077616e7420746f20656e61626c6520746f6b656e2067617465776179207472616e7366657273d8666f7220616e206173736574207468617420616c726561647920657869737473206f6e20616e2065787465726e616c20636861696e2e587570646174655f61737365745f707265636973696f6e0401187570646174652105016c507265636973696f6e5570646174653c417373657449643c543e3e000404a85570646174652074686520707265636973696f6e20666f7220616e206578697374696e67206173736574040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ef9040c5070616c6c65745f746f6b656e5f676174657761791474797065733854656c65706f7274506172616d73081c4173736574496401101c42616c616e636501180024012061737365745f696410011c4173736574496400012c64657374696e6174696f6ee101013053746174654d616368696e65000124726563657069656e7434011048323536000118616d6f756e7418011c42616c616e636500011c74696d656f757430010c753634000134746f6b656e5f6761746577617938011c5665633c75383e00012c72656c617965725f66656518011c42616c616e636500012463616c6c5f64617461b104013c4f7074696f6e3c5665633c75383e3e00011872656465656d200110626f6f6c0000fd04042042547265654d617008044b01e1010456013800040001050000000105000002050500050500000408e101380009050c5070616c6c65745f746f6b656e5f67617465776179147479706573444173736574526567697374726174696f6e041c417373657449640110001001206c6f63616c5f696410011c4173736574496400010c7265670d0501c8746f6b656e5f676174657761795f7072696d6974697665733a3a476174657761794173736574526567697374726174696f6e0001186e6174697665200110626f6f6c000124707265636973696f6e1505016842547265654d61703c53746174654d616368696e652c2075383e00000d050860746f6b656e5f676174657761795f7072696d69746976657360476174657761794173736574526567697374726174696f6e00001001106e616d654d010170426f756e6465645665633c75382c20436f6e73745533323c35303e3e00011873796d626f6c11050170426f756e6465645665633c75382c20436f6e73745533323c32303e3e000118636861696e73050201445665633c53746174654d616368696e653e00013c6d696e696d756d5f62616c616e6365850101304f7074696f6e3c753132383e000011050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e00001505042042547265654d617008044b01e10104560108000400190500000019050000021d05001d0500000408e101080021050c5070616c6c65745f746f6b656e5f676174657761791474797065733c507265636973696f6e557064617465041c4173736574496401100008012061737365745f696410011c41737365744964000128707265636973696f6e731505016842547265654d61703c53746174654d616368696e652c2075383e000025050c3c70616c6c65745f74726561737572791870616c6c65741043616c6c040454000104387365745f616c6c6f636174696f6e0801207661756c745f696410011c5661756c744964000118616d6f756e74180128543a3a42616c616e6365000404e8416c6c2066756e646572732063616e2073657420746865697220636f6d6d6974746564207072696e636970616c20666f722061207661756c742e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e29050c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c65741043616c6c040454000114207265676973746572040130726567697374726174696f6e2d05013c526567697374726174696f6e3c543e00000c31015265676973746572207661756c742c206d696e696e672066756e64696e672c20616e6420626f74206163636f756e747320666f7220616e206f7065726174696f6e616c206163636f756e742eec416e79206163636f756e7420696e2074686520726567697374726174696f6e206d6179207375626d697420746865207472616e73616374696f6e2e4501496620616e2061636365737320636f64652069732070726f76696465642c2074686520726567697374726174696f6e207265636f726473207468652073706f6e736f722072656c6174696f6e736869702e4469737375655f6163636573735f636f64650401486163636573735f636f64655f7075626c696304013c737232353531393a3a5075626c69630001082901497373756520616e2061636365737320636f64652028746865207075626c6963206b657920697473656c662920666f722074686973206f7065726174696f6e616c206163636f756e742eec5468652061636365737320636f646520657870697265732061667465722060416363657373436f646545787069726174696f6e4672616d6573602e447365745f7265776172645f636f6e66696708016c6f7065726174696f6e616c5f726566657272616c5f726577617264180128543a3a42616c616e6365000154726566657272616c5f626f6e75735f726577617264180128543a3a42616c616e6365000204bc5570646174652072657761726420616d6f756e747320666f72206f7065726174696f6e616c206163636f756e74732e48666f7263655f7365745f70726f67726573730c01146f776e6572000130543a3a4163636f756e7449640001147061746368450501904f7065726174696f6e616c50726f677265737350617463683c543a3a42616c616e63653e00016c7570646174655f6f7065726174696f6e616c5f70726f6772657373200110626f6f6c000304e4466f7263652d757064617465206f7065726174696f6e616c2070726f6772657373206d61726b65727320666f7220616e206163636f756e742e807365745f656e637279707465645f7365727665725f666f725f73706f6e73656508011c73706f6e736565000130543a3a4163636f756e744964000140656e637279707465645f73657276657238011c5665633c75383e000404550153746f726520616e206f706171756520656e637279707465642073706f6e736f7220736572766572207061796c6f616420666f7220612073706f6e736f726564206f7065726174696f6e616c206163636f756e742e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e2d050c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c657430526567697374726174696f6e040454000104085631040031050144526567697374726174696f6e56313c543e0000000031050c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c657438526567697374726174696f6e5631040454000028014c6f7065726174696f6e616c5f6163636f756e74000130543a3a4163636f756e744964000144656e6372797074696f6e5f7075626b6579350501584f7061717565456e6372797074696f6e5075626b65790001646f7065726174696f6e616c5f6163636f756e745f70726f6f66390501544163636f756e744f776e65727368697050726f6f660001347661756c745f6163636f756e74000130543a3a4163636f756e7449640001586d696e696e675f66756e64696e675f6163636f756e74000130543a3a4163636f756e7449640001486d696e696e675f626f745f6163636f756e74000130543a3a4163636f756e74496400014c7661756c745f6163636f756e745f70726f6f66390501544163636f756e744f776e65727368697050726f6f660001706d696e696e675f66756e64696e675f6163636f756e745f70726f6f66390501544163636f756e744f776e65727368697050726f6f660001606d696e696e675f626f745f6163636f756e745f70726f6f66390501544163636f756e744f776e65727368697050726f6f6600012c6163636573735f636f64653d05015c4f7074696f6e3c416363657373436f646550726f6f663e000035050c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c6574584f7061717565456e6372797074696f6e5075626b6579000004000401205b75383b2033325d000039050c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c6574544163636f756e744f776e65727368697050726f6f6600000401247369676e6174757265350401245369676e617475726500003d0504184f7074696f6e0404540141050108104e6f6e6500000010536f6d6504004105000001000041050c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c65743c416363657373436f646550726f6f6600000801187075626c696304013c737232353531393a3a5075626c69630001247369676e617475726595030148737232353531393a3a5369676e6174757265000045050c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c6574604f7065726174696f6e616c50726f67726573735061746368041c42616c616e63650118001401506861735f756e69737761705f7472616e73666572490501304f7074696f6e3c626f6f6c3e0001347661756c745f63726561746564490501304f7074696f6e3c626f6f6c3e00017c6861735f74726561737572795f706f6f6c5f70617274696369706174696f6e490501304f7074696f6e3c626f6f6c3e0001586f627365727665645f626974636f696e5f746f74616c8501013c4f7074696f6e3c42616c616e63653e0001686f627365727665645f6d696e696e675f736561745f746f74616c4d05012c4f7074696f6e3c7533323e0000490504184f7074696f6e04045401200108104e6f6e6500000010536f6d6504002000000100004d0504184f7074696f6e04045401100108104e6f6e6500000010536f6d650400100000010000510504184f7074696f6e04045401880108104e6f6e6500000010536f6d65040088000001000055050c3c70616c6c65745f6d756c74697369671870616c6c6574144572726f72040454000138404d696e696d756d5468726573686f6c640000047c5468726573686f6c64206d7573742062652032206f7220677265617465722e3c416c7265616479417070726f766564000104ac43616c6c20697320616c726561647920617070726f7665642062792074686973207369676e61746f72792e444e6f417070726f76616c734e65656465640002049c43616c6c20646f65736e2774206e65656420616e7920286d6f72652920617070726f76616c732e44546f6f4665775369676e61746f72696573000304a854686572652061726520746f6f20666577207369676e61746f7269657320696e20746865206c6973742e48546f6f4d616e795369676e61746f72696573000404ac54686572652061726520746f6f206d616e79207369676e61746f7269657320696e20746865206c6973742e545369676e61746f726965734f75744f664f726465720005040d01546865207369676e61746f7269657320776572652070726f7669646564206f7574206f66206f726465723b20746865792073686f756c64206265206f7264657265642e4c53656e646572496e5369676e61746f726965730006040d015468652073656e6465722077617320636f6e7461696e656420696e20746865206f74686572207369676e61746f726965733b2069742073686f756c646e27742062652e204e6f74466f756e64000704a04d756c7469736967206f7065726174696f6e206e6f7420666f756e6420696e2073746f726167652e204e6f744f776e657200080851014f6e6c7920746865206163636f756e742074686174206f726967696e616c6c79206372656174656420746865206d756c74697369672069732061626c6520746f2063616e63656c206974206f722075706461746534697473206465706f736974732e2c4e6f54696d65706f696e740009041d014e6f2074696d65706f696e742077617320676976656e2c2079657420746865206d756c7469736967206f7065726174696f6e20697320616c726561647920756e6465727761792e3857726f6e6754696d65706f696e74000a042d014120646966666572656e742074696d65706f696e742077617320676976656e20746f20746865206d756c7469736967206f7065726174696f6e207468617420697320756e6465727761792e4c556e657870656374656454696d65706f696e74000b04f4412074696d65706f696e742077617320676976656e2c20796574206e6f206d756c7469736967206f7065726174696f6e20697320756e6465727761792e3c4d6178576569676874546f6f4c6f77000c04d0546865206d6178696d756d2077656967687420696e666f726d6174696f6e2070726f76696465642077617320746f6f206c6f772e34416c726561647953746f726564000d04a0546865206461746120746f2062652073746f72656420697320616c72656164792073746f7265642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e5905000004085d0518005d050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454016105045300000400650501185665633c543e00006105083070616c6c65745f70726f78793c50726f7879446566696e6974696f6e0c244163636f756e74496401002450726f78795479706501982c426c6f636b4e756d6265720110000c012064656c65676174650001244163636f756e74496400012870726f78795f7479706598012450726f78795479706500011464656c617910012c426c6f636b4e756d626572000065050000026105006905000004086d0518006d050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454017105045300000400750501185665633c543e00007105083070616c6c65745f70726f787930416e6e6f756e63656d656e740c244163636f756e7449640100104861736801342c426c6f636b4e756d6265720110000c01107265616c0001244163636f756e74496400012463616c6c5f686173683401104861736800011868656967687410012c426c6f636b4e756d6265720000750500000271050079050c3070616c6c65745f70726f78791870616c6c6574144572726f720404540001201c546f6f4d616e79000004210154686572652061726520746f6f206d616e792070726f786965732072656769737465726564206f7220746f6f206d616e7920616e6e6f756e63656d656e74732070656e64696e672e204e6f74466f756e640001047450726f787920726567697374726174696f6e206e6f7420666f756e642e204e6f7450726f7879000204cc53656e646572206973206e6f7420612070726f7879206f6620746865206163636f756e7420746f2062652070726f786965642e2c556e70726f787961626c650003042101412063616c6c20776869636820697320696e636f6d70617469626c652077697468207468652070726f7879207479706527732066696c7465722077617320617474656d707465642e244475706c69636174650004046c4163636f756e7420697320616c726561647920612070726f78792e304e6f5065726d697373696f6e000504150143616c6c206d6179206e6f74206265206d6164652062792070726f78792062656361757365206974206d617920657363616c617465206974732070726976696c656765732e2c556e616e6e6f756e636564000604d0416e6e6f756e63656d656e742c206966206d61646520617420616c6c2c20776173206d61646520746f6f20726563656e746c792e2c4e6f53656c6650726f78790007046443616e6e6f74206164642073656c662061732070726f78792e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e7d050c406172676f6e5f7072696d697469766573107469636b185469636b657200000801507469636b5f6475726174696f6e5f6d696c6c69732c010c7536340001746368616e6e656c5f686f6c645f65787069726174696f6e5f7469636b732c01105469636b000081050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540134045300000400590201185665633c543e000085050c3070616c6c65745f7469636b731870616c6c6574144572726f72040454000100048054686520604572726f726020656e756d206f6620746869732070616c6c65742e89050c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b01300456018d050453000004009d05013842547265654d61703c4b2c20563e00008d050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454019105045300000400990501185665633c543e00009105084870616c6c65745f6d696e696e675f736c6f74444d696e65724e6f6e636553636f72696e6704045400001001146e6f6e6365d5020110553235360001386c6173745f77696e5f626c6f636b4d0501644f7074696f6e3c426c6f636b4e756d626572466f723c543e3e00014c626c6f636b735f776f6e5f696e5f6672616d659c010c7531360001786672616d655f73746172745f626c6f636b735f776f6e5f737572706c75739505010c693136000095050000050a0099050000029105009d05042042547265654d617008044b01300456018d05000400a105000000a105000002a50500a50500000408308d0500a90500000408301000ad050c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b0100045601ac045300000400b105013842547265654d61703c4b2c20563e0000b105042042547265654d617008044b0100045601ac000400b505000000b505000002b90500b9050000040800ac00bd050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401c105045300000400c50501185665633c543e0000c1050c406172676f6e5f7072696d69746976657328626c6f636b5f7365616c384d696e696e6742696453746174730000100128626964735f636f756e7410010c7533320001386269645f616d6f756e745f6d696e18011c42616c616e63650001386269645f616d6f756e745f6d617818011c42616c616e63650001386269645f616d6f756e745f73756d18011c42616c616e63650000c505000002c10500c9050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540118045300000400cd0501185665633c543e0000cd050000021800d1050c406172676f6e5f7072696d69746976657328626c6f636b5f7365616c404d696e696e67536c6f74436f6e66696700000c01887469636b735f6265666f72655f6269645f656e645f666f725f7672665f636c6f73652c01105469636b00014c7469636b735f6265747765656e5f736c6f74732c01105469636b000178736c6f745f62696464696e675f73746172745f61667465725f7469636b732c01105469636b0000d5050c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b013004560110045300000400d905013842547265654d61703c4b2c20563e0000d905042042547265654d617008044b013004560110000400dd05000000dd05000002a90500e1050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540110045300000400e50501185665633c543e0000e5050000021000e9050c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b013004560130045300000400ed05013842547265654d61703c4b2c20563e0000ed05042042547265654d617008044b013004560130000400f105000000f105000002f50500f50500000408303000f9050c3473705f61726974686d65746963287065725f7468696e67731c50657263656e740000040008010875380000fd050c4870616c6c65745f6d696e696e675f736c6f741870616c6c6574144572726f7204045400012844536c6f744e6f7454616b696e67426964730000049842696464696e6720666f7220746865206e65787420636f686f72742068617320636c6f7365645c546f6f4d616e79426c6f636b52656769737472616e74730001048854686520636f686f727420726567697374726174696f6e206f766572666c6f7765646c496e73756666696369656e744f776e657273686970546f6b656e73000204f8546869732066756e64696e67206163636f756e7420646f6573206e6f7420686f6c6420746865206d696e696d756d206172676f6e6f7473206e656564656424426964546f6f4c6f77000304cc54686520676976656e206269642069736e2774206869676820656e6f75676820746f20626520696e2074686520636f686f72748443616e6e6f7452656769737465724f7665726c617070696e6753657373696f6e73000404c0416e206163636f756e742063616e206f6e6c792068617665206f6e652061637469766520726567697374726174696f6e6843616e6e6f744368616e676546756e64696e674163636f756e74000504f843616e6e6f742072652d726567697374657220616e206163636f756e742077697468206120646966666572656e742066756e64696e67206163636f756e7444496e73756666696369656e7446756e6473000604fc5468652066756e64696e67206163636f756e7420646f6573206e6f74206861766520656e6f7567682066756e647320746f20636f76657220746865206269644842696443616e6e6f7442655265647563656400070480546865206d696e696e67206269642063616e6e6f74206265207265647563656440496e76616c6964426964416d6f756e740008048842696473206d75737420626520696e20616c6c6f77656420696e6372656d656e747344556e7265636f76657261626c65486f6c640009049c546865206172676f6e6f7473206f6e20686f6c642063616e6e6f742062652072656c6561736564048054686520604572726f726020656e756d206f6620746869732070616c6c65742e01060c406172676f6e5f7072696d6974697665731c626974636f696e245574786f56616c7565000014011c7574786f5f69643001185574786f49640001347363726970745f7075626b657905060164426974636f696e436f7369676e5363726970745075626b65790001207361746f736869732c01205361746f7368697300014c7375626d69747465645f61745f6865696768742c0134426974636f696e48656967687400017077617463685f666f725f7370656e745f756e74696c5f6865696768742c0134426974636f696e486569676874000005060c406172676f6e5f7072696d6974697665731c626974636f696e64426974636f696e436f7369676e5363726970745075626b6579000104145032575348040130777363726970745f68617368340110483235360000000009060c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b013004560101060453000004000d06013842547265654d61703c4b2c20563e00000d06042042547265654d617008044b01300456010106000400110600000011060000021506001506000004083001060019060c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b01cc045601300453000004001d06013842547265654d61703c4b2c20563e00001d06042042547265654d617008044b01cc0456013000040021060000002106000002250600250600000408cc300029060c406172676f6e5f7072696d6974697665731c626974636f696e38426974636f696e4e6574776f726b0001101c426974636f696e0000001c546573746e6574000100185369676e65740002001c52656774657374000300002d060c5070616c6c65745f626974636f696e5f7574786f731870616c6c6574144572726f7204045400013c344e6f5065726d697373696f6e73000004bc4f6e6c7920616e204f7261636c65204f70657261746f722063616e20706572666f726d207468697320616374696f6e5c4e6f426974636f696e436f6e6669726d6564426c6f636b00010405014e6f204f7261636c652d70726f766964656420626974636f696e20626c6f636b20686173206265656e2070726f766964656420746f20746865206e6574776f726b64496e73756666696369656e74426974636f696e416d6f756e740002046c496e73756666696369656e7420626974636f696e20616d6f756e74604e6f426974636f696e507269636573417661696c61626c65000304a04e6f207072696365732061726520617661696c61626c6520746f206d696e7420626974636f696e73505363726970745075626b6579436f6e666c696374000404a05363726970745075624b657920697320616c7265616479206265696e672077616974656420666f72345574786f4e6f744c6f636b6564000504544c6f636b6564205574786f204e6f7420466f756e6458526564656d7074696f6e73556e617661696c61626c650006048c526564656d7074696f6e73206e6f742063757272656e746c7920617661696c61626c6560496e76616c6964426974636f696e53796e6348656967687400070494496e76616c696420626974636f696e2073796e632068656967687420617474656d7074656464426974636f696e4865696768744e6f74436f6e6669726d656400080480426974636f696e20686569676874206e6f7420636f6e6669726d656420796574404d61785574786f73457863656564656400090480546f6f206d616e79205554584f7320617265206265696e67207761746368656450496e76616c6964426974636f696e536372697074000a04644c6f636b696e672073637269707420686173206572726f72733c4475706c69636174655574786f4964000b04844475706c696361746564205574786f49642e20416c726561647920696e20757365644d617843616e6469646174655574786f734578636565646564000c04dc546f6f206d616e792063616e646964617465205554584f7320617265206265696e672073746f72656420666f722074686973206c6f636b405574786f4e6f7443616e646964617465000d04d0546865205554584f207265666572656e636520646f6573206e6f74206d617020746f20612063616e64696461746520656e747279444c6f636b416c726561647946756e646564000e04b854686973204c6f636b20616c72656164792068617320616e2061747461636865642066756e64696e67205554584f048054686520604572726f726020656e756d206f6620746869732070616c6c65742e31060c406172676f6e5f7072696d697469766573147661756c74145661756c7408244163636f756e74496401001c42616c616e636501180034014c6f70657261746f725f6163636f756e745f69640001244163636f756e74496400013873656375726974697a6174696f6ec0011c42616c616e636500015473656375726974697a6174696f6e5f746172676574c0011c42616c616e636500015473656375726974697a6174696f6e5f6c6f636b6564c0011c42616c616e636500018473656375726974697a6174696f6e5f70656e64696e675f61637469766174696f6ec0011c42616c616e636500013c6c6f636b65645f7361746f736869732c01205361746f7368697300015073656375726974697a65645f7361746f736869732c01205361746f7368697300017c73656375726974697a6174696f6e5f72656c656173655f7363686564756c65350601d8426f756e64656442547265654d61703c426974636f696e4865696768742c2042616c616e63652c20436f6e73745533323c3336363e3e00015073656375726974697a6174696f6e5f726174696f6503012446697865645531323800012469735f636c6f736564200110626f6f6c0001147465726d736103014c5661756c745465726d733c42616c616e63653e00013470656e64696e675f7465726d734506018c4f7074696f6e3c285469636b2c205661756c745465726d733c42616c616e63653e293e00012c6f70656e65645f7469636b2c01105469636b000035060c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b0130045601180453000004003906013842547265654d61703c4b2c20563e00003906042042547265654d617008044b0130045601180004003d060000003d06000002410600410600000408301800450604184f7074696f6e0404540149060108104e6f6e6500000010536f6d65040049060000010000490600000408306103004d06000004085106100051060c406172676f6e5f7072696d6974697665731c626974636f696e2c426974636f696e5850756200001801287075626c69635f6b65797d03015c436f6d70726573736564426974636f696e5075626b65790001146465707468550601087538000148706172656e745f66696e6765727072696e7448013c5850756246696e6765727072696e740001306368696c645f6e756d626572d4013c585075624368696c644e756d626572000128636861696e5f636f64650401205b75383b2033325d00011c6e6574776f726b5906012c4e6574776f726b4b696e6400005506000006080059060c406172676f6e5f7072696d6974697665731c626974636f696e2c4e6574776f726b4b696e64000108104d61696e0000001054657374000100005d060c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540110045300000400e50501185665633c543e000061060c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f7365743c426f756e646564425472656553657408045401300453000004006506012c42547265655365743c543e000065060420425472656553657404045401300004006906000000690600000230006d060000040810000071060c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f7365743c426f756e646564425472656553657408045401100453000004007506012c42547265655365743c543e00007506042042547265655365740404540110000400e50500000079060c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454017d06045300000400810601185665633c543e00007d060c3470616c6c65745f7661756c74731870616c6c6574445661756c744672616d65526576656e756504045400004001206672616d655f69642c011c4672616d654964000160626974636f696e5f6c6f636b5f6665655f726576656e7565c00128543a3a42616c616e6365000188626974636f696e5f6c6f636b5f6665655f636f75706f6e5f76616c75655f75736564c00128543a3a42616c616e6365000154626974636f696e5f6c6f636b735f63726561746564d4010c753332000190626974636f696e5f6c6f636b735f6e65775f6c69717569646974795f70726f6d69736564c00128543a3a42616c616e6365000180626974636f696e5f6c6f636b735f72656c65617365645f6c6971756964697479c00128543a3a42616c616e6365000170626974636f696e5f6c6f636b735f61646465645f7361746f736869732c01205361746f7368697300017c626974636f696e5f6c6f636b735f72656c65617365645f7361746f736869732c01205361746f7368697300016073656375726974697a6174696f6e5f616374697661746564c00128543a3a42616c616e636500016473656375726974697a6174696f6e5f72656c6f636b61626c65c00128543a3a42616c616e636500013873656375726974697a6174696f6ec00128543a3a42616c616e636500015c74726561737572795f7661756c745f6561726e696e6773c00128543a3a42616c616e636500015c74726561737572795f746f74616c5f6561726e696e6773c00128543a3a42616c616e636500015874726561737572795f7661756c745f6361706974616cc00128543a3a42616c616e636500016474726561737572795f65787465726e616c5f6361706974616cc00128543a3a42616c616e636500014c756e636f6c6c65637465645f726576656e7565c00128543a3a42616c616e6365000081060000027d060085060c3470616c6c65745f7661756c74731870616c6c6574144572726f72040454000174384e6f4d6f72655661756c744964730000049c496e7465726e616c6c792c20746865207661756c742069647320617265206d61786564206f757444496e73756666696369656e7446756e6473000104ec546865207573657220646f65736e2774206861766520656e6f7567682066756e647320746f20636f6d706c6574652074686973207265717565737458496e73756666696369656e745661756c7446756e647300020429015468657265206172656e277420656e6f7567682066756e647320696e20746865207661756c7420746f20636f766572207468652072657175657374656420626974636f696e206c6f636b684163636f756e7442656c6f774d696e696d756d42616c616e63650003045d015468652070726f706f736564207472616e73616374696f6e20776f756c642074616b6520746865206163636f756e742062656c6f7720746865206d696e696d756d20286578697374656e7469616c292062616c616e63652c5661756c74436c6f7365640004045054686973207661756c7420697320636c6f73656448496e76616c69645661756c74416d6f756e74000504dc46756e64696e6720776f756c6420726573756c7420696e20616e206f766572666c6f77206f66207468652062616c616e63652074797065845661756c74526564756374696f6e42656c6f7753656375726974697a6174696f6e00060439015468697320726564756374696f6e20696e207661756c742073656375726974697a6174696f6e20676f65732062656c6f772074686520616d6f756e7420616c726561647920636f6d6d697474656454496e76616c696453656375726974697a6174696f6e0007084101416e20696e76616c69642073656375726974697a6174696f6e2070657263656e74207761732070726f766964656420666f7220746865207661756c742e204e4f54453a2069742063616e6e6f742062655c64656372656173656420286f72206e6567617469766529585265757365645661756c74426974636f696e58707562000804bc546865207661756c7420626974636f696e20787075626b65792068617320616c7265616479206265656e207573656450496e76616c6964426974636f696e536372697074000904c854686520626974636f696e2073637269707420746f206c6f636b207468697320626974636f696e20686173206572726f727338496e76616c6964587075626b6579000a0460556e61626c6520746f206465636f646520787075626b65794057726f6e67587075624e6574776f726b000b044857726f6e672058707562204e6574776f726b34556e73616665587075626b6579000c040901546865205850756220697320756e7361666520746f2075736520696e2061207075626c696320626c6f636b636861696e2028616b612c20756e68617264656e65642970556e61626c65546f4465726976655661756c74587075624368696c64000d0478556e61626c6520746f2064657269766520787075626b6579206368696c645c426974636f696e436f6e76657273696f6e4661696c6564000e04b8426974636f696e20636f6e76657273696f6e20746f20636f6d70726573736564207075626b6579206661696c6564344e6f5065726d697373696f6e73000f0060486f6c64556e65787065637465646c794d6f64696669656400100044556e7265636f76657261626c65486f6c64001100345661756c744e6f74466f756e64001200445661756c744e6f745965744163746976650013046c546865207661756c74206973206e6f742079657420616374697665784e6f5661756c74426974636f696e5075626b657973417661696c61626c65001404884e6f205661756c74207075626c6963206b6579732061726520617661696c61626c65645465726d734d6f64696669636174696f6e4f766572666c6f77001504ec546865207465726d73206d6f64696669636174696f6e206c69737420636f756c64206e6f742068616e646c6520616e79206d6f7265206974656d736c5465726d734368616e6765416c72656164795363686564756c6564001604a45465726d732061726520616c7265616479207363686564756c656420746f206265206368616e67656434496e7465726e616c4572726f7200170494416e20696e7465726e616c2070726f63657373696e67206572726f72206f6363757272656488556e61626c65546f47656e65726174655661756c74426974636f696e5075626b6579001804b4556e61626c6520746f2067656e65726174652061206e6577207661756c7420626974636f696e207075626b65797446756e64696e674368616e6765416c72656164795363686564756c656400190494412066756e64696e67206368616e676520697320616c7265616479207363686564756c65646c50656e64696e67436f7369676e734265666f7265436f6c6c656374001a04010141207661756c74206d75737420636c656172206f757420616c6c2070656e64696e6720636f7369676e73206265666f72652069742063616e20636f6c6c6563749c50656e64696e674f727068616e65645574786f436f7369676e734265666f7265436f6c6c656374001b041d0141207661756c74206d75737420636c656172206f757420616c6c2070656e64696e67206f727068616e20636f7369676e73206265666f72652069742063616e20636f6c6c656374584163636f756e74416c72656164794861735661756c74001c04d4416e206163636f756e74206d6179206f6e6c79206265206173736f636961746564207769746820612073696e676c65207661756c74048054686520604572726f726020656e756d206f6620746869732070616c6c65742e89060c5070616c6c65745f626974636f696e5f6c6f636b731870616c6c6574344c6f636b6564426974636f696e04045400005001207661756c745f6964d4011c5661756c7449640001486c69717569646974795f70726f6d69736564c00128543a3a42616c616e63650001486c6f636b65645f6d61726b65745f72617465c00128543a3a42616c616e63650001346f776e65725f6163636f756e74000130543a3a4163636f756e74496400015073656375726974697a6174696f6e5f726174696fe0012446697865645531323800013473656375726974795f66656573c00128543a3a42616c616e6365000140636f75706f6e5f706169645f66656573c00128543a3a42616c616e63650001207361746f736869732c01205361746f736869730001347574786f5f7361746f736869738d0101404f7074696f6e3c5361746f736869733e0001307661756c745f7075626b65797d03015c436f6d70726573736564426974636f696e5075626b65790001487661756c745f636c61696d5f7075626b65797d03015c436f6d70726573736564426974636f696e5075626b65790001487661756c745f787075625f736f75726365738d0601cc285850756246696e6765727072696e742c20585075624368696c644e756d6265722c20585075624368696c644e756d626572290001306f776e65725f7075626b65797d03015c436f6d70726573736564426974636f696e5075626b65790001487661756c745f636c61696d5f6865696768742c0134426974636f696e4865696768740001446f70656e5f636c61696d5f6865696768742c0134426974636f696e486569676874000144637265617465645f61745f6865696768742c0134426974636f696e4865696768740001487574786f5f7363726970745f7075626b657905060164426974636f696e436f7369676e5363726970745075626b657900012469735f66756e646564200110626f6f6c00015066756e645f686f6c645f657874656e73696f6e73350601e4426f756e64656442547265654d61703c426974636f696e4865696768742c20543a3a42616c616e63652c20436f6e73745533323c3336363e3e000158637265617465645f61745f6172676f6e5f626c6f636bd40144426c6f636b4e756d626572466f723c543e00008d060000040c4810100091060000040810300095060c5070616c6c65745f626974636f696e5f6c6f636b731870616c6c6574484c6f636b52656c6561736552657175657374041c42616c616e636501180018011c7574786f5f69642c01185574786f49640001207661756c745f6964d4011c5661756c74496400014c626974636f696e5f6e6574776f726b5f6665652c01205361746f73686973000140636f7369676e5f6475655f6672616d652c011c4672616d654964000140746f5f7363726970745f7075626b65799903014c426974636f696e5363726970745075626b6579000140726564656d7074696f6e5f7072696365c0011c42616c616e6365000099060000040800cc009d060c5070616c6c65745f626974636f696e5f6c6f636b731870616c6c6574304f727068616e65645574786f042c426c6f636b4e756d62657201100014011c7574786f5f69642c01185574786f49640001207661756c745f6964d4011c5661756c7449640001207361746f736869732c01205361746f7368697300016c7265636f726465645f6172676f6e5f626c6f636b5f6e756d626572d4012c426c6f636b4e756d626572000138636f7369676e5f72657175657374a10601b84f7074696f6e3c4f727068616e65645574786f436f7369676e526571756573743c426c6f636b4e756d6265723e3e0000a10604184f7074696f6e04045401a5060108104e6f6e6500000010536f6d650400a5060000010000a5060c5070616c6c65745f626974636f696e5f6c6f636b731870616c6c6574644f727068616e65645574786f436f7369676e52657175657374042c426c6f636b4e756d6265720110000c014c626974636f696e5f6e6574776f726b5f6665653001205361746f73686973000140746f5f7363726970745f7075626b65799903014c426974636f696e5363726970745075626b6579000174637265617465645f61745f6172676f6e5f626c6f636b5f6e756d62657210012c426c6f636b4e756d6265720000a9060c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f7365743c426f756e646564425472656553657408045401300453000004006506012c42547265655365743c543e0000ad060c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f7365743c426f756e646564425472656553657408045401300453000004006506012c42547265655365743c543e0000b1060c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f7365743c426f756e6465644254726565536574080454019906045300000400b506012c42547265655365743c543e0000b50604204254726565536574040454019906000400b906000000b906000002990600bd060c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540141060453000004003d0601185665633c543e0000c1060c5070616c6c65745f626974636f696e5f6c6f636b731870616c6c657424466565436f75706f6e041c42616c616e63650118001001207661756c745f6964d4011c5661756c7449640001306d61785f7361746f736869732c01205361746f7368697300014065787069726174696f6e5f6672616d652c011c4672616d6549640001406d61785f6665655f706c75735f7469708501013c4f7074696f6e3c42616c616e63653e0000c50600000408300400c9060c5070616c6c65745f626974636f696e5f6c6f636b731870616c6c6574144572726f720404540001a044496e73756666696369656e7446756e647300000058496e73756666696369656e745661756c7446756e6473000100844163636f756e74576f756c64476f42656c6f774d696e696d756d42616c616e63650002045d015468652070726f706f736564207472616e73616374696f6e20776f756c642074616b6520746865206163636f756e742062656c6f7720746865206d696e696d756d20286578697374656e7469616c292062616c616e63652c5661756c74436c6f7365640003045054686973207661756c7420697320636c6f73656448496e76616c69645661756c74416d6f756e74000404dc46756e64696e6720776f756c6420726573756c7420696e20616e206f766572666c6f77206f66207468652062616c616e636520747970654c526564656d7074696f6e4e6f744c6f636b6564000504b85468697320626974636f696e20726564656d7074696f6e20686173206e6f74206265656e206c6f636b656420696e98426974636f696e52656c65617365496e6974696174696f6e446561646c696e65506173736564000604c454686520626974636f696e20686173207061737365642074686520646561646c696e6520746f2072656c6561736520697444426974636f696e466565546f6f48696768000704b05468652066656520666f72207468697320626974636f696e2072656c6561736520697320746f6f20686967684c426974636f696e5574786f4e6f74466f756e64000804ec54686520426974636f696e20556e7370656374205472616e73616374696f6e204f757470757420285554584f2920776173206e6f7420666f756e6488426974636f696e556e61626c65546f42654465636f646564466f7252656c65617365000904e85468697320626974636f696e20636f7369676e2073637269707420636f756c646e2774206265206465636f64656420666f722072656c6561736584426974636f696e5369676e6174757265556e61626c65546f42654465636f646564000a04d85468697320626974636f696e207369676e617475726520636f756c646e2774206265206465636f64656420666f722072656c6561736578426974636f696e5075626b6579556e61626c65546f42654465636f646564000b04cc5468697320626974636f696e207075626b657920636f756c646e2774206265206465636f64656420666f722072656c6561736564426974636f696e496e76616c6964436f7369676e6174757265000c04e454686520636f7369676e207369676e6174757265206973206e6f742076616c696420666f722074686520626974636f696e2072656c6561736568496e73756666696369656e745361746f736869734c6f636b6564000d04a8546865206d696e696d756d206e756d626572206f66207361746f7368697320776173206e6f74206d6574604e6f426974636f696e507269636573417661696c61626c65000e0435015468652070726963652070726f766964657220686173206e6f20626974636f696e2070726963657320617661696c61626c652e205468697320697320612074656d706f72617279206572726f7250496e76616c6964426974636f696e536372697074000f04c854686520626974636f696e2073637269707420746f206c6f636b207468697320626974636f696e20686173206572726f7273344e6f5065726d697373696f6e73001004e4546865207573657220646f6573206e6f742068617665207065726d697373696f6e7320746f20706572666f726d207468697320616374696f6e60486f6c64556e65787065637465646c794d6f646966696564001104090154686520657870656374656420616d6f756e74206f662066756e647320746f2072657475726e2066726f6d20686f6c6420776173206e6f7420617661696c61626c6544556e7265636f76657261626c65486f6c64001204a054686520686f6c64206f6e2066756e647320636f756c64206e6f74206265207265636f7665726564345661756c744e6f74466f756e640013045c546865207661756c7420776173206e6f7420666f756e644447656e657269635661756c744572726f720400cd0601285661756c744572726f7200140494416e206572726f72206f6363757272656420696e20746865207661756c74206d6f64756c65304c6f636b4e6f74466f756e640015049454686520426974636f696e204c6f636b207265636f726420776173206e6f7420666f756e64784e6f5661756c74426974636f696e5075626b657973417661696c61626c65001604884e6f205661756c74207075626c6963206b6579732061726520617661696c61626c6588556e61626c65546f47656e65726174655661756c74426974636f696e5075626b6579001704a4556e61626c6520746f2067656e65726174652061206e6577207661756c74207075626c6963206b6579445661756c744e6f745965744163746976650018047054686973207661756c74206973206e6f7420796574206163746976656445787069726174696f6e4174426c6f636b4f766572666c6f77001904c0416e206f766572666c6f77206f63637572726564207265636f7264696e672061206c6f636b2065787069726174696f6e544e6f52617463686574696e67417661696c61626c65001a04484e6f7468696e6720746f2072617463686574584c6f636b496e50726f636573734f6652656c65617365001b04c041206c6f636b20696e2070726f63657373206f662072656c656173652063616e6e6f7420626520726174636865746564484c6f636b50656e64696e6746756e64696e67001c04c8546865206c6f636b2066756e64696e6720686173206e6f74206265656e20636f6e6669726d6564206f6e20626974636f696e344f766572666c6f774572726f72001d042101416e206f766572666c6f77206f7220756e646572666c6f77206f63637572726564207768696c652063616c63756c6174696e672074686520726564656d7074696f6e2070726963657c496e656c696769626c654d6963726f676f6e52617465526571756573746564001e04c4416e20696e656c696769626c65206d6963726f676f6e20726174652070657220627463207761732072657175657374656440496e76616c6964466565436f75706f6e001f04c85468652070726f76696465642066656520636f75706f6e20697320616c72656164792075736564206f7220696e76616c696454496e76616c6964466565436f75706f6e50726f6f66002004a05468652070726f76696465642066656520636f75706f6e2070726f6f6620697320696e76616c6964704d6178466565436f75706f6e5361746f73686973457863656564656400210859015468697320626974636f696e206c6f636b20657863656564656420746865206d6178696d756d20616c6c6f776564206e756d626572206f66207361746f7368697320666f72207468652070726f76696465642066656518636f75706f6e58466565436f75706f6e416c7265616479457869737473002204745468652066656520636f75706f6e20616c72656164792065786973747344466565436f75706f6e5265717569726564002304f4496e697469616c697a696e672061206c6f636b20666f7220616e6f74686572206163636f756e7420726571756972657320612066656520636f75706f6e6c4f727068616e65645574786f46756e64696e67436f6e666c696374002404050143616e6e6f742066756e64207769746820616e206f727068616e6564207574786f206166746572206c6f636b2066756e64696e6720697320636f6e6669726d6564704f727068616e65645574786f52656c65617365526571756573746564002504ec43616e6e6f74206c6f636b20616e206f727068616e6564207574786f207769746820612070656e64696e672072656c6561736520726571756573746c46756e64696e675574786f43616e6e6f74426552656c6561736564002604dc43616e6e6f74207265717565737420616e206f727068616e65642072656c6561736520666f72207468652066756e64696e67205554584f984d61784f727068616e65645574786f52656c6561736552657175657374734578636565646564002704c8546f6f206d616e79206f727068616e6564207574786f2072656c6561736520726571756573747320666f722061206c6f636b048054686520604572726f726020656e756d206f6620746869732070616c6c65742ecd060c406172676f6e5f7072696d697469766573147661756c74285661756c744572726f720001302c5661756c74436c6f736564000000684163636f756e74576f756c64426542656c6f774d696e696d756d00010044496e73756666696369656e7446756e647300020058496e73756666696369656e745661756c7446756e647300030060486f6c64556e65787065637465646c794d6f64696669656400040044556e7265636f76657261626c65486f6c64000500345661756c744e6f74466f756e64000600784e6f5661756c74426974636f696e5075626b657973417661696c61626c6500070088556e61626c65546f47656e65726174655661756c74426974636f696e5075626b657900080050496e76616c6964426974636f696e53637269707400090034496e7465726e616c4572726f72000a00445661756c744e6f74596574416374697665000b0000d10600000408f41000d5060c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540100045300000400150301185665633c543e0000d9060c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454011101045300000400dd0601185665633c543e0000dd06000002110100e1060c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401e506045300000400e90601185665633c543e0000e50600000408300400e906000002e50600ed060c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b0110045601f4045300000400f106013842547265654d61703c4b2c20563e0000f106042042547265654d617008044b0110045601f4000400f506000000f506000002f90600f9060000040810f400fd060c3c70616c6c65745f6e6f7461726965731870616c6c6574144572726f720404540001244050726f706f73616c4e6f74466f756e64000004985468652070726f706f73616c20746f20616374697661746520776173206e6f7420666f756e644c4d61784e6f74617269657345786365656465640001048c4d6178696d756d206e756d626572206f66206e6f746172696573206578636565646564704d617850726f706f73616c73506572426c6f636b4578636565646564000204b84d6178696d756d206e756d626572206f662070726f706f73616c732070657220626c6f636b206578636565646564444e6f74416e4163746976654e6f74617279000304f054686973206e6f74617279206973206e6f74206163746976652c20736f2074686973206368616e67652063616e6e6f74206265206d6164652079657454496e76616c69644e6f746172794f70657261746f72000404a8496e76616c6964206e6f74617279206f70657261746f7220666f722074686973206f7065726174696f6e3c4e6f4d6f72654e6f74617279496473000504f4416e20696e7465726e616c206572726f7220686173206f636375727265642e20546865206e6f746172792069647320617265206578686175737465642e504566666563746976655469636b546f6f536f6f6e0006049c5468652070726f706f73656420656666656374697665207469636b20697320746f6f20736f6f6e2c546f6f4d616e794b65797300070458546f6f206d616e7920696e7465726e616c206b65797334496e76616c69644e6f7461727900080454546865206e6f7461727920697320696e76616c6964048054686520604572726f726020656e756d206f6620746869732070616c6c65742e01070000040810c9030005070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454010907045300000400110701185665633c543e00000907000004080d0720000d070c406172676f6e5f7072696d697469766573186e6f74617279604e6f746172794e6f7465626f6f6b4b657944657461696c73000014013c6e6f7465626f6f6b5f6e756d626572d401384e6f7465626f6f6b4e756d6265720001107469636b2c01105469636b000140626c6f636b5f766f7465735f726f6f743401104832353600012c7365637265745f686173683401484e6f7465626f6f6b53656372657448617368000134706172656e745f736563726574c90201584f7074696f6e3c4e6f7465626f6f6b5365637265743e0000110700000209070015070000040c103019010019070c3c70616c6c65745f6e6f7465626f6f6b1870616c6c6574144572726f7204045400013c5c4475706c69636174654e6f7465626f6f6b4e756d626572000004a054686973206e6f7465626f6f6b2068617320616c7265616479206265656e207375626d6974746564544d697373696e674e6f7465626f6f6b4e756d6265720001047c4e6f7465626f6f6b73207265636569766564206f7574206f66206f726465725c4e6f7465626f6f6b5469636b416c726561647955736564000204b041206e6f7465626f6f6b2077617320616c72656164792070726f76696465642061742074686973207469636b60496e76616c69644e6f7465626f6f6b5369676e6174757265000304a0546865207369676e6174757265206f6620746865206e6f7465626f6f6b20697320696e76616c696454496e76616c696453656372657450726f7669646564000404f454686520736563726574206f72207365637265742068617368206f662074686520706172656e74206e6f7465626f6f6b20646f206e6f74206d6174636858436f756c644e6f744465636f64654e6f7465626f6f6b000504c0436f756c64206e6f74206465636f646520746865207363616c65206279746573206f6620746865206e6f7465626f6f6b5c4475706c69636174654e6f7465626f6f6b446967657374000604bc546865206e6f7465626f6f6b206469676573742077617320696e636c75646564206d6f7265207468616e206f6e6365544d697373696e674e6f7465626f6f6b44696765737400070490546865206e6f7465626f6f6b2064696765737420776173206e6f7420696e636c7564656454496e76616c69644e6f7465626f6f6b446967657374000804e0546865206e6f7465626f6f6b2064696765737420646964206e6f74206d617463682074686520696e636c75646564206e6f7465626f6f6b73844d756c7469706c654e6f7465626f6f6b496e686572656e747350726f76696465640009046c4d756c7469706c6520696e686572656e74732070726f766964656434496e7465726e616c4572726f72000a04a0556e61626c6520746f20747261636b20746865206e6f7465626f6f6b206368616e6765206c697374804e6f7465626f6f6b5375626d6974746564466f724c6f636b65644e6f74617279000b04350141206e6f7465626f6f6b20776173207375626d697474656420666f722061206e6f746172792074686174206661696c65642061756469742c207768696368206973206e6f7420616c6c6f77656460496e76616c6964526570726f636573734e6f7465626f6f6b000c0468496e76616c696420726570726f63657373206e6f7465626f6f6b54496e76616c69644e6f746172794f70657261746f72000d045c496e76616c6964206e6f74617279206f70657261746f7274496e76616c69644e6f7465626f6f6b5375626d697373696f6e5469636b000e0480496e76616c6964206e6f7465626f6f6b207375626d697373696f6e207469636b048054686520604572726f726020656e756d206f6620746869732070616c6c65742e1d07085470616c6c65745f636861696e5f7472616e73666572445175657565645472616e736665724f757408244163636f756e74496401001c42616c616e63650118001001286163636f756e745f69640001244163636f756e744964000118616d6f756e7418011c42616c616e636500013c65787069726174696f6e5f7469636b3001105469636b0001246e6f746172795f69641001204e6f746172794964000021070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540110045300000400e50501185665633c543e0000250708346672616d655f737570706f72742050616c6c6574496400000400b102011c5b75383b20385d000029070c5470616c6c65745f636861696e5f7472616e736665721870616c6c6574144572726f72040454000120644d6178426c6f636b5472616e7366657273457863656564656400000044496e73756666696369656e7446756e6473000104b0496e73756666696369656e742062616c616e636520746f206372656174652074686973207472616e7366657268496e73756666696369656e744e6f746172697a656446756e6473000204d0496e73756666696369656e742062616c616e636520746f2066756c66696c6c2061206d61696e636861696e207472616e7366657294496e76616c69644f724475706c6963617465644c6f63616c636861696e5472616e73666572000304d8546865207472616e736665722077617320616c7265616479207375626d697474656420696e20612070726576696f757320626c6f636ba44e6f7465626f6f6b496e636c75646573457870697265644c6f63616c636861696e5472616e73666572000404410141207472616e7366657220776173207375626d697474656420696e20612070726576696f757320626c6f636b20627574207468652065787069726174696f6e20626c6f636b206861732070617373656470496e76616c69644e6f7461727955736564466f725472616e736665720005047c546865206e6f74617279206964206973206e6f7420726567697374657265645c4e6f746172794c6f636b6564466f725472616e73666572000604ec546865206e6f746172792069732063757272656e746c79206c6f636b656420616e642063616e6e6f742070726f63657373207472616e7366657273544e6f417661696c61626c655472616e7366657249640007049c4e6f207472616e7366657220494473206172652063757272656e746c7920617661696c61626c65048054686520604572726f726020656e756d206f6620746869732070616c6c65742e2d070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540130045300000400690601185665633c543e000031070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540118045300000400cd0501185665633c543e000035070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540139070453000004003d0701185665633c543e000039070c406172676f6e5f7072696d697469766573186e6f746172797c4e6f746172794e6f7465626f6f6b566f746544696765737444657461696c7300001401246e6f746172795f6964d401204e6f74617279496400013c6e6f7465626f6f6b5f6e756d626572d401384e6f7465626f6f6b4e756d6265720001107469636b2c01105469636b000144626c6f636b5f766f7465735f636f756e74d4010c753332000148626c6f636b5f766f74696e675f706f776572c00140426c6f636b566f74696e67506f77657200003d0700000239070041070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454014507045300000400490701185665633c543e000045070000040c3010180049070000024507004d070c5870616c6c65745f626c6f636b5f7365616c5f737065631870616c6c6574144572726f72040454000104684d61784e6f7465626f6f6b7341745469636b45786365656465640000041501546865206d6178696d756d206e756d626572206f66206e6f7465626f6f6b73206174207468652063757272656e74207469636b20686173206265656e206578636565646564048054686520604572726f726020656e756d206f6620746869732070616c6c65742e51070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540134045300000400590201185665633c543e000055070c3870616c6c65745f646f6d61696e731870616c6c6574144572726f720404540001144c446f6d61696e4e6f74526567697374657265640000047454686520646f6d61696e206973206e6f7420726567697374657265642e384e6f74446f6d61696e4f776e6572000104a85468652073656e646572206973206e6f7420746865206f776e6572206f662074686520646f6d61696e2e6c4661696c6564546f416464546f41646472657373486973746f7279000204944661696c656420746f2061646420746f20746865206164647265737320686973746f72792e644661696c6564546f4164644578706972696e67446f6d61696e000304a44661696c656420746f2061646420746f20746865206578706972696e6720646f6d61696e206c697374504163636f756e744465636f64696e674572726f72000404884572726f72206465636f64696e67206163636f756e742066726f6d206e6f74617279048054686520604572726f726020656e756d206f6620746869732070616c6c65742e59070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454015d07045300000400610701185665633c543e00005d07084870616c6c65745f70726963655f696e646578504370694d6561737572656d656e744275636b657400000c01287469636b5f72616e6765f5050130285469636b2c205469636b29000124746f74616c5f637069910101204172676f6e4350490001486d6561737572656d656e74735f636f756e7410010c753332000061070000025d070065070c4870616c6c65745f70726963655f696e6465781870616c6c6574144572726f72040454000110544e6f74417574686f72697a65644f70657261746f72000004904e6f7420617574686f72697a656420617320616e206f7261636c65206f70657261746f72304d697373696e6756616c7565000104344d697373696e672076616c756530507269636573546f6f4f6c6400020480546865207375626d6974746564207072696365732061726520746f6f206f6c64744d617850726963654368616e67655065725469636b4578636565646564000304884368616e676520696e206172676f6e20707269636520697320746f6f206c61726765048054686520604572726f726020656e756d206f6620746869732070616c6c65742e6907083870616c6c65745f6772616e6470612c53746f726564537461746504044e01100110104c6976650000003050656e64696e6750617573650801307363686564756c65645f61741001044e00011464656c61791001044e000100185061757365640002003450656e64696e67526573756d650801307363686564756c65645f61741001044e00011464656c61791001044e000300006d07083870616c6c65745f6772616e6470614c53746f72656450656e64696e674368616e676508044e0110144c696d697400001001307363686564756c65645f61741001044e00011464656c61791001044e0001406e6578745f617574686f7269746965737107016c426f756e646564417574686f726974794c6973743c4c696d69743e000118666f726365644d0501244f7074696f6e3c4e3e000071070c4c626f756e6465645f636f6c6c656374696f6e73407765616b5f626f756e6465645f766563385765616b426f756e646564566563080454016d01045300000400690101185665633c543e000075070c3870616c6c65745f6772616e6470611870616c6c6574144572726f7204045400011c2c50617573654661696c65640000080501417474656d707420746f207369676e616c204752414e445041207061757365207768656e2074686520617574686f72697479207365742069736e2774206c697665a42865697468657220706175736564206f7220616c72656164792070656e64696e67207061757365292e30526573756d654661696c65640001081101417474656d707420746f207369676e616c204752414e44504120726573756d65207768656e2074686520617574686f72697479207365742069736e277420706175736564a028656974686572206c697665206f7220616c72656164792070656e64696e6720726573756d65292e344368616e676550656e64696e67000204e8417474656d707420746f207369676e616c204752414e445041206368616e67652077697468206f6e6520616c72656164792070656e64696e672e1c546f6f536f6f6e000304bc43616e6e6f74207369676e616c20666f72636564206368616e676520736f20736f6f6e206166746572206c6173742e60496e76616c69644b65794f776e65727368697050726f6f66000404310141206b6579206f776e6572736869702070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e60496e76616c696445717569766f636174696f6e50726f6f660005043101416e2065717569766f636174696f6e2070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e584475706c69636174654f6666656e63655265706f727400060415014120676976656e2065717569766f636174696f6e207265706f72742069732076616c69642062757420616c72656164792070726576696f75736c79207265706f727465642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e79070c406172676f6e5f7072696d6974697665732470726f7669646572733c426c6f636b5365616c6572496e666f08244163636f756e74496401002c417574686f72697479496401b8000c015c626c6f636b5f617574686f725f6163636f756e745f69640001244163636f756e744964000168626c6f636b5f766f74655f726577617264735f6163636f756e74bc01444f7074696f6e3c4163636f756e7449643e000150626c6f636b5f7365616c5f617574686f726974798101014c4f7074696f6e3c417574686f7269747949643e00007d070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401a905045300000400dd0501185665633c543e000081070c4470616c6c65745f626c6f636b5f7365616c1870616c6c6574144572726f720404540001545c496e76616c6964566f74655365616c537472656e677468000004e454686520737472656e677468206f662074686520676976656e207365616c20646964206e6f74206d617463682063616c63756c6174696f6e7340496e76616c69645375626d697474657200010494566f7465206e6f74207375626d697474656420627920746865207269676874206d696e657264556e61626c65546f4465636f6465566f74654163636f756e740002047c436f756c64206e6f74206465636f64652074686520766f74652062797465735c556e72656769737465726564426c6f636b417574686f72000304a854686520626c6f636b20617574686f72206973206e6f7420612072656769737465726564206d696e657254496e76616c6964426c6f636b566f746550726f6f66000404f4546865206d65726b6c652070726f6f66206f6620766f746520696e636c7573696f6e20696e20746865206e6f7465626f6f6b20697320696e76616c6964604e6f4772616e64706172656e74566f74654d696e696d756d000504ac4e6f20766f7465206d696e696d756d20666f756e64206174206772616e64706172656e7420686569676874684475706c6963617465426c6f636b5365616c50726f766964656400060478546f6f206d616e7920626c6f636b207365616c73207375626d69747465645c496e73756666696369656e74566f74696e67506f776572000704590154686520626c6f636b20766f746520646964206e6f7420726561636820746865206d696e696d756d20766f74696e6720706f7765722061742074696d65206f6620746865206772616e64706172656e7420626c6f636b5c506172656e74566f74696e674b65794e6f74466f756e64000804cc4e6f207265676973746572656420766f74696e67206b657920666f756e6420666f722074686520706172656e7420626c6f636b68496e76616c6964566f74654772616e64706172656e7448617368000904a054686520626c6f636b20766f746520776173206e6f7420666f7220612076616c696420626c6f636b58496e656c696769626c654e6f7465626f6f6b55736564000a04cc546865206e6f7465626f6f6b20666f72207468697320766f746520776173206e6f7420656c696769626c6520746f20766f7465504e6f456c696769626c65566f74696e67526f6f74000b043d01546865206c6f6f6b757020746f20766572696679206120766f746527732061757468656e746963697479206973206e6f7420617661696c61626c6520666f722074686520676976656e20626c6f636b48436f756c644e6f744465636f6465566f7465000c04b4436f756c64206e6f74206465636f646520746865207363616c65206279746573206f662074686520766f746573684d61784e6f7465626f6f6b7341745469636b4578636565646564000d043901546f6f206d616e79206e6f7465626f6f6b732077657265207375626d697474656420666f72207468652063757272656e74207469636b2e2053686f756c64206e6f7420626520706f737369626c65684e6f436c6f736573744d696e6572466f756e64466f72566f7465000e047c4e6f20636c6f73657374206d696e657220666f756e6420666f7220766f746564426c6f636b566f7465496e76616c69645369676e6174757265000f047854686520766f7465207369676e61747572652077617320696e76616c696458496e76616c6964466f726b506f776572506172656e7400100464496e76616c696420666f726b20706f77657220706172656e7450426c6f636b5365616c4465636f64654572726f72001104d04120626c6f636b207365616c20617574686f7269747920636f756c64206e6f742062652070726f7065726c79206465636f6465645c496e76616c6964436f6d70757465426c6f636b5469636b001204dc436f6d7075746520626c6f636b732063616e7420626520616464656420696e207468652073616d65207469636b206173206120766f746558496e76616c69644d696e65724e6f6e636553636f7265001304b0546865206e6f6e63652073636f72652064697374616e636520737570706c69656420697320696e76616c6964604475706c6963617465566f7465426c6f636b41745469636b001404504475706c696361746520766f746520626c6f636b048054686520604572726f726020656e756d206f6620746869732070616c6c65742e85070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454017901045300000400750101185665633c543e000089070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540141060453000004003d0601185665633c543e00008d070000040c1830180091070c5070616c6c65745f626c6f636b5f726577617264731870616c6c6574144572726f72040454000100048054686520604572726f726020656e756d206f6620746869732070616c6c65742e95070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540199070453000004009d0701185665633c543e000099070000040c300018009d07000002990700a1070c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b0130045601180453000004003906013842547265654d61703c4b2c20563e0000a5070000040810a90700a9070c2c70616c6c65745f6d696e741870616c6c6574284d696e74416374696f6e0404420118000c01306172676f6e5f6275726e6564180104420001306172676f6e5f6d696e74656418010442000138626974636f696e5f6d696e746564180104420000ad070c2c70616c6c65745f6d696e741870616c6c6574144572726f720404540001044c546f6f4d616e7950656e64696e674d696e7473000000048054686520604572726f726020656e756d206f6620746869732070616c6c65742eb1070c4c626f756e6465645f636f6c6c656374696f6e73407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401b507045300000400bd0701185665633c543e0000b5070c3c70616c6c65745f62616c616e6365731474797065732c42616c616e63654c6f636b041c42616c616e63650118000c01086964b10201384c6f636b4964656e746966696572000118616d6f756e7418011c42616c616e636500011c726561736f6e73b907011c526561736f6e730000b9070c3c70616c6c65745f62616c616e6365731474797065731c526561736f6e7300010c0c466565000000104d6973630001000c416c6c00020000bd07000002b50700c1070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401c507045300000400c90701185665633c543e0000c5070c3c70616c6c65745f62616c616e6365731474797065732c52657365727665446174610844526573657276654964656e74696669657201b1021c42616c616e63650118000801086964b1020144526573657276654964656e746966696572000118616d6f756e7418011c42616c616e63650000c907000002c50700cd070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401d107045300000400d50701185665633c543e0000d10714346672616d655f737570706f72741874726169747318746f6b656e73106d697363204964416d6f756e740808496401a1011c42616c616e63650118000801086964a10101084964000118616d6f756e7418011c42616c616e63650000d507000002d10700d9070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401dd07045300000400e90701185665633c543e0000dd0714346672616d655f737570706f72741874726169747318746f6b656e73106d697363204964416d6f756e740808496401e1071c42616c616e63650118000801086964e10701084964000118616d6f756e7418011c42616c616e63650000e10708346172676f6e5f72756e74696d654c52756e74696d65467265657a65526561736f6e00010430426c6f636b526577617264730400e507018870616c6c65745f626c6f636b5f726577617264733a3a467265657a65526561736f6e00130000e5070c5070616c6c65745f626c6f636b5f726577617264731870616c6c657430467265657a65526561736f6e000104404d617475726174696f6e506572696f6400000000e907000002dd0700ed070c3c70616c6c65745f62616c616e6365731870616c6c6574144572726f720804540004490001303856657374696e6742616c616e63650000049c56657374696e672062616c616e636520746f6f206869676820746f2073656e642076616c75652e544c69717569646974795265737472696374696f6e73000104c84163636f756e74206c6971756964697479207265737472696374696f6e732070726576656e74207769746864726177616c2e4c496e73756666696369656e7442616c616e63650002047842616c616e636520746f6f206c6f7720746f2073656e642076616c75652e484578697374656e7469616c4465706f736974000304ec56616c756520746f6f206c6f7720746f20637265617465206163636f756e742064756520746f206578697374656e7469616c206465706f7369742e34457870656e646162696c697479000404905472616e736665722f7061796d656e7420776f756c64206b696c6c206163636f756e742e5c4578697374696e6756657374696e675363686564756c65000504cc412076657374696e67207363686564756c6520616c72656164792065786973747320666f722074686973206163636f756e742e2c446561644163636f756e740006048c42656e6566696369617279206163636f756e74206d757374207072652d65786973742e3c546f6f4d616e795265736572766573000704b84e756d626572206f66206e616d65642072657365727665732065786365656420604d61785265736572766573602e30546f6f4d616e79486f6c6473000804f84e756d626572206f6620686f6c647320657863656564206056617269616e74436f756e744f663c543a3a52756e74696d65486f6c64526561736f6e3e602e38546f6f4d616e79467265657a6573000904984e756d626572206f6620667265657a65732065786365656420604d6178467265657a6573602e4c49737375616e63654465616374697661746564000a0401015468652069737375616e63652063616e6e6f74206265206d6f6469666965642073696e636520697420697320616c72656164792064656163746976617465642e2444656c74615a65726f000b04645468652064656c74612063616e6e6f74206265207a65726f2e048054686520604572726f726020656e756d206f6620746869732070616c6c65742ef1070c3c70616c6c65745f62616c616e6365731870616c6c6574144572726f720804540004490001303856657374696e6742616c616e63650000049c56657374696e672062616c616e636520746f6f206869676820746f2073656e642076616c75652e544c69717569646974795265737472696374696f6e73000104c84163636f756e74206c6971756964697479207265737472696374696f6e732070726576656e74207769746864726177616c2e4c496e73756666696369656e7442616c616e63650002047842616c616e636520746f6f206c6f7720746f2073656e642076616c75652e484578697374656e7469616c4465706f736974000304ec56616c756520746f6f206c6f7720746f20637265617465206163636f756e742064756520746f206578697374656e7469616c206465706f7369742e34457870656e646162696c697479000404905472616e736665722f7061796d656e7420776f756c64206b696c6c206163636f756e742e5c4578697374696e6756657374696e675363686564756c65000504cc412076657374696e67207363686564756c6520616c72656164792065786973747320666f722074686973206163636f756e742e2c446561644163636f756e740006048c42656e6566696369617279206163636f756e74206d757374207072652d65786973742e3c546f6f4d616e795265736572766573000704b84e756d626572206f66206e616d65642072657365727665732065786365656420604d61785265736572766573602e30546f6f4d616e79486f6c6473000804f84e756d626572206f6620686f6c647320657863656564206056617269616e74436f756e744f663c543a3a52756e74696d65486f6c64526561736f6e3e602e38546f6f4d616e79467265657a6573000904984e756d626572206f6620667265657a65732065786365656420604d6178467265657a6573602e4c49737375616e63654465616374697661746564000a0401015468652069737375616e63652063616e6e6f74206265206d6f6469666965642073696e636520697420697320616c72656164792064656163746976617465642e2444656c74615a65726f000b04645468652064656c74612063616e6e6f74206265207a65726f2e048054686520604572726f726020656e756d206f6620746869732070616c6c65742ef5070c3c70616c6c65745f74785f70617573651870616c6c6574144572726f720404540001102049735061757365640000044c5468652063616c6c206973207061757365642e284973556e706175736564000104545468652063616c6c20697320756e7061757365642e28556e7061757361626c65000204b45468652063616c6c2069732077686974656c697374656420616e642063616e6e6f74206265207061757365642e204e6f74466f756e64000300048054686520604572726f726020656e756d206f6620746869732070616c6c65742ef907086870616c6c65745f7472616e73616374696f6e5f7061796d656e742052656c6561736573000108245631416e6369656e7400000008563200010000fd0710346672616d655f737570706f7274187472616974731c73746f72616765184e6f44726f7004045401010800040001080104540000010818346672616d655f737570706f72741874726169747318746f6b656e732066756e6769626c6524696d62616c616e636524496d62616c616e63650c04420118184f6e44726f7000384f70706f736974654f6e44726f700000040118616d6f756e7418010442000005080c3870616c6c65745f7574696c6974791870616c6c6574144572726f7204045400010430546f6f4d616e7943616c6c730000045c546f6f206d616e792063616c6c7320626174636865642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e09080c2c70616c6c65745f7375646f1870616c6c6574144572726f720404540001042c526571756972655375646f0000048053656e646572206d75737420626520746865205375646f206163636f756e742e04684572726f7220666f7220746865205375646f2070616c6c65742e0d080c2c70616c6c65745f69736d701870616c6c6574144572726f7204045400011838496e76616c69644d65737361676500000450496e76616c69642049534d50206d6573736167653c4d6573736167654e6f74466f756e640001047c526571756573746564206d65737361676520776173206e6f7420666f756e6474436f6e73656e737573436c69656e744372656174696f6e4661696c6564000204e4456e636f756e746572656420616e206572726f72207768696c65206372656174696e672074686520636f6e73656e73757320636c69656e742e6c556e626f6e64696e67506572696f645570646174654661696c656400030480436f756c646e27742075706461746520756e626f6e64696e6720706572696f646c4368616c6c656e6765506572696f645570646174654661696c656400040480436f756c646e277420757064617465206368616c6c656e676520706572696f64404572726f724368617267696e67466565000504484572726f72206368617267696e6720666565043450616c6c6574206572726f727311080c4870616c6c65745f68797065726272696467651870616c6c6574144572726f72040454000100048054686520604572726f726020656e756d206f6620746869732070616c6c65742e15080000040810e1010019080c5070616c6c65745f746f6b656e5f676174657761791870616c6c6574144572726f7204045400012444556e7265676973746572656441737365740000049041206173736574207468617420686173206e6f74206265656e207265676973746572656448417373657454656c65706f72744572726f72000104744572726f72207768696c652074656c65706f7274696e6720617373657460436f70726f636573736f724e6f74436f6e66696775726564000204b4436f70726f636573736f7220776173206e6f7420636f6e6669677572656420696e207468652072756e74696d653444697370617463684572726f72000304784173736574206f7220757064617465204469737061746368204572726f724841737365744372656174696f6e4572726f72000404604173736574204964206372656174696f6e206661696c6564544173736574446563696d616c734e6f74466f756e6400050460417373657420646563696d616c73206e6f7420666f756e64384e6f74496e697469616c697a6564000604a450726f746f636f6c20506172616d732068617665206e6f74206265656e20696e697469616c697a656430556e6b6e6f776e417373657400070434556e6b6e6f776e204173736574344e6f7441737365744f776e6572000804a44f6e6c7920726f6f74206f72206173736574206f776e65722063616e2075706461746520617373657404ac4572726f727320746861742063616e2062652072657475726e656420627920746869732070616c6c65742e1d080c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b011004560121080453000004003108013842547265654d61703c4b2c20563e000021080c3c70616c6c65745f74726561737572791870616c6c6574305472656173757279506f6f6c04045400000c0130626f6e645f686f6c646572732508010901426f756e6465645665633c28543a3a4163636f756e7449642c20543a3a42616c616e6365292c20543a3a4d61785472656173757279436f6e7472696275746f72733e00015064697374726962757465645f6561726e696e6773850101484f7074696f6e3c543a3a42616c616e63653e0001547661756c745f73686172696e675f70657263656e746903011c5065726d696c6c000025080c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540129080453000004002d0801185665633c543e00002908000004080018002d080000022908003108042042547265654d617008044b0110045601210800040035080000003508000002390800390800000408102108003d080c3c70616c6c65745f74726561737572791870616c6c65742c46756e646572537461746504045400001801407461726765745f7072696e636970616cc00128543a3a42616c616e6365000140626f6e6465645f7072696e636970616cc00128543a3a42616c616e636500013868656c645f7072696e636970616cc00128543a3a42616c616e63650001706c69666574696d655f636f6d706f756e6465645f6561726e696e6773c00128543a3a42616c616e636500016c6c69666574696d655f7072696e636970616c5f6465706c6f796564c00128543a3a42616c616e636500018c6c69666574696d655f7072696e636970616c5f6c6173745f62617369735f6672616d652c011c4672616d654964000041080c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454014508045300000400490801185665633c543e000045080c3c70616c6c65745f74726561737572791870616c6c65743c54726561737572794361706974616c04045400000c01207661756c745f6964d4011c5661756c7449640001446163746976617465645f6361706974616cc00128543a3a42616c616e63650001206672616d655f69642c011c4672616d654964000049080000024508004d080c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f7365743c426f756e646564425472656553657408045401000453000004005108012c42547265655365743c543e00005108042042547265655365740404540100000400150300000055080c3c70616c6c65745f74726561737572791870616c6c6574144572726f7204045400012848436f6e747269627574696f6e546f6f4c6f77000004010154686520636f6e747269627574656420616d6f756e7420776f756c64206e6f74206d616b652074686973206163636f756e74206120636f6e7472696275746f72705661756c744e6f74416363657074696e674d696e696e67426f6e6473000104b454686520676976656e207661756c74206973206e6f7420616363657074696e67206d696e696e6720626f6e64733042656c6f774d696e696d756d000204c842656c6f7720746865206d696e696d756d20616d6f756e74206f66206172676f6e732070657220636f6e7472696275746f724c4e6f744146756e64436f6e7472696275746f72000304d454686973206163636f756e74206973206e6f7420616e20616374697665206d696e696e672066756e6420636f6e7472696275746f7234496e7465726e616c4572726f72000404b4416e20696e7465726e616c206572726f72206f6363757272656420286c696b6520616e206f766572666c6f772950436f756c644e6f7446696e6454726561737572790005047c556e61626c6520746f2075706461746520746865207661756c742066756e645c4d6178436f6e7472696275746f72734578636565646564000604904d617820636f6e7472696275746f727320666f7220612066756e64206578636565646564444d61785661756c747345786365656465640007044c4d6178205661756c747320657863656564656438416c726561647952656e6577656400080488546869732066756e642068617320616c7265616479206265656e2072656e65776564444e6f74415661756c744f70657261746f720009044c5661756c74206f70657261746f72206f6e6c79048054686520604572726f726020656e756d206f6620746869732070616c6c65742e59080c4870616c6c65745f6665655f636f6e74726f6c1870616c6c6574144572726f720404540001044c53706f6e736f726564466565546f6f4869676800000425015468652072657175657374656420746970202b2066656520697320686967686572207468616e20746865206d6178696d756d20616c6c6f776564206279207468652073706f6e736f72048054686520604572726f726020656e756d206f6620746869732070616c6c65742e5d080c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540134045300000400590201185665633c543e000061080c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c6574484f7065726174696f6e616c4163636f756e7404045400005001347661756c745f6163636f756e74000130543a3a4163636f756e7449640001586d696e696e675f66756e64696e675f6163636f756e74000130543a3a4163636f756e7449640001486d696e696e675f626f745f6163636f756e74000130543a3a4163636f756e744964000144656e6372797074696f6e5f7075626b6579350501584f7061717565456e6372797074696f6e5075626b657900011c73706f6e736f72bc01504f7074696f6e3c543a3a4163636f756e7449643e0001506861735f756e69737761705f7472616e73666572200110626f6f6c0001347661756c745f63726561746564200110626f6f6c00013c626974636f696e5f6163637275616c180128543a3a42616c616e6365000154626974636f696e5f6170706c6965645f746f74616c180128543a3a42616c616e636500017c6861735f74726561737572795f706f6f6c5f70617274696369706174696f6e200110626f6f6c00014c6d696e696e675f736561745f6163637275616cd4010c7533320001646d696e696e675f736561745f6170706c6965645f746f74616cd4010c75333200016c6f7065726174696f6e616c5f726566657272616c735f636f756e74d4010c753332000170726566657272616c5f6163636573735f636f64655f70656e64696e67200110626f6f6c0001546973737561626c655f6163636573735f636f646573d4010c753332000160756e6163746976617465645f6163636573735f636f646573d4010c753332000150726577617264735f6561726e65645f636f756e74d4010c753332000154726577617264735f6561726e65645f616d6f756e74180128543a3a42616c616e6365000160726577617264735f636f6c6c65637465645f616d6f756e74180128543a3a42616c616e636500013869735f6f7065726174696f6e616c200110626f6f6c000065080c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c657448416363657373436f64654d65746164617461040454000008011c73706f6e736f72000130543a3a4163636f756e74496400014065787069726174696f6e5f6672616d652c011c4672616d654964000069080c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401040453000004006d0801185665633c543e00006d08000002040071080c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c65743452657761726473436f6e666967041c42616c616e636501180008016c6f7065726174696f6e616c5f726566657272616c5f726577617264c0011c42616c616e6365000154726566657272616c5f626f6e75735f726577617264c0011c42616c616e6365000075080c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540179080453000004007d0801185665633c543e000079080c406172676f6e5f7072696d6974697665732470726f7669646572735c4f7065726174696f6e616c5265776172645061796f757408244163636f756e74496401001c42616c616e636501180010014c6f7065726174696f6e616c5f6163636f756e740001244163636f756e7449640001387061796f75745f6163636f756e740001244163636f756e74496400012c7265776172645f6b696e64510201544f7065726174696f6e616c5265776172644b696e64000118616d6f756e7418011c42616c616e636500007d0800000279080081080c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e000085080c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c6574144572726f7204045400013844416c726561647952656769737465726564000004d45468652063616c6c657220616c7265616479207265676973746572656420616e206f7065726174696f6e616c206163636f756e742e70496e76616c6964526567697374726174696f6e5375626d69747465720001040d015468652063616c6c6572206973206e6f74206f6e65206f6620746865206163636f756e747320696e636c7564656420696e2074686520726567697374726174696f6e2e504163636f756e74416c72656164794c696e6b656400020425014f6e65206f66207468652070726f7669646564206163636f756e747320697320616c7265616479206c696e6b656420746f20616e206f7065726174696f6e616c206163636f756e742e4c496e76616c69644163636f756e7450726f6f66000304d84f6e65206f6620746865206c696e6b6564206163636f756e74206f776e6572736869702070726f6f667320697320696e76616c69642e544e6f744f7065726174696f6e616c4163636f756e74000404d45468652063616c6c657220686173206e6f74207265676973746572656420616e206f7065726174696f6e616c206163636f756e742e6c416363657373436f6465416c726561647952656769737465726564000504985468652061636365737320636f646520697320616c726561647920726567697374657265642e44496e76616c6964416363657373436f6465000604ac5468652061636365737320636f64652070726f7669646564206973206e6f7420726567697374657265642e58496e76616c6964416363657373436f646550726f6f66000704b05468652061636365737320636f64652061637469766174696f6e2070726f6f6620697320696e76616c69642e544e6f4973737561626c65416363657373436f6465730008049c4e6f2061636365737320636f646573206172652063757272656e746c79206973737561626c652e804d6178556e616374697661746564416363657373436f64657352656163686564000904c8546f6f206d616e7920756e6163746976617465642061636365737320636f64657320617265206f75747374616e64696e672e944d6178416363657373436f6465734578706972696e675065724672616d6552656163686564000a041101546f6f206d616e792061636365737320636f6465732061726520616c7265616479207363686564756c656420746f2065787069726520696e2074686973206672616d652e604e6f50726f677265737355706461746550726f7669646564000b04e8546865207265717565737465642070726f677265737320706174636820646f6573206e6f7420636f6e7461696e20616e7920757064617465732e58456e63727970746564536572766572546f6f4c6f6e67000c04fc54686520656e6372797074656420736572766572207061796c6f616420657863656564732074686520636f6e66696775726564206d6178206c656e6774682e4c4e6f7453706f6e736f724f6653706f6e736565000d04dc5468652063616c6c6572206973206e6f74207468652073706f6e736f72206f6620746865207265717565737465642073706f6e7365652e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e8908102873705f72756e74696d651c67656e657269634c756e636865636b65645f65787472696e73696348556e636865636b656445787472696e736963101c416464726573730125031043616c6c011d03245369676e6174757265013504144578747261018d08000400380000008d080000042c9108950899089d08a108a508ad08b108b508b908c10800910810306672616d655f73797374656d28657874656e73696f6e7338617574686f72697a655f63616c6c34417574686f72697a6543616c6c04045400000000950810306672616d655f73797374656d28657874656e73696f6e7354636865636b5f6e6f6e5f7a65726f5f73656e64657248436865636b4e6f6e5a65726f53656e64657204045400000000990810306672616d655f73797374656d28657874656e73696f6e7348636865636b5f737065635f76657273696f6e40436865636b5370656356657273696f6e040454000000009d0810306672616d655f73797374656d28657874656e73696f6e7340636865636b5f74785f76657273696f6e38436865636b547856657273696f6e04045400000000a10810306672616d655f73797374656d28657874656e73696f6e7334636865636b5f67656e6573697330436865636b47656e6573697304045400000000a50810306672616d655f73797374656d28657874656e73696f6e733c636865636b5f6d6f7274616c69747938436865636b4d6f7274616c69747904045400000400a908010c4572610000a908102873705f72756e74696d651c67656e657269630c6572610c4572610001010420496d6d6f7274616c0000001c4d6f7274616c31040008000001001c4d6f7274616c32040008000002001c4d6f7274616c33040008000003001c4d6f7274616c34040008000004001c4d6f7274616c35040008000005001c4d6f7274616c36040008000006001c4d6f7274616c37040008000007001c4d6f7274616c38040008000008001c4d6f7274616c3904000800000900204d6f7274616c313004000800000a00204d6f7274616c313104000800000b00204d6f7274616c313204000800000c00204d6f7274616c313304000800000d00204d6f7274616c313404000800000e00204d6f7274616c313504000800000f00204d6f7274616c313604000800001000204d6f7274616c313704000800001100204d6f7274616c313804000800001200204d6f7274616c313904000800001300204d6f7274616c323004000800001400204d6f7274616c323104000800001500204d6f7274616c323204000800001600204d6f7274616c323304000800001700204d6f7274616c323404000800001800204d6f7274616c323504000800001900204d6f7274616c323604000800001a00204d6f7274616c323704000800001b00204d6f7274616c323804000800001c00204d6f7274616c323904000800001d00204d6f7274616c333004000800001e00204d6f7274616c333104000800001f00204d6f7274616c333204000800002000204d6f7274616c333304000800002100204d6f7274616c333404000800002200204d6f7274616c333504000800002300204d6f7274616c333604000800002400204d6f7274616c333704000800002500204d6f7274616c333804000800002600204d6f7274616c333904000800002700204d6f7274616c343004000800002800204d6f7274616c343104000800002900204d6f7274616c343204000800002a00204d6f7274616c343304000800002b00204d6f7274616c343404000800002c00204d6f7274616c343504000800002d00204d6f7274616c343604000800002e00204d6f7274616c343704000800002f00204d6f7274616c343804000800003000204d6f7274616c343904000800003100204d6f7274616c353004000800003200204d6f7274616c353104000800003300204d6f7274616c353204000800003400204d6f7274616c353304000800003500204d6f7274616c353404000800003600204d6f7274616c353504000800003700204d6f7274616c353604000800003800204d6f7274616c353704000800003900204d6f7274616c353804000800003a00204d6f7274616c353904000800003b00204d6f7274616c363004000800003c00204d6f7274616c363104000800003d00204d6f7274616c363204000800003e00204d6f7274616c363304000800003f00204d6f7274616c363404000800004000204d6f7274616c363504000800004100204d6f7274616c363604000800004200204d6f7274616c363704000800004300204d6f7274616c363804000800004400204d6f7274616c363904000800004500204d6f7274616c373004000800004600204d6f7274616c373104000800004700204d6f7274616c373204000800004800204d6f7274616c373304000800004900204d6f7274616c373404000800004a00204d6f7274616c373504000800004b00204d6f7274616c373604000800004c00204d6f7274616c373704000800004d00204d6f7274616c373804000800004e00204d6f7274616c373904000800004f00204d6f7274616c383004000800005000204d6f7274616c383104000800005100204d6f7274616c383204000800005200204d6f7274616c383304000800005300204d6f7274616c383404000800005400204d6f7274616c383504000800005500204d6f7274616c383604000800005600204d6f7274616c383704000800005700204d6f7274616c383804000800005800204d6f7274616c383904000800005900204d6f7274616c393004000800005a00204d6f7274616c393104000800005b00204d6f7274616c393204000800005c00204d6f7274616c393304000800005d00204d6f7274616c393404000800005e00204d6f7274616c393504000800005f00204d6f7274616c393604000800006000204d6f7274616c393704000800006100204d6f7274616c393804000800006200204d6f7274616c393904000800006300244d6f7274616c31303004000800006400244d6f7274616c31303104000800006500244d6f7274616c31303204000800006600244d6f7274616c31303304000800006700244d6f7274616c31303404000800006800244d6f7274616c31303504000800006900244d6f7274616c31303604000800006a00244d6f7274616c31303704000800006b00244d6f7274616c31303804000800006c00244d6f7274616c31303904000800006d00244d6f7274616c31313004000800006e00244d6f7274616c31313104000800006f00244d6f7274616c31313204000800007000244d6f7274616c31313304000800007100244d6f7274616c31313404000800007200244d6f7274616c31313504000800007300244d6f7274616c31313604000800007400244d6f7274616c31313704000800007500244d6f7274616c31313804000800007600244d6f7274616c31313904000800007700244d6f7274616c31323004000800007800244d6f7274616c31323104000800007900244d6f7274616c31323204000800007a00244d6f7274616c31323304000800007b00244d6f7274616c31323404000800007c00244d6f7274616c31323504000800007d00244d6f7274616c31323604000800007e00244d6f7274616c31323704000800007f00244d6f7274616c31323804000800008000244d6f7274616c31323904000800008100244d6f7274616c31333004000800008200244d6f7274616c31333104000800008300244d6f7274616c31333204000800008400244d6f7274616c31333304000800008500244d6f7274616c31333404000800008600244d6f7274616c31333504000800008700244d6f7274616c31333604000800008800244d6f7274616c31333704000800008900244d6f7274616c31333804000800008a00244d6f7274616c31333904000800008b00244d6f7274616c31343004000800008c00244d6f7274616c31343104000800008d00244d6f7274616c31343204000800008e00244d6f7274616c31343304000800008f00244d6f7274616c31343404000800009000244d6f7274616c31343504000800009100244d6f7274616c31343604000800009200244d6f7274616c31343704000800009300244d6f7274616c31343804000800009400244d6f7274616c31343904000800009500244d6f7274616c31353004000800009600244d6f7274616c31353104000800009700244d6f7274616c31353204000800009800244d6f7274616c31353304000800009900244d6f7274616c31353404000800009a00244d6f7274616c31353504000800009b00244d6f7274616c31353604000800009c00244d6f7274616c31353704000800009d00244d6f7274616c31353804000800009e00244d6f7274616c31353904000800009f00244d6f7274616c3136300400080000a000244d6f7274616c3136310400080000a100244d6f7274616c3136320400080000a200244d6f7274616c3136330400080000a300244d6f7274616c3136340400080000a400244d6f7274616c3136350400080000a500244d6f7274616c3136360400080000a600244d6f7274616c3136370400080000a700244d6f7274616c3136380400080000a800244d6f7274616c3136390400080000a900244d6f7274616c3137300400080000aa00244d6f7274616c3137310400080000ab00244d6f7274616c3137320400080000ac00244d6f7274616c3137330400080000ad00244d6f7274616c3137340400080000ae00244d6f7274616c3137350400080000af00244d6f7274616c3137360400080000b000244d6f7274616c3137370400080000b100244d6f7274616c3137380400080000b200244d6f7274616c3137390400080000b300244d6f7274616c3138300400080000b400244d6f7274616c3138310400080000b500244d6f7274616c3138320400080000b600244d6f7274616c3138330400080000b700244d6f7274616c3138340400080000b800244d6f7274616c3138350400080000b900244d6f7274616c3138360400080000ba00244d6f7274616c3138370400080000bb00244d6f7274616c3138380400080000bc00244d6f7274616c3138390400080000bd00244d6f7274616c3139300400080000be00244d6f7274616c3139310400080000bf00244d6f7274616c3139320400080000c000244d6f7274616c3139330400080000c100244d6f7274616c3139340400080000c200244d6f7274616c3139350400080000c300244d6f7274616c3139360400080000c400244d6f7274616c3139370400080000c500244d6f7274616c3139380400080000c600244d6f7274616c3139390400080000c700244d6f7274616c3230300400080000c800244d6f7274616c3230310400080000c900244d6f7274616c3230320400080000ca00244d6f7274616c3230330400080000cb00244d6f7274616c3230340400080000cc00244d6f7274616c3230350400080000cd00244d6f7274616c3230360400080000ce00244d6f7274616c3230370400080000cf00244d6f7274616c3230380400080000d000244d6f7274616c3230390400080000d100244d6f7274616c3231300400080000d200244d6f7274616c3231310400080000d300244d6f7274616c3231320400080000d400244d6f7274616c3231330400080000d500244d6f7274616c3231340400080000d600244d6f7274616c3231350400080000d700244d6f7274616c3231360400080000d800244d6f7274616c3231370400080000d900244d6f7274616c3231380400080000da00244d6f7274616c3231390400080000db00244d6f7274616c3232300400080000dc00244d6f7274616c3232310400080000dd00244d6f7274616c3232320400080000de00244d6f7274616c3232330400080000df00244d6f7274616c3232340400080000e000244d6f7274616c3232350400080000e100244d6f7274616c3232360400080000e200244d6f7274616c3232370400080000e300244d6f7274616c3232380400080000e400244d6f7274616c3232390400080000e500244d6f7274616c3233300400080000e600244d6f7274616c3233310400080000e700244d6f7274616c3233320400080000e800244d6f7274616c3233330400080000e900244d6f7274616c3233340400080000ea00244d6f7274616c3233350400080000eb00244d6f7274616c3233360400080000ec00244d6f7274616c3233370400080000ed00244d6f7274616c3233380400080000ee00244d6f7274616c3233390400080000ef00244d6f7274616c3234300400080000f000244d6f7274616c3234310400080000f100244d6f7274616c3234320400080000f200244d6f7274616c3234330400080000f300244d6f7274616c3234340400080000f400244d6f7274616c3234350400080000f500244d6f7274616c3234360400080000f600244d6f7274616c3234370400080000f700244d6f7274616c3234380400080000f800244d6f7274616c3234390400080000f900244d6f7274616c3235300400080000fa00244d6f7274616c3235310400080000fb00244d6f7274616c3235320400080000fc00244d6f7274616c3235330400080000fd00244d6f7274616c3235340400080000fe00244d6f7274616c3235350400080000ff0000ad0810306672616d655f73797374656d28657874656e73696f6e732c636865636b5f6e6f6e636528436865636b4e6f6e636504045400000400d40120543a3a4e6f6e63650000b10810306672616d655f73797374656d28657874656e73696f6e7330636865636b5f7765696768742c436865636b57656967687404045400000000b508086870616c6c65745f7472616e73616374696f6e5f7061796d656e74604368617267655472616e73616374696f6e5061796d656e7404045400000400c0013042616c616e63654f663c543e0000b90808746672616d655f6d657461646174615f686173685f657874656e73696f6e44436865636b4d657461646174614861736804045400000401106d6f6465bd0801104d6f64650000bd0808746672616d655f6d657461646174615f686173685f657874656e73696f6e104d6f64650001082044697361626c65640000001c456e61626c656400010000c10810306672616d655f73797374656d28657874656e73696f6e73387765696768745f7265636c61696d345765696768745265636c61696d04045400000000c50804184f7074696f6e04045401040108104e6f6e6500000010536f6d650400040000010000c90808346172676f6e5f72756e74696d651c52756e74696d65000000008c1853797374656d011853797374656d4c1c4163636f756e7401010402000c4101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008004e8205468652066756c6c206163636f756e7420696e666f726d6174696f6e20666f72206120706172746963756c6172206163636f756e742049442e3845787472696e736963436f756e74000010040004b820546f74616c2065787472696e7369637320636f756e7420666f72207468652063757272656e7420626c6f636b2e40496e686572656e74734170706c696564010020040004a4205768657468657220616c6c20696e686572656e74732068617665206265656e206170706c6965642e2c426c6f636b576569676874010024180000000000000488205468652063757272656e742077656967687420666f722074686520626c6f636b2e40416c6c45787472696e736963734c656e000010040004410120546f74616c206c656e6774682028696e2062797465732920666f7220616c6c2065787472696e736963732070757420746f6765746865722c20666f72207468652063757272656e7420626c6f636b2e24426c6f636b486173680101040510348000000000000000000000000000000000000000000000000000000000000000000498204d6170206f6620626c6f636b206e756d6265727320746f20626c6f636b206861736865732e3445787472696e736963446174610101040510380400043d012045787472696e73696373206461746120666f72207468652063757272656e7420626c6f636b20286d61707320616e2065787472696e736963277320696e64657820746f206974732064617461292e184e756d6265720100101000000000040901205468652063757272656e7420626c6f636b206e756d626572206265696e672070726f6365737365642e205365742062792060657865637574655f626c6f636b602e28506172656e744861736801003480000000000000000000000000000000000000000000000000000000000000000004702048617368206f66207468652070726576696f757320626c6f636b2e1844696765737401003c040004f020446967657374206f66207468652063757272656e7420626c6f636b2c20616c736f2070617274206f662074686520626c6f636b206865616465722e184576656e747301004c04001ca0204576656e7473206465706f736974656420666f72207468652063757272656e7420626c6f636b2e001d01204e4f54453a20546865206974656d20697320756e626f756e6420616e642073686f756c64207468657265666f7265206e657665722062652072656164206f6e20636861696e2ed020497420636f756c64206f746865727769736520696e666c6174652074686520506f562073697a65206f66206120626c6f636b2e002d01204576656e747320686176652061206c6172676520696e2d6d656d6f72792073697a652e20426f7820746865206576656e747320746f206e6f7420676f206f75742d6f662d6d656d6f7279fc206a75737420696e206361736520736f6d656f6e65207374696c6c207265616473207468656d2066726f6d2077697468696e207468652072756e74696d652e284576656e74436f756e74010010100000000004b820546865206e756d626572206f66206576656e747320696e2074686520604576656e74733c543e60206c6973742e2c4576656e74546f7069637301010402345d020400282501204d617070696e67206265747765656e206120746f7069632028726570726573656e74656420627920543a3a486173682920616e64206120766563746f72206f6620696e646578657394206f66206576656e747320696e2074686520603c4576656e74733c543e3e60206c6973742e00510120416c6c20746f70696320766563746f727320686176652064657465726d696e69737469632073746f72616765206c6f636174696f6e7320646570656e64696e67206f6e2074686520746f7069632e2054686973450120616c6c6f7773206c696768742d636c69656e747320746f206c6576657261676520746865206368616e67657320747269652073746f7261676520747261636b696e67206d656368616e69736d20616e64e420696e2063617365206f66206368616e67657320666574636820746865206c697374206f66206576656e7473206f6620696e7465726573742e005901205468652076616c756520686173207468652074797065206028426c6f636b4e756d626572466f723c543e2c204576656e74496e646578296020626563617573652069662077652075736564206f6e6c79206a7573744d012074686520604576656e74496e64657860207468656e20696e20636173652069662074686520746f70696320686173207468652073616d6520636f6e74656e7473206f6e20746865206e65787420626c6f636b0101206e6f206e6f74696669636174696f6e2077696c6c20626520747269676765726564207468757320746865206576656e74206d69676874206265206c6f73742e484c61737452756e74696d65557067726164650000650204000455012053746f726573207468652060737065635f76657273696f6e6020616e642060737065635f6e616d6560206f66207768656e20746865206c6173742072756e74696d6520757067726164652068617070656e65642e545570677261646564546f553332526566436f756e740100200400044d012054727565206966207765206861766520757067726164656420736f207468617420607479706520526566436f756e74602069732060753332602e2046616c7365202864656661756c7429206966206e6f742e605570677261646564546f547269706c65526566436f756e740100200400085d012054727565206966207765206861766520757067726164656420736f2074686174204163636f756e74496e666f20636f6e7461696e73207468726565207479706573206f662060526566436f756e74602e2046616c736548202864656661756c7429206966206e6f742e38457865637574696f6e506861736500005502040004882054686520657865637574696f6e207068617365206f662074686520626c6f636b2e44417574686f72697a65645570677261646500007102040004b82060536f6d6560206966206120636f6465207570677261646520686173206265656e20617574686f72697a65642e6045787472696e7369635765696768745265636c61696d65640100280800001ca02054686520776569676874207265636c61696d656420666f72207468652065787472696e7369632e002101205468697320696e666f726d6174696f6e20697320617661696c61626c6520756e74696c2074686520656e64206f66207468652065787472696e73696320657865637574696f6e2e2101204d6f726520707265636973656c79207468697320696e666f726d6174696f6e2069732072656d6f76656420696e20606e6f74655f6170706c6965645f65787472696e736963602e007101204c6f67696320646f696e6720736f6d6520706f73742064697370617463682077656967687420726564756374696f6e206d7573742075706461746520746869732073746f7261676520746f2061766f6964206475706c69636174652c20726564756374696f6e2e01750201581830426c6f636b576569676874738502fd01c2a0e766000b00a0724e180913ffffffffffffffff2261c91900010bb81711ca5d061332333333333333b3010b00f8d53ad20613ffffffffffffffbf0100002261c91900010bb8bfaddda3081332333333333333f3010b00a0724e180913ffffffffffffffff010b00a89c1346021300000000000000402261c9190000000004d020426c6f636b20262065787472696e7369637320776569676874733a20626173652076616c75657320616e64206c696d6974732e2c426c6f636b4c656e67746895023000003c00000050000000500004a820546865206d6178696d756d206c656e677468206f66206120626c6f636b2028696e206279746573292e38426c6f636b48617368436f756e74101000100000045501204d6178696d756d206e756d626572206f6620626c6f636b206e756d62657220746f20626c6f636b2068617368206d617070696e677320746f206b65657020286f6c64657374207072756e6564206669727374292e2044625765696768749d024040787d010000000000e1f505000000000409012054686520776569676874206f662072756e74696d65206461746162617365206f7065726174696f6e73207468652072756e74696d652063616e20696e766f6b652e1c56657273696f6ea102c904146172676f6e146172676f6e01000000960000000a0000005cdf6acb689907609b0500000037e397fc7c91f5e402000000ccd9de6396c899ca0100000040fe3ad401f8959a06000000d2bc9897eed08f1503000000f78b278be53f454c02000000bc9d89904f5b923f01000000ab3c0572291feb8b0100000037c8bb1350a9a2a804000000f3ff14d5ab5270590300000061571683e6d7a7c8010000005e4dc2ce83c23f0901000000e6683faaa563317a0200000011de59f9923f03d80100000051c97e4020145cb001000000bab599c4f0d362c601000000fff0fb031985f8a1020000000090f9d890bb0bb20100000005dd9be92cc17d2802000000ed99c5acb25eedf503000000fbc577b9d747efd6010000000ebc8fd84ae20ada01000000888ea501e380d8a10100000005000000010484204765742074686520636861696e277320696e2d636f64652076657273696f6e2e28535335385072656669789c082a0014a8205468652064657369676e61746564205353353820707265666978206f66207468697320636861696e2e0039012054686973207265706c6163657320746865202273733538466f726d6174222070726f7065727479206465636c6172656420696e2074686520636861696e20737065632e20526561736f6e20697331012074686174207468652072756e74696d652073686f756c64206b6e6f772061626f7574207468652070726566697820696e206f7264657220746f206d616b6520757365206f662069742061737020616e206964656e746966696572206f662074686520636861696e2e01b502001c44696765737473011c44696765737473042c54656d70446967657374730000b90204000000018000010103012454696d657374616d70012454696d657374616d70080c4e6f7701003020000000000000000004a0205468652063757272656e742074696d6520666f72207468652063757272656e7420626c6f636b2e24446964557064617465010020040010d82057686574686572207468652074696d657374616d7020686173206265656e207570646174656420696e207468697320626c6f636b2e00550120546869732076616c7565206973207570646174656420746f206074727565602075706f6e207375636365737366756c207375626d697373696f6e206f6620612074696d657374616d702062792061206e6f64652e4501204974206973207468656e20636865636b65642061742074686520656e64206f66206561636820626c6f636b20657865637574696f6e20696e2074686520606f6e5f66696e616c697a656020686f6f6b2e0105030004344d696e696d756d506572696f6430200100000000000000188c20546865206d696e696d756d20706572696f64206265747765656e20626c6f636b732e004d012042652061776172652074686174207468697320697320646966666572656e7420746f20746865202a65787065637465642a20706572696f6420746861742074686520626c6f636b2070726f64756374696f6e4901206170706172617475732070726f76696465732e20596f75722063686f73656e20636f6e73656e7375732073797374656d2077696c6c2067656e6572616c6c7920776f726b2077697468207468697320746f61012064657465726d696e6520612073656e7369626c6520626c6f636b2074696d652e20466f72206578616d706c652c20696e2074686520417572612070616c6c65742069742077696c6c20626520646f75626c6520746869737020706572696f64206f6e2064656661756c742073657474696e67732e0002204d756c746973696701204d756c746973696704244d756c746973696773000108050209030d03040004942054686520736574206f66206f70656e206d756c7469736967206f7065726174696f6e732e01190301840c2c4465706f736974426173651840a005000000000000000000000000000018590120546865206261736520616d6f756e74206f662063757272656e6379206e656564656420746f207265736572766520666f72206372656174696e672061206d756c746973696720657865637574696f6e206f7220746f842073746f726520612064697370617463682063616c6c20666f72206c617465722e00010120546869732069732068656c6420666f7220616e206164646974696f6e616c2073746f72616765206974656d2077686f73652076616c75652073697a652069733101206034202b2073697a656f662828426c6f636b4e756d6265722c2042616c616e63652c204163636f756e74496429296020627974657320616e642077686f7365206b65792073697a652069738020603332202b2073697a656f66284163636f756e74496429602062797465732e344465706f736974466163746f721840a00000000000000000000000000000000c55012054686520616d6f756e74206f662063757272656e6379206e65656465642070657220756e6974207468726573686f6c64207768656e206372656174696e672061206d756c746973696720657865637574696f6e2e00250120546869732069732068656c6420666f7220616464696e67203332206279746573206d6f726520696e746f2061207072652d6578697374696e672073746f726167652076616c75652e384d61785369676e61746f7269657310106400000004ec20546865206d6178696d756d20616d6f756e74206f66207369676e61746f7269657320616c6c6f77656420696e20746865206d756c74697369672e015505031450726f7879011450726f7879081c50726f78696573010104050059054400000000000000000000000000000000000845012054686520736574206f66206163636f756e742070726f786965732e204d61707320746865206163636f756e74207768696368206861732064656c65676174656420746f20746865206163636f756e7473210120776869636820617265206265696e672064656c65676174656420746f2c20746f67657468657220776974682074686520616d6f756e742068656c64206f6e206465706f7369742e34416e6e6f756e63656d656e74730101040500690544000000000000000000000000000000000004ac2054686520616e6e6f756e63656d656e7473206d616465206279207468652070726f787920286b6579292e0121030194184050726f78794465706f736974426173651840b004000000000000000000000000000010110120546865206261736520616d6f756e74206f662063757272656e6379206e656564656420746f207265736572766520666f72206372656174696e6720612070726f78792e00010120546869732069732068656c6420666f7220616e206164646974696f6e616c2073746f72616765206974656d2077686f73652076616c75652073697a652069732501206073697a656f662842616c616e6365296020627974657320616e642077686f7365206b65792073697a65206973206073697a656f66284163636f756e74496429602062797465732e4850726f78794465706f736974466163746f721840a500000000000000000000000000000014bc2054686520616d6f756e74206f662063757272656e6379206e6565646564207065722070726f78792061646465642e00350120546869732069732068656c6420666f7220616464696e6720333220627974657320706c757320616e20696e7374616e6365206f66206050726f78795479706560206d6f726520696e746f20616101207072652d6578697374696e672073746f726167652076616c75652e20546875732c207768656e20636f6e6669677572696e67206050726f78794465706f736974466163746f7260206f6e652073686f756c642074616b65f420696e746f206163636f756e7420603332202b2070726f78795f747970652e656e636f646528292e6c656e282960206279746573206f6620646174612e284d617850726f7869657310102000000004f020546865206d6178696d756d20616d6f756e74206f662070726f7869657320616c6c6f77656420666f7220612073696e676c65206163636f756e742e284d617850656e64696e6710102000000004450120546865206d6178696d756d20616d6f756e74206f662074696d652d64656c6179656420616e6e6f756e63656d656e747320746861742061726520616c6c6f77656420746f2062652070656e64696e672e5c416e6e6f756e63656d656e744465706f736974426173651840d804000000000000000000000000000010310120546865206261736520616d6f756e74206f662063757272656e6379206e656564656420746f207265736572766520666f72206372656174696e6720616e20616e6e6f756e63656d656e742e00490120546869732069732068656c64207768656e2061206e65772073746f72616765206974656d20686f6c64696e672061206042616c616e636560206973206372656174656420287479706963616c6c7920313620206279746573292e64416e6e6f756e63656d656e744465706f736974466163746f7218404a01000000000000000000000000000010d42054686520616d6f756e74206f662063757272656e6379206e65656465642070657220616e6e6f756e63656d656e74206d6164652e00590120546869732069732068656c6420666f7220616464696e6720616e20604163636f756e744964602c2060486173686020616e642060426c6f636b4e756d6265726020287479706963616c6c79203638206279746573298c20696e746f2061207072652d6578697374696e672073746f726167652076616c75652e01790504145469636b7301145469636b73143050726576696f75735469636b010030200000000000000000002c43757272656e745469636b010030200000000000000000002c47656e657369735469636b010030200000000000000000003447656e657369735469636b657201007d05080000004c526563656e74426c6f636b7341745469636b7301010405308105040008e820426c6f636b732066726f6d20746865206c61737420313030207469636b732e205472696d6d656420696e206f6e5f696e697469616c697a652ef4204e4f54453a2063616e6e6f7420696e636c756465207468652063757272656e7420626c6f636b206861736820756e74696c206e65787420626c6f636b013103000001850505284d696e696e67536c6f7401284d696e696e67536c6f74505c48617341646465644772616e647061526f746174696f6e010020040000384d696e6572734279436f686f72740101040230a80400045901204d696e6572732074686174206172652061637469766520696e207468652063757272656e7420626c6f636b2028706f737420696e697469616c697a6529206279207468656972207374617274696e67206672616d65444163746976654d696e657273436f756e7401009c08000000644d696e65724e6f6e636553636f72696e674279436f686f72740100890504000c610120546869732069732061206c6f6f6b7570206f662065616368206d696e65722773206e6f6e636520746f20757365207768656e207069636b696e672061206265737420617574686f7269747920746f207375626d69742061510120626c6f636b2e2049742773206120626c616b6532203235362068617368206f6620746865206d696e6572206163636f756e7420696420616e642074686520626c6f636b20686173682061742074696d65206f66302061637469766174696f6e2e544172676f6e6f74735065724d696e696e6753656174010018400000000000000000000000000000000004c8204172676f6e6f74732074686174206d757374206265206c6f636b656420746f2074616b652061204d696e657220726f6c65484163636f756e74496e6465784c6f6f6b75700001040200a9050400046901204c6f6f6b7570206279206163636f756e7420696420746f2074686520636f72726573706f6e64696e6720696e64657820696e204d696e6572734279436f686f727420616e64204d696e65724e6f6e6365734279436f686f72745442696473466f724e657874536c6f74436f686f72740100a80400080d012054686520636f686f72742073657420746f20676f20696e746f2065666665637420696e20746865206e65787420736c6f742e20546865205665632068617320616c6c882072656769737472616e747320776974682074686569722062696420616d6f756e746452656c65617365644d696e65727342794163636f756e7449640100ad05040004150120546865206d696e6572732072656c656173656420696e20746865206c61737420626c6f636b20286f6e6c79206b65707420666f7220612073696e676c6520626c6f636b295449734e657874536c6f7442696464696e674f70656e0100200400049420497320746865206e65787420736c6f74207374696c6c206f70656e20666f72206269647354486973746f726963616c42696473506572536c6f740100bd05040004050120546865206e756d626572206f6620626964732070657220736c6f7420666f7220746865206c61737420313020736c6f747320286e6577657374206669727374294c417665726167655072696365506572536561740100c905040004050120546865206176657261676520707269636520706572207365617420666f7220746865206c617374203130206672616d657320286e657765737420666972737429304d696e696e67436f6e6669670100d1050c00000004b420546865206d696e696e6720736c6f7420636f6e66696775726174696f6e2073657420696e2067656e657369732c4e6578744672616d65496401003020000000000000000008750120546865206e657874206672616d6549642e2041206672616d6520696e206172676f6e2069732074686520323420686f757273206265747765656e20746865207374617274206f662074776f20646966666572656e74206d696e696e672420636f686f7274732e4c4e65776c79537461727465644672616d654964000030040004942049732061206e6577206672616d65207374617274656420696e207468697320626c6f636b384e657874436f686f727453697a65010010100000000004f420546865206e756d626572206f6620616c6c6f77206d696e65727320746f2062696420666f7220746865206e657874206d696e696e6720636f686f7274805363686564756c6564436f686f727453697a654368616e676542794672616d650100d50504000ce420546865207570636f6d696e67206368616e676573207363686564756c656420666f7220636f686f72742073697a65206279206672616d652e5501204361706163697479206f6620313120616c6c6f777320666f72203130206672616d657320776f727468206f66207363686564756c6564206368616e67657320706c7573206f6e6520776f726b696e6720736c6f74d020746f207363686564756c652061206e6577206368616e676520647572696e67206672616d652066696e616c697a6174696f6e2e644672616d655265776172645469636b7352656d61696e696e6701003020000000000000000004c820546865206e756d626572206f6620726577617264207469636b732072656d61696e696e6720696e20746865206672616d65584672616d655374617274426c6f636b4e756d626572730100e105040004a8205468652070726576696f7573203130206672616d6520737461727420626c6f636b206e756d626572733c4672616d6553746172745469636b730100e90504000488205468652070726576696f7573203130206672616d65207374617274207469636b734c54656d704672616d65496e666f4469676573740000e502040004982054656d706f726172792073746f726520746865206672616d6520696e666f2064696765737401350301a4284c4672616d65735065724d696e696e675465726d10100a00000004a820546865206e756d626572206f66206672616d65732061206d696e6572206f7065726174657320666f72344d696e436f686f727453697a6510100a00000004a020546865206d696e696d756d206e756d626572206f66206d696e6572732070657220636f686f7274344d6178436f686f727453697a65101090000000085d0120486f77206d616e79206e6577206d696e6572732063616e20626520696e2074686520636f686f727420666f72206561636820736c6f742e205468652061637475616c206d6178696d756d2077696c6c2061646a757374302064796e616d6963616c6c797c4172676f6e6f747350657263656e7441646a7573746d656e7444616d706572e040000014bbf08ac602000000000000000004210120546865206d61782070657263656e74207377696e6720666f7220746865206172676f6e6f74732070657220736c6f74202866726f6d20746865206c6173742070657263656e7429584d696e696d756d4172676f6e6f747350657253656174184010270000000000000000000000000000049420546865206d696e696d756d206172676f6e6f7473206e6565646564207065722073656174704d6178696d756d4172676f6e6f7450726f7261746150657263656e74f9050428082d0120546865206d6178696d756d2070657263656e74206f66206172676f6e6f747320696e20746865206e6574776f726b20746861742073686f756c6420626520726571756972656420666f7234206d696e696e6720736561747360546172676574426964735065725365617450657263656e74e0400000c84e676dc11b000000000000000008590120546865207461726765742070657263656e74206f662062696473207065722061756374696f6e2072656c617469766520746f20746865206d6178206e756d626572206f662073656174732e20546869732077696c6c2d012061646a75737420746865206172676f6e6f7473207065722073656174207570206f7220646f776e20746f20656e73757265206d696e696e6720736c6f7473206172652066696c6c65642e48546172676574507269636550657253656174184000ca9a3b000000000000000000000000046c20546865207461726765742070726963652070657220736561742e7050726963655065725365617441646a7573746d656e7444616d706572e040000014bbf08ac6020000000000000000040901205468652064616d706572206f6e207468652070726963652070657220736561742061646a7573746d656e74202866726f6d20746865206c6173742070726963652934426964496e6372656d656e74731840102700000000000000000000000000000419012054686520696e6372656d656e74207468617420626964732063616e206265206f6e2028666f7220696e7374616e63652c206f6e652063656e7420696e6372656d656e74732901fd050630426974636f696e5574786f730130426974636f696e5574786f73302c4c6f636b65645574786f7300010402cc010604000c5d01204c6f636b656420426974636f696e205554584f7320746861742068617665206265656e2066756e64656420776974682061205574786f5265662066726f6d2074686520426974636f696e206e6574776f726b20616e645d0120616d6f756e74732077697468696e20746865204d696e696d756d5361746f7368695468726573686f6c64206f66207468652065787065637465642e204966206120426974636f696e205554584f206973206d6f7665643101206265666f7265207468652065787069726174696f6e20626c6f636b2c207468652066756e647320617265206275726e656420616e6420746865205554584f20697320756e6c6f636b65642e585574786f4964546f46756e64696e675574786f5265660001040530cc040004d42041206d617070696e67206f66207574786f20696420746f2074686520636f6e6669726d6564207574786f207265666572656e63654c4c6f636b7350656e64696e6746756e64696e67010009060400040d0120426974636f696e206c6f636b732074686174206172652070656e64696e672066756c6c2066756e64696e67206f6e2074686520626974636f696e206e6574776f726b544578706972656450656e64696e6746756e64696e670100090604000431012050656e64696e672066756e64696e6720656e747269657320746861742068617665206578706972656420616e6420617265206177616974696e6720626f756e64656420636c65616e75702e6443616e6469646174655574786f5265667342795574786f49640101040530190604000429012043616e646964617465205554584f73206173736f63696174656420776974682061206c6f636b20286d69736d6174636865732c2065787472612066756e64696e672c206574632e292e38426974636f696e4e6574776f726b01002906040304ec205468652067656e657369732073657420626974636f696e206e6574776f726b2074686174207468697320636861696e206973207469656420746f60436f6e6669726d6564426974636f696e426c6f636b54697000005503040004fc20416e206f7261636c652d70726f766964656420636f6e6669726d656420626974636f696e20626c6f636b202865672c203620626c6f636b73206261636b295c50726576696f7573426974636f696e426c6f636b546970000055030400005854656d70506172656e7448617353796e635374617465010020040004d42053746f72657320696620706172656e7420626c6f636b20686164206120636f6e6669726d656420626974636f696e20626c6f636b4c53796e63686564426974636f696e426c6f636b000055030400047c20546865206c6173742073796e6368656420626974636f696e20626c6f636b544f7261636c654f70657261746f724163636f756e740000000400048020426974636f696e204f7261636c65204f70657261746f72204163636f756e7440496e686572656e74496e636c756465640100200400048c20436865636b2069662074686520696e686572656e742077617320696e636c7564656401390301c8146c4d617850656e64696e67436f6e6669726d6174696f6e5574786f7310101027000004650120546865206d6178696d756d206e756d626572206f66205554584f7320746861742063616e206265207761746368656420696e206120626c6f636b20616e642f6f72206578706972696e672061742073616d6520626c6f636b904d617850656e64696e6746756e64696e6745787069726174696f6e73506572426c6f636b10106400000004310120546865206d6178696d756d206e756d626572206f6620657870697265642070656e64696e672066756e64696e6720656e747269657320636c65616e656420757020696e206120626c6f636b604d617843616e6469646174655574786f735065724c6f636b10106400000004c8204d6178696d756d206e756d626572206f662063616e646964617465205554584f732073746f72656420706572206c6f636b704d617850656e64696e67436f6e6669726d6174696f6e426c6f636b7330209000000000000000042501204d6178696d756d20626974636f696e20626c6f636b7320746f2077617463682061205574786f20666f7220636f6e6669726d6174696f6e206265666f72652063616e63656c696e678c4d6178696d756d5361746f7368695468726573686f6c6446726f6d45787065637465643020e803000000000000084501204d6178696d756d206e756d626572206f66207361746f73686920646966666572656e636520616c6c6f7765642066726f6d20657870656374656420746f20636f6e73696465722061205554584f206173302022636f6e6669726d656422012d0607185661756c747301185661756c7473282c4e6578745661756c744964000010040000285661756c7473427949640001040510310604000434205661756c7473206279206964445661756c74496442794f70657261746f7200010405001004000440205661756c7473206279206f776e6572345661756c74585075624279496400010405104d06040004e0205661756c7420426974636f696e205870756220616e642063757272656e74206368696c6420636f756e746572206279205661756c744964644c617374436f6c6c6563744672616d6542795661756c7449640001040510300400049420546865206c61737420636f6c6c656374206672616d65206f662065616368207661756c747c50656e64696e675465726d734d6f64696669636174696f6e7342795469636b01010405305d0604000871012050656e64696e67207465726d7320746861742077696c6c20626520636f6d6d69747465642061742074686520676976656e20626c6f636b206e756d62657220286d7573742062652061206d696e696d756d206f66203120736c6f7434206368616e67652061776179295850656e64696e67436f7369676e42795661756c74496401010405106106040004a420426974636f696e204c6f636b732070656e64696e6720636f7369676e206279207661756c74206964744f727068616e65645574786f4163636f756e747342795661756c74496401010805026d0610100000000004c8204f727068616e656420426974636f696e205574786f732070656e64696e6720636f7369676e206279207661756c742069646c5661756c7446756e647352656c656173696e67427948656967687401010405307106040004fc20546865207661756c7473207468617420686176652066756e64732072656c656173696e67206174206120676976656e20626974636f696e2068656967687458526576656e75655065724672616d6542795661756c740101040510790604000c710120547261636b7320726576656e75652066726f6d20426974636f696e204c6f636b7320616e6420547265617375727920506f6f6c7320666f722074686520747261696c696e67206672616d657320666f722065616368207661756c747101202861206672616d65206973206120226d696e696e67206461792220696e204172676f6e292e204e6577657374206672616d6573206172652066697273742e204672616d6573206172652072656d6f76656420616674657220746865050120636f6c6c6563742065787069726174696f6e2077696e646f77202860526576656e7565436f6c6c656374696f6e45787069726174696f6e4672616d657360292e01590301dc10884d617850656e64696e675465726d4d6f64696669636174696f6e735065725469636b10106400000004b420546865206d61782070656e64696e67207661756c74207465726d206368616e6765732070657220626c6f636b244d61785661756c747310101027000004b420546865206d6178206e756d626572206f66207661756c747320746861742063616e2062652063726561746564644d617850656e64696e67436f7369676e735065725661756c7410106400000004a4204d617820636f6e63757272656e7420636f7369676e732070656e64696e6720706572207661756c7484526576656e7565436f6c6c656374696f6e45787069726174696f6e4672616d657330200a0000000000000004f020546865206e756d626572206f66206672616d65732077697468696e20776869636820726576656e7565206d75737420626520636f6c6c65637465640185060830426974636f696e4c6f636b730130426974636f696e4c6f636b7334284e6578745574786f4964000030040000344c6f636b7342795574786f496400010405308906040004e02053746f72657320626974636f696e207574786f73207468617420686176652072657175657374656420746f2062652072656c6561736564405574786f49647342795661756c74496400010805059106900400048c20496e646578206f6620616374697665205554584f2049447320706572207661756c746c4c6f636b52656c65617365436f7369676e486569676874427949640001040530100400040d012053746f7265732074686520626c6f636b206e756d62657220776865726520612072656c656173652077617320636f7369676e656420627920746865207661756c742e6c4c6f636b52656c65617365526571756573747342795574786f496400010405309506040004e02053746f72657320626974636f696e206c6f636b73207468617420686176652072657175657374656420746f2062652072656c6561736564584f727068616e65645574786f7342794163636f756e74000108050599069d060400042501204d69736d617463686564207574786f73207468617420776572652073656e74207769746820696e76616c696420616d6f756e747320746f2061206c6f636b656420626974636f696e3c4d696e696d756d5361746f7368697301003020000000000000000004c820546865206d696e696d756d206e756d626572206f66207361746f7368697320746861742063616e206265206c6f636b6564504c6f636b436f7369676e44756542794672616d650101040530a906040004f0205574786f7320746861742068617665206265656e2072657175657374656420746f20626520636f7369676e656420666f722072656c656173696e67784c6f636b45787069726174696f6e734279426974636f696e4865696768740101040530ad060400085d012045787069726174696f6e206f6620626974636f696e206c6f636b7320627920626974636f696e206865696768742e2046756e647320617265206275726e65642073696e636520746865207573657220646964206e6f749020756e6c6f636b2069742e20426974636f696e2077696c6c20676f20746f207661756c74744f727068616e65645574786f45787069726174696f6e42794672616d650101040530b106040004c42045787069726174696f6e206f66206f727068616e6564207574786f20726566732062792075736572206163636f756e74544d6963726f676f6e506572427463486973746f72790100bd060400047420486973746f7279206f66206d6963726f676f6e73207065722062746348466565436f75706f6e7342795075626c69630001040204c106040004302046656520436f75706f6e7364466565436f75706f6e734578706972696e6742794672616d650001080502c506900400045c2046656520436f75706f6e2045787069726174696f6e7301790301e424404172676f6e5469636b735065724461793020a005000000000000044c204172676f6e207469636b2070657220646179744d6178436f6e63757272656e746c7952656c656173696e674c6f636b731010e80300000488204d6178696d756d2072656c656173696e67207574786f7320617420612074696d65484c6f636b4475726174696f6e426c6f636b73302050cd00000000000004d420546865206e756d626572206f6620626974636f696e20626c6f636b73206120626974636f696e206973206c6f636b656420666f72544c6f636b5265636c616d6174696f6e426c6f636b733020e0100000000000000861012054686520626974636f696e20626c6f636b73206166746572206120426974636f696e4c6f636b206578706972657320776869636820746865207661756c742077696c6c20626520616c6c6f77656420746f20636c61696d28206120626974636f696e7c4c6f636b52656c65617365436f7369676e446561646c696e654672616d657330200a0000000000000004fc204e756d626572206f66206672616d65732061207661756c742068617320746f20636f756e7465722d7369676e206120626974636f696e2072656c656173657c4f727068616e65645574786f52656c656173654578706972794672616d657330200a00000000000000084d01204e756d626572206f66206672616d6573206f727068616e6564205554584f2072656c6561736520656e7472696573206172652072657461696e65642061667465722061206c6f636b206c6966656379636c6590207472616e736974696f6e206265666f7265206265696e6720636c65616e65642075702e704d6178436f6e63757272656e746c794578706972696e674c6f636b731010102700000861012050616c6c65742073746f7261676520726571756972657320626f756e64732c20736f207765206861766520746f207365742061206d6178696d756d206e756d62657220746861742063616e2065787069726520696e2061342073696e676c6520626c6f636b505469636b73506572426974636f696e426c6f636b30200a000000000000000488204e756d626572206f66207469636b732070657220626974636f696e20626c6f636b484d617842746350726963655469636b41676510101e00000004c0204d617820616c6c6f776564207469636b2d616765206f66206d6963726f676f6e2d7065722d6274632070726963657301c90609204e6f74617269657301204e6f74617269657318304e6578744e6f7461727949640000100400004050726f706f7365644e6f7461726965730001040200d106040000444578706972696e6750726f706f73616c730101040510d506040000384163746976654e6f7461726965730100d906040000404e6f746172794b6579486973746f72790101040510e1060400005c5175657565644e6f746172794d6574614368616e6765730101040530ed06040004cc204d65746164617461206368616e67657320746f206265206163746976617465642061742074686520676976656e207469636b01a10301f018444d61784163746976654e6f746172696573101019000000049020546865206d6178696d756d20616374697665206e6f74617269657320616c6c6f776564544d617850726f706f73616c486f6c64426c6f636b731010c04e000004c420546865206d6178696d756d20626c6f636b7320612070726f706f73616c2063616e2073697420756e617070726f766564504d617850726f706f73616c73506572426c6f636b10100a00000000504d6574614368616e6765735469636b44656c617930200600000000000000084901204e756d626572206f66207469636b7320746f2064656c6179206368616e67696e672061206e6f74617269657327206d65746120287468697320697320746f20616c6c6f7720612077696e646f7720666f72f4206e6f74617269657320746f2073776974636820746f206e6577206b6579732061667465722061206e6577206b65792069732066696e616c697a656429544d61785469636b73466f724b6579486973746f72791010400b000008e0204e756d626572206f66207469636b7320746f206d61696e7461696e206b657920686973746f727920666f722065616368206e6f74617279a8204e4f54453a206f6e6c79207072756e6564207768656e206e6577206b65797320617265206164646564384d61784e6f74617279486f7374731010040000000488204d6178696d756d20686f7374732061206e6f746172792063616e20737570706c7901fd060a204e6f7465626f6f6b01204e6f7465626f6f6b1c8c4e6f7465626f6f6b4368616e6765644163636f756e7473526f6f7442794e6f746172790001080205610234040004010120446f75626c652073746f72616765206d6170206f66206e6f74617279206964202b206e6f7465626f6f6b202320746f20746865206368616e676520726f6f74a04163636f756e744f726967696e4c6173744368616e6765644e6f7465626f6f6b42794e6f74617279000108020201071004000c35012053746f72616765206d6170206f66206163636f756e74206f726967696e20286e6f746172795f69642c206e6f7465626f6f6b2c206163636f756e745f7569642920746f20746865206c6173741501206e6f7465626f6f6b20636f6e7461696e696e672074686973206163636f756e7420696e20746865206368616e676564206163636f756e7473206d65726b6c6520726f6f749820284e6f7465626f6f6b4368616e6765644163636f756e7473526f6f7442794e6f74617279296c4c6173744e6f7465626f6f6b44657461696c7342794e6f74617279010104021005070400086901204c697374206f66206c61737420666577206e6f7465626f6f6b2064657461696c73206279206e6f746172792e2054686520626f6f6c206973207768657468657220746865206e6f7465626f6f6b20697320656c696769626c65d820666f7220766f7465732028726563656976656420617420636f7272656374207469636b20616e64206175646974207061737365642938426c6f636b4e6f7465626f6f6b730100ed020400049420546865206e6f7465626f6f6b7320696e636c7564656420696e207468697320626c6f636b40496e686572656e74496e636c756465640100200400048c20436865636b2069662074686520696e686572656e742077617320696e636c75646564704e6f7461726965734c6f636b6564466f724661696c65644175646974000104021015070400048c204e6f746172696573206c6f636b656420666f72206661696c696e6720617564697473744c6f636b65644e6f746172795265616479466f72526570726f636573730001040210100400040101204e6f74617269657320726561647920746f20737461727420726570726f63657373696e67206174206120676976656e206e6f7465626f6f6b206e756d62657201a503011501000119070b34436861696e5472616e736665720134436861696e5472616e7366657210384e6578745472616e7366657249640000100400004c50656e64696e675472616e73666572734f757400010402101d07040000704578706972696e675472616e73666572734f757442794e6f7461727901010805059106210704001845012045787069726174696f6e20696e64657820666f72206f7574676f696e67207472616e7366657273206b657965642062792060286e6f746172795f69642c2065787069726174696f6e5f7469636b29602e006901204e4f54453a2045787069726174696f6e2070726f63657373696e6720666f6c6c6f7773206e6f7465626f6f6b2070726f6772657373696f6e2028606865616465722e7469636b602920666f722065616368206e6f746172792c5101206e6f742077616c6c2f72756e74696d65207469636b2e2049662061206e6f746172792073746f7073207375626d697474696e67206e6f7465626f6f6b7320696e646566696e6974656c792c2070656e64696e676501207472616e736665727320666f722074686174206e6f746172792072656d61696e2066726f7a656e2062792064657369676e20756e74696c2061206e6f746172792d737769746368207265636f766572792070617468206973282065786563757465642e544879706572627269646765546f6b656e41646d696e000000040004ac205468652061646d696e206f662074686520687970657262726964676520746f6b656e206761746577617901e1030131010c2050616c6c657449642507207472616e73666572005c5472616e7366657245787069726174696f6e5469636b733020b036000000000000085d0120486f77206c6f6e672061207472616e736665722073686f756c642072656d61696e20696e2073746f72616765206265666f72652072657475726e696e672e204e4f54453a20746865726520697320612032207469636bc820677261636520706572696f642077686572652077652077696c6c207374696c6c20616c6c6f772061207472616e73666572784d617850656e64696e675472616e73666572734f7574506572426c6f636b1010e803000004bc20486f77206d616e79207472616e7366657273206f75742063616e206265207175657565642070657220626c6f636b0129070c34426c6f636b5365616c537065630134426c6f636b5365616c53706563284843757272656e74566f74654d696e696d756d01001840000000000000000000000000000000000c5501205468652063757272656e7420766f7465206d696e696d756d206f662074686520636861696e2e20426c6f636b20766f746573207573652074686973206d696e696d756d20746f2064657465726d696e65207468655d01206d696e696d756d20616d6f756e74206f6620746178206f7220636f6d70757465206e656564656420746f20637265617465206120766f74652e2049742069732061646a7573746564207570206f7220646f776e20746f74207461726765742061206d6178206e756d626572206f6620766f7465736043757272656e74436f6d70757465446966666963756c747901001840000000000000000000000000000000000c5501205468652063757272656e7420766f7465206d696e696d756d206f662074686520636861696e2e20426c6f636b20766f746573207573652074686973206d696e696d756d20746f2064657465726d696e65207468655d01206d696e696d756d20616d6f756e74206f6620746178206f7220636f6d70757465206e656564656420746f20637265617465206120766f74652e2049742069732061646a7573746564207570206f7220646f776e20746f74207461726765742061206d6178206e756d626572206f6620766f7465735843757272656e74436f6d707574654b6579426c6f636b00003404000c650120546865206b6579204b2069732073656c656374656420746f206265207468652068617368206f66206120626c6f636b20696e2074686520626c6f636b636861696e202d207468697320626c6f636b2069732063616c6c656445012074686520276b657920626c6f636b272e20466f72206f7074696d616c206d696e696e6720616e6420766572696669636174696f6e20706572666f726d616e63652c20746865206b65792073686f756c6444206368616e6765206576657279206461795450617374436f6d70757465426c6f636b54696d657301002d070400005850726576696f7573426c6f636b54696d657374616d7000003004000498205468652074696d657374616d702066726f6d207468652070726576696f757320626c6f636b4854656d70426c6f636b54696d657374616d7000003004000048566f74654d696e696d756d486973746f7279010031070400043101204b6565707320746865206c617374203320766f7465206d696e696d756d732e20546865206669727374206f6e65206170706c69657320746f207468652063757272656e7420626c6f636b2e7c54656d7043757272656e745469636b4e6f7465626f6f6b73496e426c6f636b010035070400043d012054656d706f726172792073746f7265206f6620616e792063757272656e74207469636b206e6f7465626f6f6b7320696e636c7564656420696e207468697320626c6f636b20287673207469636b294c54656d70426c6f636b566f74654469676573740000bd02040004802054656d706f726172792073746f72652074686520766f7465206469676573743850617374426c6f636b566f7465730100410704000001e50301350110444d61784163746976654e6f746172696573101019000000049020546865206d6178696d756d20616374697665206e6f74617269657320616c6c6f77656440546172676574426c6f636b566f746573184050c30000000000000000000000000000047020546865206465736972656420766f7465732070657220626c6f636b84486973746f726963616c436f6d70757465426c6f636b73466f724176657261676510100a000000085d0120546865206e756d626572206f6620686973746f726963616c20636f6d707574652074696d657320746f2075736520746f2063616c63756c6174652074686520726f6c6c696e6720636f6d707574652061766572616765442028666f722061646a7573746d656e742978486973746f726963616c566f7465426c6f636b73466f72417665726167651010a005000004490120546865206e756d626572206f6620686973746f726963616c20766f746520626c6f636b7320746f2075736520746f2063616c63756c6174652074686520726f6c6c696e6720766f74652061766572616765014d070d1c446f6d61696e73011c446f6d61696e730c4452656769737465726564446f6d61696e7300010402345d010400004c5a6f6e655265636f7264734279446f6d61696e00010402343d01040000584578706972696e67446f6d61696e734279426c6f636b0101040530510704000001e903013901000155070e285072696365496e64657801285072696365496e646578101c43757272656e740000f103040004782053746f726573207468652061637469766520707269636520696e646578244c61737456616c69640000f103040004882053746f72657320746865206c6173742076616c696420707269636520696e64657840486973746f7269634172676f6e43504901005907040004ac20547261636b73207468652061766572616765206370692064617461206576657279203630207469636b73204f70657261746f72000000040004842054686520707269636520696e646578206f70657261746f72206163636f756e7401ed03016101106c4d6178446f776e74696d655469636b734265666f7265526573657430203c0000000000000004d820546865206d6178696d756d206e756d626572206f66207469636b7320746f207072657365727665206120707269636520696e646578484d61785072696365416765496e5469636b733020a005000000000000046c20546865206f6c6465737420686973746f727920746f206b6565708c4d61784172676f6e4368616e67655065725469636b4177617946726f6d546172676574e0400000c16ff2862300000000000000000008650120546865206d617820707269636520646966666572656e63652064726f7070696e672062656c6f7720746172676574206f722072616973696e672061626f76652074617267657420706572207469636b2e2054686572652773e4206e6f20636f72726573706f6e64696e6720636f6e7374616e7420666f722074696d6520746f207265636f7665727920746f207461726765746c4d61784172676f6e5461726765744368616e67655065725469636be0400000c16ff28623000000000000000000000165070f28417574686f72736869700128417574686f72736869700418417574686f720000000400046420417574686f72206f662063757272656e7420626c6f636b2e00000000101c4772616e647061011c4772616e6470611c1453746174650100690704000490205374617465206f66207468652063757272656e7420617574686f72697479207365742e3450656e64696e674368616e676500006d07040004c42050656e64696e67206368616e67653a20287369676e616c65642061742c207363686564756c6564206368616e6765292e284e657874466f72636564000010040004bc206e65787420626c6f636b206e756d6265722077686572652077652063616e20666f7263652061206368616e67652e1c5374616c6c6564000061020400049020607472756560206966207765206172652063757272656e746c79207374616c6c65642e3043757272656e745365744964010030200000000000000000085d0120546865206e756d626572206f66206368616e6765732028626f746820696e207465726d73206f66206b65797320616e6420756e6465726c79696e672065636f6e6f6d696320726573706f6e736962696c697469657329c420696e20746865202273657422206f66204772616e6470612076616c696461746f72732066726f6d2067656e657369732e30536574496453657373696f6e00010405301004002859012041206d617070696e672066726f6d206772616e6470612073657420494420746f2074686520696e646578206f6620746865202a6d6f737420726563656e742a2073657373696f6e20666f722077686963682069747368206d656d62657273207765726520726573706f6e7369626c652e0045012054686973206973206f6e6c79207573656420666f722076616c69646174696e672065717569766f636174696f6e2070726f6f66732e20416e2065717569766f636174696f6e2070726f6f66206d7573744d0120636f6e7461696e732061206b65792d6f776e6572736869702070726f6f6620666f72206120676976656e2073657373696f6e2c207468657265666f7265207765206e65656420612077617920746f20746965450120746f6765746865722073657373696f6e7320616e64204752414e44504120736574206964732c20692e652e207765206e65656420746f2076616c6964617465207468617420612076616c696461746f7241012077617320746865206f776e6572206f66206120676976656e206b6579206f6e206120676976656e2073657373696f6e2c20616e642077686174207468652061637469766520736574204944207761735420647572696e6720746861742073657373696f6e2e00b82054574f582d4e4f54453a2060536574496460206973206e6f7420756e646572207573657220636f6e74726f6c2e2c417574686f7269746965730100710704000484205468652063757272656e74206c697374206f6620617574686f7269746965732e01f5030165010c384d6178417574686f7269746965731010e8030000045c204d617820417574686f72697469657320696e20757365344d61784e6f6d696e61746f727310100000000004d420546865206d6178696d756d206e756d626572206f66206e6f6d696e61746f727320666f7220656163682076616c696461746f722e584d6178536574496453657373696f6e456e74726965733020020000000000000018390120546865206d6178696d756d206e756d626572206f6620656e747269657320746f206b65657020696e207468652073657420696420746f2073657373696f6e20696e646578206d617070696e672e0031012053696e6365207468652060536574496453657373696f6e60206d6170206973206f6e6c79207573656420666f722076616c69646174696e672065717569766f636174696f6e73207468697329012076616c75652073686f756c642072656c61746520746f2074686520626f6e64696e67206475726174696f6e206f66207768617465766572207374616b696e672073797374656d2069733501206265696e6720757365642028696620616e79292e2049662065717569766f636174696f6e2068616e646c696e67206973206e6f7420656e61626c6564207468656e20746869732076616c7565342063616e206265207a65726f2e0175071124426c6f636b5365616c0124426c6f636b5365616c1c4c4c617374426c6f636b5365616c6572496e666f000079070400003c506172656e74566f74696e674b65790100c9020400086101205468652063616c63756c6174656420706172656e7420766f74696e67206b657920666f72206120626c6f636b2e2052656665727320746f20746865204e6f7465626f6f6b20426c6f636b566f74652052657665616c6564e020536563726574202b20566f7465734d65726b6c65526f6f74206f662074686520706172656e7420626c6f636b206e6f7465626f6f6b732e38426c6f636b466f726b506f7765720100d102910100000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000008e4205468652063616c63756c6174656420737472656e67746820696e207468652072756e74696d6520736f20746861742069742063616e20626511012075706772616465642c20627574206973207573656420627920746865206e6f646520746f2064657465726d696e6520776869636820666f726b20746f20666f6c6c6f7744566f746573496e50617374335469636b7301007d070400049c2054686520636f756e74206f6620766f74657320696e20746865206c6173742033207469636b734054656d705365616c496e686572656e7400002504040004a820456e7375726573206f6e6c7920612073696e676c6520696e686572656e74206973206170706c696564504c6173745469636b57697468566f74655365616c010030200000000000000000004c4973426c6f636b46726f6d566f74655365616c0100200400047c2049732074686520626c6f636b2066726f6d206120766f7465207365616c3f01210400000181071230426c6f636b526577617264730130426c6f636b5265776172647314385061796f7574734279426c6f636b010104021085070400048c20486973746f726963616c207061796f75747320627920626c6f636b206e756d62657248426c6f636b526577617264735061757365640100200400048420426f6f6c20696620626c6f636b2072657761726473206172652070617573656450426c6f636b526577617264734279436f686f72740100890704000441012054686520636f686f727420626c6f636b2072657761726473206279206d696e696e6720636f686f7274202869652c2077697468207468652073616d65207374617274696e67206672616d6520696429384172676f6e73506572426c6f636b0100184000000000000000000000000000000000087501205468652063757272656e74207363616c656420626c6f636b20726577617264732e2049742077696c6c2061646a757374206261736564206f6e20746865206172676f6e206d6f76656d656e7420617761792066726f6d2070726963651c2074617267657424426c6f636b46656573010018400000000000000000000000000000000000013d0401710118585374617274696e674172676f6e73506572426c6f636b184020a107000000000000000000000000000488204e756d626572206f66206172676f6e73206d696e7465642070657220626c6f636b7c5374617274696e674f776e657273686970546f6b656e73506572426c6f636b184020a1070000000000000000000000000004b0204e756d626572206f66206f776e65727368697020746f6b656e73206d696e7465642070657220626c6f636b44496e6372656d656e74616c47726f7774688d07a0e8030000000000000000000000000000b400000000000000404b4c0000000000000000000000000004f4205468652067726f777468207061746820666f7220626f7468206f776e65727368697020616e64206172676f6e73206265666f72652068616c76696e673048616c76696e675469636b733020200b20000000000004dc204e756d626572206f66207469636b7320666f722068616c76696e67206f66206f776e65727368697020736861726520726577617264734448616c76696e67426567696e5469636b733020105c0c000000000004050120546865207469636b206e756d626572206174207768696368207468652068616c76696e6720626567696e7320666f72206f776e65727368697020746f6b656e73484d696e65725061796f757450657263656e74e04000008bbd0689680a0000000000000000042d012050657263656e742061732061206e756d626572206f7574206f6620313030206f662074686520626c6f636b20726577617264207468617420676f657320746f20746865206d696e65722e01910713104d696e7401104d696e74144050656e64696e674d696e745574786f730100950704000c6d0120426974636f696e205554584f7320746861742068617665206265656e207375626d697474656420666f72206d696e74696e672e2054686973206c697374206973204649464f20666f72206d696e74696e67207768656e657665724020612920435049203e3d203020616e643d012062292074686520616767726567617465206d696e74656420426974636f696e73203c3d2074686520616767726567617465206d696e746564206d6963726f676f6e732066726f6d206d696e696e67544d696e7465644d696e696e674d6963726f676f6e73010018400000000000000000000000000000000004c02054686520746f74616c20616d6f756e74206f66206d6963726f676f6e73206d696e74656420666f72206d696e696e67584d696e746564426974636f696e4d6963726f676f6e7301001840000000000000000000000000000000000455012054686520746f74616c20616d6f756e74206f6620426974636f696e206d6963726f676f6e73206d696e7465642e2043616e6e6f742065786365656420604d696e7465644d696e696e674d6963726f676f6e73602e4c4d696e696e674d696e74506572436f686f72740100a10704000445012054686520616d6f756e74206f66206172676f6e73206d696e74656420706572206d696e696e6720636f686f7274202869652c2067726f75706564206279207374617274696e67206672616d65206964293c426c6f636b4d696e74416374696f6e0100a507d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000141040189010c4c4d617850656e64696e674d696e745574786f7310101027000004f020546865206d6178696d756d206e756d626572206f66205554584f7320746861742063616e2062652077616974696e6720666f72206d696e74696e67604d61784d696e74486973746f7279546f4d61696e7461696e10100a00000004b420546865206d6178696d756d206e756d626572206f66206d696e7420686973746f7269657320746f206b656570444d6178506f737369626c654d696e6572731010a00500000001ad07142042616c616e636573012042616c616e6365731c34546f74616c49737375616e6365010018400000000000000000000000000000000004982054686520746f74616c20756e6974732069737375656420696e207468652073797374656d2e40496e61637469766549737375616e636501001840000000000000000000000000000000000409012054686520746f74616c20756e697473206f66206f75747374616e64696e672064656163746976617465642062616c616e636520696e207468652073797374656d2e1c4163636f756e74010104020014010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080600901205468652042616c616e6365732070616c6c6574206578616d706c65206f662073746f72696e67207468652062616c616e6365206f6620616e206163636f756e742e00282023204578616d706c650034206060606e6f636f6d70696c65b02020696d706c2070616c6c65745f62616c616e6365733a3a436f6e66696720666f722052756e74696d65207b19022020202074797065204163636f756e7453746f7265203d2053746f726167654d61705368696d3c53656c663a3a4163636f756e743c52756e74696d653e2c206672616d655f73797374656d3a3a50726f76696465723c52756e74696d653e2c204163636f756e7449642c2053656c663a3a4163636f756e74446174613c42616c616e63653e3e0c20207d102060606000150120596f752063616e20616c736f2073746f7265207468652062616c616e6365206f6620616e206163636f756e7420696e20746865206053797374656d602070616c6c65742e00282023204578616d706c650034206060606e6f636f6d70696c65b02020696d706c2070616c6c65745f62616c616e6365733a3a436f6e66696720666f722052756e74696d65207b7420202074797065204163636f756e7453746f7265203d2053797374656d0c20207d102060606000510120427574207468697320636f6d657320776974682074726164656f6666732c2073746f72696e67206163636f756e742062616c616e63657320696e207468652073797374656d2070616c6c65742073746f7265736d0120606672616d655f73797374656d60206461746120616c6f6e677369646520746865206163636f756e74206461746120636f6e747261727920746f2073746f72696e67206163636f756e742062616c616e63657320696e207468652901206042616c616e636573602070616c6c65742c20776869636820757365732061206053746f726167654d61706020746f2073746f72652062616c616e6365732064617461206f6e6c792e4101204e4f54453a2054686973206973206f6e6c79207573656420696e207468652063617365207468617420746869732070616c6c6574206973207573656420746f2073746f72652062616c616e6365732e144c6f636b730101040200b107040010b820416e79206c6971756964697479206c6f636b73206f6e20736f6d65206163636f756e742062616c616e6365732e2501204e4f54453a2053686f756c64206f6e6c79206265206163636573736564207768656e2073657474696e672c206368616e67696e6720616e642066726565696e672061206c6f636b2e00ad0120557365206f66206c6f636b73206973206465707265636174656420696e206661766f7572206f6620667265657a65732e20536565206068747470733a2f2f6769746875622e636f6d2f706172697479746563682f7375627374726174652f70756c6c2f31323935312f602052657365727665730101040200c10704000ca4204e616d6564207265736572766573206f6e20736f6d65206163636f756e742062616c616e6365732e00b10120557365206f66207265736572766573206973206465707265636174656420696e206661766f7572206f6620686f6c64732e20536565206068747470733a2f2f6769746875622e636f6d2f706172697479746563682f7375627374726174652f70756c6c2f31323935312f6014486f6c64730101040200cd070400046c20486f6c6473206f6e206163636f756e742062616c616e6365732e1c467265657a65730101040200d9070400048820467265657a65206c6f636b73206f6e206163636f756e742062616c616e6365732e01450401990110484578697374656e7469616c4465706f73697418401027000000000000000000000000000020410120546865206d696e696d756d20616d6f756e7420726571756972656420746f206b65657020616e206163636f756e74206f70656e2e204d5553542042452047524541544552205448414e205a45524f2100590120496620796f75202a7265616c6c792a206e65656420697420746f206265207a65726f2c20796f752063616e20656e61626c652074686520666561747572652060696e7365637572655f7a65726f5f65646020666f72610120746869732070616c6c65742e20486f77657665722c20796f7520646f20736f20617420796f7572206f776e207269736b3a20746869732077696c6c206f70656e2075702061206d616a6f7220446f5320766563746f722e590120496e206361736520796f752068617665206d756c7469706c6520736f7572636573206f662070726f7669646572207265666572656e6365732c20796f75206d617920616c736f2067657420756e65787065637465648c206265686176696f757220696620796f7520736574207468697320746f207a65726f2e00f020426f74746f6d206c696e653a20446f20796f757273656c662061206661766f757220616e64206d616b65206974206174206c65617374206f6e6521204d61784c6f636b7310103200000010f420546865206d6178696d756d206e756d626572206f66206c6f636b7320746861742073686f756c64206578697374206f6e20616e206163636f756e742edc204e6f74207374726963746c7920656e666f726365642c20627574207573656420666f722077656967687420657374696d6174696f6e2e00ad0120557365206f66206c6f636b73206973206465707265636174656420696e206661766f7572206f6620667265657a65732e20536565206068747470733a2f2f6769746875622e636f6d2f706172697479746563682f7375627374726174652f70756c6c2f31323935312f602c4d617852657365727665731010000000000c0d0120546865206d6178696d756d206e756d626572206f66206e616d656420726573657276657320746861742063616e206578697374206f6e20616e206163636f756e742e00b10120557365206f66207265736572766573206973206465707265636174656420696e206661766f7572206f6620686f6c64732e20536565206068747470733a2f2f6769746875622e636f6d2f706172697479746563682f7375627374726174652f70756c6c2f31323935312f60284d6178467265657a657310100200000004610120546865206d6178696d756d206e756d626572206f6620696e646976696475616c20667265657a65206c6f636b7320746861742063616e206578697374206f6e20616e206163636f756e7420617420616e792074696d652e01ed0715244f776e65727368697001244f776e6572736869701c34546f74616c49737375616e6365010018400000000000000000000000000000000004982054686520746f74616c20756e6974732069737375656420696e207468652073797374656d2e40496e61637469766549737375616e636501001840000000000000000000000000000000000409012054686520746f74616c20756e697473206f66206f75747374616e64696e672064656163746976617465642062616c616e636520696e207468652073797374656d2e1c4163636f756e74010104020014010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080600901205468652042616c616e6365732070616c6c6574206578616d706c65206f662073746f72696e67207468652062616c616e6365206f6620616e206163636f756e742e00282023204578616d706c650034206060606e6f636f6d70696c65b02020696d706c2070616c6c65745f62616c616e6365733a3a436f6e66696720666f722052756e74696d65207b19022020202074797065204163636f756e7453746f7265203d2053746f726167654d61705368696d3c53656c663a3a4163636f756e743c52756e74696d653e2c206672616d655f73797374656d3a3a50726f76696465723c52756e74696d653e2c204163636f756e7449642c2053656c663a3a4163636f756e74446174613c42616c616e63653e3e0c20207d102060606000150120596f752063616e20616c736f2073746f7265207468652062616c616e6365206f6620616e206163636f756e7420696e20746865206053797374656d602070616c6c65742e00282023204578616d706c650034206060606e6f636f6d70696c65b02020696d706c2070616c6c65745f62616c616e6365733a3a436f6e66696720666f722052756e74696d65207b7420202074797065204163636f756e7453746f7265203d2053797374656d0c20207d102060606000510120427574207468697320636f6d657320776974682074726164656f6666732c2073746f72696e67206163636f756e742062616c616e63657320696e207468652073797374656d2070616c6c65742073746f7265736d0120606672616d655f73797374656d60206461746120616c6f6e677369646520746865206163636f756e74206461746120636f6e747261727920746f2073746f72696e67206163636f756e742062616c616e63657320696e207468652901206042616c616e636573602070616c6c65742c20776869636820757365732061206053746f726167654d61706020746f2073746f72652062616c616e6365732064617461206f6e6c792e4101204e4f54453a2054686973206973206f6e6c79207573656420696e207468652063617365207468617420746869732070616c6c6574206973207573656420746f2073746f72652062616c616e6365732e144c6f636b730101040200b107040010b820416e79206c6971756964697479206c6f636b73206f6e20736f6d65206163636f756e742062616c616e6365732e2501204e4f54453a2053686f756c64206f6e6c79206265206163636573736564207768656e2073657474696e672c206368616e67696e6720616e642066726565696e672061206c6f636b2e00ad0120557365206f66206c6f636b73206973206465707265636174656420696e206661766f7572206f6620667265657a65732e20536565206068747470733a2f2f6769746875622e636f6d2f706172697479746563682f7375627374726174652f70756c6c2f31323935312f602052657365727665730101040200c10704000ca4204e616d6564207265736572766573206f6e20736f6d65206163636f756e742062616c616e6365732e00b10120557365206f66207265736572766573206973206465707265636174656420696e206661766f7572206f6620686f6c64732e20536565206068747470733a2f2f6769746875622e636f6d2f706172697479746563682f7375627374726174652f70756c6c2f31323935312f6014486f6c64730101040200cd070400046c20486f6c6473206f6e206163636f756e742062616c616e6365732e1c467265657a65730101040200d9070400048820467265657a65206c6f636b73206f6e206163636f756e742062616c616e6365732e014d0401bd0110484578697374656e7469616c4465706f73697418401027000000000000000000000000000020410120546865206d696e696d756d20616d6f756e7420726571756972656420746f206b65657020616e206163636f756e74206f70656e2e204d5553542042452047524541544552205448414e205a45524f2100590120496620796f75202a7265616c6c792a206e65656420697420746f206265207a65726f2c20796f752063616e20656e61626c652074686520666561747572652060696e7365637572655f7a65726f5f65646020666f72610120746869732070616c6c65742e20486f77657665722c20796f7520646f20736f20617420796f7572206f776e207269736b3a20746869732077696c6c206f70656e2075702061206d616a6f7220446f5320766563746f722e590120496e206361736520796f752068617665206d756c7469706c6520736f7572636573206f662070726f7669646572207265666572656e6365732c20796f75206d617920616c736f2067657420756e65787065637465648c206265686176696f757220696620796f7520736574207468697320746f207a65726f2e00f020426f74746f6d206c696e653a20446f20796f757273656c662061206661766f757220616e64206d616b65206974206174206c65617374206f6e6521204d61784c6f636b7310103200000010f420546865206d6178696d756d206e756d626572206f66206c6f636b7320746861742073686f756c64206578697374206f6e20616e206163636f756e742edc204e6f74207374726963746c7920656e666f726365642c20627574207573656420666f722077656967687420657374696d6174696f6e2e00ad0120557365206f66206c6f636b73206973206465707265636174656420696e206661766f7572206f6620667265657a65732e20536565206068747470733a2f2f6769746875622e636f6d2f706172697479746563682f7375627374726174652f70756c6c2f31323935312f602c4d617852657365727665731010000000000c0d0120546865206d6178696d756d206e756d626572206f66206e616d656420726573657276657320746861742063616e206578697374206f6e20616e206163636f756e742e00b10120557365206f66207265736572766573206973206465707265636174656420696e206661766f7572206f6620686f6c64732e20536565206068747470733a2f2f6769746875622e636f6d2f706172697479746563682f7375627374726174652f70756c6c2f31323935312f60284d6178467265657a657310100200000004610120546865206d6178696d756d206e756d626572206f6620696e646976696475616c20667265657a65206c6f636b7320746861742063616e206578697374206f6e20616e206163636f756e7420617420616e792074696d652e01f107161c54785061757365011c54785061757365042c50617573656443616c6c7300010402c50190040004b42054686520736574206f662063616c6c73207468617420617265206578706c696369746c79207061757365642e01510401c10104284d61784e616d654c656e1010000100000c2501204d6178696d756d206c656e67746820666f722070616c6c6574206e616d6520616e642063616c6c206e616d65205343414c4520656e636f64656420737472696e67206e616d65732e00a820544f4f204c4f4e47204e414d45532057494c4c2042452054524541544544204153205041555345442e01f50717485472616e73616374696f6e5061796d656e7401485472616e73616374696f6e5061796d656e740c444e6578744665654d756c7469706c6965720100e040000064a7b3b6e00d0000000000000000003853746f7261676556657273696f6e0100f9070400003c54785061796d656e744372656469740000fd0704000cf02054686520604f6e4368617267655472616e73616374696f6e602073746f726573207468652077697468647261776e2074782066656520686572652e00350120557365206077697468647261775f74786665656020616e64206072656d61696e696e675f74786665656020746f206163636573732066726f6d206f757473696465207468652063726174652e0001cd0104604f7065726174696f6e616c4665654d756c7469706c696572080405545901204120666565206d756c7469706c69657220666f7220604f7065726174696f6e616c602065787472696e7369637320746f20636f6d7075746520227669727475616c207469702220746f20626f6f73742074686569722c20607072696f726974796000510120546869732076616c7565206973206d756c7469706c69656420627920746865206066696e616c5f6665656020746f206f627461696e206120227669727475616c20746970222074686174206973206c61746572f420616464656420746f20612074697020636f6d706f6e656e7420696e20726567756c617220607072696f72697479602063616c63756c6174696f6e732e4d01204974206d65616e732074686174206120604e6f726d616c60207472616e73616374696f6e2063616e2066726f6e742d72756e20612073696d696c61726c792d73697a656420604f7065726174696f6e616c6041012065787472696e736963202877697468206e6f20746970292c20627920696e636c7564696e672061207469702076616c75652067726561746572207468616e20746865207669727475616c207469702e003c20606060727573742c69676e6f726540202f2f20466f7220604e6f726d616c608c206c6574207072696f72697479203d207072696f726974795f63616c6328746970293b0054202f2f20466f7220604f7065726174696f6e616c601101206c6574207669727475616c5f746970203d2028696e636c7573696f6e5f666565202b2074697029202a204f7065726174696f6e616c4665654d756c7469706c6965723bc4206c6574207072696f72697479203d207072696f726974795f63616c6328746970202b207669727475616c5f746970293b1020606060005101204e6f746520746861742073696e636520776520757365206066696e616c5f6665656020746865206d756c7469706c696572206170706c69657320616c736f20746f2074686520726567756c61722060746970605d012073656e74207769746820746865207472616e73616374696f6e2e20536f2c206e6f74206f6e6c7920646f657320746865207472616e73616374696f6e206765742061207072696f726974792062756d702062617365646101206f6e207468652060696e636c7573696f6e5f666565602c2062757420776520616c736f20616d706c6966792074686520696d70616374206f662074697073206170706c69656420746f20604f7065726174696f6e616c6038207472616e73616374696f6e732e00181c5574696c6974790001550401d101044c626174636865645f63616c6c735f6c696d69741010aa2a000004a820546865206c696d6974206f6e20746865206e756d626572206f6620626174636865642063616c6c732e01050819105375646f01105375646f040c4b6579000000040004842054686520604163636f756e74496460206f6620746865207375646f206b65792e015d0401d501000109081a1049736d70011049736d7034405374617465436f6d6d69746d656e747300010402e501d904040008590120486f6c64732061206d6170206f66207374617465206d616368696e65206865696768747320746f20746865697220766572696669656420737461746520636f6d6d69746d656e74732e205468657365207374617465510120636f6d6d69746d656e747320656e642075702068657265206166746572207468657920617265207375636365737366756c6c7920766572696669656420627920612060436f6e73656e737573436c69656e74603c436f6e73656e737573537461746573000104054838040004150120486f6c64732061206d6170206f6620636f6e73656e737573207374617465206964656e7469666965727320746f20746865697220636f6e73656e7375732073746174652e50436f6e73656e7375735374617465436c69656e740001040248480400045d012041206d617070696e67206f6620636f6e73656e737573207374617465206964656e74696669657220746f2069742773206173736f63696174656420636f6e73656e73757320636c69656e74206964656e7469666965723c556e626f6e64696e67506572696f6400010402483004000411012041206d617070696e67206f6620636f6e73656e737573207374617465206964656e7469666965727320746f20746865697220756e626f6e64696e6720706572696f64733c4368616c6c656e6765506572696f6400010402dd0130040004e82041206d617070696e67206f66207374617465206d616368696e652049647320746f207468656972206368616c6c656e676520706572696f64735846726f7a656e436f6e73656e737573436c69656e7473010104024820040008e420486f6c64732061206d6170206f6620636f6e73656e73757320636c69656e74732066726f7a656e2064756520746f2062797a616e74696e6528206265686176696f7572604c617465737453746174654d616368696e6548656967687400010402dd0130040004bc20546865206c61746573742076657269666965642068656967687420666f722061207374617465206d616368696e656850726576696f757353746174654d616368696e6548656967687400010402dd0130040004c4205468652070726576696f75732076657269666965642068656967687420666f722061207374617465206d616368696e6564436f6e73656e737573436c69656e7455706461746554696d65000104054830040008190120486f6c6473207468652074696d657374616d70206174207768696368206120636f6e73656e73757320636c69656e742077617320726563656e746c7920757064617465642efc205573656420696e20656e737572696e6720746861742074686520636f6e66696775726564206368616c6c656e676520706572696f6420656c61707365732e5853746174654d616368696e6555706461746554696d6500010405e50130040008050120486f6c6473207468652074696d657374616d702061742077686963682061207374617465206d616368696e65206865696768742077617320757064617465642efc205573656420696e20656e737572696e6720746861742074686520636f6e66696775726564206368616c6c656e676520706572696f6420656c61707365732e24526573706f6e646564010104063420040008b020547261636b7320726571756573747320746861742068617665206265656e20726573706f6e64656420746f8820546865206b657920697320746865207265717565737420636f6d6d69746d656e74144e6f6e636501003020000000000000000004bc204c6174657374206e6f6e636520666f72206d657373616765732073656e742066726f6d207468697320636861696e344368696c6454726965526f6f74010034800000000000000000000000000000000000000000000000000000000000000000048020546865206368696c64207472696520726f6f74206f66206d6573736167657301610401d90100010d081b2c49736d704772616e647061012c49736d704772616e6470610458537570706f7274656453746174654d616368696e657300010405e10130040004ec2052656769737465726564207374617465206d616368696e657320666f7220746865206772616e64706120636f6e73656e73757320636c69656e7401e90401010200001c2c4879706572627269646765012c48797065726272696467650428486f7374506172616d7301000d02880000000000000000000000000000000000000000000000000000000000000000000004bc2054686520686f737420706172616d6574657273206f66207468652070616c6c65742d68797065726272696467652e00010902000111081d30546f6b656e476174657761790130546f6b656e47617465776179143c537570706f72746564417373657473000104021034040008cc2041737365747320737570706f72746564206279207468697320696e7374616e6365206f6620746f6b656e2067617465776179e82041206d6170206f6620746865206c6f63616c20617373657420696420746f2074686520746f6b656e2067617465776179206173736574206964304e617469766541737365747301010402102004000498204173736574732074686174206f726967696e6174652066726f6d207468697320636861696e2c4c6f63616c417373657473000104063410040008cc2041737365747320737570706f72746564206279207468697320696e7374616e6365206f6620746f6b656e2067617465776179e82041206d6170206f662074686520746f6b656e206761746577617920617373657420696420746f20746865206c6f63616c20617373657420696428507265636973696f6e730001080202150808040004dc2054686520646563696d616c732075736564206279207468652045564d20636f756e74657270617274206f66207468697320617373657454546f6b656e4761746577617941646472657373657300010402e10138040004bc2054686520746f6b656e2067617465776179206164726573736573206f6e20646966666572656e7420636861696e7301f5040121020420446563696d616c7308040604902054686520646563696d616c73206f6620746865206e61746976652063757272656e63790119081e2054726561737572790120547265617375727910445661756c74506f6f6c7342794672616d6501010405301d080400086501205468652063757272656e746c79206561726e696e6720636f6e7472696275746f727320666f72207468652063757272656e742065706f6368277320626f6e642066756e64732e20536f7274656420627920686967686573742c20626964732066697273747046756e646572537461746542795661756c74416e644163636f756e7400010805056d063d080400047101205065722d7661756c74207065722d6163636f756e7420636f6d6d69746d656e7420616e642063757272656e7420626f6e646564207072696e636970616c20286c6f6e672d6c6976656420736f75726365206f66207472757468292e344361706974616c4163746976650100410804000865012054686520747265617375727920706f6f6c20666f72207468652063757272656e74206672616d652e205468697320636f7272656c61746573207769746820746865206269647320636f6d696e6720696e20666f722074686511012063757272656e74206672616d652e20536f7274656420776974682074686520626967676573742073686172652066697273742e202863757272656e74206672616d65294046756e6465727342795661756c74496401010405104d080400045d01204163636f756e7473207468617420686176652061206e6f6e2d7a65726f20636f6d6d69746d656e7420666f722061207661756c742e20426f756e64656420666f72207072656469637461626c6520776569676874732e012505012502145c4d61785472656173757279436f6e7472696275746f727310106400000004c820546865206d6178696d756d206e756d626572206f6620636f6e7472696275746f727320746f206120626f6e642066756e646c4d696e696d756d4172676f6e73506572436f6e7472696275746f72184000e1f50500000000000000000000000004a020546865206d696e696d756d206172676f6e73207065722066756e6420636f6e7472696275746f722050616c6c657449642507206c7164506f6f6c7304b820412070616c6c65742069642074686174206973207573656420746f20686f6c64207468652062696420706f6f6c6850657263656e74466f7254726561737572795265736572766573f905041404e02050657263656e74206f66207468652062696420706f6f6c20726573657276656420666f722074726561737572792072657365727665732e404d61785661756c7473506572506f6f6c101064000000044d0120546865206e756d626572206f66207661756c747320746861742063616e20706172746963697061746520696e206561636820626f6e642e2054686973206973206120737562737472617465206c696d69742e0155081f28466565436f6e74726f6c0000012902000159082048496e626f756e645472616e736665724c6f670148496e626f756e645472616e736665724c6f670c4c496e626f756e6445766d5472616e736665727300010402343902040004010120496e626f756e642045564d207472616e7366657273207265636f72646564206279207468656972207265717565737420636f6d6d69746d656e74206b65792e74526563656e744172676f6e5472616e736665727342794163636f756e740101040200101000000000100d0120526563656e74207175616c696679696e67204172676f6e207472616e7366657220636f756e74206b6579656420627920726563697069656e74206163636f756e742e00510120546869732069732061207472616e7369656e742072657461696e65642d77696e646f7720696e646578206f7665722060496e626f756e6445766d5472616e7366657273602c206e6f74207065726d616e656e742420686973746f72792e68496e626f756e645472616e73666572734578706972696e67417401010405105d08040004050120496e646578206f6620696e626f756e64207472616e73666572207265636f7264206b657973206578706972696e67206174206120676976656e20626c6f636b2e00013502147c496e626f756e645472616e7366657273526574656e74696f6e426c6f636b7310104038000004d020486f77206d616e7920626c6f636b7320746f2072657461696e20696e626f756e64207472616e73666572207265636f7264732e704d61785472616e7366657273546f52657461696e506572426c6f636b10106400000004e0204d6178696d756d206e756d626572206f66207265636f7264732072657461696e65642066726f6d20612073696e676c6520626c6f636b2e5c4d6178496e626f756e645472616e736665724279746573101000280000045501204d6178696d756d206e756d626572206f6620627974657320616c6c6f77656420696e206120546f6b656e47617465776179207265717565737420626f64792028302064697361626c65732074686520636170292e804d696e696d756d5472616e736665724d6963726f676f6e73546f5265636f7264184000ca9a3b00000000000000000000000004f8204d696e696d756d20616d6f756e742028696e206261736520756e6974732920746f207265636f726420616e20696e626f756e64207472616e736665722e404f776e657273686970417373657449641010010000000490204f776e65727368697020746f6b656e20617373657420696420284172676f6e6f74292e00214c4f7065726174696f6e616c4163636f756e7473014c4f7065726174696f6e616c4163636f756e74731c4c4f7065726174696f6e616c4163636f756e74730001040200610804000405012052656769737465726564206f7065726174696f6e616c206163636f756e7473206b6579656420627920746865207072696d617279206163636f756e742069642e784f7065726174696f6e616c4163636f756e7442795375624163636f756e7400010402000004000411012052657665727365206c6f6f6b7570206f6620616e79206c696e6b6564206163636f756e7420746f20697473206f7065726174696f6e616c206163636f756e742069642e4c416363657373436f64657342795075626c696300010402046508040004cc20526567697374657265642061636365737320636f646573206b65796564206279207468656972207075626c6963206b65792e68416363657373436f6465734578706972696e6742794672616d6501010405306908040004e820526567697374657265642061636365737320636f646573206578706972696e67206174206120676976656e206d696e696e67206672616d652e1c526577617264730100710808000004d020436f6e666967757265642072657761726420616d6f756e747320666f72206f7065726174696f6e616c206163636f756e74732e5c4f7065726174696f6e616c5265776172647351756575650100750804000435012050656e64696e67206f7065726174696f6e616c206163636f756e7420726577617264732077616974696e67206f6e207472656173757279207061796f757420284649464f207175657565292e60456e63727970746564536572766572427953706f6e736565000104020081080400044901204f706171756520656e637279707465642073706f6e736f7220736572766572207061796c6f6164206b65796564206279207468652073706f6e736565206f7065726174696f6e616c206163636f756e742e012905014d023468416363657373436f646545787069726174696f6e4672616d65733020020000000000000004b820486f77206d616e79206672616d657320616e2061636365737320636f64652072656d61696e732076616c69642e784d6178416363657373436f6465734578706972696e675065724672616d651010e8030000040901204d6178696d756d206e756d626572206f662061636365737320636f6465732074686174206d61792065787069726520696e207468652073616d65206672616d652e70426974636f696e4c6f636b53697a65466f72416363657373436f6465184000f2052a010000000000000000000000044501204164646974696f6e616c206172676f6e20616d6f756e7420286261736520756e69747329207265717569726564207065722061636365737320636f6465206166746572206f7065726174696f6e616c2e644f7065726174696f6e616c526566657272616c52657761726418400065cd1d00000000000000000000000004e42044656661756c74207265776172642070616964207768656e20616e206163636f756e74206265636f6d6573206f7065726174696f6e616c2e784f7065726174696f6e616c526566657272616c426f6e7573526577617264184000f2052a01000000000000000000000004d02044656661756c7420626f6e757320726577617264207061696420657665727920726566657272616c207468726573686f6c642e98526566657272616c426f6e75734576657279584f7065726174696f6e616c53706f6e73656573101005000000040d01204e756d626572206f66206f7065726174696f6e616c2073706f6e736565732072657175697265642070657220726566657272616c20626f6e7573207265776172642e584d61784973737561626c65416363657373436f64657310100300000004e4204d6178696d756d206e756d626572206f66206973737561626c652061636365737320636f64657320616c6c6f776564206174206f6e63652e6c4d61784f7065726174696f6e616c526577617264735175657565641010e803000004b8204d6178696d756d206e756d626572206f6620717565756564206f7065726174696f6e616c20726577617264732e644d6178556e616374697661746564416363657373436f646573101003000000044101204d6178696d756d206e756d626572206f6620756e61637469766174656420286973737565642062757420756e75736564292061636365737320636f64657320616c6c6f776564206174206f6e63652e544d6178456e637279707465645365727665724c656e10100001000004f4204d6178696d756d206e756d626572206f6620656e63727970746564207365727665722062797465732073746f726564207065722073706f6e7365652e804d696e426974636f696e4c6f636b53697a65466f724f7065726174696f6e616c184000943577000000000000000000000000044501204d696e696d756d206172676f6e20616d6f756e7420286261736520756e6974732920726571756972656420746f206d61726b206120626974636f696e206c6f636b206173207175616c696679696e672e644d696e696e675365617473466f724f7065726174696f6e616c10100200000004b4204d696e696e6720736561747320726571756972656420746f206265636f6d65206f7065726174696f6e616c2e604d696e696e675365617473506572416363657373436f646510100500000004e4204d696e696e67207365617473207265717569726564207065722061636365737320636f6465206166746572206f7065726174696f6e616c2e018508228908042c34417574686f72697a6543616c6c91089048436865636b4e6f6e5a65726f53656e64657295089040436865636b5370656356657273696f6e99081038436865636b547856657273696f6e9d081030436865636b47656e65736973a1083438436865636b4d6f7274616c697479a5083428436865636b4e6f6e6365ad08902c436865636b576569676874b10890604368617267655472616e73616374696f6e5061796d656e74b5089044436865636b4d6574616461746148617368b908c508345765696768745265636c61696dc10890c908\"\n}\n","{\n \"specName\": \"argon\",\n \"implName\": \"argon\",\n \"authoringVersion\": 1,\n \"specVersion\": 150,\n \"implVersion\": 10,\n \"apis\": [\n [\"0xdf6acb689907609b\", 5],\n [\"0x37e397fc7c91f5e4\", 2],\n [\"0xccd9de6396c899ca\", 1],\n [\"0x40fe3ad401f8959a\", 6],\n [\"0xd2bc9897eed08f15\", 3],\n [\"0xf78b278be53f454c\", 2],\n [\"0xbc9d89904f5b923f\", 1],\n [\"0xab3c0572291feb8b\", 1],\n [\"0x37c8bb1350a9a2a8\", 4],\n [\"0xf3ff14d5ab527059\", 3],\n [\"0x61571683e6d7a7c8\", 1],\n [\"0x5e4dc2ce83c23f09\", 1],\n [\"0xe6683faaa563317a\", 2],\n [\"0x11de59f9923f03d8\", 1],\n [\"0x51c97e4020145cb0\", 1],\n [\"0xbab599c4f0d362c6\", 1],\n [\"0xfff0fb031985f8a1\", 2],\n [\"0x0090f9d890bb0bb2\", 1],\n [\"0x05dd9be92cc17d28\", 2],\n [\"0xed99c5acb25eedf5\", 3],\n [\"0xfbc577b9d747efd6\", 1],\n [\"0x0ebc8fd84ae20ada\", 1],\n [\"0x888ea501e380d8a1\", 1]\n ],\n \"transactionVersion\": 5,\n \"systemVersion\": 1,\n \"stateVersion\": 1\n}\n","{\n \"mainnet\": \"0xee11bf2ff8838fcb0832c09085c5319a08ba6111c225ecd899fe659872d9d45d\",\n \"testnet\": \"0x66dc4e5ff85faddb0311b768eb73a58d9a00c65f06056ffaa370a1b1354d7411\"\n}\n","import { ArgonClient } from './index';\n\nexport interface IArgonCpiSnapshot {\n // The target price of the argon as a fixed point number (18 decimals)\n argonUsdTargetPrice: bigint;\n // The current price of the argon as a fixed point number (18 decimals)\n argonUsdPrice: bigint;\n // The block hash in which the cpi was finalized\n finalizedBlock: Uint8Array;\n tick: bigint;\n}\n\n/**\n * The WageProtector class is used to protect wages from inflation by using the current Argon Price Index to adjust the\n * baseAmount to current conditions. This ensures that the wage is always stable and does not lose or gain value based on\n * demand for the argon or fiat monetary supply changes.\n */\nexport class WageProtector {\n constructor(public latestCpi: IArgonCpiSnapshot) {}\n\n /**\n * Converts the base wage to the current wage using the latest CPI snapshot\n *\n * @param baseWage The base wage to convert\n * @returns The protected wage\n */\n public getProtectedWage(baseWage: bigint): bigint {\n return (baseWage * this.latestCpi.argonUsdTargetPrice) / this.latestCpi.argonUsdPrice;\n }\n\n /**\n * Subscribes to the current CPI and calls the callback function whenever the CPI changes\n * @param client The ArgonClient to use\n * @param callback The callback function to call when the CPI changes\n * @returns An object with an unsubscribe function that can be called to stop the subscription\n */\n public static async subscribe(\n client: ArgonClient,\n callback: (cpi: WageProtector) => void,\n ): Promise<{\n unsubscribe: () => void;\n }> {\n const unsubscribe = await client.query.priceIndex.current(async cpi => {\n if (cpi.isNone) {\n return;\n }\n const finalizedBlock = await client.rpc.chain.getFinalizedHead();\n\n callback(\n new WageProtector({\n argonUsdTargetPrice: cpi.value.argonUsdTargetPrice.toBigInt(),\n argonUsdPrice: cpi.value.argonUsdPrice.toBigInt(),\n finalizedBlock: new Uint8Array(finalizedBlock),\n tick: cpi.value.tick.toBigInt(),\n }),\n );\n });\n return { unsubscribe };\n }\n\n /**\n * Creates a new WageProtector instance by subscribing to the current CPI and waiting for the first value\n * @param client The ArgonClient to use\n */\n public static async create(client: ArgonClient): Promise<WageProtector> {\n return new Promise<WageProtector>(async (resolve, reject) => {\n try {\n const { unsubscribe } = await WageProtector.subscribe(client, x => {\n resolve(x);\n unsubscribe();\n });\n } catch (e) {\n reject(e);\n }\n });\n }\n}\n","import BigNumber, * as BN from 'bignumber.js';\nimport type { ArgonClient } from './index';\nimport type { DispatchError } from '@polkadot/types/interfaces';\nimport { EventRecord } from '@polkadot/types/interfaces/system';\n\nconst { ROUND_FLOOR } = BN;\n\nexport const MICROGONS_PER_ARGON = 1_000_000;\n\nexport function formatArgons(microgons: bigint | number): string {\n if (microgons === undefined || microgons === null) return 'na';\n const isNegative = microgons < 0;\n let format = BigNumber(microgons.toString())\n .abs()\n .div(MICROGONS_PER_ARGON)\n .toFormat(2, ROUND_FLOOR);\n if (format.endsWith('.00')) {\n format = format.slice(0, -3);\n }\n return `${isNegative ? '-' : ''}₳${format}`;\n}\n\nexport async function gettersToObject<T>(obj: T): Promise<T> {\n if (obj === null || obj === undefined || typeof obj !== 'object') return obj;\n\n const keys = [];\n\n for (const key in obj) {\n keys.push(key);\n }\n\n if (Symbol.iterator in obj) {\n const iterableToArray = [];\n // @ts-expect-error - it should iterate by virtue of Symbol.iterator\n for (const item of obj) {\n iterableToArray.push(await gettersToObject(item));\n }\n return iterableToArray as T;\n }\n\n const result = {} as any;\n for (const key of keys) {\n const descriptor = Object.getOwnPropertyDescriptor(obj, key);\n // Skip functions\n if (descriptor && typeof descriptor.value === 'function') {\n continue;\n }\n const value = descriptor && descriptor.get ? descriptor.get.call(obj) : obj[key as keyof T];\n if (typeof value === 'function') continue;\n\n result[key] = await gettersToObject(value);\n }\n return result as T;\n}\n\nexport function dispatchErrorToString(client: ArgonClient, error: DispatchError) {\n let message = error.toString();\n if (error.isModule) {\n const decoded = client.registry.findMetaError(error.asModule);\n const { docs, name, section } = decoded;\n message = `${section}.${name}: ${docs.join(' ')}`;\n }\n return message;\n}\n\n// ExtrinsicError\nexport class ExtrinsicError extends Error {\n constructor(\n public readonly errorCode: string,\n public readonly details?: string,\n public readonly batchInterruptedIndex?: number,\n public readonly txFee: bigint = 0n,\n ) {\n super(errorCode);\n }\n\n public override toString() {\n if (this.batchInterruptedIndex !== undefined) {\n return `${this.errorCode} ${this.details ?? ''} (Batch interrupted at index ${this.batchInterruptedIndex})`;\n }\n return `${this.errorCode} ${this.details ?? ''}`;\n }\n}\n\nexport function dispatchErrorToExtrinsicError(\n client: ArgonClient,\n error: DispatchError,\n batchInterruptedIndex?: number,\n txFee?: bigint,\n) {\n if (error.isModule) {\n const decoded = client.registry.findMetaError(error.asModule);\n const { docs, name, section } = decoded;\n return new ExtrinsicError(`${section}.${name}`, docs.join(' '), batchInterruptedIndex, txFee);\n }\n return new ExtrinsicError(error.toString(), undefined, batchInterruptedIndex, txFee);\n}\n\n/**\n * Check for an extrinsic success event in the given events. Helpful to validate the result of an extrinsic inclusion in a block (it will be included even if it fails)\n * @param events The events to check\n * @param client The client to use\n * @returns A promise that resolves if the extrinsic was successful, and rejects if it failed\n */\nexport function checkForExtrinsicSuccess(\n events: EventRecord[],\n client: ArgonClient,\n): Promise<void> {\n return new Promise((resolve, reject) => {\n for (const { event } of events) {\n if (client.events.system.ExtrinsicSuccess.is(event)) {\n resolve();\n } else if (client.events.system.ExtrinsicFailed.is(event)) {\n // extract the data for this event\n const [dispatchError] = event.data;\n let errorInfo = dispatchError.toString();\n\n if (dispatchError.isModule) {\n const decoded = client.registry.findMetaError(dispatchError.asModule);\n errorInfo = `${decoded.section}.${decoded.name}`;\n }\n\n reject(new Error(`${event.section}.${event.method}:: ExtrinsicFailed:: ${errorInfo}`));\n }\n }\n });\n}\n","import { ArgonClient, GenericEvent, SpRuntimeDispatchError } from './index';\nimport { dispatchErrorToExtrinsicError, ExtrinsicError } from './utils';\nimport type { ISubmittableResult } from '@polkadot/types/types/extrinsic';\nimport { DispatchError } from '@polkadot/types/interfaces';\n\nexport type ITxProgressCallback = (progressToInBlock: number, result?: TxResult) => void;\n\nexport class TxResult {\n #isBroadcast = false;\n #submissionError?: Error;\n\n set isBroadcast(value: boolean) {\n this.#isBroadcast = value;\n this.updateProgress();\n }\n\n get isBroadcast(): boolean {\n return this.#isBroadcast;\n }\n\n set submissionError(value: Error) {\n if (value) {\n this.#submissionError = value;\n this.finalizedReject(value);\n this.inBlockReject(value);\n this.updateProgress();\n }\n }\n\n get submissionError(): Error | undefined {\n return this.#submissionError;\n }\n\n public waitForFinalizedBlock: Promise<Uint8Array>;\n public waitForInFirstBlock: Promise<Uint8Array>;\n public events: GenericEvent[] = [];\n\n public extrinsicError: ExtrinsicError | Error | undefined;\n public extrinsicIndex: number | undefined;\n\n public txProgressCallback?: ITxProgressCallback;\n /**\n * The index of the batch that was interrupted, if any.\n */\n public batchInterruptedIndex?: number;\n public blockHash?: Uint8Array;\n public blockNumber?: number;\n /**\n * The final fee paid for the transaction, including the fee tip.\n */\n public finalFee?: bigint;\n /**\n * The fee tip paid for the transaction.\n */\n public finalFeeTip?: bigint;\n\n public txProgress = 0;\n public isFinalized = false;\n\n protected finalizedResolve!: (block: Uint8Array) => void;\n protected finalizedReject!: (error: ExtrinsicError | Error) => void;\n protected inBlockResolve!: (block: Uint8Array) => void;\n protected inBlockReject!: (error: ExtrinsicError | Error) => void;\n\n constructor(\n protected readonly client: ArgonClient,\n public extrinsic: {\n signedHash: string;\n method: any;\n submittedTime: Date;\n submittedAtBlockNumber: number;\n accountAddress: string;\n nonce: number;\n },\n ) {\n this.waitForFinalizedBlock = new Promise((resolve, reject) => {\n this.finalizedResolve = resolve;\n this.finalizedReject = reject;\n });\n this.waitForInFirstBlock = new Promise((resolve, reject) => {\n this.inBlockResolve = resolve;\n this.inBlockReject = reject;\n });\n // drown reject\n this.waitForFinalizedBlock.catch(() => null);\n this.waitForInFirstBlock.catch(() => null);\n }\n\n public async setSeenInBlock(block: {\n blockHash: Uint8Array;\n blockNumber?: number;\n extrinsicIndex: number;\n events: GenericEvent[];\n }): Promise<void> {\n const { blockHash, blockNumber, events } = block;\n if (blockHash !== this.blockHash) {\n this.parseEvents(events);\n this.blockHash = blockHash;\n this.blockNumber =\n blockNumber ??\n (await this.client.rpc.chain.getHeader(blockHash).then(h => h.number.toNumber()));\n this.extrinsicIndex = block.extrinsicIndex;\n this.updateProgress();\n if (this.extrinsicError) {\n this.inBlockReject(this.extrinsicError);\n } else {\n this.inBlockResolve(blockHash);\n }\n }\n }\n\n public setFinalized() {\n this.isFinalized = true;\n this.updateProgress();\n\n let error = this.extrinsicError ?? this.submissionError;\n if (!error && !this.blockHash) {\n error = new Error('Cannot finalize transaction before it is included in a block');\n }\n\n if (error) {\n this.finalizedReject(error);\n this.inBlockReject(error);\n } else {\n this.finalizedResolve(this.blockHash!);\n this.inBlockResolve(this.blockHash!);\n }\n }\n\n public onSubscriptionResult(result: ISubmittableResult) {\n const { events, status, isFinalized, txIndex } = result;\n const extrinsicEvents = events.map(x => x.event);\n\n if (status.isBroadcast) {\n this.isBroadcast = true;\n if (result.internalError) this.submissionError = result.internalError;\n }\n if (status.isInBlock) {\n void this.setSeenInBlock({\n blockHash: Uint8Array.from(status.asInBlock),\n events: extrinsicEvents,\n extrinsicIndex: txIndex!,\n });\n }\n if (isFinalized) {\n this.setFinalized();\n }\n }\n\n private updateProgress() {\n if (this.isFinalized || this.submissionError) {\n this.txProgress = 100;\n } else if (this.blockNumber) {\n const elapsedBlocks = this.blockNumber - this.extrinsic.submittedAtBlockNumber;\n const FINALIZATION_BLOCKS = 5;\n const remainingPercent = Math.max(0, FINALIZATION_BLOCKS - elapsedBlocks) * 20;\n const percent = 100 - remainingPercent;\n this.txProgress = Math.min(percent, 99);\n } else if (this.extrinsic.submittedAtBlockNumber) {\n this.txProgress = 10;\n }\n this.txProgressCallback?.(this.txProgress);\n }\n\n private parseEvents(events: GenericEvent[]) {\n let encounteredError: SpRuntimeDispatchError | undefined;\n for (const event of events) {\n if (this.client.events.system.ExtrinsicFailed.is(event)) {\n const { dispatchError } = event.data;\n encounteredError ??= dispatchError;\n }\n if (this.client.events.utility.BatchInterrupted.is(event)) {\n const { index, error } = event.data;\n this.batchInterruptedIndex = index.toNumber();\n encounteredError = error;\n }\n if (this.client.events.transactionPayment.TransactionFeePaid.is(event)) {\n const { actualFee, tip } = event.data;\n this.finalFee = actualFee.toBigInt();\n this.finalFeeTip = tip.toBigInt();\n }\n }\n if (encounteredError) {\n this.extrinsicError = dispatchErrorToExtrinsicError(\n this.client,\n encounteredError as unknown as DispatchError,\n this.batchInterruptedIndex,\n this.finalFee,\n );\n } else {\n this.extrinsicError = undefined;\n }\n this.events = events;\n }\n}\n","import { ArgonClient, KeyringPair, waitForLoad } from './index';\nimport type { SubmittableExtrinsic } from '@polkadot/api/promise/types';\nimport type { SignerOptions } from '@polkadot/api/types';\nimport { ITxProgressCallback, TxResult } from './TxResult';\n\nexport type ISubmittableOptions = Partial<SignerOptions> & {\n tip?: bigint;\n logResults?: boolean;\n useLatestNonce?: boolean;\n txProgressCallback?: ITxProgressCallback;\n disableAutomaticTxTracking?: boolean;\n};\n\nexport class TxSubmitter {\n constructor(\n public readonly client: ArgonClient,\n public tx: SubmittableExtrinsic,\n public pair: KeyringPair,\n ) {}\n\n public async feeEstimate(tip?: bigint): Promise<bigint> {\n const { partialFee } = await this.tx.paymentInfo(this.pair, { tip });\n return partialFee.toBigInt();\n }\n\n public async canAfford(\n options: {\n tip?: bigint;\n unavailableBalance?: bigint;\n includeExistentialDeposit?: boolean;\n } = {},\n ): Promise<{ canAfford: boolean; availableBalance: bigint; txFee: bigint }> {\n const { tip, unavailableBalance } = options;\n const account = await this.client.query.system.account(this.pair.address);\n let availableBalance = account.data.free.toBigInt();\n const userBalance = availableBalance;\n if (unavailableBalance) {\n availableBalance -= unavailableBalance;\n }\n const existentialDeposit = options.includeExistentialDeposit\n ? this.client.consts.balances.existentialDeposit.toBigInt()\n : 0n;\n const fees = await this.feeEstimate(tip);\n const totalCharge = fees + (tip ?? 0n);\n const canAfford = availableBalance >= totalCharge + existentialDeposit;\n return { canAfford, availableBalance: userBalance, txFee: fees };\n }\n\n public async submit(options: ISubmittableOptions = {}): Promise<TxResult> {\n const { useLatestNonce, ...apiOptions } = options;\n await waitForLoad();\n const blockHeight = await this.client.rpc.chain.getHeader().then(h => h.number.toNumber());\n if (options.logResults) {\n this.logRequest();\n }\n if (useLatestNonce && !apiOptions.nonce) {\n apiOptions.nonce = await this.client.rpc.system.accountNextIndex(this.pair.address);\n }\n\n const signedTx = await this.tx.signAsync(this.pair, apiOptions);\n const txHash = signedTx.hash.toHex();\n const result = new TxResult(this.client, {\n signedHash: txHash,\n method: signedTx.method.toHuman(),\n accountAddress: this.pair.address,\n submittedTime: new Date(),\n submittedAtBlockNumber: blockHeight,\n nonce: signedTx.nonce.toNumber(),\n });\n if (options.disableAutomaticTxTracking !== true) {\n await signedTx.send(result.onSubscriptionResult.bind(result));\n } else {\n try {\n await signedTx.send();\n result.isBroadcast = true;\n } catch (error) {\n result.submissionError = error as Error;\n }\n }\n return result;\n }\n\n private logRequest() {\n let toHuman = (this.tx.toHuman() as any).method;\n const txString = [];\n let api = formatCall(toHuman);\n const args: any[] = [];\n if (api === 'proxy.proxy') {\n toHuman = toHuman.args.call;\n txString.push('Proxy');\n api = formatCall(toHuman);\n }\n if (api.startsWith('utility.batch')) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n const calls = toHuman.args.calls.map(formatCall).join(', ');\n txString.push(`Batch[${calls}]`);\n } else {\n txString.push(api);\n args.push(toHuman.args);\n }\n args.unshift(txString.join('->'));\n console.log('Submitting transaction from %s:', this.pair.address, ...args);\n }\n}\n\nfunction formatCall(call: any): string {\n return `${call.section}.${call.method}`;\n}\n","import { Keyring, KeyringPair, mnemonicGenerate } from './index';\n\nexport function keyringFromSuri(\n suri: string,\n cryptoType: 'sr25519' | 'ed25519' = 'sr25519',\n): KeyringPair {\n return new Keyring({ type: cryptoType }).createFromUri(suri);\n}\n\nexport function createKeyringPair(opts: { cryptoType?: 'sr25519' | 'ed25519' }): KeyringPair {\n const { cryptoType } = opts;\n const seed = mnemonicGenerate();\n return keyringFromSuri(seed, cryptoType);\n}\n","import { ArgonPrimitivesDigestsFrameInfo, getOfflineRegistry, Header } from './index';\n\nexport function getTickFromHeader(header: Header): number | undefined {\n for (const x of header.digest.logs) {\n if (x.isPreRuntime) {\n const [engineId, data] = x.asPreRuntime;\n if (engineId.toString() === 'aura') {\n return getOfflineRegistry().createType('u64', data).toNumber();\n }\n }\n }\n return undefined;\n}\n\nexport function getAuthorFromHeader(header: Header): string | undefined {\n for (const x of header.digest.logs) {\n if (x.isPreRuntime) {\n const [engineId, data] = x.asPreRuntime;\n if (engineId.toString() === 'pow_') {\n return getOfflineRegistry().createType('AccountId32', data).toHuman();\n }\n }\n }\n return undefined;\n}\n\nexport function getFrameInfoFromHeader(\n header: Header,\n): { isNewFrame: boolean; frameId: number; frameRewardTicksRemaining: number } | undefined {\n for (const x of header.digest.logs) {\n if (x.isConsensus) {\n const [engineId, data] = x.asConsensus;\n if (engineId.toString() === 'fram') {\n const decoded: ArgonPrimitivesDigestsFrameInfo = getOfflineRegistry().createType(\n 'ArgonPrimitivesDigestsFrameInfo',\n data,\n );\n return {\n isNewFrame: decoded.isNewFrame.toPrimitive(),\n frameId: decoded.frameId.toNumber(),\n frameRewardTicksRemaining: decoded.frameRewardTicksRemaining.toNumber(),\n };\n }\n }\n }\n return undefined;\n}\n","import {\n ArgonClient,\n type ArgonPrimitivesVault,\n FIXED_U128_DECIMALS,\n formatArgons,\n fromFixedNumber,\n KeyringPair,\n PERMILL_DECIMALS,\n toFixedNumber,\n TxSubmitter,\n} from './index';\nimport BigNumber from 'bignumber.js';\nimport bs58check from 'bs58check';\nimport { hexToU8a } from '@polkadot/util';\nimport { TxResult } from './TxResult';\nimport { ISubmittableOptions } from './TxSubmitter';\nimport { ApiDecoration } from '@polkadot/api/types';\nimport type { bool, BTreeMap, Compact, Option, Struct, u128, u64 } from '@polkadot/types-codec';\nimport type { AccountId32 } from '@polkadot/types/interfaces/runtime';\nimport type { ITuple } from '@polkadot/types-codec/types';\nimport { ArgonPrimitivesVaultVaultTerms } from '@polkadot/types/lookup';\n\ninterface ArgonPrimitivesVaultV144 extends Struct {\n readonly operatorAccountId: AccountId32;\n readonly securitization: Compact<u128>;\n readonly argonsLocked: Compact<u128>;\n readonly argonsPendingActivation: Compact<u128>;\n readonly argonsScheduledForRelease: BTreeMap<u64, u128>;\n readonly securitizationRatio: Compact<u128>;\n readonly isClosed: bool;\n readonly terms: ArgonPrimitivesVaultVaultTerms;\n readonly pendingTerms: Option<ITuple<[u64, ArgonPrimitivesVaultVaultTerms]>>;\n readonly openedTick: Compact<u64>;\n}\n\nexport class Vault {\n public securitization!: bigint;\n public securitizationLocked!: bigint;\n public securitizationPendingActivation!: bigint;\n /**\n * Map of bitcoin height to amount of securitization released at that height\n */\n public securitizationReleaseSchedule: Map<number, bigint>;\n public terms!: ITerms;\n public operatorAccountId!: string;\n public isClosed!: boolean;\n public vaultId: number;\n public pendingTerms?: ITerms;\n public pendingTermsChangeTick?: number;\n public openedDate: Date;\n public openedTick: number;\n public securitizationRatio!: number;\n\n public lockedSatoshis!: number;\n public securitizedSatoshis!: number;\n\n constructor(\n id: number,\n vault: ArgonPrimitivesVault,\n public tickDuration: number,\n ) {\n this.vaultId = id;\n this.openedTick = vault.openedTick.toNumber();\n this.openedDate = new Date(this.openedTick * this.tickDuration);\n this.securitizationReleaseSchedule = new Map();\n this.load(vault);\n }\n\n public load(vault: ArgonPrimitivesVault | ArgonPrimitivesVaultV144): void {\n this.securitization = vault.securitization.toBigInt();\n this.securitizationRatio = fromFixedNumber(\n vault.securitizationRatio.toBigInt(),\n FIXED_U128_DECIMALS,\n ).toNumber();\n this.securitizationReleaseSchedule.clear();\n let schedule: BTreeMap<u64, u128>;\n if ('argonsLocked' in vault) {\n // spec 143 compatibility - don't bother with ratio as it was forced to 1:1\n this.securitizationLocked = vault.argonsLocked.toBigInt();\n this.securitizationPendingActivation = vault.argonsPendingActivation.toBigInt();\n schedule = vault.argonsScheduledForRelease;\n } else {\n this.securitizationLocked = vault.securitizationLocked.toBigInt();\n this.securitizationPendingActivation = vault.securitizationPendingActivation.toBigInt();\n schedule = vault.securitizationReleaseSchedule;\n }\n if (schedule.size > 0) {\n for (const [bitcoinHeight, amount] of schedule.entries()) {\n this.securitizationReleaseSchedule.set(bitcoinHeight.toNumber(), amount.toBigInt());\n }\n }\n this.terms = {\n bitcoinAnnualPercentRate: fromFixedNumber(\n vault.terms.bitcoinAnnualPercentRate.toBigInt(),\n FIXED_U128_DECIMALS,\n ),\n bitcoinBaseFee: vault.terms.bitcoinBaseFee.toBigInt(),\n treasuryProfitSharing: fromFixedNumber(\n vault.terms.treasuryProfitSharing.toBigInt(),\n PERMILL_DECIMALS,\n ),\n };\n if ('lockedSatoshis' in vault) {\n this.lockedSatoshis = vault.lockedSatoshis.toNumber();\n this.securitizedSatoshis = vault.securitizedSatoshis.toNumber();\n } else {\n this.lockedSatoshis = 0;\n this.securitizedSatoshis = 0;\n }\n\n this.operatorAccountId = vault.operatorAccountId.toString();\n this.isClosed = vault.isClosed.valueOf();\n if (vault.pendingTerms.isSome) {\n const [tickApply, terms] = vault.pendingTerms.value;\n this.pendingTermsChangeTick = tickApply.toNumber();\n this.pendingTerms = {\n bitcoinAnnualPercentRate: fromFixedNumber(\n terms.bitcoinAnnualPercentRate.toBigInt(),\n FIXED_U128_DECIMALS,\n ),\n bitcoinBaseFee: terms.bitcoinBaseFee.toBigInt(),\n treasuryProfitSharing: fromFixedNumber(\n vault.terms.treasuryProfitSharing.toBigInt(),\n PERMILL_DECIMALS,\n ),\n };\n }\n }\n\n public availableBitcoinSpace(): bigint {\n const availableSecuritization = this.availableSecuritization();\n const microgons = BigNumber(availableSecuritization).div(this.securitizationRatioBN());\n return bigNumberToBigInt(microgons);\n }\n\n public availableSecuritization(): bigint {\n return this.securitization - this.securitizationLocked;\n }\n\n public getRelockCapacity(): bigint {\n return [...this.securitizationReleaseSchedule.values()].reduce((acc, val) => acc + val, 0n);\n }\n\n public securitizationRatioBN(): BigNumber {\n return new BigNumber(this.securitizationRatio);\n }\n\n public activatedSecuritization(): bigint {\n return this.securitizationLocked - this.securitizationPendingActivation;\n }\n\n /**\n * Returns the amount of securitization available to match per treasury pool\n */\n public activatedSecuritizationPerSlot(): bigint {\n const activated = this.activatedSecuritization();\n return activated / 10n;\n }\n\n public calculateBitcoinFee(amount: bigint): bigint {\n const fee = this.terms.bitcoinAnnualPercentRate\n .multipliedBy(Number(amount))\n .integerValue(BigNumber.ROUND_CEIL);\n return BigInt(fee.toString()) + this.terms.bitcoinBaseFee;\n }\n\n public static async get(\n client: ArgonClient | ApiDecoration<'promise'>,\n vaultId: number,\n tickDurationMillis?: number,\n ): Promise<Vault> {\n const rawVault = await client.query.vaults.vaultsById(vaultId);\n if (rawVault.isNone) {\n throw new Error(`Vault with id ${vaultId} not found`);\n }\n const tickDuration =\n tickDurationMillis ??\n (await client.query.ticks.genesisTicker().then(x => x.tickDurationMillis.toNumber()))!;\n return new Vault(vaultId, rawVault.unwrap(), tickDuration);\n }\n\n public static async create(\n client: ArgonClient,\n keypair: KeyringPair,\n args: {\n securitization: bigint | number;\n securitizationRatio: number;\n annualPercentRate: number;\n baseFee: bigint | number;\n bitcoinXpub: string;\n treasuryProfitSharing: number;\n doNotExceedBalance?: bigint;\n } & ISubmittableOptions,\n config: { tickDurationMillis?: number } = {},\n ): Promise<{ getVault(): Promise<Vault>; txResult: TxResult }> {\n const {\n securitization,\n securitizationRatio,\n annualPercentRate,\n baseFee,\n bitcoinXpub,\n tip,\n doNotExceedBalance,\n } = args;\n let xpubBytes = hexToU8a(bitcoinXpub);\n if (xpubBytes.length !== 78) {\n if (\n bitcoinXpub.startsWith('xpub') ||\n bitcoinXpub.startsWith('tpub') ||\n bitcoinXpub.startsWith('zpub')\n ) {\n const bytes = bs58check.decode(bitcoinXpub);\n if (bytes.length !== 78) {\n throw new Error('Invalid Bitcoin xpub key length, must be 78 bytes');\n }\n xpubBytes = bytes;\n }\n }\n if (securitizationRatio < 1 || securitizationRatio > 2) {\n throw new Error('Securitization ratio must be between 1 and 2');\n }\n const vaultParams = {\n terms: {\n // convert to fixed u128\n bitcoinAnnualPercentRate: toFixedNumber(annualPercentRate, FIXED_U128_DECIMALS),\n bitcoinBaseFee: BigInt(baseFee),\n treasuryProfitSharing: toFixedNumber(args.treasuryProfitSharing, PERMILL_DECIMALS),\n },\n securitizationRatio: toFixedNumber(securitizationRatio, FIXED_U128_DECIMALS),\n securitization: BigInt(securitization),\n bitcoinXpubkey: xpubBytes,\n };\n const tx = new TxSubmitter(client, client.tx.vaults.create(vaultParams), keypair);\n if (doNotExceedBalance) {\n const finalTip = tip ?? 0n;\n let txFee = await tx.feeEstimate(finalTip);\n while (txFee + finalTip + vaultParams.securitization > doNotExceedBalance) {\n vaultParams.securitization = doNotExceedBalance - txFee - finalTip;\n tx.tx = client.tx.vaults.create(vaultParams);\n txFee = await tx.feeEstimate(finalTip);\n }\n }\n const canAfford = await tx.canAfford({ tip, unavailableBalance: BigInt(securitization) });\n if (!canAfford.canAfford) {\n throw new Error(\n `Insufficient balance to create vault. Required: ${formatArgons(securitization)}, Available: ${formatArgons(canAfford.availableBalance)}`,\n );\n }\n\n const result = await tx.submit({\n ...args,\n useLatestNonce: true,\n });\n\n async function getVault(): Promise<Vault> {\n await result.waitForFinalizedBlock;\n let vaultId: number | undefined;\n for (const event of result.events) {\n if (client.events.vaults.VaultCreated.is(event)) {\n vaultId = event.data.vaultId.toNumber();\n break;\n }\n }\n if (vaultId === undefined) {\n throw new Error('Vault creation failed, no VaultCreated event found');\n }\n return Vault.get(client, vaultId, config.tickDurationMillis);\n }\n return { getVault, txResult: result };\n }\n}\n\nexport interface ITerms {\n readonly bitcoinAnnualPercentRate: BigNumber;\n readonly bitcoinBaseFee: bigint;\n readonly treasuryProfitSharing: BigNumber;\n}\nfunction bigNumberToBigInt(bn: BigNumber): bigint {\n return BigInt(bn.integerValue(BigNumber.ROUND_DOWN).toString());\n}\n","import BigNumber from 'bignumber.js';\n\nexport function toFixedNumber(\n value: string | number | BigNumber, // accept string to avoid early precision loss\n decimals: number,\n): bigint {\n const factor = new BigNumber(10).pow(decimals);\n const bn = new BigNumber(value);\n // truncate toward 0; use ROUND_FLOOR if you really need floor for positives\n const int = bn.times(factor).integerValue(BigNumber.ROUND_DOWN);\n return BigInt(int.toFixed(0));\n}\n\nexport function fromFixedNumber(value: bigint, decimals: number = FIXED_U128_DECIMALS): BigNumber {\n const factor = new BigNumber(10).pow(decimals);\n const bn = new BigNumber(value.toString());\n return bn.div(factor);\n}\n\nexport const FIXED_U128_DECIMALS = 18;\nexport const PERMILL_DECIMALS = 6;\n","import {\n ArgonClient,\n type ArgonPrimitivesBitcoinBitcoinNetwork,\n type ArgonPrimitivesBitcoinUtxoRef,\n formatArgons,\n getOfflineRegistry,\n type KeyringPair,\n MICROGONS_PER_ARGON,\n TxSubmitter,\n Vault,\n} from './index';\nimport { GenericEvent } from '@polkadot/types';\nimport { ISubmittableOptions } from './TxSubmitter';\nimport { TxResult } from './TxResult';\nimport { stringToU8a, u8aToHex } from '@polkadot/util';\nimport { ApiDecoration } from '@polkadot/api/types';\nimport { PriceIndex } from './PriceIndex';\nimport { bool, Option, u128 } from '@polkadot/types-codec';\nimport { SubmittableExtrinsic } from '@polkadot/api/promise/types';\nimport { blake2AsU8a } from '@polkadot/util-crypto';\n\nexport const SATS_PER_BTC = 100_000_000n;\n\ntype IQueryableClient = ArgonClient | ApiDecoration<'promise'>;\ntype UtxoRefLike =\n | ArgonPrimitivesBitcoinUtxoRef\n | { txid: string | Uint8Array; outputIndex: number };\n\ntype UtxoRefOption = { unwrap: () => ArgonPrimitivesBitcoinUtxoRef };\n\nfunction normalizeUtxoRef(utxoRef: UtxoRefLike): {\n txid: string;\n outputIndex: number;\n} {\n let txid = utxoRef.txid;\n if (typeof txid === 'object' && 'toHex' in txid) {\n txid = txid.toHex();\n } else if (typeof txid !== 'string') {\n txid = u8aToHex(txid);\n }\n let outputIndex = utxoRef.outputIndex;\n if (typeof outputIndex !== 'number') {\n outputIndex = outputIndex.toNumber();\n }\n return { txid, outputIndex };\n}\n\nexport class BitcoinLock implements IBitcoinLock {\n public utxoId: number;\n public p2wshScriptHashHex: string;\n public vaultId: number;\n public lockedMarketRate: bigint;\n public liquidityPromised: bigint;\n public ownerAccount: string;\n public satoshis: bigint;\n public utxoSatoshis?: bigint;\n public vaultPubkey: string;\n public securityFees: bigint;\n public vaultClaimPubkey: string;\n public ownerPubkey: string;\n public vaultXpubSources: {\n parentFingerprint: Uint8Array;\n cosignHdIndex: number;\n claimHdIndex: number;\n };\n public vaultClaimHeight: number;\n public openClaimHeight: number;\n public createdAtHeight: number;\n public isFunded: boolean;\n public createdAtArgonBlock: number;\n public fundHoldExtensionsByBitcoinExpirationHeight: Record<number, bigint>;\n\n constructor(data: IBitcoinLock) {\n this.utxoId = data.utxoId;\n this.p2wshScriptHashHex = data.p2wshScriptHashHex;\n this.vaultId = data.vaultId;\n this.lockedMarketRate = data.lockedMarketRate;\n this.liquidityPromised = data.liquidityPromised;\n this.ownerAccount = data.ownerAccount;\n this.satoshis = data.satoshis;\n this.utxoSatoshis = data.utxoSatoshis;\n this.vaultPubkey = data.vaultPubkey;\n this.securityFees = data.securityFees;\n this.vaultClaimPubkey = data.vaultClaimPubkey;\n this.ownerPubkey = data.ownerPubkey;\n this.vaultXpubSources = data.vaultXpubSources;\n this.vaultClaimHeight = data.vaultClaimHeight;\n this.openClaimHeight = data.openClaimHeight;\n this.createdAtHeight = data.createdAtHeight;\n this.isFunded = data.isFunded;\n this.fundHoldExtensionsByBitcoinExpirationHeight =\n data.fundHoldExtensionsByBitcoinExpirationHeight;\n this.createdAtArgonBlock = data.createdAtArgonBlock;\n }\n\n /**\n * Gets the UTXO reference by ID.\n * @param client - client at the block height to query the UTXO reference at a specific point in time.\n * @return An object containing the transaction ID and output index, or undefined if not found.\n * @return.txid - The Bitcoin transaction ID of the UTXO.\n * @return.vout - The output index of the UTXO in the transaction.\n * @return.bitcoinTxid - The Bitcoin transaction ID of the UTXO formatted in little endian\n */\n public async getFundingUtxoRef(\n client: IQueryableClient,\n ): Promise<{ txid: string; vout: number; bitcoinTxid: string } | undefined> {\n let refRaw: Option<ArgonPrimitivesBitcoinUtxoRef>;\n if (\n 'utxoIdToRef' in client.query.bitcoinUtxos &&\n typeof client.query.bitcoinUtxos.utxoIdToRef === 'function'\n ) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n refRaw = await client.query.bitcoinUtxos.utxoIdToRef(this.utxoId);\n } else {\n refRaw = await client.query.bitcoinUtxos.utxoIdToFundingUtxoRef(this.utxoId);\n }\n if (!refRaw || refRaw.isNone) {\n return;\n }\n const ref = refRaw.unwrap();\n\n const txid = u8aToHex(ref.txid);\n const bitcoinTxid = u8aToHex(ref.txid.slice().reverse());\n const vout = ref.outputIndex.toNumber();\n return { txid, vout, bitcoinTxid };\n }\n\n public async findPendingMints(client: IQueryableClient): Promise<bigint[]> {\n const pendingMint = await client.query.mint.pendingMintUtxos();\n const mintsPending: bigint[] = [];\n for (const [utxoIdRaw, _accountId, mintAmountRaw] of pendingMint) {\n if (utxoIdRaw.toNumber() === this.utxoId) {\n mintsPending.push(mintAmountRaw.toBigInt());\n }\n }\n return mintsPending;\n }\n\n public async getRatchetPrice(\n client: IQueryableClient,\n priceIndex: PriceIndex,\n vault: Vault,\n ): Promise<{ burnAmount: bigint; ratchetingFee: bigint; marketRate: bigint }> {\n const { createdAtHeight, vaultClaimHeight, lockedMarketRate, satoshis } = this;\n const marketRate = await BitcoinLock.getMarketRate(priceIndex, BigInt(satoshis));\n\n let ratchetingFee = vault.terms.bitcoinBaseFee;\n let burnAmount = 0n;\n // ratchet up\n if (marketRate > lockedMarketRate) {\n const lockFee = vault.calculateBitcoinFee(marketRate);\n const currentBitcoinHeight = await client.query.bitcoinUtxos\n .confirmedBitcoinBlockTip()\n .then(x => x.unwrap().blockHeight.toNumber());\n const blockLength = vaultClaimHeight - createdAtHeight;\n const elapsed = (currentBitcoinHeight - createdAtHeight) / blockLength;\n const remainingDuration = 1 - elapsed;\n ratchetingFee = BigInt(remainingDuration * Number(lockFee));\n } else {\n burnAmount = await this.releasePrice(priceIndex);\n }\n\n return {\n ratchetingFee,\n burnAmount,\n marketRate,\n };\n }\n\n public async ratchet(\n args: {\n client: ArgonClient;\n priceIndex: PriceIndex;\n argonKeyring: KeyringPair;\n vault: Vault;\n microgonsPerBtc?: bigint;\n couponProofKeypair?: KeyringPair;\n } & ISubmittableOptions,\n ): Promise<{\n txResult: TxResult;\n getRatchetResult: () => Promise<{\n securityFee: bigint;\n txFee: bigint;\n newLockedMarketRate: bigint;\n liquidityPromised: bigint;\n pendingMint: bigint;\n burned: bigint;\n blockHeight: number;\n bitcoinBlockHeight: number;\n }>;\n }> {\n const {\n priceIndex,\n argonKeyring,\n tip = 0n,\n vault,\n client,\n microgonsPerBtc = null,\n couponProofKeypair,\n } = args;\n\n const ratchetPrice = await this.getRatchetPrice(client, priceIndex, vault);\n const feeCouponProof = couponProofKeypair\n ? BitcoinLock.createCouponProof({ couponProofKeypair, argonKeyring })\n : null;\n const tx =\n client.tx.bitcoinLocks.ratchet.meta.args.length === 2\n ? client.tx.bitcoinLocks.ratchet(this.utxoId, { V1: { microgonsPerBtc, feeCouponProof } })\n : // @ts-expect-error - legacy overload\n client.tx.bitcoinLocks.ratchet(this.utxoId);\n const txSubmitter = new TxSubmitter(client, tx, argonKeyring);\n const canAfford = await txSubmitter.canAfford({\n tip,\n unavailableBalance: BigInt(ratchetPrice.burnAmount + ratchetPrice.ratchetingFee),\n });\n if (!canAfford.canAfford) {\n throw new Error(\n `Insufficient funds to ratchet lock. Available: ${formatArgons(canAfford.availableBalance)}, Required: ${formatArgons(\n ratchetPrice.burnAmount + ratchetPrice.ratchetingFee,\n )}`,\n );\n }\n\n const txResult = await txSubmitter.submit(args);\n const getRatchetResult = async () => {\n const blockHash = await txResult.waitForFinalizedBlock;\n const ratchetEvent = txResult.events.find(x =>\n client.events.bitcoinLocks.BitcoinLockRatcheted.is(x),\n );\n if (!ratchetEvent) {\n throw new Error(`Ratchet event not found in transaction events`);\n }\n const api = await client.at(blockHash);\n const bitcoinBlockHeight = await api.query.bitcoinUtxos\n .confirmedBitcoinBlockTip()\n .then(x => x.unwrap().blockHeight.toNumber());\n const {\n amountBurned,\n liquidityPromised: liquidityPromisedRaw,\n newLockedMarketRate,\n originalMarketRate,\n securityFee,\n } = ratchetEvent.data;\n const liquidityPromised = liquidityPromisedRaw.toBigInt();\n let mintAmount = liquidityPromised;\n if (liquidityPromised > originalMarketRate.toBigInt()) {\n mintAmount -= originalMarketRate.toBigInt();\n }\n return {\n txFee: txResult.finalFee ?? 0n,\n blockHeight: txResult.blockNumber!,\n bitcoinBlockHeight,\n pendingMint: mintAmount,\n liquidityPromised,\n newLockedMarketRate: newLockedMarketRate.toBigInt(),\n burned: amountBurned.toBigInt(),\n securityFee: securityFee.toBigInt(),\n };\n };\n return {\n txResult,\n getRatchetResult,\n };\n }\n\n public async releasePrice(priceIndex: PriceIndex): Promise<bigint> {\n return await BitcoinLock.getRedemptionRate(priceIndex, this);\n }\n\n public async requestRelease(\n args: {\n client: ArgonClient;\n priceIndex: PriceIndex;\n releaseRequest: IReleaseRequest;\n argonKeyring: KeyringPair;\n } & ISubmittableOptions,\n ): Promise<TxResult> {\n const {\n priceIndex,\n releaseRequest: { bitcoinNetworkFee, toScriptPubkey },\n argonKeyring,\n tip = 0n,\n client,\n } = args;\n\n if (!toScriptPubkey.startsWith('0x')) {\n throw new Error('toScriptPubkey must be a hex string starting with 0x');\n }\n\n const submitter = new TxSubmitter(\n client,\n client.tx.bitcoinLocks.requestRelease(this.utxoId, toScriptPubkey, bitcoinNetworkFee),\n argonKeyring,\n );\n\n const redemptionPrice = await BitcoinLock.getRedemptionRate(priceIndex, this);\n\n const canAfford = await submitter.canAfford({\n tip,\n unavailableBalance: BigInt(redemptionPrice),\n });\n\n if (!canAfford.canAfford) {\n throw new Error(\n `Insufficient funds to release lock. Available: ${formatArgons(canAfford.availableBalance)}, Required: ${formatArgons(redemptionPrice + canAfford.txFee + tip)}`,\n );\n }\n return submitter.submit({\n logResults: true,\n ...args,\n });\n }\n\n public async getReleaseRequest(\n client: IQueryableClient,\n ): Promise<IReleaseRequestDetails | undefined> {\n const requestMaybe = await client.query.bitcoinLocks.lockReleaseRequestsByUtxoId(this.utxoId);\n if (!requestMaybe.isSome) {\n return undefined;\n }\n const request = requestMaybe.unwrap();\n return {\n toScriptPubkey: request.toScriptPubkey.toHex(),\n bitcoinNetworkFee: request.bitcoinNetworkFee.toBigInt(),\n dueFrame: request.cosignDueFrame.toNumber(),\n vaultId: request.vaultId.toNumber(),\n redemptionPrice: request.redemptionPrice.toBigInt(),\n };\n }\n\n /**\n * Finds the cosign signature for a vault lock by UTXO ID. Optionally waits for the signature\n * @param client - The Argon client with rpc access\n * @param finalizedStateOnly - If true, only checks finalized state\n * @param waitForSignatureMillis - Optional timeout in milliseconds to wait for the signature. If -1, waits indefinitely.\n */\n public async findVaultCosignSignature(\n client: ArgonClient,\n finalizedStateOnly = false,\n waitForSignatureMillis?: number,\n ): Promise<{ blockHeight: number; signature: Uint8Array } | undefined> {\n let queryClient = client as IQueryableClient;\n if (finalizedStateOnly) {\n const finalizedHead = await client.rpc.chain.getFinalizedHead();\n queryClient = await client.at(finalizedHead);\n }\n const releaseHeight = await queryClient.query.bitcoinLocks.lockReleaseCosignHeightById(\n this.utxoId,\n );\n if (releaseHeight.isSome) {\n const releaseHeightValue = releaseHeight.unwrap().toNumber();\n const signature = await this.getVaultCosignSignature(client, releaseHeightValue);\n if (signature) {\n return { blockHeight: releaseHeightValue, signature };\n }\n }\n\n if (!waitForSignatureMillis) {\n return undefined;\n }\n\n return await new Promise(async (resolve, reject) => {\n let timeout: NodeJS.Timeout | undefined;\n const unsub = await client.rpc.chain.subscribeNewHeads(header => {\n const atHeight = header.number.toNumber();\n this.getVaultCosignSignature(client, atHeight)\n .then(signature => {\n if (signature) {\n unsub?.();\n clearTimeout(timeout);\n resolve({ signature, blockHeight: atHeight });\n }\n })\n .catch(err => {\n console.error(`Error checking for cosign signature at height ${atHeight}:`, err);\n });\n });\n if (waitForSignatureMillis !== -1) {\n timeout = setTimeout(() => {\n unsub?.();\n reject(new Error(`Timeout waiting for cosign signature for UTXO ID ${this.utxoId}`));\n }, waitForSignatureMillis);\n }\n });\n }\n\n public async getVaultCosignSignature(\n client: ArgonClient,\n atHeight: number,\n ): Promise<Uint8Array | undefined> {\n const blockHash = await BitcoinLock.blockHashAtHeight(client, atHeight);\n if (!blockHash) {\n console.warn(`Block hash not found for height ${atHeight}`);\n return undefined;\n }\n\n const blockEvents = await client.at(blockHash).then(api => api.query.system.events());\n for (const event of blockEvents) {\n if (client.events.bitcoinLocks.BitcoinUtxoCosigned.is(event.event)) {\n const { utxoId: id, signature } = event.event.data;\n if (id.toNumber() === this.utxoId) {\n return new Uint8Array(signature);\n }\n }\n }\n return undefined;\n }\n\n public static async getUtxoIdFromEvents(client: IQueryableClient, events: GenericEvent[]) {\n for (const event of events) {\n if (client.events.bitcoinLocks.BitcoinLockCreated.is(event)) {\n return event.data.utxoId.toNumber();\n }\n }\n return undefined;\n }\n\n public static async getMarketRate(\n priceIndex: PriceIndex,\n satoshis: number | bigint,\n ): Promise<bigint> {\n return priceIndex.getBtcMicrogonPrice(satoshis);\n }\n\n public static async getRedemptionRate(\n priceIndex: PriceIndex,\n details: { satoshis: bigint; lockedMarketRate?: bigint },\n ): Promise<bigint> {\n const { satoshis, lockedMarketRate } = details;\n // scale inputs\n const satsPerArgon = Number(SATS_PER_BTC) / MICROGONS_PER_ARGON;\n let price = Number(priceIndex.btcUsdPrice);\n price = (price / satsPerArgon) * Number(satoshis);\n\n if (lockedMarketRate !== undefined && lockedMarketRate < price) {\n price = Number(lockedMarketRate);\n }\n\n const r = Number(priceIndex.rValue);\n\n let multiplier: number;\n\n if (r >= 1) {\n // Case 1: no penalty\n multiplier = 1;\n } else if (r >= 0.9) {\n // Case 2: quadratic curve\n // Formula: 20r² - 38r + 19\n multiplier = 20 * (r * r) - 38 * r + 19;\n } else if (r >= 0.01) {\n // Case 3: rational linear formula\n // Formula: (0.5618r + 0.3944) / r\n multiplier = (0.5618 * r + 0.3944) / r;\n } else {\n // Case 4: extreme deviation\n // Formula: (1 / r) * (0.576r + 0.4)\n multiplier = (1 / r) * (0.576 * r + 0.4);\n }\n\n return BigInt(Math.floor(price * multiplier));\n }\n\n public static async getConfig(client: IQueryableClient): Promise<IBitcoinLockConfig> {\n const bitcoinNetwork = await client.query.bitcoinUtxos.bitcoinNetwork();\n return {\n lockReleaseCosignDeadlineFrames:\n client.consts.bitcoinLocks.lockReleaseCosignDeadlineFrames.toNumber(),\n pendingConfirmationExpirationBlocks:\n client.consts.bitcoinUtxos.maxPendingConfirmationBlocks.toNumber(),\n tickDurationMillis: await client.query.ticks\n .genesisTicker()\n .then(x => x.tickDurationMillis.toNumber()),\n bitcoinNetwork,\n lockSatoshiAllowedVariance:\n client.consts.bitcoinUtxos.maximumSatoshiThresholdFromExpected?.toNumber() ?? 10_000,\n };\n }\n\n public static async getBitcoinConfirmedBlockHeight(client: IQueryableClient): Promise<number> {\n return await client.query.bitcoinUtxos\n .confirmedBitcoinBlockTip()\n .then(x => x.value?.blockHeight.toNumber() ?? 0);\n }\n\n public static async submitVaultSignature(\n args: {\n client: ArgonClient;\n utxoId: number;\n vaultSignature: Uint8Array;\n argonKeyring: KeyringPair;\n } & ISubmittableOptions,\n ): Promise<TxResult> {\n const { utxoId, vaultSignature, argonKeyring, client } = args;\n if (!vaultSignature || vaultSignature.byteLength < 70 || vaultSignature.byteLength > 73) {\n throw new Error(\n `Invalid vault signature length: ${vaultSignature.byteLength}. Must be 70-73 bytes.`,\n );\n }\n const signature = u8aToHex(vaultSignature);\n const tx = client.tx.bitcoinLocks.cosignRelease(utxoId, signature);\n const submitter = new TxSubmitter(client, tx, argonKeyring);\n\n return await submitter.submit(args);\n }\n\n public static async createIncreaseSecuritizationTx(\n args: {\n utxoId: number;\n client: ArgonClient;\n newSatoshis: bigint;\n } & ISubmittableOptions,\n ): Promise<SubmittableExtrinsic | undefined> {\n const { client, newSatoshis, utxoId } = args;\n const txBuilder = client.tx.bitcoinLocks.increaseSecuritization;\n if (!txBuilder?.meta) {\n return undefined;\n }\n return txBuilder(utxoId, newSatoshis);\n }\n\n public static async createFundWithUtxoCandidateTx(\n args: {\n client: ArgonClient;\n utxoId: number;\n utxoRef: UtxoRefLike;\n } & ISubmittableOptions,\n ): Promise<SubmittableExtrinsic | undefined> {\n const { client, utxoId, utxoRef } = args;\n const txBuilder = client.tx.bitcoinUtxos?.fundWithUtxoCandidate;\n if (!txBuilder?.meta) {\n return undefined;\n }\n return txBuilder(utxoId, normalizeUtxoRef(utxoRef));\n }\n\n public static async createOrphanedUtxoReleaseRequestTx(\n args: {\n client: ArgonClient;\n utxoRef: UtxoRefLike;\n releaseRequest: IReleaseRequest;\n } & ISubmittableOptions,\n ): Promise<SubmittableExtrinsic | undefined> {\n const {\n client,\n utxoRef,\n releaseRequest: { bitcoinNetworkFee, toScriptPubkey },\n } = args;\n\n if (!toScriptPubkey.startsWith('0x')) {\n throw new Error('toScriptPubkey must be a hex string starting with 0x');\n }\n\n const txBuilder = client.tx.bitcoinLocks.requestOrphanedUtxoRelease;\n if (!txBuilder?.meta) {\n return undefined;\n }\n\n return txBuilder(normalizeUtxoRef(utxoRef), toScriptPubkey, bitcoinNetworkFee);\n }\n\n public static async createOrphanedUtxoCosignTx(\n args: {\n client: ArgonClient;\n orphanOwner: string;\n utxoRef: UtxoRefLike;\n vaultSignature: Uint8Array;\n } & ISubmittableOptions,\n ): Promise<SubmittableExtrinsic | undefined> {\n const { client, orphanOwner, utxoRef, vaultSignature } = args;\n if (!vaultSignature || vaultSignature.byteLength < 70 || vaultSignature.byteLength > 73) {\n throw new Error(\n `Invalid vault signature length: ${vaultSignature.byteLength}. Must be 70-73 bytes.`,\n );\n }\n if (!client.tx.bitcoinLocks.cosignOrphanedUtxoRelease?.meta) {\n return undefined;\n }\n const signature = u8aToHex(vaultSignature);\n return client.tx.bitcoinLocks.cosignOrphanedUtxoRelease(\n orphanOwner,\n normalizeUtxoRef(utxoRef),\n signature,\n );\n }\n\n public static async get(\n client: IQueryableClient,\n utxoId: number,\n ): Promise<BitcoinLock | undefined> {\n const utxoRaw = await client.query.bitcoinLocks.locksByUtxoId(utxoId);\n if (!utxoRaw.isSome) {\n return;\n }\n const utxo = utxoRaw.unwrap();\n const p2shBytesPrefix = '0020';\n const wscriptHash = utxo.utxoScriptPubkey.asP2wsh.wscriptHash.toHex().replace('0x', '');\n const p2wshScriptHashHex = `0x${p2shBytesPrefix}${wscriptHash}`;\n const vaultId = utxo.vaultId.toNumber();\n const lockedMarketRate =\n utxo.lockedMarketRate?.toBigInt() ??\n (utxo as { peggedPrice?: u128 }).peggedPrice?.toBigInt() ??\n 0n;\n const liquidityPromised = utxo.liquidityPromised.toBigInt();\n const ownerAccount = utxo.ownerAccount.toHuman();\n const satoshis = utxo.satoshis.toBigInt();\n const utxoSatoshis = utxo.utxoSatoshis?.isSome ? utxo.utxoSatoshis.value.toBigInt() : undefined;\n const vaultPubkey = utxo.vaultPubkey.toHex();\n const vaultClaimPubkey = utxo.vaultClaimPubkey.toHex();\n const ownerPubkey = utxo.ownerPubkey.toHex();\n const [fingerprint, cosign_hd_index, claim_hd_index] = utxo.vaultXpubSources;\n const vaultXpubSources = {\n parentFingerprint: new Uint8Array(fingerprint),\n cosignHdIndex: cosign_hd_index.toNumber(),\n claimHdIndex: claim_hd_index.toNumber(),\n };\n\n const createdAtArgonBlock = utxo.createdAtArgonBlock?.toNumber() ?? 0;\n const securityFees = utxo.securityFees.toBigInt();\n const vaultClaimHeight = utxo.vaultClaimHeight.toNumber();\n const openClaimHeight = utxo.openClaimHeight.toNumber();\n const createdAtHeight = utxo.createdAtHeight.toNumber();\n const isFunded = ((utxo as { isVerified?: bool })?.isVerified ?? utxo.isFunded).toJSON();\n const fundHoldExtensionsByBitcoinExpirationHeight = Object.fromEntries(\n [...utxo.fundHoldExtensions.entries()].map(([x, y]) => [x.toNumber(), y.toBigInt()]),\n );\n return new BitcoinLock({\n utxoId,\n p2wshScriptHashHex,\n vaultId,\n lockedMarketRate,\n liquidityPromised,\n ownerAccount,\n satoshis,\n utxoSatoshis,\n vaultPubkey,\n vaultClaimPubkey,\n ownerPubkey,\n vaultXpubSources,\n vaultClaimHeight,\n openClaimHeight,\n createdAtHeight,\n securityFees,\n isFunded,\n fundHoldExtensionsByBitcoinExpirationHeight,\n createdAtArgonBlock,\n });\n }\n\n public static async blockHashAtHeight(\n client: ArgonClient,\n atHeight: number,\n ): Promise<string | undefined> {\n for (let i = 0; i < 10; i++) {\n const currentHeight = await client.query.system.number().then(x => x.toNumber());\n if (atHeight > currentHeight) {\n console.warn(\n `Requested block height ${atHeight} is greater than current height ${currentHeight}. Retrying...`,\n );\n await new Promise(resolve => setTimeout(resolve, 1000)); // wait 1 second before retrying\n continue;\n }\n const hash = await client.rpc.chain.getBlockHash(atHeight).then(x => x.toHex());\n if (hash === '0x0000000000000000000000000000000000000000000000000000000000000000') {\n console.warn(`Block hash not found for height ${atHeight}. Retrying...`);\n await new Promise(resolve => setTimeout(resolve, 1000)); // wait 1 second before retrying\n continue;\n }\n return hash;\n }\n return undefined;\n }\n\n public static areFeeCouponsSupported(client: ArgonClient): boolean {\n return !!client.tx.bitcoinLocks.registerFeeCoupon?.meta;\n }\n\n public static createCouponProof(args: {\n couponProofKeypair: KeyringPair;\n argonKeyring: KeyringPair;\n }): { public: Uint8Array; signature: Uint8Array } {\n const { couponProofKeypair, argonKeyring } = args;\n const registry = getOfflineRegistry();\n const couponMessage = registry\n .createType('([u8;17],[u8;32],AccountId)', [\n stringToU8a('fee_proof_message'),\n couponProofKeypair.publicKey,\n argonKeyring.address,\n ])\n .toU8a();\n const couponMessageHash = blake2AsU8a(couponMessage, 256);\n\n return {\n public: couponProofKeypair.publicKey,\n signature: couponProofKeypair.sign(couponMessageHash),\n };\n }\n\n public static createFeeCouponTx(args: {\n client: ArgonClient;\n couponProofKeypair: KeyringPair;\n maxSatoshis: number;\n maxFeePlusTip?: bigint;\n }): SubmittableExtrinsic | undefined {\n const { client, couponProofKeypair, maxSatoshis, maxFeePlusTip = null } = args;\n if (!this.areFeeCouponsSupported(client)) {\n return undefined;\n }\n if (couponProofKeypair.type !== 'sr25519') {\n throw new Error(`Coupon proof keypair must be of type 'sr25519'`);\n }\n return client.tx.bitcoinLocks.registerFeeCoupon(\n couponProofKeypair.publicKey,\n maxSatoshis,\n maxFeePlusTip,\n );\n }\n\n public static async createInitializeTx(args: {\n client: ArgonClient;\n vault: Vault;\n priceIndex: PriceIndex;\n ownerBitcoinPubkey: Uint8Array;\n satoshis: bigint;\n argonKeyring: KeyringPair;\n reducedBalanceBy?: bigint;\n microgonsPerBtc?: bigint;\n tip?: bigint;\n initializeForAccountId?: string;\n couponProofKeypair?: KeyringPair;\n skipCouponProofCheck?: boolean;\n }) {\n const {\n vault,\n priceIndex,\n argonKeyring,\n satoshis,\n tip = 0n,\n ownerBitcoinPubkey,\n client,\n microgonsPerBtc = null,\n initializeForAccountId,\n couponProofKeypair,\n skipCouponProofCheck,\n } = args;\n if (ownerBitcoinPubkey.length !== 33) {\n throw new Error(\n `Invalid Bitcoin key length: ${ownerBitcoinPubkey.length}. Must be a compressed pukey (33 bytes).`,\n );\n }\n\n let feeCouponProof = null;\n let prepaidFee = 0n;\n if (this.areFeeCouponsSupported(client) && couponProofKeypair) {\n if (skipCouponProofCheck !== true) {\n const coupon = await client.query.bitcoinLocks.feeCouponsByPublic(\n couponProofKeypair.publicKey,\n );\n if (!coupon.isSome) {\n throw new Error(`Fee coupon for the provided public key not found on chain.`);\n }\n const { maxSatoshis, maxFeePlusTip } = coupon.unwrap();\n if (satoshis > maxSatoshis.toBigInt()) {\n throw new Error(\n `Fee coupon max satoshis exceeded. Coupon max: ${maxSatoshis.toBigInt()}, requested: ${satoshis}`,\n );\n }\n prepaidFee = maxFeePlusTip.isSome\n ? maxFeePlusTip.value.toBigInt()\n : BigInt(Number.MAX_SAFE_INTEGER);\n } else {\n prepaidFee = BigInt(Number.MAX_SAFE_INTEGER);\n }\n feeCouponProof = this.createCouponProof({ couponProofKeypair, argonKeyring });\n }\n if (\n initializeForAccountId &&\n initializeForAccountId !== argonKeyring.address &&\n !feeCouponProof\n ) {\n throw new Error(\n `Initializing for a different account ID requires a fee coupon proof to cover the security fee.`,\n );\n }\n let tx: SubmittableExtrinsic;\n if (initializeForAccountId) {\n tx = client.tx.bitcoinLocks.initializeFor(\n initializeForAccountId,\n vault.vaultId,\n satoshis,\n ownerBitcoinPubkey,\n {\n V1: {\n microgonsPerBtc,\n feeCouponProof,\n },\n },\n );\n } else {\n tx =\n client.tx.bitcoinLocks.initialize.meta.args.length === 4\n ? client.tx.bitcoinLocks.initialize(vault.vaultId, satoshis, ownerBitcoinPubkey, {\n V1: {\n microgonsPerBtc,\n feeCouponProof,\n },\n })\n : // @ts-expect-error - legacy overload\n client.tx.bitcoinLocks.initialize(vault.vaultId, satoshis, ownerBitcoinPubkey);\n }\n const submitter = new TxSubmitter(client, tx, argonKeyring);\n const marketPrice = await this.getMarketRate(priceIndex, satoshis);\n const isVaultOwner = argonKeyring.address === vault.operatorAccountId;\n const securityFee = isVaultOwner ? 0n : vault.calculateBitcoinFee(marketPrice);\n\n const { canAfford, availableBalance, txFee } = await submitter.canAfford({\n tip,\n unavailableBalance: securityFee + (args.reducedBalanceBy ?? 0n),\n includeExistentialDeposit: true,\n });\n let canAffordFinal = canAfford;\n if (feeCouponProof) {\n // if using a fee coupon, also ensure the prepaid fee covers the tx fee plus tip\n canAffordFinal = prepaidFee >= txFee + tip;\n }\n return {\n tx,\n securityFee,\n txFee,\n canAfford: canAffordFinal,\n availableBalance,\n txFeePlusTip: txFee + tip,\n };\n }\n\n public static async initialize(\n args: {\n client: ArgonClient;\n vault: Vault;\n priceIndex: PriceIndex;\n ownerBitcoinPubkey: Uint8Array;\n argonKeyring: KeyringPair;\n satoshis: bigint;\n } & ISubmittableOptions,\n ): Promise<{\n getLock(): Promise<{ lock: BitcoinLock; createdAtHeight: number }>;\n txResult: TxResult;\n securityFee: bigint;\n }> {\n const { argonKeyring, client } = args;\n\n const { tx, securityFee, canAfford, txFeePlusTip } = await this.createInitializeTx(args);\n if (!canAfford) {\n throw new Error(\n `Insufficient funds to initialize bitcoin lock. Required security fee: ${formatArgons(securityFee)}, Tx fee plus tip: ${formatArgons(txFeePlusTip)}`,\n );\n }\n const submitter = new TxSubmitter(client, tx, argonKeyring);\n const txResult = await submitter.submit({ logResults: true, ...args });\n\n return {\n getLock: () => this.getBitcoinLockFromTxResult(client, txResult),\n txResult,\n securityFee,\n };\n }\n\n public static async getBitcoinLockFromTxResult(\n client: IQueryableClient,\n txResult: TxResult,\n ): Promise<{\n lock: BitcoinLock;\n createdAtHeight: number;\n txResult: TxResult;\n }> {\n await txResult.waitForFinalizedBlock;\n const blockHeight = txResult.blockNumber!;\n const utxoId = (await this.getUtxoIdFromEvents(client, txResult.events)) ?? 0;\n if (utxoId === 0) {\n throw new Error('Bitcoin lock creation failed, no UTXO ID found in transaction events');\n }\n const lock = await this.get(client, utxoId);\n if (!lock) {\n throw new Error(`Lock with ID ${utxoId} not found after initialization`);\n }\n return { lock, createdAtHeight: blockHeight, txResult };\n }\n\n public static async requiredSatoshisForArgonLiquidity(\n priceIndex: PriceIndex,\n argonAmount: bigint,\n ): Promise<bigint> {\n /**\n * If 1_000_000 microgons are available, and the market rate is 100 microgons per satoshi, then\n * 1_000_000 / 100 = 10_000 satoshis needed\n */\n const marketRatePerBitcoin = priceIndex.getBtcMicrogonPrice(SATS_PER_BTC);\n return (argonAmount * SATS_PER_BTC) / marketRatePerBitcoin;\n }\n}\n\nexport interface IBitcoinLockConfig {\n lockReleaseCosignDeadlineFrames: number;\n pendingConfirmationExpirationBlocks: number;\n tickDurationMillis: number;\n bitcoinNetwork: ArgonPrimitivesBitcoinBitcoinNetwork;\n lockSatoshiAllowedVariance: number;\n}\nexport interface IReleaseRequest {\n toScriptPubkey: string;\n bitcoinNetworkFee: bigint;\n}\n\nexport interface IReleaseRequestDetails extends IReleaseRequest {\n dueFrame: number;\n vaultId: number;\n redemptionPrice: bigint;\n}\n\nexport interface IBitcoinLock {\n utxoId: number;\n p2wshScriptHashHex: string;\n vaultId: number;\n lockedMarketRate: bigint;\n liquidityPromised: bigint;\n ownerAccount: string;\n satoshis: bigint;\n utxoSatoshis?: bigint;\n vaultPubkey: string;\n securityFees: bigint;\n vaultClaimPubkey: string;\n ownerPubkey: string;\n vaultXpubSources: {\n parentFingerprint: Uint8Array;\n cosignHdIndex: number;\n claimHdIndex: number;\n };\n vaultClaimHeight: number;\n openClaimHeight: number;\n createdAtHeight: number;\n isFunded: boolean;\n createdAtArgonBlock: number;\n fundHoldExtensionsByBitcoinExpirationHeight: Record<number, bigint>;\n}\n","import {\n ArgonClient,\n FIXED_U128_DECIMALS,\n fromFixedNumber,\n MICROGONS_PER_ARGON,\n SATS_PER_BTC,\n} from './index';\nimport BigNumber from 'bignumber.js';\nimport { ApiDecoration } from '@polkadot/api/types';\n\nexport class PriceIndex {\n btcUsdPrice?: BigNumber;\n argonotUsdPrice?: BigNumber;\n argonUsdPrice?: BigNumber;\n argonUsdTargetPrice?: BigNumber;\n argonTimeWeightedAverageLiquidity?: BigNumber;\n lastUpdatedTick?: number;\n\n async load(client: ArgonClient | ApiDecoration<'promise'>): Promise<this> {\n const current = await client.query.priceIndex.current();\n if (!current.isSome) {\n this.argonUsdPrice = undefined;\n this.argonotUsdPrice = undefined;\n this.btcUsdPrice = undefined;\n this.argonUsdTargetPrice = undefined;\n this.argonTimeWeightedAverageLiquidity = undefined;\n this.lastUpdatedTick = undefined;\n return this;\n }\n const value = current.unwrap();\n\n this.btcUsdPrice = fromFixedNumber(value.btcUsdPrice.toBigInt(), FIXED_U128_DECIMALS);\n this.argonotUsdPrice = fromFixedNumber(value.argonotUsdPrice.toBigInt(), FIXED_U128_DECIMALS);\n this.argonUsdPrice = fromFixedNumber(value.argonUsdPrice.toBigInt(), FIXED_U128_DECIMALS);\n this.argonUsdTargetPrice = fromFixedNumber(\n value.argonUsdTargetPrice.toBigInt(),\n FIXED_U128_DECIMALS,\n );\n this.argonTimeWeightedAverageLiquidity = fromFixedNumber(\n value.argonTimeWeightedAverageLiquidity.toBigInt(),\n FIXED_U128_DECIMALS,\n );\n this.lastUpdatedTick = value.tick.toNumber();\n return this;\n }\n\n getBtcMicrogonPrice(satoshis: bigint | number): bigint {\n if (this.btcUsdPrice === undefined || this.argonUsdPrice === undefined) {\n throw new Error('PriceIndex not loaded');\n }\n\n const satoshiCents = this.btcUsdPrice.multipliedBy(satoshis).dividedBy(SATS_PER_BTC);\n\n const microgons = satoshiCents.multipliedBy(MICROGONS_PER_ARGON).dividedBy(this.argonUsdPrice);\n return BigInt(microgons.integerValue(BigNumber.ROUND_DOWN).toString());\n }\n\n get rValue(): BigNumber {\n if (this.argonUsdTargetPrice === undefined || this.argonUsdPrice === undefined) {\n throw new Error('PriceIndex not loaded');\n }\n return this.argonUsdPrice.div(this.argonUsdTargetPrice);\n }\n\n get argonCpi(): BigNumber {\n if (this.argonUsdTargetPrice === undefined || this.argonUsdPrice === undefined) {\n throw new Error('PriceIndex not loaded');\n }\n const ratio = this.argonUsdTargetPrice.div(this.argonUsdPrice);\n return ratio.minus(1);\n }\n}\n","import './interfaces/augment-api';\nimport './interfaces/augment-types';\nimport './interfaces/types-lookup';\nimport type { KeyringPair, KeyringPair$Json } from '@polkadot/keyring/types';\nimport { ApiPromise, HttpProvider, Keyring, WsProvider } from '@polkadot/api';\nimport {\n cryptoWaitReady,\n decodeAddress,\n encodeAddress,\n isAddress,\n mnemonicGenerate,\n} from '@polkadot/util-crypto';\nimport type { InterfaceTypes } from '@polkadot/types/types/registry';\nimport type { KeypairType } from '@polkadot/util-crypto/types';\nimport type { ProviderInterface } from '@polkadot/rpc-provider/types';\nimport type { ApiDecoration, ApiOptions } from '@polkadot/api/types';\nimport { Metadata, TypeRegistry } from '@polkadot/types';\nimport { result as metadataBytes } from '../metadata.json';\nimport { specVersion } from '../runtime_version.json';\nimport Genesis from '../genesis.json';\nimport { HexString } from '@polkadot/util/types';\n\nexport type { SubmittableExtrinsic } from '@polkadot/api/promise/types';\nexport { ApiDecoration };\nexport { WageProtector } from './WageProtector';\nexport { TxSubmitter, type ISubmittableOptions } from './TxSubmitter';\nexport { TxResult, type ITxProgressCallback } from './TxResult';\nexport * from './utils';\nexport * from './keyringUtils';\nexport * from './header';\nexport * from './Vault';\nexport * from './convert';\nexport * from './BitcoinLock';\nexport * from './PriceIndex';\nexport {\n Keyring,\n KeyringPair,\n KeyringPair$Json,\n KeypairType,\n mnemonicGenerate,\n decodeAddress,\n isAddress,\n encodeAddress,\n};\n\nexport { u8aToHex, hexToU8a, u8aEq } from '@polkadot/util';\n\nexport * from '@polkadot/types/lookup';\nexport { GenericEvent, GenericBlock, GenericAddress } from '@polkadot/types/generic';\nexport {\n BTreeMap,\n Bytes,\n Compact,\n Enum,\n Null,\n Option,\n Result,\n Bool,\n Tuple,\n Range,\n Struct,\n Text,\n U256,\n U8aFixed,\n Vec,\n bool,\n i128,\n u128,\n u16,\n u32,\n u64,\n u8,\n} from '@polkadot/types-codec';\nexport type {\n ISubmittableResult,\n IExtrinsic,\n SignerResult,\n Signer,\n ISignerPayload,\n} from '@polkadot/types/types/extrinsic';\nexport { type ITuple, type Codec } from '@polkadot/types-codec/types';\nexport {\n type AccountId32,\n type Call,\n type H160,\n type H256,\n type MultiAddress,\n type Permill,\n type AccountId,\n type Header,\n type Block,\n type SignedBlock,\n} from '@polkadot/types/interfaces/runtime';\nexport type { ExtrinsicOrHash, ExtrinsicStatus } from '@polkadot/types/interfaces/author';\nexport { type BlockHash } from '@polkadot/types/interfaces/chain';\nexport { InterfaceTypes as interfaces };\n\nexport type ArgonClient = ApiPromise;\n\n/**\n * Wait for the crypto library to be ready (requires wasm, which needs async loading in commonjs)\n */\nexport async function waitForLoad(): Promise<void> {\n await cryptoWaitReady();\n}\n\n/**\n * Get a client for the given host\n * @param host The host to connect to\n * @param options Additional options for the API\n * @returns The client\n */\nexport async function getClient(host: string, options?: ApiOptions): Promise<ArgonClient> {\n let provider: ProviderInterface;\n if (host.startsWith('http')) {\n provider = new HttpProvider(host);\n } else {\n provider = new WsProvider(host);\n }\n\n options ??= {};\n options.metadata ??= {};\n\n for (const genesisHash of Object.values(Genesis)) {\n options.metadata[`${genesisHash}-${specVersion}`] = metadataBytes as HexString;\n }\n return await ApiPromise.create({ provider, noInitWarn: true, ...options });\n}\n\nconst registry = new TypeRegistry();\nregistry.setMetadata(\n new Metadata(registry, metadataBytes as HexString),\n undefined,\n undefined,\n true,\n);\n\nexport function getOfflineRegistry() {\n return registry;\n}\n"]}
1
+ {"version":3,"sources":["../metadata.json","../runtime_version.json","../genesis.json","../src/WageProtector.ts","../src/utils.ts","../src/TxResult.ts","../src/TxSubmitter.ts","../src/keyringUtils.ts","../src/header.ts","../src/Vault.ts","../src/convert.ts","../src/BitcoinLock.ts","../src/PriceIndex.ts","../src/EvmContracts.ts","../../../chains/ethereum/contracts/artifacts/contracts/ArgonToken.sol/ArgonToken.json","../../../chains/ethereum/contracts/artifacts/contracts/ArgonotToken.sol/ArgonotToken.json","../../../chains/ethereum/contracts/artifacts/contracts/MintingGateway.sol/MintingGateway.json","../../../chains/ethereum/contracts/artifacts/contracts/ProxyArtifacts.sol/ProxyAdmin.json","../../../chains/ethereum/contracts/artifacts/contracts/ProxyArtifacts.sol/TransparentUpgradeableProxy.json","../../../chains/ethereum/contracts/generated.ts","../../../chains/ethereum/contracts/hashing.ts","../../../chains/ethereum/contracts/index.ts","../src/EthereumExecution.ts","../src/EthereumProof.ts","../src/EthereumGatewayActivity.ts","../src/EthereumGatewayActivityProof.ts","../src/EthereumBeaconSync.ts","../src/index.ts"],"names":["BigNumber","result","SATS_PER_BTC","hashMintingGatewayMintingAuthorization","hashMintingGatewayTransferOutOfArgonRequest","receipts","getAddress","toHex","hexToBytes"],"mappings":"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","file":"index.js","sourcesContent":["{\n \"jsonrpc\": \"2.0\",\n \"id\": \"1\",\n \"result\": \"0x6d6574610e3909000c1c73705f636f72651863727970746f2c4163636f756e7449643332000004000401205b75383b2033325d0000040000032000000008000800000503000c08306672616d655f73797374656d2c4163636f756e74496e666f08144e6f6e636501102c4163636f756e74446174610114001401146e6f6e63651001144e6f6e6365000124636f6e73756d657273100120526566436f756e7400012470726f766964657273100120526566436f756e7400012c73756666696369656e7473100120526566436f756e740001106461746114012c4163636f756e74446174610000100000050500140c3c70616c6c65745f62616c616e6365731474797065732c4163636f756e7444617461041c42616c616e63650118001001106672656518011c42616c616e6365000120726573657276656418011c42616c616e636500011866726f7a656e18011c42616c616e6365000114666c6167731c01284578747261466c61677300001800000507001c0c3c70616c6c65745f62616c616e636573147479706573284578747261466c61677300000400180110753132380000200000050000240c346672616d655f737570706f7274206469737061746368405065724469737061746368436c6173730404540128000c01186e6f726d616c2801045400012c6f7065726174696f6e616c280104540001246d616e6461746f7279280104540000280c2873705f77656967687473247765696768745f76321857656967687400000801207265665f74696d652c010c75363400012870726f6f665f73697a652c010c75363400002c000006300030000005060034083c7072696d69746976655f74797065731048323536000004000401205b75383b2033325d00003800000208003c102873705f72756e74696d651c67656e65726963186469676573741844696765737400000401106c6f677340013c5665633c4469676573744974656d3e000040000002440044102873705f72756e74696d651c67656e6572696318646967657374284469676573744974656d0001142850726552756e74696d650800480144436f6e73656e737573456e67696e654964000038011c5665633c75383e00060024436f6e73656e7375730800480144436f6e73656e737573456e67696e654964000038011c5665633c75383e000400105365616c0800480144436f6e73656e737573456e67696e654964000038011c5665633c75383e000500144f74686572040038011c5665633c75383e0000006452756e74696d65456e7669726f6e6d656e745570646174656400080000480000030400000008004c00000250005008306672616d655f73797374656d2c4576656e745265636f7264080445015404540134000c011470686173652902011450686173650001146576656e7454010445000118746f706963732d0201185665633c543e00005408346172676f6e5f72756e74696d653052756e74696d654576656e740001701853797374656d04005801706672616d655f73797374656d3a3a4576656e743c52756e74696d653e0000001c44696765737473040080017870616c6c65745f646967657374733a3a4576656e743c52756e74696d653e000100204d756c7469736967040084017c70616c6c65745f6d756c74697369673a3a4576656e743c52756e74696d653e0003001450726f7879040094017070616c6c65745f70726f78793a3a4576656e743c52756e74696d653e000400284d696e696e67536c6f740400a4018870616c6c65745f6d696e696e675f736c6f743a3a4576656e743c52756e74696d653e00060030426974636f696e5574786f730400c8019070616c6c65745f626974636f696e5f7574786f733a3a4576656e743c52756e74696d653e000700185661756c74730400dc017470616c6c65745f7661756c74733a3a4576656e743c52756e74696d653e00080030426974636f696e4c6f636b730400e4019070616c6c65745f626974636f696e5f6c6f636b733a3a4576656e743c52756e74696d653e000900204e6f7461726965730400f0017c70616c6c65745f6e6f7461726965733a3a4576656e743c52756e74696d653e000a00204e6f7465626f6f6b04001501017c70616c6c65745f6e6f7465626f6f6b3a3a4576656e743c52756e74696d653e000b00484c6f63616c636861696e5472616e736665720400310101a870616c6c65745f6c6f63616c636861696e5f7472616e736665723a3a4576656e743c52756e74696d653e000c0034426c6f636b5365616c5370656304003501019870616c6c65745f626c6f636b5f7365616c5f737065633a3a4576656e743c52756e74696d653e000d001c446f6d61696e7304003901017870616c6c65745f646f6d61696e733a3a4576656e743c52756e74696d653e000e00285072696365496e64657804006101018870616c6c65745f70726963655f696e6465783a3a4576656e743c52756e74696d653e000f001c4772616e64706104006501015470616c6c65745f6772616e6470613a3a4576656e7400110030426c6f636b5265776172647304007101019070616c6c65745f626c6f636b5f726577617264733a3a4576656e743c52756e74696d653e001300104d696e7404008901016c70616c6c65745f6d696e743a3a4576656e743c52756e74696d653e0014002042616c616e6365730400990101ec70616c6c65745f62616c616e6365733a3a4576656e743c52756e74696d652c2070616c6c65745f62616c616e6365733a3a496e7374616e6365313e001500244f776e6572736869700400c10101ec70616c6c65745f62616c616e6365733a3a4576656e743c52756e74696d652c2070616c6c65745f62616c616e6365733a3a496e7374616e6365323e0016001c547850617573650400c501017c70616c6c65745f74785f70617573653a3a4576656e743c52756e74696d653e001700485472616e73616374696f6e5061796d656e740400d10101a870616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4576656e743c52756e74696d653e0018001c5574696c6974790400d501015470616c6c65745f7574696c6974793a3a4576656e74001900105375646f0400d901016c70616c6c65745f7375646f3a3a4576656e743c52756e74696d653e001a002054726561737572790400dd01017c70616c6c65745f74726561737572793a3a4576656e743c52756e74696d653e001f0028466565436f6e74726f6c0400e501018870616c6c65745f6665655f636f6e74726f6c3a3a4576656e743c52756e74696d653e0020004c4f7065726174696f6e616c4163636f756e74730400f10101ac70616c6c65745f6f7065726174696f6e616c5f6163636f756e74733a3a4576656e743c52756e74696d653e00220040457468657265756d56657269666965720400f90101a070616c6c65745f657468657265756d5f76657269666965723a3a4576656e743c52756e74696d653e0023004843726f7373636861696e5472616e736665720400010201a870616c6c65745f63726f7373636861696e5f7472616e736665723a3a4576656e743c52756e74696d653e00240000580c306672616d655f73797374656d1870616c6c6574144576656e740404540001204045787472696e7369635375636365737304013464697370617463685f696e666f5c014444697370617463684576656e74496e666f00000490416e2065787472696e73696320636f6d706c65746564207375636365737366756c6c792e3c45787472696e7369634661696c656408013864697370617463685f6572726f7268013444697370617463684572726f7200013464697370617463685f696e666f5c014444697370617463684576656e74496e666f00010450416e2065787472696e736963206661696c65642e2c436f64655570646174656400020450603a636f6465602077617320757064617465642e284e65774163636f756e7404011c6163636f756e74000130543a3a4163636f756e7449640003046841206e6577206163636f756e742077617320637265617465642e344b696c6c65644163636f756e7404011c6163636f756e74000130543a3a4163636f756e74496400040458416e206163636f756e7420776173207265617065642e2052656d61726b656408011873656e646572000130543a3a4163636f756e7449640001106861736834011c543a3a48617368000504704f6e206f6e2d636861696e2072656d61726b2068617070656e65642e4455706772616465417574686f72697a6564080124636f64655f6861736834011c543a3a48617368000134636865636b5f76657273696f6e200110626f6f6c00060468416e20757067726164652077617320617574686f72697a65642e8052656a6563746564496e76616c6964417574686f72697a656455706772616465080124636f64655f6861736834011c543a3a486173680001146572726f7268013444697370617463684572726f720007041101416e20696e76616c696420617574686f72697a65642075706772616465207761732072656a6563746564207768696c6520747279696e6720746f206170706c792069742e04704576656e7420666f72207468652053797374656d2070616c6c65742e5c08306672616d655f73797374656d4444697370617463684576656e74496e666f00000c0118776569676874280118576569676874000114636c6173736001344469737061746368436c617373000120706179735f666565640110506179730000600c346672616d655f737570706f7274206469737061746368344469737061746368436c61737300010c184e6f726d616c0000002c4f7065726174696f6e616c000100244d616e6461746f727900020000640c346672616d655f737570706f727420646973706174636810506179730001080c596573000000084e6f0001000068082873705f72756e74696d653444697370617463684572726f7200013c144f746865720000003043616e6e6f744c6f6f6b7570000100244261644f726967696e000200184d6f64756c6504006c012c4d6f64756c654572726f7200030044436f6e73756d657252656d61696e696e670004002c4e6f50726f76696465727300050040546f6f4d616e79436f6e73756d65727300060014546f6b656e0400700128546f6b656e4572726f720007002841726974686d65746963040074013c41726974686d657469634572726f72000800345472616e73616374696f6e616c04007801485472616e73616374696f6e616c4572726f7200090024457868617573746564000a0028436f7272757074696f6e000b002c556e617661696c61626c65000c0038526f6f744e6f74416c6c6f776564000d00105472696504007c0124547269654572726f72000e00006c082873705f72756e74696d652c4d6f64756c654572726f720000080114696e64657808010875380001146572726f7248018c5b75383b204d41585f4d4f44554c455f4552524f525f454e434f4445445f53495a455d000070082873705f72756e74696d6528546f6b656e4572726f720001284046756e6473556e617661696c61626c65000000304f6e6c7950726f76696465720001003042656c6f774d696e696d756d0002003043616e6e6f7443726561746500030030556e6b6e6f776e41737365740004001846726f7a656e0005002c556e737570706f727465640006004043616e6e6f74437265617465486f6c64000700344e6f74457870656e6461626c650008001c426c6f636b65640009000074083473705f61726974686d657469633c41726974686d657469634572726f7200010c24556e646572666c6f77000000204f766572666c6f77000100384469766973696f6e42795a65726f0002000078082873705f72756e74696d65485472616e73616374696f6e616c4572726f72000108304c696d6974526561636865640000001c4e6f4c61796572000100007c0c2873705f72756e74696d653070726f76696e675f7472696524547269654572726f7200013840496e76616c69645374617465526f6f7400000048496e636f6d706c65746544617461626173650001005056616c75654174496e636f6d706c6574654b6579000200304465636f6465724572726f720003002c496e76616c696448617368000400304475706c69636174654b65790005003845787472616e656f75734e6f64650006003c45787472616e656f757356616c75650007005c45787472616e656f7573486173685265666572656e636500080054496e76616c69644368696c645265666572656e63650009003456616c75654d69736d61746368000a003c496e636f6d706c65746550726f6f66000b0030526f6f744d69736d61746368000c002c4465636f64654572726f72000d0000800c3870616c6c65745f646967657374731870616c6c6574144576656e74040454000100047c54686520604576656e746020656e756d206f6620746869732070616c6c6574840c3c70616c6c65745f6d756c74697369671870616c6c6574144576656e740404540001142c4e65774d756c74697369670c0124617070726f76696e67000130543a3a4163636f756e7449640001206d756c7469736967000130543a3a4163636f756e74496400012463616c6c5f6861736804012043616c6c486173680000048c41206e6577206d756c7469736967206f7065726174696f6e2068617320626567756e2e404d756c7469736967417070726f76616c100124617070726f76696e67000130543a3a4163636f756e74496400012474696d65706f696e7488017054696d65706f696e743c426c6f636b4e756d626572466f723c543e3e0001206d756c7469736967000130543a3a4163636f756e74496400012463616c6c5f6861736804012043616c6c48617368000104c841206d756c7469736967206f7065726174696f6e20686173206265656e20617070726f76656420627920736f6d656f6e652e404d756c74697369674578656375746564140124617070726f76696e67000130543a3a4163636f756e74496400012474696d65706f696e7488017054696d65706f696e743c426c6f636b4e756d626572466f723c543e3e0001206d756c7469736967000130543a3a4163636f756e74496400012463616c6c5f6861736804012043616c6c48617368000118726573756c748c01384469737061746368526573756c740002049c41206d756c7469736967206f7065726174696f6e20686173206265656e2065786563757465642e444d756c746973696743616e63656c6c656410012863616e63656c6c696e67000130543a3a4163636f756e74496400012474696d65706f696e7488017054696d65706f696e743c426c6f636b4e756d626572466f723c543e3e0001206d756c7469736967000130543a3a4163636f756e74496400012463616c6c5f6861736804012043616c6c48617368000304a041206d756c7469736967206f7065726174696f6e20686173206265656e2063616e63656c6c65642e304465706f736974506f6b656410010c77686f000130543a3a4163636f756e74496400012463616c6c5f6861736804012043616c6c4861736800012c6f6c645f6465706f73697418013042616c616e63654f663c543e00012c6e65775f6465706f73697418013042616c616e63654f663c543e000404f0546865206465706f73697420666f722061206d756c7469736967206f7065726174696f6e20686173206265656e20757064617465642f706f6b65642e047c54686520604576656e746020656e756d206f6620746869732070616c6c657488083c70616c6c65745f6d756c74697369672454696d65706f696e74042c426c6f636b4e756d62657201100008011868656967687410012c426c6f636b4e756d626572000114696e64657810010c75333200008c0418526573756c740804540190044501680108084f6b040090000000000c4572720400680000010000900000040000940c3070616c6c65745f70726f78791870616c6c6574144576656e7404045400011c3450726f78794578656375746564040118726573756c748c01384469737061746368526573756c74000004bc412070726f78792077617320657865637574656420636f72726563746c792c20776974682074686520676976656e2e2c507572654372656174656418011070757265000130543a3a4163636f756e74496400010c77686f000130543a3a4163636f756e74496400012870726f78795f74797065980130543a3a50726f787954797065000150646973616d626967756174696f6e5f696e6465789c010c7531360001086174100144426c6f636b4e756d626572466f723c543e00013c65787472696e7369635f696e64657810010c753332000108dc412070757265206163636f756e7420686173206265656e2063726561746564206279206e65772070726f7879207769746820676976656e90646973616d626967756174696f6e20696e64657820616e642070726f787920747970652e28507572654b696c6c656410011070757265000130543a3a4163636f756e74496400011c737061776e6572000130543a3a4163636f756e74496400012870726f78795f74797065980130543a3a50726f787954797065000150646973616d626967756174696f6e5f696e6465789c010c7531360002049c4120707572652070726f787920776173206b696c6c65642062792069747320737061776e65722e24416e6e6f756e6365640c01107265616c000130543a3a4163636f756e74496400011470726f7879000130543a3a4163636f756e74496400012463616c6c5f6861736834013443616c6c486173684f663c543e000304e0416e20616e6e6f756e63656d656e742077617320706c6163656420746f206d616b6520612063616c6c20696e20746865206675747572652e2850726f7879416464656410012464656c656761746f72000130543a3a4163636f756e74496400012464656c656761746565000130543a3a4163636f756e74496400012870726f78795f74797065980130543a3a50726f78795479706500011464656c6179100144426c6f636b4e756d626572466f723c543e00040448412070726f7879207761732061646465642e3050726f787952656d6f76656410012464656c656761746f72000130543a3a4163636f756e74496400012464656c656761746565000130543a3a4163636f756e74496400012870726f78795f74797065980130543a3a50726f78795479706500011464656c6179100144426c6f636b4e756d626572466f723c543e00050450412070726f7879207761732072656d6f7665642e304465706f736974506f6b656410010c77686f000130543a3a4163636f756e7449640001106b696e64a0012c4465706f7369744b696e6400012c6f6c645f6465706f73697418013042616c616e63654f663c543e00012c6e65775f6465706f73697418013042616c616e63654f663c543e000604090141206465706f7369742073746f72656420666f722070726f78696573206f7220616e6e6f756e63656d656e74732077617320706f6b6564202f20757064617465642e047c54686520604576656e746020656e756d206f6620746869732070616c6c65749808346172676f6e5f72756e74696d652450726f7879547970650001200c416e790000002c4e6f6e5472616e73666572000100285072696365496e646578000200244d696e696e67426964000300504d696e696e674269645265616c506179734665650004001c426974636f696e000500285661756c7441646d696e00060050426974636f696e496e697469616c697a65466f72000700009c0000050400a0083070616c6c65745f70726f78792c4465706f7369744b696e640001081c50726f7869657300000034416e6e6f756e63656d656e747300010000a40c4870616c6c65745f6d696e696e675f736c6f741870616c6c6574144576656e7404045400011c244e65774d696e6572730c01286e65775f6d696e657273a801b4426f756e6465645665633c526567697374726174696f6e3c543e2c20543a3a4d6178436f686f727453697a653e00013c72656c65617365645f6d696e65727310010c7533320001206672616d655f696430011c4672616d6549640000003c536c6f7442696464657241646465640c01286163636f756e745f6964000130543a3a4163636f756e7449640001286269645f616d6f756e74180128543a3a42616c616e6365000114696e64657810010c75333200010044536c6f7442696464657244726f707065640801286163636f756e745f6964000130543a3a4163636f756e7449640001587072657365727665645f6172676f6e6f745f686f6c64200110626f6f6c0002005452656c656173654d696e6572536561744572726f720801286163636f756e745f6964000130543a3a4163636f756e7449640001146572726f7268013444697370617463684572726f72000300684d696e696e67436f6e66696775726174696f6e557064617465640c01887469636b735f6265666f72655f6269645f656e645f666f725f7672665f636c6f73653001105469636b00014c7469636b735f6265747765656e5f736c6f74733001105469636b000178736c6f745f62696464696e675f73746172745f61667465725f7469636b733001105469636b000400404d696e696e6742696473436c6f7365640401206672616d655f696430011c4672616d654964000504f4426964732061726520636c6f7365642064756520746f20746865205652462072616e646f6d697a65642066756e6374696f6e2074726967676572696e673c52656c656173654269644572726f720801286163636f756e745f6964000130543a3a4163636f756e7449640001146572726f7268013444697370617463684572726f72000600047c54686520604576656e746020656e756d206f6620746869732070616c6c6574a80c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401ac045300000400c401185665633c543e0000ac0c406172676f6e5f7072696d69746976657328626c6f636b5f7365616c484d696e696e67526567697374726174696f6e0c244163636f756e74496401001c42616c616e63650118104b65797301b0001c01286163636f756e745f69640001244163636f756e74496400016065787465726e616c5f66756e64696e675f6163636f756e74bc01444f7074696f6e3c4163636f756e7449643e00010c626964c0011c42616c616e63650001206172676f6e6f7473c0011c42616c616e6365000138617574686f726974795f6b657973b001104b6579730001447374617274696e675f6672616d655f69642c011c4672616d65496400012c6269645f61745f7469636b2c01105469636b0000b008346172676f6e5f72756e74696d652c53657373696f6e4b657973000008011c6772616e647061b401d03c4772616e647061206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c6963000150626c6f636b5f7365616c5f617574686f72697479b801dc3c4d696e696e67536c6f74206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c69630000b40c5073705f636f6e73656e7375735f6772616e6470610c617070185075626c69630000040004013c656432353531393a3a5075626c69630000b810406172676f6e5f7072696d69746976657328626c6f636b5f7365616c0c617070185075626c69630000040004013c656432353531393a3a5075626c69630000bc04184f7074696f6e04045401000108104e6f6e6500000010536f6d650400000000010000c00000061800c4000002ac00c80c5070616c6c65745f626974636f696e5f7574786f731870616c6c6574144576656e7404045400011c305574786f566572696669656408011c7574786f5f69643001185574786f49640001447361746f736869735f72656365697665643001205361746f73686973000000305574786f52656a656374656410011c7574786f5f69643001185574786f49640001207574786f5f726566cc011c5574786f52656600013c72656a65637465645f726561736f6ed80154426974636f696e52656a6563746564526561736f6e0001447361746f736869735f72656365697665643001205361746f73686973000100245574786f5370656e7408011c7574786f5f69643001185574786f4964000130626c6f636b5f686569676874300134426974636f696e486569676874000200345574786f556e7761746368656404011c7574786f5f69643001185574786f4964000300385574786f5370656e744572726f7208011c7574786f5f69643001185574786f49640001146572726f7268013444697370617463684572726f72000400445574786f56657269666965644572726f7208011c7574786f5f69643001185574786f49640001146572726f7268013444697370617463684572726f72000500445574786f52656a65637465644572726f7208011c7574786f5f69643001185574786f49640001146572726f7268013444697370617463684572726f72000600047c54686520604576656e746020656e756d206f6620746869732070616c6c6574cc0c406172676f6e5f7072696d6974697665731c626974636f696e1c5574786f526566000008011074786964d00118483235364c650001306f75747075745f696e646578d4010c7533320000d00c406172676f6e5f7072696d6974697665731c626974636f696e18483235364c65000004000401205b75383b2033325d0000d40000061000d80c406172676f6e5f7072696d6974697665731c626974636f696e54426974636f696e52656a6563746564526561736f6e000110705361746f736869734f757473696465416363657074656452616e6765000000145370656e740001004c566572696669636174696f6e457870697265640002003c416c7265616479566572696669656400030000dc0c3470616c6c65745f7661756c74731870616c6c6574144576656e74040454000140305661756c74437265617465641401207661756c745f696410011c5661756c74496400013873656375726974697a6174696f6e180128543a3a42616c616e636500015073656375726974697a6174696f6e5f726174696fe0012446697865645531323800014c6f70657261746f725f6163636f756e745f6964000130543a3a4163636f756e74496400012c6f70656e65645f7469636b3001105469636b000000345661756c744d6f6469666965641001207661756c745f696410011c5661756c74496400013873656375726974697a6174696f6e180128543a3a42616c616e636504c0546865206e65772073656375726974697a6174696f6e20616d6f756e74206166746572206d6f64696669636174696f6e015473656375726974697a6174696f6e5f746172676574180128543a3a42616c616e63650449015468652073656375726974697a6174696f6e2074617267657420616d6f756e74206166746572206d6f64696669636174696f6e20287468697320697320746865206c6f6e67207465726d2074617267657429015073656375726974697a6174696f6e5f726174696fe00124466978656455313238000100645661756c745465726d734368616e67655363686564756c65640801207661756c745f696410011c5661756c74496400012c6368616e67655f7469636b3001105469636b000200445661756c745465726d734368616e6765640401207661756c745f696410011c5661756c7449640003002c5661756c74436c6f7365640c01207661756c745f696410011c5661756c74496400016073656375726974697a6174696f6e5f72656d61696e696e67180128543a3a42616c616e636500015c73656375726974697a6174696f6e5f72656c6561736564180128543a3a42616c616e6365000400585661756c74426974636f696e587075624368616e67650401207661756c745f696410011c5661756c7449640005005c5661756c74526576656e7565556e636f6c6c65637465640c01207661756c745f696410011c5661756c7449640001206672616d655f696430011c4672616d654964000118616d6f756e74180128543a3a42616c616e636500060439015661756c7420726576656e756520776173206e6f7420636f6c6c65637465642077697468696e207468652072657175697265642077696e646f772c20736f20686173206265656e206275726e6564385661756c74436f6c6c65637465640801207661756c745f696410011c5661756c74496400011c726576656e7565180128543a3a42616c616e63650007040901546865207661756c7420636f6c6c656374656420726576656e756520616e6420636f7369676e656420616c6c2070656e64696e6720626974636f696e206c6f636b732c46756e64734c6f636b65641801207661756c745f696410011c5661756c7449640001186c6f636b6572000130543a3a4163636f756e7449640001486c69717569646974795f70726f6d69736564180128543a3a42616c616e636500012869735f72617463686574200110626f6f6c00012c6665655f726576656e7565180128543a3a42616c616e63650001486469645f7573655f6665655f636f75706f6e200110626f6f6c0008004046756e644c6f636b43616e63656c65640801207661756c745f696410011c5661756c744964000118616d6f756e74180128543a3a42616c616e63650009006046756e64735363686564756c6564466f7252656c656173650c01207661756c745f696410011c5661756c74496400013873656375726974697a6174696f6e180128543a3a42616c616e636500013872656c656173655f686569676874300134426974636f696e486569676874000a00584c6f7374426974636f696e436f6d70656e73617465641001207661756c745f696410011c5661756c74496400012c62656e6566696369617279000130543a3a4163636f756e744964000138746f5f62656e6566696369617279180128543a3a42616c616e63650001186275726e6564180128543a3a42616c616e6365000b003446756e647352656c65617365640801207661756c745f696410011c5661756c74496400013873656375726974697a6174696f6e180128543a3a42616c616e6365000c004846756e647352656c65617365644572726f720801207661756c745f696410011c5661756c7449640001146572726f7268013444697370617463684572726f72000d005854726561737572795265636f7264696e674572726f721001207661756c745f696410011c5661756c7449640001206672616d655f696430011c4672616d6549640001387661756c745f6561726e696e6773180128543a3a42616c616e63650001146572726f7268013444697370617463684572726f72000e0050436f6d6d69747465644172676f6e6f74735365740c01207661756c745f696410011c5661756c74496400014c6f70657261746f725f6163636f756e745f6964000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000f00047c54686520604576656e746020656e756d206f6620746869732070616c6c6574e00c3473705f61726974686d657469632c66697865645f706f696e742446697865645531323800000400180110753132380000e40c5070616c6c65745f626974636f696e5f6c6f636b731870616c6c6574144576656e7404045400013848426974636f696e4c6f636b437265617465641c011c7574786f5f69643001185574786f49640001207661756c745f696410011c5661756c7449640001486c69717569646974795f70726f6d69736564180128543a3a42616c616e636500013873656375726974697a6174696f6e180128543a3a42616c616e636500014c6c6f636b65645f7461726765745f7072696365180128543a3a42616c616e63650001286163636f756e745f6964000130543a3a4163636f756e74496400013073656375726974795f666565180128543a3a42616c616e636500000050426974636f696e4c6f636b52617463686574656420011c7574786f5f69643001185574786f49640001207661756c745f696410011c5661756c7449640001486c69717569646974795f70726f6d69736564180128543a3a42616c616e63650001406f6c645f7461726765745f7072696365180128543a3a42616c616e636500013073656375726974795f666565180128543a3a42616c616e63650001406e65775f7461726765745f7072696365180128543a3a42616c616e6365000134616d6f756e745f6275726e6564180128543a3a42616c616e63650001286163636f756e745f6964000130543a3a4163636f756e74496400010044426974636f696e4c6f636b4275726e65640c011c7574786f5f69643001185574786f49640001207661756c745f696410011c5661756c7449640001387761735f7574786f5f7370656e74200110626f6f6c00020068426974636f696e5574786f436f7369676e52657175657374656408011c7574786f5f69643001185574786f49640001207661756c745f696410011c5661756c7449640003004c426974636f696e5574786f436f7369676e65640c011c7574786f5f69643001185574786f49640001207661756c745f696410011c5661756c7449640001247369676e6174757265e80140426974636f696e5369676e617475726500040060426974636f696e5370656e74416674657252656c6561736508011c7574786f5f69643001185574786f49640001207661756c745f696410011c5661756c74496400050050426974636f696e436f7369676e5061737444756510011c7574786f5f69643001185574786f49640001207661756c745f696410011c5661756c74496400014c636f6d70656e736174696f6e5f616d6f756e74180128543a3a42616c616e6365000158636f6d70656e73617465645f6163636f756e745f6964000130543a3a4163636f756e74496400060048436f7369676e4f7665726475654572726f7208011c7574786f5f69643001185574786f49640001146572726f7268013444697370617463684572726f720007040901416e206572726f72206f63637572726564207768696c6520726566756e64696e6720616e206f76657264756520636f7369676e656420626974636f696e206c6f636b4c4c6f636b45787069726174696f6e4572726f7208011c7574786f5f69643001185574786f49640001146572726f7268013444697370617463684572726f72000804a4416e206572726f72206f63637572726564207768696c6520636f6d706c6574696e672061206c6f636b504f727068616e65645574786f526563656976656410011c7574786f5f69643001185574786f49640001207574786f5f726566cc011c5574786f5265660001207661756c745f696410011c5661756c7449640001207361746f736869733001205361746f73686973000900704f727068616e65645574786f52656c6561736552657175657374656410011c7574786f5f69643001185574786f49640001207574786f5f726566cc011c5574786f5265660001207661756c745f696410011c5661756c7449640001286163636f756e745f6964000130543a3a4163636f756e744964000a00504f727068616e65645574786f436f7369676e656414011c7574786f5f69643001185574786f49640001207574786f5f726566cc011c5574786f5265660001207661756c745f696410011c5661756c7449640001286163636f756e745f6964000130543a3a4163636f756e7449640001247369676e6174757265e80140426974636f696e5369676e6174757265000b005c5574786f46756e64656446726f6d43616e64696461746510011c7574786f5f69643001185574786f49640001207574786f5f726566cc011c5574786f5265660001207661756c745f696410011c5661756c7449640001286163636f756e745f6964000130543a3a4163636f756e744964000c005c53656375726974697a6174696f6e496e6372656173656410011c7574786f5f69643001185574786f49640001207661756c745f696410011c5661756c7449640001306e65775f7361746f736869733001205361746f736869730001286163636f756e745f6964000130543a3a4163636f756e744964000d00047c54686520604576656e746020656e756d206f6620746869732070616c6c6574e80c406172676f6e5f7072696d6974697665731c626974636f696e40426974636f696e5369676e617475726500000400ec0170426f756e6465645665633c75382c20436f6e73745533323c37343e3e0000ec0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e0000f00c3c70616c6c65745f6e6f7461726965731870616c6c6574144576656e74040454000114384e6f7461727950726f706f7365640c01406f70657261746f725f6163636f756e74000130543a3a4163636f756e7449640001106d657461f4013c4e6f746172794d6574614f663c543e00011c65787069726573100144426c6f636b4e756d626572466f723c543e000004a4412075736572206861732070726f706f736564206f7065726174696e672061732061206e6f746172793c4e6f746172794163746976617465640401186e6f74617279110101444e6f746172795265636f72644f663c543e0001048c41206e6f746172792070726f706f73616c20686173206265656e206163636570746564584e6f746172794d6574615570646174655175657565640c01246e6f746172795f69641001204e6f7461727949640001106d657461f4013c4e6f746172794d6574614f663c543e0001386566666563746976655f7469636b3001105469636b000204844e6f74617279206d657461646174612071756575656420666f7220757064617465444e6f746172794d657461557064617465640801246e6f746172795f69641001204e6f7461727949640001106d657461f4013c4e6f746172794d6574614f663c543e0003045c4e6f74617279206d657461646174612075706461746564544e6f746172794d6574615570646174654572726f720c01246e6f746172795f69641001204e6f7461727949640001146572726f7268013444697370617463684572726f720001106d657461f4013c4e6f746172794d6574614f663c543e000404844572726f72207570646174696e6720717565756564206e6f7461727920696e666f047c54686520604576656e746020656e756d206f6620746869732070616c6c6574f40c406172676f6e5f7072696d697469766573186e6f74617279284e6f746172794d65746104204d6178486f73747300000c01106e616d65f801284e6f746172794e616d650001187075626c69630401304e6f746172795075626c6963000114686f73747301010168426f756e6465645665633c486f73742c204d6178486f7374733e0000f80c406172676f6e5f7072696d697469766573186e6f74617279284e6f746172794e616d6500000400fc0170426f756e6465645665633c75382c20436f6e73745533323c35353e3e0000fc0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e000001010c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540105010453000004000d0101185665633c543e000005010c406172676f6e5f7072696d69746976657310686f737410486f73740000040009010174426f756e6465645665633c75382c20436f6e73745533323c3235333e3e000009010c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e00000d0100000205010011010c406172676f6e5f7072696d697469766573186e6f74617279304e6f746172795265636f72640c244163636f756e74496401002c426c6f636b4e756d6265720110204d6178486f73747300001801246e6f746172795f6964d401204e6f74617279496400014c6f70657261746f725f6163636f756e745f69640001244163636f756e74496400013c6163746976617465645f626c6f636bd4012c426c6f636b4e756d6265720001486d6574615f757064617465645f626c6f636bd4012c426c6f636b4e756d6265720001446d6574615f757064617465645f7469636b2c01105469636b0001106d657461f401504e6f746172794d6574613c4d6178486f7374733e000015010c3c70616c6c65745f6e6f7465626f6f6b1870616c6c6574144576656e7404045400010c444e6f7465626f6f6b5375626d69747465640801246e6f746172795f69641001204e6f74617279496400013c6e6f7465626f6f6b5f6e756d6265721001384e6f7465626f6f6b4e756d626572000000504e6f7465626f6f6b41756469744661696c7572651001246e6f746172795f69641001204e6f74617279496400013c6e6f7465626f6f6b5f6e756d6265721001384e6f7465626f6f6b4e756d6265720001346e6f7465626f6f6b5f686173683401104832353600015066697273745f6661696c7572655f726561736f6e1901014c4e6f7465626f6f6b5665726966794572726f72000100644e6f7465626f6f6b5265616479466f72526570726f636573730801246e6f746172795f69641001204e6f74617279496400013c6e6f7465626f6f6b5f6e756d6265721001384e6f7465626f6f6b4e756d626572000200047c54686520604576656e746020656e756d206f6620746869732070616c6c657419010c486172676f6e5f6e6f746172795f6175646974146572726f722c5665726966794572726f720001ec504d697373696e674163636f756e744f726967696e0801286163636f756e745f696400012c4163636f756e74496433320001306163636f756e745f747970651d01012c4163636f756e745479706500000048486973746f72794c6f6f6b75704572726f72040118736f75726365210101644163636f756e74486973746f72794c6f6f6b75704572726f7200010060496e76616c69644163636f756e744368616e67656c69737400020064496e76616c6964436861696e5472616e73666572734c69737400030060496e76616c696442616c616e63654368616e6765526f6f7400040060496e76616c69644865616465725461785265636f7264656400050050496e76616c696450726576696f75734e6f6e636500060058496e76616c696450726576696f757342616c616e636500070070496e76616c696450726576696f75734163636f756e744f726967696e00080090496e76616c696450726576696f757342616c616e63654368616e67654e6f7465626f6f6b00090050496e76616c696442616c616e63654368616e6765000a0074496e76616c696442616c616e63654368616e67655369676e61747572650401306368616e67655f696e6465789c010c753136000b0054496e76616c69644e6f7465526563697069656e7473000c004842616c616e63654368616e67654572726f720c01306368616e67655f696e6465789c010c7531360001286e6f74655f696e6465789c010c75313600011c6d6573736167652501013c4d61784c656e677468537472696e67000d0068496e76616c69644e657442616c616e63654368616e6765736574000e004c496e73756666696369656e7442616c616e636510011c62616c616e636518011075313238000118616d6f756e74180110753132380001286e6f74655f696e6465789c010c7531360001306368616e67655f696e6465789c010c753136000f004845786365656465644d617842616c616e636510011c62616c616e636518011075313238000118616d6f756e74180110753132380001286e6f74655f696e6465789c010c7531360001306368616e67655f696e6465789c010c7531360010005442616c616e63654368616e67654d69736d617463680c01306368616e67655f696e6465789c010c75313600014070726f76696465645f62616c616e63651801107531323800014863616c63756c617465645f62616c616e63652d010110693132380011005c42616c616e63654368616e67654e6f744e65745a65726f08011073656e741801107531323800011c636c61696d65641801107531323800120070496e76616c6964446f6d61696e4c65617365416c6c6f636174696f6e0013006854617842616c616e63654368616e67654e6f744e65745a65726f08011073656e741801107531323800011c636c61696d6564180110753132380014004c4d697373696e6742616c616e636550726f6f660015006c496e76616c696450726576696f757342616c616e636550726f6f660016004c496e76616c69644e6f7465626f6f6b4861736800170064496e76616c69644e6f7465626f6f6b4865616465724861736800180058496e76616c69644e6f7465626f6f6b56657273696f6e001900584475706c6963617465436861696e5472616e73666572001a00684475706c6963617465644163636f756e744f726967696e556964001b0058496e76616c69644e6f746172795369676e6174757265001c0054496e76616c696453656372657450726f7669646564001d00384e6f7465626f6f6b546f6f4f6c64001e005c436174636875704e6f7465626f6f6b734d697373696e67001f002c4465636f64654572726f72002000744163636f756e744368616e6e656c486f6c64446f65736e744578697374002100704163636f756e74416c72656164794861734368616e6e656c486f6c640022006c4368616e6e656c486f6c644e6f745265616479466f72436c61696d08013063757272656e745f7469636b3001105469636b000128636c61696d5f7469636b3001105469636b002300344163636f756e744c6f636b6564002400584d697373696e674368616e6e656c486f6c644e6f746500250058496e76616c69644368616e6e656c486f6c644e6f746500260068496e76616c69644368616e6e656c486f6c64436c61696d6572730027006c4368616e6e656c486f6c644e6f746542656c6f774d696e696d756d00280054496e76616c69645461784e6f74654163636f756e740029004c496e76616c69645461784f7065726174696f6e002a005c496e73756666696369656e74546178496e636c756465640c01207461785f73656e74180110753132380001207461785f6f776564180110753132380001286163636f756e745f696400012c4163636f756e7449643332002b0060496e73756666696369656e74426c6f636b566f7465546178002c0048496e656c696769626c65546178566f746572002d0064426c6f636b566f7465496e76616c69645369676e6174757265002e0068496e76616c6964426c6f636b566f7465416c6c6f636174696f6e002f0050496e76616c6964426c6f636b566f7465526f6f7400300058496e76616c6964426c6f636b566f746573436f756e740031005c496e76616c6964426c6f636b566f74696e67506f77657200320050496e76616c6964426c6f636b566f74654c6973740033004c496e76616c6964436f6d7075746550726f6f6600340058496e76616c6964426c6f636b566f7465536f7572636500350070496e73756666696369656e74426c6f636b566f74654d696e696d756d00360050496e76616c6964426c6f636b566f74655469636b0801107469636b3001105469636b0001346e6f7465626f6f6b5f7469636b3001105469636b0037005c496e76616c696444656661756c74426c6f636b566f746500380074496e76616c696444656661756c74426c6f636b566f7465417574686f72080118617574686f7200012c4163636f756e7449643332000120657870656374656400012c4163636f756e7449643332003900484e6f44656661756c74426c6f636b566f7465003a00001d010c406172676f6e5f7072696d6974697665731c6163636f756e742c4163636f756e74547970650001080c5461780000001c4465706f73697400010000210108486172676f6e5f6e6f746172795f6175646974644163636f756e74486973746f72794c6f6f6b75704572726f7200011030526f6f744e6f74466f756e64000000484c6173744368616e67654e6f74466f756e640001006c496e76616c69645472616e73666572546f4c6f63616c636861696e00020068426c6f636b53706563696669636174696f6e4e6f74466f756e640003000025010c486172676f6e5f6e6f746172795f6175646974146572726f723c4d61784c656e677468537472696e670000040029010174426f756e6465645665633c75382c20436f6e73745533323c3130303e3e000029010c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e00002d010000050d0031010c6870616c6c65745f6c6f63616c636861696e5f7472616e736665721870616c6c6574144576656e7404045400011c505472616e73666572546f4c6f63616c636861696e1401286163636f756e745f69640001983c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a4163636f756e744964000118616d6f756e741801583c5420617320436f6e6669673e3a3a42616c616e636500012c7472616e736665725f69641001585472616e73666572546f4c6f63616c636861696e49640001246e6f746172795f69641001204e6f74617279496400013c65787069726174696f6e5f7469636b3001105469636b0000046846756e64732073656e7420746f2061206c6f63616c636861696e6c5472616e73666572546f4c6f63616c636861696e457870697265640c01286163636f756e745f69640001983c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a4163636f756e74496400012c7472616e736665725f69641001585472616e73666572546f4c6f63616c636861696e49640001246e6f746172795f69641001204e6f746172794964000104b85472616e7366657220746f206c6f63616c636861696e206578706972656420616e6420726f6c6c6564206261636b585472616e7366657246726f6d4c6f63616c636861696e0c01286163636f756e745f69640001983c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a4163636f756e744964000118616d6f756e741801583c5420617320436f6e6669673e3a3a42616c616e63650001246e6f746172795f69641001204e6f746172794964000204945472616e736665722066726f6d204c6f63616c636861696e20746f204d61696e636861696e6c5472616e7366657246726f6d4c6f63616c636861696e4572726f721401286163636f756e745f69640001983c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a4163636f756e744964000118616d6f756e741801583c5420617320436f6e6669673e3a3a42616c616e63650001246e6f746172795f69641001204e6f74617279496400013c6e6f7465626f6f6b5f6e756d6265721001384e6f7465626f6f6b4e756d6265720001146572726f7268013444697370617463684572726f720003049041207472616e7366657220696e746f20746865206d61696e636861696e206661696c65647c5472616e73666572546f4c6f63616c636861696e526566756e644572726f721401286163636f756e745f69640001983c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a4163636f756e74496400012c7472616e736665725f69641001585472616e73666572546f4c6f63616c636861696e49640001246e6f746172795f69641001204e6f74617279496400013c6e6f7465626f6f6b5f6e756d6265721001384e6f7465626f6f6b4e756d6265720001146572726f7268013444697370617463684572726f72000404dc416e2065787069726564207472616e7366657220746f206c6f63616c636861696e206661696c656420746f20626520726566756e646564a0506f737369626c65496e76616c69644c6f63616c636861696e5472616e73666572416c6c6f7765640c012c7472616e736665725f69641001585472616e73666572546f4c6f63616c636861696e49640001246e6f746172795f69641001204e6f74617279496400013c6e6f7465626f6f6b5f6e756d6265721001384e6f7465626f6f6b4e756d626572000508450141206c6f63616c636861696e207472616e7366657220636f756c64206e6f7420626520636c65616e65642075702070726f7065726c792e20506f737369626c6520696e76616c6964207472616e73666572586e656564696e6720696e7665737469676174696f6e2e345461786174696f6e4572726f721001246e6f746172795f69641001204e6f74617279496400013c6e6f7465626f6f6b5f6e756d6265721001384e6f7465626f6f6b4e756d62657200010c7461781801583c5420617320436f6e6669673e3a3a42616c616e63650001146572726f7268013444697370617463684572726f720006043c5461786174696f6e206661696c6564047c54686520604576656e746020656e756d206f6620746869732070616c6c657435010c5870616c6c65745f626c6f636b5f7365616c5f737065631870616c6c6574144576656e740404540001084c566f74654d696e696d756d41646a757374656410015065787065637465645f626c6f636b5f766f7465731801107531323800014861637475616c5f626c6f636b5f766f7465731801107531323800014873746172745f766f74655f6d696e696d756d18012c566f74654d696e696d756d0001406e65775f766f74655f6d696e696d756d18012c566f74654d696e696d756d00000064436f6d70757465446966666963756c747941646a757374656410014c65787065637465645f626c6f636b5f74696d6530010c75363400014461637475616c5f626c6f636b5f74696d6530010c75363400014073746172745f646966666963756c7479180144436f6d70757465446966666963756c74790001386e65775f646966666963756c7479180144436f6d70757465446966666963756c7479000100047c54686520604576656e746020656e756d206f6620746869732070616c6c657439010c3870616c6c65745f646f6d61696e731870616c6c6574144576656e74040454000118445a6f6e655265636f72645570646174656408012c646f6d61696e5f68617368340128446f6d61696e4861736800012c7a6f6e655f7265636f72643d0101605a6f6e655265636f72643c543a3a4163636f756e7449643e000004804120646f6d61696e207a6f6e65207265636f726420776173207570646174656440446f6d61696e5265676973746572656408012c646f6d61696e5f68617368340128446f6d61696e48617368000130726567697374726174696f6e5d010180446f6d61696e526567697374726174696f6e3c543a3a4163636f756e7449643e0001045c4120646f6d61696e20776173207265676973746572656434446f6d61696e52656e6577656404012c646f6d61696e5f68617368340128446f6d61696e486173680002045c4120646f6d61696e20776173207265676973746572656434446f6d61696e4578706972656404012c646f6d61696e5f68617368340128446f6d61696e48617368000304504120646f6d61696e20776173206578706972656468446f6d61696e526567697374726174696f6e43616e63656c656408012c646f6d61696e5f68617368340128446f6d61696e48617368000130726567697374726174696f6e5d010180446f6d61696e526567697374726174696f6e3c543a3a4163636f756e7449643e00040841014120646f6d61696e20726567697374726174696f6e207761732063616e63656c65642064756520746f206120636f6e666c696374696e6720726567697374726174696f6e20696e207468652073616d65107469636b5c446f6d61696e526567697374726174696f6e4572726f720c012c646f6d61696e5f68617368340128446f6d61696e486173680001286163636f756e745f696400012c4163636f756e74496433320001146572726f7268013444697370617463684572726f72000504b04120646f6d61696e20726567697374726174696f6e206661696c65642064756520746f20616e206572726f72047c54686520604576656e746020656e756d206f6620746869732070616c6c65743d010c406172676f6e5f7072696d69746976657318646f6d61696e285a6f6e655265636f726404244163636f756e7449640100000c013c7061796d656e745f6163636f756e740001244163636f756e7449640001246e6f746172795f69641001204e6f74617279496400012076657273696f6e73410101cc426f756e64656442547265654d61703c53656d7665722c2056657273696f6e486f73742c20436f6e73745533323c3530303e3e000041010c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b01450104560149010453000004005101013842547265654d61703c4b2c20563e000045010c406172676f6e5f7072696d69746976657318646f6d61696e1853656d76657200000c01146d616a6f7210010c7533320001146d696e6f7210010c753332000114706174636810010c753332000049010c406172676f6e5f7072696d69746976657318646f6d61696e2c56657273696f6e486f737400000801306461746173746f72655f69644d010170426f756e6465645665633c75382c20436f6e73745533323c35303e3e000110686f737405010110486f737400004d010c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e00005101042042547265654d617008044b01450104560149010004005501000000550100000259010059010000040845014901005d01083870616c6c65745f646f6d61696e7348446f6d61696e526567697374726174696f6e04244163636f756e7449640100000801286163636f756e745f69640001244163636f756e744964000148726567697374657265645f61745f7469636b3001105469636b000061010c4870616c6c65745f70726963655f696e6465781870616c6c6574144576656e74040454000108204e6577496e646578000004c44576656e7420656d6974746564207768656e2061206e657720707269636520696e646578206973207375626d69747465643c4f70657261746f724368616e67656404012c6f70657261746f725f6964000130543a3a4163636f756e744964000100047c54686520604576656e746020656e756d206f6620746869732070616c6c657465010c3870616c6c65745f6772616e6470611870616c6c6574144576656e7400010c384e6577417574686f726974696573040134617574686f726974795f73657469010134417574686f726974794c6973740000048c4e657720617574686f726974792073657420686173206265656e206170706c6965642e185061757365640001049843757272656e7420617574686f726974792073657420686173206265656e207061757365642e1c526573756d65640002049c43757272656e7420617574686f726974792073657420686173206265656e20726573756d65642e047c54686520604576656e746020656e756d206f6620746869732070616c6c657469010000026d01006d0100000408b4300071010c5070616c6c65745f626c6f636b5f726577617264731870616c6c6574144576656e74040454000108345265776172644372656174656404011c72657761726473750101a85665633c426c6f636b5061796f75743c543a3a4163636f756e7449642c20543a3a42616c616e63653e3e000000445265776172644372656174654572726f721001286163636f756e745f6964000130543a3a4163636f756e7449640001186172676f6e73850101484f7074696f6e3c543a3a42616c616e63653e0001246f776e657273686970850101484f7074696f6e3c543a3a42616c616e63653e0001146572726f7268013444697370617463684572726f72000100047c54686520604576656e746020656e756d206f6620746869732070616c6c6574750100000279010079010c406172676f6e5f7072696d69746976657328626c6f636b5f7365616c2c426c6f636b5061796f757408244163636f756e74496401001c42616c616e63650118001401286163636f756e745f69640001244163636f756e7449640001246f776e657273686970c0011c42616c616e63650001186172676f6e73c0011c42616c616e636500012c7265776172645f747970657d01013c426c6f636b52657761726454797065000150626c6f636b5f7365616c5f617574686f72697479810101704f7074696f6e3c426c6f636b5365616c417574686f7269747949643e00007d010c406172676f6e5f7072696d69746976657328626c6f636b5f7365616c3c426c6f636b5265776172645479706500010c144d696e657200000014566f7465720001002c50726f666974536861726500020000810104184f7074696f6e04045401b80108104e6f6e6500000010536f6d650400b80000010000850104184f7074696f6e04045401180108104e6f6e6500000010536f6d65040018000001000089010c2c70616c6c65745f6d696e741870616c6c6574144576656e7404045400010c2c426974636f696e4d696e740c01286163636f756e745f6964000130543a3a4163636f756e74496400011c7574786f5f69648d0101384f7074696f6e3c5574786f49643e000118616d6f756e74180128543a3a42616c616e63650000044c416e7920626974636f696e73206d696e746564284d696e696e674d696e74100118616d6f756e74180128543a3a42616c616e63650001247065725f6d696e6572180128543a3a42616c616e63650001246172676f6e5f637069910101204172676f6e4350490001246c6971756964697479180128543a3a42616c616e63650001084d0154686520616d6f756e74206f66206d6963726f676f6e73206d696e74656420666f72206d696e696e672e204e4f54453a206163636f756e74732062656c6f77204578697374656e7469616c204465706f7369746077696c6c206e6f742062652061626c6520746f206d696e74244d696e744572726f721401246d696e745f74797065950101204d696e74547970650001286163636f756e745f6964000130543a3a4163636f756e74496400011c7574786f5f69648d0101384f7074696f6e3c5574786f49643e000118616d6f756e74180128543a3a42616c616e63650001146572726f7268013444697370617463684572726f720002085d014572726f727320656e636f756e7465726564207768696c65206d696e74696e672e204d6f7374206f6674656e2064756520746f206d696e7420616d6f756e74207374696c6c2062656c6f77204578697374656e7469616c1c4465706f736974047c54686520604576656e746020656e756d206f6620746869732070616c6c65748d0104184f7074696f6e04045401300108104e6f6e6500000010536f6d65040030000001000091010c3473705f61726974686d657469632c66697865645f706f696e7424466978656449313238000004002d01011069313238000095010c2c70616c6c65745f6d696e741870616c6c6574204d696e74547970650001081c426974636f696e000000184d696e696e670001000099010c3c70616c6c65745f62616c616e6365731870616c6c6574144576656e740804540004490001781c456e646f77656408011c6163636f756e74000130543a3a4163636f756e744964000130667265655f62616c616e6365180128543a3a42616c616e6365000004b8416e206163636f756e74207761732063726561746564207769746820736f6d6520667265652062616c616e63652e20447573744c6f737408011c6163636f756e74000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650001083d01416e206163636f756e74207761732072656d6f7665642077686f73652062616c616e636520776173206e6f6e2d7a65726f206275742062656c6f77204578697374656e7469616c4465706f7369742c78726573756c74696e6720696e20616e206f75747269676874206c6f73732e205472616e736665720c011066726f6d000130543a3a4163636f756e744964000108746f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650002044c5472616e73666572207375636365656465642e2842616c616e636553657408010c77686f000130543a3a4163636f756e74496400011066726565180128543a3a42616c616e636500030468412062616c616e6365207761732073657420627920726f6f742e20526573657276656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000404e0536f6d652062616c616e63652077617320726573657276656420286d6f7665642066726f6d206672656520746f207265736572766564292e28556e726573657276656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000504e8536f6d652062616c616e63652077617320756e726573657276656420286d6f7665642066726f6d20726573657276656420746f2066726565292e4852657365727665526570617472696174656410011066726f6d000130543a3a4163636f756e744964000108746f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500014864657374696e6174696f6e5f7374617475739d0101185374617475730006084d01536f6d652062616c616e636520776173206d6f7665642066726f6d207468652072657365727665206f6620746865206669727374206163636f756e7420746f20746865207365636f6e64206163636f756e742ed846696e616c20617267756d656e7420696e64696361746573207468652064657374696e6174696f6e2062616c616e636520747970652e1c4465706f73697408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000704d8536f6d6520616d6f756e7420776173206465706f73697465642028652e672e20666f72207472616e73616374696f6e2066656573292e20576974686472617708010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650008041d01536f6d6520616d6f756e74207761732077697468647261776e2066726f6d20746865206163636f756e742028652e672e20666f72207472616e73616374696f6e2066656573292e1c536c617368656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650009040101536f6d6520616d6f756e74207761732072656d6f7665642066726f6d20746865206163636f756e742028652e672e20666f72206d69736265686176696f72292e184d696e74656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000a049c536f6d6520616d6f756e7420776173206d696e74656420696e746f20616e206163636f756e742e304d696e746564437265646974040118616d6f756e74180128543a3a42616c616e6365000b04e0536f6d6520637265646974207761732062616c616e63656420616e6420616464656420746f2074686520546f74616c49737375616e63652e184275726e656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000c049c536f6d6520616d6f756e7420776173206275726e65642066726f6d20616e206163636f756e742e284275726e656444656274040118616d6f756e74180128543a3a42616c616e6365000d04cc536f6d65206465627420686173206265656e2064726f707065642066726f6d2074686520546f74616c2049737375616e63652e2453757370656e64656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000e041501536f6d6520616d6f756e74207761732073757370656e6465642066726f6d20616e206163636f756e74202869742063616e20626520726573746f726564206c61746572292e20526573746f72656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000f04a4536f6d6520616d6f756e742077617320726573746f72656420696e746f20616e206163636f756e742e20557067726164656404010c77686f000130543a3a4163636f756e74496400100460416e206163636f756e74207761732075706772616465642e18497373756564040118616d6f756e74180128543a3a42616c616e63650011042d01546f74616c2069737375616e63652077617320696e637265617365642062792060616d6f756e74602c206372656174696e6720612063726564697420746f2062652062616c616e6365642e2452657363696e646564040118616d6f756e74180128543a3a42616c616e63650012042501546f74616c2069737375616e636520776173206465637265617365642062792060616d6f756e74602c206372656174696e672061206465627420746f2062652062616c616e6365642e184c6f636b656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500130460536f6d652062616c616e636520776173206c6f636b65642e20556e6c6f636b656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500140468536f6d652062616c616e63652077617320756e6c6f636b65642e1846726f7a656e08010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500150460536f6d652062616c616e6365207761732066726f7a656e2e1854686177656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500160460536f6d652062616c616e636520776173207468617765642e4c546f74616c49737375616e6365466f7263656408010c6f6c64180128543a3a42616c616e636500010c6e6577180128543a3a42616c616e6365001704ac5468652060546f74616c49737375616e6365602077617320666f72636566756c6c79206368616e6765642e1048656c640c0118726561736f6ea1010150543a3a52756e74696d65486f6c64526561736f6e00010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500180480536f6d652062616c616e63652077617320706c61636564206f6e20686f6c642e284275726e656448656c640c0118726561736f6ea1010150543a3a52756e74696d65486f6c64526561736f6e00010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365001904a048656c642062616c616e636520776173206275726e65642066726f6d20616e206163636f756e742e385472616e736665724f6e486f6c64100118726561736f6ea1010150543a3a52756e74696d65486f6c64526561736f6e000118736f75726365000130543a3a4163636f756e74496400011064657374000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365001a04150141207472616e73666572206f662060616d6f756e7460206f6e20686f6c642066726f6d2060736f757263656020746f206064657374602077617320696e697469617465642e3c5472616e73666572416e64486f6c64100118726561736f6ea1010150543a3a52756e74696d65486f6c64526561736f6e000118736f75726365000130543a3a4163636f756e74496400011064657374000130543a3a4163636f756e74496400012c7472616e73666572726564180128543a3a42616c616e6365001b04090154686520607472616e73666572726564602062616c616e636520697320706c61636564206f6e20686f6c642061742074686520606465737460206163636f756e742e2052656c65617365640c0118726561736f6ea1010150543a3a52756e74696d65486f6c64526561736f6e00010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365001c0490536f6d652062616c616e6365207761732072656c65617365642066726f6d20686f6c642e28556e65787065637465640400bd010138556e65787065637465644b696e64001d04b0416e20756e65787065637465642f646566656e73697665206576656e7420776173207472696767657265642e047c54686520604576656e746020656e756d206f6620746869732070616c6c65749d0114346672616d655f737570706f72741874726169747318746f6b656e73106d6973633442616c616e6365537461747573000108104672656500000020526573657276656400010000a10108346172676f6e5f72756e74696d654452756e74696d65486f6c64526561736f6e000118284d696e696e67536c6f740400a501017870616c6c65745f6d696e696e675f736c6f743a3a486f6c64526561736f6e000600185661756c74730400a901016470616c6c65745f7661756c74733a3a486f6c64526561736f6e00080030426974636f696e4c6f636b730400ad01018070616c6c65745f626974636f696e5f6c6f636b733a3a486f6c64526561736f6e00090030426c6f636b526577617264730400b101018070616c6c65745f626c6f636b5f726577617264733a3a486f6c64526561736f6e0013002054726561737572790400b501016c70616c6c65745f74726561737572793a3a486f6c64526561736f6e001f004843726f7373636861696e5472616e736665720400b901019870616c6c65745f63726f7373636861696e5f7472616e736665723a3a486f6c64526561736f6e00240000a5010c4870616c6c65745f6d696e696e675f736c6f741870616c6c657428486f6c64526561736f6e0001043c526567697374657241734d696e657200000000a9010c3470616c6c65745f7661756c74731870616c6c657428486f6c64526561736f6e00010c28456e7465725661756c74000000344f626c69676174696f6e4665650001003850656e64696e67436f6c6c65637400020000ad010c5070616c6c65745f626974636f696e5f6c6f636b731870616c6c657428486f6c64526561736f6e0001044852656c65617365426974636f696e4c6f636b00000000b1010c5070616c6c65745f626c6f636b5f726577617264731870616c6c657428486f6c64526561736f6e000104404d617475726174696f6e506572696f6400000000b5010c3c70616c6c65745f74726561737572791870616c6c657428486f6c64526561736f6e00010454436f6e7472696275746564546f547265617375727900000000b9010c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c657428486f6c64526561736f6e000108785472616e736665724f75744d696e74696e67417574686f726974795469700000008c4d696e74696e67417574686f7269747941637469766174696f6e52657061796d656e7400010000bd010c3c70616c6c65745f62616c616e6365731870616c6c657438556e65787065637465644b696e640001083842616c616e636555706461746564000000544661696c6564546f4d75746174654163636f756e7400010000c1010c3c70616c6c65745f62616c616e6365731870616c6c6574144576656e740804540004490001781c456e646f77656408011c6163636f756e74000130543a3a4163636f756e744964000130667265655f62616c616e6365180128543a3a42616c616e6365000004b8416e206163636f756e74207761732063726561746564207769746820736f6d6520667265652062616c616e63652e20447573744c6f737408011c6163636f756e74000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650001083d01416e206163636f756e74207761732072656d6f7665642077686f73652062616c616e636520776173206e6f6e2d7a65726f206275742062656c6f77204578697374656e7469616c4465706f7369742c78726573756c74696e6720696e20616e206f75747269676874206c6f73732e205472616e736665720c011066726f6d000130543a3a4163636f756e744964000108746f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650002044c5472616e73666572207375636365656465642e2842616c616e636553657408010c77686f000130543a3a4163636f756e74496400011066726565180128543a3a42616c616e636500030468412062616c616e6365207761732073657420627920726f6f742e20526573657276656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000404e0536f6d652062616c616e63652077617320726573657276656420286d6f7665642066726f6d206672656520746f207265736572766564292e28556e726573657276656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000504e8536f6d652062616c616e63652077617320756e726573657276656420286d6f7665642066726f6d20726573657276656420746f2066726565292e4852657365727665526570617472696174656410011066726f6d000130543a3a4163636f756e744964000108746f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500014864657374696e6174696f6e5f7374617475739d0101185374617475730006084d01536f6d652062616c616e636520776173206d6f7665642066726f6d207468652072657365727665206f6620746865206669727374206163636f756e7420746f20746865207365636f6e64206163636f756e742ed846696e616c20617267756d656e7420696e64696361746573207468652064657374696e6174696f6e2062616c616e636520747970652e1c4465706f73697408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000704d8536f6d6520616d6f756e7420776173206465706f73697465642028652e672e20666f72207472616e73616374696f6e2066656573292e20576974686472617708010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650008041d01536f6d6520616d6f756e74207761732077697468647261776e2066726f6d20746865206163636f756e742028652e672e20666f72207472616e73616374696f6e2066656573292e1c536c617368656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650009040101536f6d6520616d6f756e74207761732072656d6f7665642066726f6d20746865206163636f756e742028652e672e20666f72206d69736265686176696f72292e184d696e74656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000a049c536f6d6520616d6f756e7420776173206d696e74656420696e746f20616e206163636f756e742e304d696e746564437265646974040118616d6f756e74180128543a3a42616c616e6365000b04e0536f6d6520637265646974207761732062616c616e63656420616e6420616464656420746f2074686520546f74616c49737375616e63652e184275726e656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000c049c536f6d6520616d6f756e7420776173206275726e65642066726f6d20616e206163636f756e742e284275726e656444656274040118616d6f756e74180128543a3a42616c616e6365000d04cc536f6d65206465627420686173206265656e2064726f707065642066726f6d2074686520546f74616c2049737375616e63652e2453757370656e64656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000e041501536f6d6520616d6f756e74207761732073757370656e6465642066726f6d20616e206163636f756e74202869742063616e20626520726573746f726564206c61746572292e20526573746f72656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000f04a4536f6d6520616d6f756e742077617320726573746f72656420696e746f20616e206163636f756e742e20557067726164656404010c77686f000130543a3a4163636f756e74496400100460416e206163636f756e74207761732075706772616465642e18497373756564040118616d6f756e74180128543a3a42616c616e63650011042d01546f74616c2069737375616e63652077617320696e637265617365642062792060616d6f756e74602c206372656174696e6720612063726564697420746f2062652062616c616e6365642e2452657363696e646564040118616d6f756e74180128543a3a42616c616e63650012042501546f74616c2069737375616e636520776173206465637265617365642062792060616d6f756e74602c206372656174696e672061206465627420746f2062652062616c616e6365642e184c6f636b656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500130460536f6d652062616c616e636520776173206c6f636b65642e20556e6c6f636b656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500140468536f6d652062616c616e63652077617320756e6c6f636b65642e1846726f7a656e08010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500150460536f6d652062616c616e6365207761732066726f7a656e2e1854686177656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500160460536f6d652062616c616e636520776173207468617765642e4c546f74616c49737375616e6365466f7263656408010c6f6c64180128543a3a42616c616e636500010c6e6577180128543a3a42616c616e6365001704ac5468652060546f74616c49737375616e6365602077617320666f72636566756c6c79206368616e6765642e1048656c640c0118726561736f6ea1010150543a3a52756e74696d65486f6c64526561736f6e00010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500180480536f6d652062616c616e63652077617320706c61636564206f6e20686f6c642e284275726e656448656c640c0118726561736f6ea1010150543a3a52756e74696d65486f6c64526561736f6e00010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365001904a048656c642062616c616e636520776173206275726e65642066726f6d20616e206163636f756e742e385472616e736665724f6e486f6c64100118726561736f6ea1010150543a3a52756e74696d65486f6c64526561736f6e000118736f75726365000130543a3a4163636f756e74496400011064657374000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365001a04150141207472616e73666572206f662060616d6f756e7460206f6e20686f6c642066726f6d2060736f757263656020746f206064657374602077617320696e697469617465642e3c5472616e73666572416e64486f6c64100118726561736f6ea1010150543a3a52756e74696d65486f6c64526561736f6e000118736f75726365000130543a3a4163636f756e74496400011064657374000130543a3a4163636f756e74496400012c7472616e73666572726564180128543a3a42616c616e6365001b04090154686520607472616e73666572726564602062616c616e636520697320706c61636564206f6e20686f6c642061742074686520606465737460206163636f756e742e2052656c65617365640c0118726561736f6ea1010150543a3a52756e74696d65486f6c64526561736f6e00010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365001c0490536f6d652062616c616e6365207761732072656c65617365642066726f6d20686f6c642e28556e65787065637465640400bd010138556e65787065637465644b696e64001d04b0416e20756e65787065637465642f646566656e73697665206576656e7420776173207472696767657265642e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574c5010c3c70616c6c65745f74785f70617573651870616c6c6574144576656e740404540001082843616c6c50617573656404012466756c6c5f6e616d65c901015052756e74696d6543616c6c4e616d654f663c543e000004b8546869732070616c6c65742c206f7220612073706563696669632063616c6c206973206e6f77207061757365642e3043616c6c556e70617573656404012466756c6c5f6e616d65c901015052756e74696d6543616c6c4e616d654f663c543e000104c0546869732070616c6c65742c206f7220612073706563696669632063616c6c206973206e6f7720756e7061757365642e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574c90100000408cd01cd0100cd010c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e0000d1010c6870616c6c65745f7472616e73616374696f6e5f7061796d656e741870616c6c6574144576656e74040454000104485472616e73616374696f6e466565506169640c010c77686f000130543a3a4163636f756e74496400012861637475616c5f66656518013042616c616e63654f663c543e00010c74697018013042616c616e63654f663c543e000008590141207472616e73616374696f6e20666565206061637475616c5f666565602c206f662077686963682060746970602077617320616464656420746f20746865206d696e696d756d20696e636c7573696f6e206665652c5c686173206265656e2070616964206279206077686f602e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574d5010c3870616c6c65745f7574696c6974791870616c6c6574144576656e74000120404261746368496e746572727570746564080114696e64657810010c7533320001146572726f7268013444697370617463684572726f7200000855014261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792e20496e646578206f66206669727374206661696c696e6720646973706174636820676976656e2c2061734877656c6c20617320746865206572726f722e384261746368436f6d706c65746564000104c84261746368206f66206469737061746368657320636f6d706c657465642066756c6c792077697468206e6f206572726f722e604261746368436f6d706c65746564576974684572726f7273000204b44261746368206f66206469737061746368657320636f6d706c657465642062757420686173206572726f72732e344974656d436f6d706c657465640003041d01412073696e676c65206974656d2077697468696e2061204261746368206f6620646973706174636865732068617320636f6d706c657465642077697468206e6f206572726f722e284974656d4661696c65640401146572726f7268013444697370617463684572726f720004041101412073696e676c65206974656d2077697468696e2061204261746368206f6620646973706174636865732068617320636f6d706c657465642077697468206572726f722e30446973706174636865644173040118726573756c748c01384469737061746368526573756c7400050458412063616c6c2077617320646973706174636865642e444966456c73654d61696e53756363657373000604644d61696e2063616c6c2077617320646973706174636865642e504966456c736546616c6c6261636b43616c6c65640401286d61696e5f6572726f7268013444697370617463684572726f72000704845468652066616c6c6261636b2063616c6c2077617320646973706174636865642e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574d9010c2c70616c6c65745f7375646f1870616c6c6574144576656e7404045400011014537564696404012c7375646f5f726573756c748c01384469737061746368526573756c7404b454686520726573756c74206f66207468652063616c6c206d61646520627920746865207375646f20757365722e00047041207375646f2063616c6c206a75737420746f6f6b20706c6163652e284b65794368616e67656408010c6f6c64bc01504f7074696f6e3c543a3a4163636f756e7449643e04b4546865206f6c64207375646f206b657920286966206f6e65207761732070726576696f75736c7920736574292e010c6e6577000130543a3a4163636f756e7449640488546865206e6577207375646f206b657920286966206f6e652077617320736574292e010478546865207375646f206b657920686173206265656e20757064617465642e284b657952656d6f76656400020480546865206b657920776173207065726d616e656e746c792072656d6f7665642e285375646f4173446f6e6504012c7375646f5f726573756c748c01384469737061746368526573756c7404b454686520726573756c74206f66207468652063616c6c206d61646520627920746865207375646f20757365722e0304c841205b7375646f5f61735d2850616c6c65743a3a7375646f5f6173292063616c6c206a75737420746f6f6b20706c6163652e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574dd010c3c70616c6c65745f74726561737572791870616c6c6574144576656e740404540001248c436f756c644e6f74446973747269627574654561726e696e6773546f426f6e644c6f741801206672616d655f696430011c4672616d6549640001207661756c745f696410011c5661756c74496400012c626f6e645f6c6f745f6964300124426f6e644c6f7449640001286163636f756e745f6964000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500013864697370617463685f6572726f7268013444697370617463684572726f72000004f4416e206572726f72206f63637572726564207768696c6520706179696e67206672616d65206561726e696e677320666f72206120626f6e64206c6f742e88436f756c644e6f745472616e73666572546f547265617375727952657365727665730c01206672616d655f696430011c4672616d654964000118616d6f756e74180128543a3a42616c616e636500013864697370617463685f6572726f7268013444697370617463684572726f720001041501416e206572726f72206f63637572726564207768696c65206d6f76696e67206269642d706f6f6c2066756e647320696e746f2074726561737572792072657365727665732e604672616d654561726e696e677344697374726962757465641001206672616d655f696430011c4672616d6549640001506269645f706f6f6c5f6469737472696275746564180128543a3a42616c616e636500014474726561737572795f7265736572766573180128543a3a42616c616e636500015070617274696369706174696e675f7661756c747310010c753332000204804672616d65206561726e696e677320776572652064697374726962757465642e5c4672616d655661756c744361706974616c4c6f636b65640c01206672616d655f696430011c4672616d654964000150746f74616c5f656c696769626c655f626f6e64731801107531323800015070617274696369706174696e675f7661756c747310010c753332000304c05468652063757272656e74206672616d652773207661756c74206361706974616c20776173206c6f636b656420696e2e58436f756c644e6f7452656c65617365426f6e644c6f741801206672616d655f696430011c4672616d6549640001207661756c745f696410011c5661756c74496400012c626f6e645f6c6f745f6964300124426f6e644c6f744964000118616d6f756e74180128543a3a42616c616e63650001286163636f756e745f6964000130543a3a4163636f756e74496400013864697370617463685f6572726f7268013444697370617463684572726f72000404b4416e206572726f72206f63637572726564207768696c652072656c656173696e67206120626f6e64206c6f742e40426f6e644c6f745075726368617365641001207661756c745f696410011c5661756c74496400012c626f6e645f6c6f745f6964300124426f6e644c6f7449640001286163636f756e745f6964000130543a3a4163636f756e744964000114626f6e6473100114426f6e6473000504c04120626f6e6420707572636861736520656e74657265642061207661756c742773206163636570746564206c6973742e5c426f6e644c6f7452656c656173655363686564756c65641801207661756c745f696410011c5661756c74496400012c626f6e645f6c6f745f6964300124426f6e644c6f7449640001286163636f756e745f6964000130543a3a4163636f756e744964000114626f6e6473100114426f6e647300014072656c656173655f6672616d655f696430011c4672616d654964000118726561736f6ee1010144426f6e6452656c65617365526561736f6e00060411014120626f6e64206c6f74207761732072656d6f7665642066726f6d20667574757265206672616d657320616e64207363686564756c656420666f722072656c656173652e3c426f6e644c6f7452656c65617365641401206672616d655f696430011c4672616d6549640001207661756c745f696410011c5661756c74496400012c626f6e645f6c6f745f6964300124426f6e644c6f7449640001286163636f756e745f6964000130543a3a4163636f756e744964000114626f6e6473100114426f6e6473000704604120626f6e64206c6f74207761732072656c65617365642e74456e63756d6265726564426f6e644d6963726f676f6e734275726e65640c01286163636f756e745f6964000130543a3a4163636f756e7449640001346275726e65645f616d6f756e74180128543a3a42616c616e636500013c72656c65617365645f616d6f756e74180128543a3a42616c616e63650008084d01456e63756d6265726564207472656173757279206261636b696e6720776173206275726e656420616e6420616e79206e6f2d6c6f6e6765722d6e6565646564206672616374696f6e616c20686f6c64207761732472657475726e65642e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574e1010c3c70616c6c65745f74726561737572791870616c6c657444426f6e6452656c65617365526561736f6e00010c3c557365724c69717569646174696f6e0000001842756d7065640001002c5661756c74436c6f73656400020000e5010c4870616c6c65745f6665655f636f6e74726f6c1870616c6c6574144576656e7404045400010828466565536b69707065640401186f726967696ee90101c03c543a3a52756e74696d654f726967696e206173204f726967696e54726169743e3a3a50616c6c6574734f726967696e0000047841207472616e73616374696f6e206665652077617320736b69707065642e3046656544656c6567617465640c01186f726967696ee90101c03c543a3a52756e74696d654f726967696e206173204f726967696e54726169743e3a3a50616c6c6574734f726967696e00011066726f6d000130543a3a4163636f756e744964000108746f000130543a3a4163636f756e7449640001047c41207472616e73616374696f6e20666565207761732064656c656761746564047c54686520604576656e746020656e756d206f6620746869732070616c6c6574e90108346172676f6e5f72756e74696d65304f726967696e43616c6c65720001041873797374656d0400ed0101746672616d655f73797374656d3a3a4f726967696e3c52756e74696d653e00000000ed010c346672616d655f737570706f7274206469737061746368245261774f726967696e04244163636f756e7449640100011010526f6f74000000185369676e656404000001244163636f756e744964000100104e6f6e6500020028417574686f72697a656400030000f1010c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c6574144576656e7404045400011c704f7065726174696f6e616c4163636f756e745265676973746572656414014c6f7065726174696f6e616c5f6163636f756e74000130543a3a4163636f756e7449640001347661756c745f6163636f756e74000130543a3a4163636f756e7449640001586d696e696e675f66756e64696e675f6163636f756e74000130543a3a4163636f756e7449640001486d696e696e675f626f745f6163636f756e74000130543a3a4163636f756e74496400011c73706f6e736f72bc01504f7074696f6e3c543a3a4163636f756e7449643e000004fc416e206f7065726174696f6e616c206163636f756e74207761732072656769737465726564207769746820697473206c696e6b6564206163636f756e74732e584163636f756e7457656e744f7065726174696f6e616c04011c6163636f756e74000130543a3a4163636f756e7449640001047c4163636f756e7420686173206265636f6d65206f7065726174696f6e616c2e5c4f7065726174696f6e616c5265776172644561726e65640c011c6163636f756e74000130543a3a4163636f756e74496400012c7265776172645f6b696e64f50101544f7065726174696f6e616c5265776172644b696e64000118616d6f756e74180128543a3a42616c616e63650002040d014120726577617264206973206561726e656420666f7220616e206f7065726174696f6e616c206163636f756e742c20627574206e6f742079657420636c61696d65642e644f7065726174696f6e616c52657761726473436c61696d656410014c6f7065726174696f6e616c5f6163636f756e74000130543a3a4163636f756e744964000120636c61696d616e74000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500014472656d61696e696e675f70656e64696e67180128543a3a42616c616e6365000304f4436c61696d61626c65206f7065726174696f6e616c20726577617264732077657265207061696420746f2061206d616e61676564206163636f756e742e5052657761726473436f6e6669675570646174656408016c6f7065726174696f6e616c5f726566657272616c5f726577617264180128543a3a42616c616e6365000154726566657272616c5f626f6e75735f726577617264180128543a3a42616c616e63650004048852657761726420636f6e6669672076616c756573207765726520757064617465642e644f7065726174696f6e616c50726f6772657373466f726365641c011c6163636f756e74000130543a3a4163636f756e74496400016c7570646174655f6f7065726174696f6e616c5f70726f6772657373200110626f6f6c0001506861735f756e69737761705f7472616e73666572200110626f6f6c0001347661756c745f63726561746564200110626f6f6c00017c6861735f74726561737572795f706f6f6c5f70617274696369706174696f6e200110626f6f6c0001586f627365727665645f626974636f696e5f746f74616c180128543a3a42616c616e63650001686f627365727665645f6d696e696e675f736561745f746f74616c10010c753332000504a04f7065726174696f6e616c2070726f67726573732077617320666f7263656420627920726f6f742e58456e637279707465645365727665725570646174656408011c73706f6e736f72000130543a3a4163636f756e74496400011c73706f6e736565000130543a3a4163636f756e744964000604f4412073706f6e736f7220757064617465642074686520656e6372797074656420736572766572207061796c6f616420666f7220612073706f6e7365652e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574f5010c406172676f6e5f7072696d6974697665732470726f766964657273544f7065726174696f6e616c5265776172644b696e640001082841637469766174696f6e00000034526566657272616c426f6e757300010000f9010c6070616c6c65745f657468657265756d5f76657269666965721870616c6c6574144576656e7404045400011050426561636f6e486561646572496d706f72746564080128626c6f636b5f6861736834011048323536000110736c6f7430010c75363400000074457865637574696f6e486561646572416e63686f72496d706f72746564080128626c6f636b5f68617368340148457865637574696f6e426c6f636b48617368000130626c6f636b5f6e756d626572300150457865637574696f6e426c6f636b4e756d6265720001005053796e63436f6d6d697474656555706461746564040118706572696f6430010c753634000200504f7065726174696e674d6f64654368616e6765640401106d6f6465fd01014842617369634f7065726174696e674d6f646500030444536574204f7065726174696e674d6f6465047c54686520604576656e746020656e756d206f6620746869732070616c6c6574fd010c6070616c6c65745f657468657265756d5f76657269666965721474797065734842617369634f7065726174696e674d6f6465000108184e6f726d616c0000001848616c7465640001000001020c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c6574144576656e74040454000158585472616e73666572546f4172676f6e536574746c6564080130736f757263655f636861696e0502012c536f75726365436861696e0001207472616e73666572090201685472616e73666572546f4172676f6e41637469766974793c543e0000040d014120605472616e73666572546f4172676f6e5374617274656460206163746976697479207761732070726f76656e20616e6420736574746c6564206c6f63616c6c792e6c476c6f62616c49737375616e6365436f756e63696c466f7263656408014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e000130636f756e63696c5f68617368340110483235360001042901526f6f7420666f7263652d736574207468652061637469766520476c6f62616c2049737375616e636520436f756e63696c20666f7220612064657374696e6174696f6e20636861696e2e5c436f756e63696c5369676e6572526567697374657265640c014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e0001286163636f756e745f6964000130543a3a4163636f756e7449640001187369676e65720d020110483136300002040d01416e206163636f756e7420726567697374657265642069747320636f756e63696c207369676e657220666f72206f6e652064657374696e6174696f6e20636861696e2e6c436f756e63696c5369676e6572526f746174696f6e5175657565640c014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e0001286163636f756e745f6964000130543a3a4163636f756e7449640001187369676e65720d020110483136300003042d01416e206163636f756e74207175657565642061207265706c6163656d656e7420636f756e63696c207369676e657220666f7220746865206e65787420636f756e63696c207570646174652e684d696e74696e67417574686f726974795265676973746572656410014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e00015c64657374696e6174696f6e5f7369676e696e675f6b65790d020110483136300001286163636f756e745f6964000130543a3a4163636f756e744964000150617070726f76616c5f71756575655f6e6f6e6365300164436f756e63696c417070726f76616c51756575654e6f6e63650004045901416e206f70657261746f72206163636f756e7420726567697374657265642061204d696e74696e6720417574686f7269747920616e642071756575656420697420666f7220636f756e63696c20617070726f76616c2e884d696e74696e67417574686f72697479446561637469766174696f6e5175657565640c014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e00015c64657374696e6174696f6e5f7369676e696e675f6b65790d02011048313630000150617070726f76616c5f71756575655f6e6f6e6365300164436f756e63696c417070726f76616c51756575654e6f6e63650005045d01416e206f70657261746f722071756575656420746865207369676e65722d617574686f72697a656420457468657265756d20646561637469766174696f6e20666f722061204d696e74696e6720417574686f726974792e7c4d696e696d756d4d696e74696e67417574686f7269747956616c756553657408014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e0001346d696e696d756d5f76616c7565180128543a3a42616c616e63650006084501526f6f74207570646174656420746865206d696e696d756d206e6f726d616c697a6564206d6963726f676f6e2076616c756520726571756972656420746f2072656769737465722061204d696e74696e678c417574686f72697479206f6e206f6e652064657374696e6174696f6e20636861696e2eb44d696e74696e67417574686f7269747941637469766174696f6e52657061796d656e7450726963696e6753657404014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e0007085101526f6f742075706461746564207468652070726963696e6720696e70757473207573656420746f2072657061792072656c617965727320666f722061637469766174696f6e2062617463686573206f6e206f6e654864657374696e6174696f6e20636861696e2e685175657565456e747279417070726f76616c5265636f726465640c014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e0001187461726765741902015c436f756e63696c417070726f76616c5461726765744964000150617070726f76616c5f71756575655f6e6f6e6365300164436f756e63696c417070726f76616c51756575654e6f6e636500080415014120636f756e63696c206d656d626572207265636f7264656420617070726f76616c20666f7220612071756575656420636f756e63696c2075706461746520656e7472792e5c5175657565456e747279417070726f76616c52656164790c014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e0001187461726765741902015c436f756e63696c417070726f76616c5461726765744964000150617070726f76616c5f71756575655f6e6f6e6365300164436f756e63696c417070726f76616c51756575654e6f6e6365000904d45468652071756575656420636f756e63696c2075706461746520656e7472792072656163686564206c6f63616c2071756f72756d2e8c4d696e74696e67417574686f7269747941637469766174696f6e46696e616c697a6564080130736f757263655f636861696e0502012c536f75726365436861696e00015c64657374696e6174696f6e5f7369676e696e675f6b65790d02011048313630000a042101412070726f76656e20457468657265756d2061637469766174696f6e2066696c6c6564207468652070656e64696e67206c6f63616c2061637469766174696f6e206669656c64732e8c4d696e74696e67417574686f7269747941637469766174696f6e436f6d706c6574656410014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e00015c64657374696e6174696f6e5f7369676e696e675f6b65790d0201104831363000016072656c617965725f6172676f6e5f6163636f756e745f6964000130543a3a4163636f756e74496400014072657061796d656e745f616d6f756e74180128543a3a42616c616e6365000b084101412070726f76656e2061637469766174696f6e2070616964206f722072656c6561736564207468652068656c642072656c61796572207265696d62757273656d656e7420616e64206d6164652074686544617574686f7269747920757361626c652e944d696e74696e67417574686f72697479446561637469766174696f6e46696e616c697a6564080130736f757263655f636861696e0502012c536f75726365436861696e00015c64657374696e6174696f6e5f7369676e696e675f6b65790d02011048313630000c084901412070726f76656e20457468657265756d20646561637469766174696f6e2072656c656173656420636f6c6c61746572616c20616e642072656d6f76656420746865206c6f63616c20617574686f726974791c7265636f72642e444761746577617953796e63506175736564080130736f757263655f636861696e0502012c536f75726365436861696e00011470617573651d0201404761746577617953796e635061757365000d044d01476174657761792070726f6f66206170706c69636174696f6e20706175736564206f6e6520736f7572636520636861696e20617420612073706563696669632063616e6f6e6963616c2061637469766974792e3c47617465776179556e706175736564040130736f757263655f636861696e0502012c536f75726365436861696e000e04a0526f6f74206d616e75616c6c7920756e706175736564206f6e6520736f7572636520636861696e2e50476174657761795374617465416476616e636564080130736f757263655f636861696e0502012c536f75726365436861696e000134676174657761795f73746174652502013c4761746577617953746174653c543e000f042d015468652073746f72656420676174657761792d737461746520736e617073686f7420616476616e63656420616674657220612070726f76656e20636f6e746967756f75732062617463682e485472616e736665724f75745374617274656418014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e00012c7472616e736665725f6964340110483235360001286163636f756e745f6964000130543a3a4163636f756e74496400011461737365741502012441737365744b696e64000118616d6f756e74180128543a3a42616c616e63650001546d696e74696e675f617574686f726974795f746970180128543a3a42616c616e63650010046841207472616e73666572206f757420776173206f70656e65642e585472616e73666572436f6c6c61746572616c697a656410012c7472616e736665725f69643401104832353600015c64657374696e6174696f6e5f7369676e696e675f6b65790d0201104831363000014c6d6963726f676f6e5f636f6c6c61746572616c180128543a3a42616c616e636500014c6d6963726f6e6f745f636f6c6c61746572616c180128543a3a42616c616e6365001104c041206d696e74696e6720617574686f726974792075706461746564207472616e7366657220636f6c6c61746572616c2e405472616e736665724f7574526561647904012c7472616e736665725f6964340110483235360012049441207472616e7366657220697320726561647920666f722066696e616c697a6174696f6e2e505472616e736665724f757446696e616c697a6564080130736f757263655f636861696e0502012c536f75726365436861696e00012c7472616e736665725f696434011048323536001304b441207472616e73666572207761732066696e616c697a6564206f6e2074686520736f7572636520636861696e2e4c5472616e736665724f757443616e63656c6564080130736f757263655f636861696e0502012c536f75726365436861696e00012c7472616e736665725f696434011048323536001404b041207472616e73666572207761732063616e63656c6564206f6e2074686520736f7572636520636861696e2e745472616e73666572436f6c6c61746572616c496e76616c69646174656408012c7472616e736665725f69643401104832353600015c64657374696e6174696f6e5f7369676e696e675f6b65790d02011048313630001504c4412070656e64696e6720636f6c6c61746572616c207265736572766174696f6e2077617320696e76616c6964617465642e047c54686520604576656e746020656e756d206f6620746869732070616c6c657405020c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c65742c536f75726365436861696e00010420457468657265756d0000000009020c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c65745c5472616e73666572546f4172676f6e41637469766974790404540000140158676174657761795f61637469766974795f6e6f6e63652c01504761746577617941637469766974794e6f6e636500011066726f6d0d0201104831363000011461737365741502012441737365744b696e64000108746f000130543a3a4163636f756e744964000118616d6f756e74c00128543a3a42616c616e636500000d02083c7072696d69746976655f7479706573104831363000000400110201205b75383b2032305d0000110200000314000000080015020c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c65742441737365744b696e64000108144172676f6e0000001c4172676f6e6f740001000019020c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c65745c436f756e63696c417070726f76616c546172676574496400010c684d696e74696e67417574686f7269747941637469766174696f6e04000d02011048313630000000704d696e74696e67417574686f72697479446561637469766174696f6e04000d0201104831363000010074476c6f62616c49737375616e6365436f756e63696c526f746174696f6e040034011048323536000200001d020c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c6574404761746577617953796e63506175736500000c01806c6173745f676f6f645f676174657761795f61637469766974795f6e6f6e63652c01504761746577617941637469766974794e6f6e63650001746661696c65645f676174657761795f61637469766974795f6e6f6e63652c01504761746577617941637469766974794e6f6e6365000118726561736f6e210201584761746577617953796e635061757365526561736f6e000021020c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c6574584761746577617953796e635061757365526561736f6e000128184d616e75616c000000604d616c666f726d656447617465776179416374697669747900010040556e737570706f72746564546f6b656e000200604d696e74696e67417574686f726974794e6f74466f756e640003007c556e65787065637465644d696e74696e67417574686f726974795374617465000400604d696e74696e67417574686f726974794d69736d61746368000500c44d697373696e674d696e74696e67417574686f7269747941637469766174696f6e52657061796d656e7450726963696e67000600ac4d696e74696e67417574686f7269747941637469766174696f6e52657061796d656e744d69736d6174636800070074476c6f62616c49737375616e6365436f756e63696c4e6f74466f756e640008004447617465776179537461746544726966740009000025020c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c6574304761746577617953746174650404540000100158676174657761795f61637469766974795f6e6f6e63652c01504761746577617941637469766974794e6f6e63650001546172676f6e5f617070726f76616c735f6e6f6e63652c014c4172676f6e417070726f76616c734e6f6e63650001446172676f6e5f63697263756c6174696f6e180128543a3a42616c616e636500014c6172676f6e6f745f63697263756c6174696f6e180128543a3a42616c616e63650000290208306672616d655f73797374656d14506861736500010c384170706c7945787472696e736963040010010c7533320000003046696e616c697a6174696f6e00010038496e697469616c697a6174696f6e000200002d0200000234003102000002350200350200000408101000390208306672616d655f73797374656d584c61737452756e74696d6555706772616465496e666f0000080130737065635f76657273696f6ed4014c636f6465633a3a436f6d706163743c7533323e000124737065635f6e616d653d020144436f773c277374617469632c207374723e00003d02040c436f77040454014102000400410200000041020000050200450208306672616d655f73797374656d60436f646555706772616465417574686f72697a6174696f6e0404540000080124636f64655f6861736834011c543a3a48617368000134636865636b5f76657273696f6e200110626f6f6c000049020c306672616d655f73797374656d1870616c6c65741043616c6c04045400012c1872656d61726b04011872656d61726b38011c5665633c75383e00000c684d616b6520736f6d65206f6e2d636861696e2072656d61726b2e008843616e20626520657865637574656420627920657665727920606f726967696e602e387365745f686561705f7061676573040114706167657330010c753634000104f853657420746865206e756d626572206f6620706167657320696e2074686520576562417373656d626c7920656e7669726f6e6d656e74277320686561702e207365745f636f6465040110636f646538011c5665633c75383e0002046453657420746865206e65772072756e74696d6520636f64652e5c7365745f636f64655f776974686f75745f636865636b73040110636f646538011c5665633c75383e000310190153657420746865206e65772072756e74696d6520636f646520776974686f757420646f696e6720616e7920636865636b73206f662074686520676976656e2060636f6465602e0051014e6f746520746861742072756e74696d652075706772616465732077696c6c206e6f742072756e20696620746869732069732063616c6c656420776974682061206e6f742d696e6372656173696e6720737065632076657273696f6e212c7365745f73746f726167650401146974656d734d0201345665633c4b657956616c75653e0004046853657420736f6d65206974656d73206f662073746f726167652e306b696c6c5f73746f726167650401106b657973550201205665633c4b65793e000504744b696c6c20736f6d65206974656d732066726f6d2073746f726167652e2c6b696c6c5f70726566697808011870726566697838010c4b657900011c7375626b65797310010c75333200061011014b696c6c20616c6c2073746f72616765206974656d7320776974682061206b657920746861742073746172747320776974682074686520676976656e207072656669782e0039012a2a4e4f54453a2a2a2057652072656c79206f6e2074686520526f6f74206f726967696e20746f2070726f7669646520757320746865206e756d626572206f66207375626b65797320756e6465723d0174686520707265666978207765206172652072656d6f76696e6720746f2061636375726174656c792063616c63756c6174652074686520776569676874206f6620746869732066756e6374696f6e2e4472656d61726b5f776974685f6576656e7404011872656d61726b38011c5665633c75383e000704a44d616b6520736f6d65206f6e2d636861696e2072656d61726b20616e6420656d6974206576656e742e44617574686f72697a655f75706772616465040124636f64655f6861736834011c543a3a486173680009106101417574686f72697a6520616e207570677261646520746f206120676976656e2060636f64655f686173686020666f72207468652072756e74696d652e205468652072756e74696d652063616e20626520737570706c696564186c617465722e007c546869732063616c6c20726571756972657320526f6f74206f726967696e2e80617574686f72697a655f757067726164655f776974686f75745f636865636b73040124636f64655f6861736834011c543a3a48617368000a206101417574686f72697a6520616e207570677261646520746f206120676976656e2060636f64655f686173686020666f72207468652072756e74696d652e205468652072756e74696d652063616e20626520737570706c696564186c617465722e005d015741524e494e473a205468697320617574686f72697a657320616e207570677261646520746861742077696c6c2074616b6520706c61636520776974686f757420616e792073616665747920636865636b732c20666f7259016578616d706c652074686174207468652073706563206e616d652072656d61696e73207468652073616d6520616e642074686174207468652076657273696f6e206e756d62657220696e637265617365732e204e6f74f07265636f6d6d656e64656420666f72206e6f726d616c207573652e205573652060617574686f72697a655f757067726164656020696e73746561642e007c546869732063616c6c20726571756972657320526f6f74206f726967696e2e606170706c795f617574686f72697a65645f75706772616465040110636f646538011c5665633c75383e000b24550150726f766964652074686520707265696d616765202872756e74696d652062696e617279292060636f64656020666f7220616e2075706772616465207468617420686173206265656e20617574686f72697a65642e00490149662074686520617574686f72697a6174696f6e20726571756972656420612076657273696f6e20636865636b2c20746869732063616c6c2077696c6c20656e73757265207468652073706563206e616d65e872656d61696e7320756e6368616e67656420616e6420746861742074686520737065632076657273696f6e2068617320696e637265617365642e005901446570656e64696e67206f6e207468652072756e74696d65277320604f6e536574436f64656020636f6e66696775726174696f6e2c20746869732066756e6374696f6e206d6179206469726563746c79206170706c791101746865206e65772060636f64656020696e207468652073616d6520626c6f636b206f7220617474656d707420746f207363686564756c652074686520757067726164652e0060416c6c206f726967696e732061726520616c6c6f7765642e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e4d020000025102005102000004083838005502000002380059020c306672616d655f73797374656d186c696d69747330426c6f636b5765696768747300000c0128626173655f626c6f636b2801185765696768740001246d61785f626c6f636b2801185765696768740001247065725f636c6173735d0201845065724469737061746368436c6173733c57656967687473506572436c6173733e00005d020c346672616d655f737570706f7274206469737061746368405065724469737061746368436c617373040454016102000c01186e6f726d616c610201045400012c6f7065726174696f6e616c61020104540001246d616e6461746f72796102010454000061020c306672616d655f73797374656d186c696d6974733c57656967687473506572436c6173730000100138626173655f65787472696e7369632801185765696768740001346d61785f65787472696e736963650201384f7074696f6e3c5765696768743e0001246d61785f746f74616c650201384f7074696f6e3c5765696768743e0001207265736572766564650201384f7074696f6e3c5765696768743e0000650204184f7074696f6e04045401280108104e6f6e6500000010536f6d65040028000001000069020c306672616d655f73797374656d186c696d6974732c426c6f636b4c656e677468000008010c6d61786d0201545065724469737061746368436c6173733c7533323e00013c6d61785f6865616465725f73697a657102012c4f7074696f6e3c7533323e00006d020c346672616d655f737570706f7274206469737061746368405065724469737061746368436c6173730404540110000c01186e6f726d616c1001045400012c6f7065726174696f6e616c100104540001246d616e6461746f7279100104540000710204184f7074696f6e04045401100108104e6f6e6500000010536f6d6504001000000100007502082873705f776569676874733c52756e74696d65446257656967687400000801107265616430010c753634000114777269746530010c75363400007902082873705f76657273696f6e3852756e74696d6556657273696f6e0000200124737065635f6e616d653d020144436f773c277374617469632c207374723e000124696d706c5f6e616d653d020144436f773c277374617469632c207374723e000144617574686f72696e675f76657273696f6e10010c753332000130737065635f76657273696f6e10010c753332000130696d706c5f76657273696f6e10010c753332000110617069737d02011c4170697356656300014c7472616e73616374696f6e5f76657273696f6e10010c75333200013873797374656d5f76657273696f6e080108753800007d02040c436f77040454018102000400810200000081020000028502008502000004088902100089020000030800000008008d020c306672616d655f73797374656d1870616c6c6574144572726f720404540001243c496e76616c6964537065634e616d650000081101546865206e616d65206f662073706563696669636174696f6e20646f6573206e6f74206d61746368206265747765656e207468652063757272656e742072756e74696d6550616e6420746865206e65772072756e74696d652e685370656356657273696f6e4e65656473546f496e63726561736500010841015468652073706563696669636174696f6e2076657273696f6e206973206e6f7420616c6c6f77656420746f206465637265617365206265747765656e207468652063757272656e742072756e74696d6550616e6420746865206e65772072756e74696d652e744661696c6564546f4578747261637452756e74696d6556657273696f6e00020cec4661696c656420746f2065787472616374207468652072756e74696d652076657273696f6e2066726f6d20746865206e65772072756e74696d652e0009014569746865722063616c6c696e672060436f72655f76657273696f6e60206f72206465636f64696e67206052756e74696d6556657273696f6e60206661696c65642e4c4e6f6e44656661756c74436f6d706f73697465000304fc537569636964652063616c6c6564207768656e20746865206163636f756e7420686173206e6f6e2d64656661756c7420636f6d706f7369746520646174612e3c4e6f6e5a65726f526566436f756e74000404350154686572652069732061206e6f6e2d7a65726f207265666572656e636520636f756e742070726576656e74696e6720746865206163636f756e742066726f6d206265696e67207075726765642e3043616c6c46696c7465726564000504d0546865206f726967696e2066696c7465722070726576656e74207468652063616c6c20746f20626520646973706174636865642e6c4d756c7469426c6f636b4d6967726174696f6e734f6e676f696e67000604550141206d756c74692d626c6f636b206d6967726174696f6e206973206f6e676f696e6720616e642070726576656e7473207468652063757272656e7420636f64652066726f6d206265696e67207265706c616365642e444e6f7468696e67417574686f72697a6564000704584e6f207570677261646520617574686f72697a65642e30556e617574686f72697a656400080494546865207375626d697474656420636f6465206973206e6f7420617574686f72697a65642e046c4572726f7220666f72207468652053797374656d2070616c6c657491020c406172676f6e5f7072696d6974697665731c6469676573747324446967657374736574084c4e6f7465626f6f6b5665726966794572726f72011901244163636f756e7449640100001c0118617574686f720001244163636f756e744964000128626c6f636b5f766f74659502013c426c6f636b566f7465446967657374000128766f74696e675f6b6579990201744f7074696f6e3c506172656e74566f74696e674b65794469676573743e000128666f726b5f706f776572a50201444f7074696f6e3c466f726b506f7765723e0001286672616d655f696e666fb90201444f7074696f6e3c4672616d65496e666f3e0001107469636bc10201285469636b4469676573740001246e6f7465626f6f6b73c502018c4e6f7465626f6f6b4469676573743c4e6f7465626f6f6b5665726966794572726f723e000095020c406172676f6e5f7072696d6974697665731c646967657374733c426c6f636b566f74654469676573740000080130766f74696e675f706f776572c00140426c6f636b566f74696e67506f77657200012c766f7465735f636f756e74d4010c7533320000990204184f7074696f6e040454019d020108104e6f6e6500000010536f6d6504009d0200000100009d020c406172676f6e5f7072696d6974697665731c6469676573747354506172656e74566f74696e674b65794469676573740000040144706172656e745f766f74696e675f6b6579a10201444f7074696f6e3c566f74696e674b65793e0000a10204184f7074696f6e04045401340108104e6f6e6500000010536f6d650400340000010000a50204184f7074696f6e04045401a9020108104e6f6e6500000010536f6d650400a9020000010000a9020c406172676f6e5f7072696d69746976657328666f726b5f706f77657224466f726b506f77657200001c013869735f6c61746573745f766f7465200110626f6f6c0001246e6f7465626f6f6b732c010c753634000130766f74696e675f706f776572ad020110553235360001347365616c5f737472656e677468ad02011055323536000160746f74616c5f636f6d707574655f646966666963756c7479ad0201105532353600014c766f74655f637265617465645f626c6f636b73c00110753132380001446d696e65725f6e6f6e63655f73636f7265b50201304f7074696f6e3c553235363e0000ad02083c7072696d69746976655f7479706573105532353600000400b10201205b7536343b20345d0000b102000003040000003000b50204184f7074696f6e04045401ad020108104e6f6e6500000010536f6d650400ad020000010000b90204184f7074696f6e04045401bd020108104e6f6e6500000010536f6d650400bd020000010000bd020c406172676f6e5f7072696d6974697665731c64696765737473244672616d65496e666f00000c01206672616d655f69642c011c4672616d6549640001706672616d655f7265776172645f7469636b735f72656d61696e696e67d4010c75333200013069735f6e65775f6672616d65200110626f6f6c0000c1020c406172676f6e5f7072696d697469766573107469636b285469636b446967657374000004003001105469636b0000c5020c406172676f6e5f7072696d6974697665731c64696765737473384e6f7465626f6f6b446967657374042c5665726966794572726f72011901000401246e6f7465626f6f6b73c90201ec426f756e6465645665633c4e6f7465626f6f6b4175646974526573756c743c5665726966794572726f723e2c20436f6e73745533323c3235363e3e0000c9020c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401cd02045300000400d50201185665633c543e0000cd020c406172676f6e5f7072696d697469766573206e6f7465626f6f6b4c4e6f7465626f6f6b4175646974526573756c74042c5665726966794572726f72011901001001246e6f746172795f6964d401204e6f74617279496400013c6e6f7465626f6f6b5f6e756d626572d401384e6f7465626f6f6b4e756d6265720001107469636b2c01105469636b00014c61756469745f66697273745f6661696c757265d102014c4f7074696f6e3c5665726966794572726f723e0000d10204184f7074696f6e0404540119010108104e6f6e6500000010536f6d65040019010000010000d502000002cd0200d9020c3870616c6c65745f646967657374731870616c6c6574144572726f72040454000134604475706c6963617465426c6f636b566f74654469676573740000047c4475706c696361746520426c6f636b566f746544696765737420666f756e64544475706c6963617465417574686f72446967657374000104704475706c696361746520417574686f7244696765737420666f756e644c4475706c69636174655469636b446967657374000204684475706c6963617465205469636b44696765737420666f756e64784475706c6963617465506172656e74566f74696e674b6579446967657374000304944475706c696361746520506172656e74566f74696e674b657944696765737420666f756e645c4475706c69636174654e6f7465626f6f6b446967657374000404784475706c6963617465204e6f7465626f6f6b44696765737420666f756e64604475706c6963617465466f726b506f7765724469676573740005047c4475706c696361746520466f726b506f77657244696765737420666f756e64584d697373696e67426c6f636b566f74654469676573740006045c4d697373696e6720426c6f636b566f74654469676573744c4d697373696e67417574686f72446967657374000704504d697373696e6720417574686f72446967657374444d697373696e675469636b446967657374000804484d697373696e67205469636b446967657374704d697373696e67506172656e74566f74696e674b6579446967657374000904744d697373696e6720506172656e74566f74696e674b6579446967657374544d697373696e674e6f7465626f6f6b446967657374000a04584d697373696e67204e6f7465626f6f6b44696765737450436f756c644e6f744465636f6465446967657374000b04604661696c656420746f206465636f64652064696765737473604475706c69636174654672616d65496e666f446967657374000c04644475706c6963617465204672616d65496e666f20666f756e64048054686520604572726f726020656e756d206f6620746869732070616c6c65742edd020c4070616c6c65745f74696d657374616d701870616c6c65741043616c6c0404540001040c73657404010c6e6f772c0124543a3a4d6f6d656e7400004c54536574207468652063757272656e742074696d652e005501546869732063616c6c2073686f756c6420626520696e766f6b65642065786163746c79206f6e63652070657220626c6f636b2e2049742077696c6c2070616e6963206174207468652066696e616c697a6174696f6ed470686173652c20696620746869732063616c6c206861736e2774206265656e20696e766f6b656420627920746861742074696d652e0041015468652074696d657374616d702073686f756c642062652067726561746572207468616e207468652070726576696f7573206f6e652062792074686520616d6f756e7420737065636966696564206279685b60436f6e6669673a3a4d696e696d756d506572696f64605d2e00c4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f4e6f6e655f2e0051015468697320646973706174636820636c617373206973205f4d616e6461746f72795f20746f20656e73757265206974206765747320657865637574656420696e2074686520626c6f636b2e204265206177617265510174686174206368616e67696e672074686520636f6d706c6578697479206f6620746869732063616c6c20636f756c6420726573756c742065786861757374696e6720746865207265736f757263657320696e206184626c6f636b20746f206578656375746520616e79206f746865722063616c6c732e0034232320436f6d706c657869747931012d20604f2831296020284e6f7465207468617420696d706c656d656e746174696f6e73206f6620604f6e54696d657374616d7053657460206d75737420616c736f20626520604f283129602955012d20312073746f72616765207265616420616e6420312073746f72616765206d75746174696f6e2028636f64656320604f283129602062656361757365206f6620604469645570646174653a3a74616b656020696e402020606f6e5f66696e616c697a656029d42d2031206576656e742068616e646c657220606f6e5f74696d657374616d705f736574602e204d75737420626520604f283129602e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ee10200000408000400e502083c70616c6c65745f6d756c7469736967204d756c7469736967102c426c6f636b4e756d62657201101c42616c616e63650118244163636f756e7449640100304d6178417070726f76616c7300001001107768656e88015854696d65706f696e743c426c6f636b4e756d6265723e00011c6465706f73697418011c42616c616e63650001246465706f7369746f720001244163636f756e744964000124617070726f76616c73e902018c426f756e6465645665633c4163636f756e7449642c204d6178417070726f76616c733e0000e9020c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540100045300000400ed0201185665633c543e0000ed020000020000f1020c3c70616c6c65745f6d756c74697369671870616c6c65741043616c6c0404540001145061735f6d756c74695f7468726573686f6c645f310801446f746865725f7369676e61746f72696573ed0201445665633c543a3a4163636f756e7449643e00011063616c6cf502017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e0000305101496d6d6564696174656c792064697370617463682061206d756c74692d7369676e61747572652063616c6c207573696e6720612073696e676c6520617070726f76616c2066726f6d207468652063616c6c65722e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e003d012d20606f746865725f7369676e61746f72696573603a20546865206163636f756e747320286f74686572207468616e207468652073656e646572292077686f206172652070617274206f662074686501016d756c74692d7369676e61747572652c2062757420646f206e6f7420706172746963697061746520696e2074686520617070726f76616c2070726f636573732e882d206063616c6c603a205468652063616c6c20746f2062652065786563757465642e00b8526573756c74206973206571756976616c656e7420746f20746865206469737061746368656420726573756c742e0034232320436f6d706c657869747919014f285a202b204329207768657265205a20697320746865206c656e677468206f66207468652063616c6c20616e6420432069747320657865637574696f6e207765696768742e2061735f6d756c74691401247468726573686f6c649c010c7531360001446f746865725f7369676e61746f72696573ed0201445665633c543a3a4163636f756e7449643e00013c6d617962655f74696d65706f696e742d0501904f7074696f6e3c54696d65706f696e743c426c6f636b4e756d626572466f723c543e3e3e00011063616c6cf502017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e0001286d61785f7765696768742801185765696768740001a85501526567697374657220617070726f76616c20666f72206120646973706174636820746f206265206d6164652066726f6d20612064657465726d696e697374696320636f6d706f73697465206163636f756e74206966f8617070726f766564206279206120746f74616c206f6620607468726573686f6c64202d203160206f6620606f746865725f7369676e61746f72696573602e003d012a2a49662074686520617070726f76616c207468726573686f6c64206973206d65742028696e636c7564696e67207468652073656e646572277320617070726f76616c292c20746869732077696c6c4501696d6d6564696174656c792065786563757465207468652063616c6c2e2a2a205468697320697320746865206f6e6c792077617920746f20657865637574652061206d756c74697369672063616c6c202dc060617070726f76655f61735f6d756c7469602077696c6c206e65766572207472696767657220657865637574696f6e2e002d015061796d656e743a20604465706f73697442617365602077696c6c20626520726573657276656420696620746869732069732074686520666972737420617070726f76616c2c20706c75733d01607468726573686f6c64602074696d657320604465706f736974466163746f72602e2049742069732072657475726e6564206f6e636520746869732064697370617463682068617070656e73206f723469732063616e63656c6c65642e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e0055012d20607468726573686f6c64603a2054686520746f74616c206e756d626572206f6620617070726f76616c7320666f722074686973206469737061746368206265666f72652069742069732065786563757465642e41012d20606f746865725f7369676e61746f72696573603a20546865206163636f756e747320286f74686572207468616e207468652073656e646572292077686f2063616e20617070726f766520746869736c64697370617463682e204d6179206e6f7420626520656d7074792e59012d20606d617962655f74696d65706f696e74603a20496620746869732069732074686520666972737420617070726f76616c2c207468656e2074686973206d75737420626520604e6f6e65602e20496620697420697351016e6f742074686520666972737420617070726f76616c2c207468656e206974206d7573742062652060536f6d65602c2077697468207468652074696d65706f696e742028626c6f636b206e756d62657220616e64d47472616e73616374696f6e20696e64657829206f662074686520666972737420617070726f76616c207472616e73616374696f6e2e882d206063616c6c603a205468652063616c6c20746f2062652065786563757465642e004d014e4f54453a20466f7220696e7465726d65646961746520617070726f76616c7320286e6f74207468652066696e616c20617070726f76616c292c20796f752073686f756c642067656e6572616c6c7920757365450160617070726f76655f61735f6d756c74696020696e73746561642c2073696e6365206974206f6e6c7920726571756972657320612068617368206f66207468652063616c6c20616e64206973206d6f726528656666696369656e742e005901526573756c74206973206571756976616c656e7420746f20746865206469737061746368656420726573756c7420696620607468726573686f6c64602069732065786163746c79206031602e204f746865727769736555016f6e20737563636573732c20726573756c7420697320604f6b6020616e642074686520726573756c742066726f6d2074686520696e746572696f722063616c6c2c206966206974207761732065786563757465642cdc6d617920626520666f756e6420696e20746865206465706f736974656420604d756c7469736967457865637574656460206576656e742e0034232320436f6d706c6578697479502d20604f2853202b205a202b2043616c6c29602ecc2d20557020746f206f6e652062616c616e63652d72657365727665206f7220756e72657365727665206f7065726174696f6e2e3d012d204f6e6520706173737468726f756768206f7065726174696f6e2c206f6e6520696e736572742c20626f746820604f285329602077686572652060536020697320746865206e756d626572206f66450120207369676e61746f726965732e206053602069732063617070656420627920604d61785369676e61746f72696573602c207769746820776569676874206265696e672070726f706f7274696f6e616c2e21012d204f6e652063616c6c20656e636f6465202620686173682c20626f7468206f6620636f6d706c657869747920604f285a296020776865726520605a602069732074782d6c656e2ebc2d204f6e6520656e636f6465202620686173682c20626f7468206f6620636f6d706c657869747920604f285329602ed42d20557020746f206f6e652062696e6172792073656172636820616e6420696e736572742028604f286c6f6753202b20532960292ef82d20492f4f3a2031207265616420604f285329602c20757020746f2031206d757461746520604f285329602e20557020746f206f6e652072656d6f76652e302d204f6e65206576656e742e6c2d2054686520776569676874206f6620746865206063616c6c602e4d012d2053746f726167653a20696e7365727473206f6e65206974656d2c2076616c75652073697a6520626f756e64656420627920604d61785369676e61746f72696573602c20776974682061206465706f7369741901202074616b656e20666f7220697473206c69666574696d65206f6620604465706f73697442617365202b207468726573686f6c64202a204465706f736974466163746f72602e40617070726f76655f61735f6d756c74691401247468726573686f6c649c010c7531360001446f746865725f7369676e61746f72696573ed0201445665633c543a3a4163636f756e7449643e00013c6d617962655f74696d65706f696e742d0501904f7074696f6e3c54696d65706f696e743c426c6f636b4e756d626572466f723c543e3e3e00012463616c6c5f686173680401205b75383b2033325d0001286d61785f7765696768742801185765696768740002985501526567697374657220617070726f76616c20666f72206120646973706174636820746f206265206d6164652066726f6d20612064657465726d696e697374696320636f6d706f73697465206163636f756e74206966f8617070726f766564206279206120746f74616c206f6620607468726573686f6c64202d203160206f6620606f746865725f7369676e61746f72696573602e0039012a2a546869732066756e6374696f6e2077696c6c204e455645522065786563757465207468652063616c6c2c206576656e2069662074686520617070726f76616c207468726573686f6c642069735101726561636865642e2a2a204974206f6e6c792072656769737465727320617070726f76616c2e20546f2061637475616c6c792065786563757465207468652063616c6c2c206061735f6d756c746960206d757374f062652063616c6c65642077697468207468652066756c6c2063616c6c206461746120627920616e79206f6620746865207369676e61746f726965732e004d01546869732066756e6374696f6e206973206d6f726520656666696369656e74207468616e206061735f6d756c74696020666f7220696e7465726d65646961746520617070726f76616c732073696e6365206974d06f6e6c79207265717569726573207468652063616c6c20686173682c206e6f74207468652066756c6c2063616c6c20646174612e002d015061796d656e743a20604465706f73697442617365602077696c6c20626520726573657276656420696620746869732069732074686520666972737420617070726f76616c2c20706c75733d01607468726573686f6c64602074696d657320604465706f736974466163746f72602e2049742069732072657475726e6564206f6e636520746869732064697370617463682068617070656e73206f723469732063616e63656c6c65642e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e0055012d20607468726573686f6c64603a2054686520746f74616c206e756d626572206f6620617070726f76616c7320666f722074686973206469737061746368206265666f72652069742069732065786563757465642e41012d20606f746865725f7369676e61746f72696573603a20546865206163636f756e747320286f74686572207468616e207468652073656e646572292077686f2063616e20617070726f766520746869736c64697370617463682e204d6179206e6f7420626520656d7074792e59012d20606d617962655f74696d65706f696e74603a20496620746869732069732074686520666972737420617070726f76616c2c207468656e2074686973206d75737420626520604e6f6e65602e20496620697420697351016e6f742074686520666972737420617070726f76616c2c207468656e206974206d7573742062652060536f6d65602c2077697468207468652074696d65706f696e742028626c6f636b206e756d62657220616e64d47472616e73616374696f6e20696e64657829206f662074686520666972737420617070726f76616c207472616e73616374696f6e2ecc2d206063616c6c5f68617368603a205468652068617368206f66207468652063616c6c20746f2062652065786563757465642e003d014e4f54453a20546f2065786563757465207468652063616c6c20616674657220617070726f76616c73206172652067617468657265642c20616e79207369676e61746f7279206d7573742063616c6c29016061735f6d756c7469602077697468207468652066756c6c2063616c6c20646174612e20546869732066756e6374696f6e2063616e6e6f742065786563757465207468652063616c6c2e0034232320436f6d706c6578697479242d20604f285329602ecc2d20557020746f206f6e652062616c616e63652d72657365727665206f7220756e72657365727665206f7065726174696f6e2e3d012d204f6e6520706173737468726f756768206f7065726174696f6e2c206f6e6520696e736572742c20626f746820604f285329602077686572652060536020697320746865206e756d626572206f66450120207369676e61746f726965732e206053602069732063617070656420627920604d61785369676e61746f72696573602c207769746820776569676874206265696e672070726f706f7274696f6e616c2ebc2d204f6e6520656e636f6465202620686173682c20626f7468206f6620636f6d706c657869747920604f285329602ed42d20557020746f206f6e652062696e6172792073656172636820616e6420696e736572742028604f286c6f6753202b20532960292ef82d20492f4f3a2031207265616420604f285329602c20757020746f2031206d757461746520604f285329602e20557020746f206f6e652072656d6f76652e302d204f6e65206576656e742e4d012d2053746f726167653a20696e7365727473206f6e65206974656d2c2076616c75652073697a6520626f756e64656420627920604d61785369676e61746f72696573602c20776974682061206465706f7369741901202074616b656e20666f7220697473206c69666574696d65206f6620604465706f73697442617365202b207468726573686f6c64202a204465706f736974466163746f72602e3c63616e63656c5f61735f6d756c74691001247468726573686f6c649c010c7531360001446f746865725f7369676e61746f72696573ed0201445665633c543a3a4163636f756e7449643e00012474696d65706f696e7488017054696d65706f696e743c426c6f636b4e756d626572466f723c543e3e00012463616c6c5f686173680401205b75383b2033325d000354550143616e63656c2061207072652d6578697374696e672c206f6e2d676f696e67206d756c7469736967207472616e73616374696f6e2e20416e79206465706f7369742072657365727665642070726576696f75736c79c4666f722074686973206f7065726174696f6e2077696c6c20626520756e7265736572766564206f6e20737563636573732e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e0055012d20607468726573686f6c64603a2054686520746f74616c206e756d626572206f6620617070726f76616c7320666f722074686973206469737061746368206265666f72652069742069732065786563757465642e41012d20606f746865725f7369676e61746f72696573603a20546865206163636f756e747320286f74686572207468616e207468652073656e646572292077686f2063616e20617070726f766520746869736c64697370617463682e204d6179206e6f7420626520656d7074792e5d012d206074696d65706f696e74603a205468652074696d65706f696e742028626c6f636b206e756d62657220616e64207472616e73616374696f6e20696e64657829206f662074686520666972737420617070726f76616c787472616e73616374696f6e20666f7220746869732064697370617463682ecc2d206063616c6c5f68617368603a205468652068617368206f66207468652063616c6c20746f2062652065786563757465642e0034232320436f6d706c6578697479242d20604f285329602ecc2d20557020746f206f6e652062616c616e63652d72657365727665206f7220756e72657365727665206f7065726174696f6e2e3d012d204f6e6520706173737468726f756768206f7065726174696f6e2c206f6e6520696e736572742c20626f746820604f285329602077686572652060536020697320746865206e756d626572206f66450120207369676e61746f726965732e206053602069732063617070656420627920604d61785369676e61746f72696573602c207769746820776569676874206265696e672070726f706f7274696f6e616c2ebc2d204f6e6520656e636f6465202620686173682c20626f7468206f6620636f6d706c657869747920604f285329602e302d204f6e65206576656e742e842d20492f4f3a2031207265616420604f285329602c206f6e652072656d6f76652e702d2053746f726167653a2072656d6f766573206f6e65206974656d2e30706f6b655f6465706f7369740c01247468726573686f6c649c010c7531360001446f746865725f7369676e61746f72696573ed0201445665633c543a3a4163636f756e7449643e00012463616c6c5f686173680401205b75383b2033325d000434f4506f6b6520746865206465706f73697420726573657276656420666f7220616e206578697374696e67206d756c7469736967206f7065726174696f6e2e006101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64206d75737420626520746865206f726967696e616c206465706f7369746f72206f665c746865206d756c7469736967206f7065726174696f6e2e000101546865207472616e73616374696f6e206665652069732077616976656420696620746865206465706f73697420616d6f756e7420686173206368616e6765642e0019012d20607468726573686f6c64603a2054686520746f74616c206e756d626572206f6620617070726f76616c73206e656564656420666f722074686973206d756c74697369672e3d012d20606f746865725f7369676e61746f72696573603a20546865206163636f756e747320286f74686572207468616e207468652073656e646572292077686f206172652070617274206f66207468652c20206d756c74697369672e05012d206063616c6c5f68617368603a205468652068617368206f66207468652063616c6c2074686973206465706f73697420697320726573657276656420666f722e008c456d69747320604465706f736974506f6b656460206966207375636365737366756c2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ef50208346172676f6e5f72756e74696d652c52756e74696d6543616c6c0001701853797374656d0400490201ad0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c53797374656d2c2052756e74696d653e0000002454696d657374616d700400dd0201b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c54696d657374616d702c2052756e74696d653e000200204d756c74697369670400f10201b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4d756c74697369672c2052756e74696d653e0003001450726f78790400f90201a90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c50726f78792c2052756e74696d653e000400145469636b730400090301a90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5469636b732c2052756e74696d653e000500284d696e696e67536c6f7404000d0301bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4d696e696e67536c6f742c2052756e74696d653e00060030426974636f696e5574786f730400110301c50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426974636f696e5574786f732c2052756e74696d653e000700185661756c74730400310301ad0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5661756c74732c2052756e74696d653e00080030426974636f696e4c6f636b730400590301c50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426974636f696e4c6f636b732c2052756e74696d653e000900204e6f7461726965730400750301b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4e6f7461726965732c2052756e74696d653e000a00204e6f7465626f6f6b0400790301b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4e6f7465626f6f6b2c2052756e74696d653e000b00484c6f63616c636861696e5472616e736665720400b90301dd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4c6f63616c636861696e5472616e736665722c2052756e74696d653e000c0034426c6f636b5365616c537065630400bd0301c90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426c6f636b5365616c537065632c2052756e74696d653e000d001c446f6d61696e730400c10301b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c446f6d61696e732c2052756e74696d653e000e00285072696365496e6465780400c50301bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5072696365496e6465782c2052756e74696d653e000f001c4772616e6470610400cd0301b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4772616e6470612c2052756e74696d653e00110024426c6f636b5365616c0400f90301b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426c6f636b5365616c2c2052756e74696d653e00120030426c6f636b526577617264730400150401c50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426c6f636b526577617264732c2052756e74696d653e001300104d696e740400190401a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4d696e742c2052756e74696d653e0014002042616c616e63657304001d0401b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c42616c616e6365732c2052756e74696d653e001500244f776e6572736869700400250401b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4f776e6572736869702c2052756e74696d653e0016001c547850617573650400290401b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c547850617573652c2052756e74696d653e0017001c5574696c69747904002d0401b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5574696c6974792c2052756e74696d653e001900105375646f0400350401a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5375646f2c2052756e74696d653e001a002054726561737572790400390401b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c54726561737572792c2052756e74696d653e001f004c4f7065726174696f6e616c4163636f756e747304003d0401e10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4f7065726174696f6e616c4163636f756e74732c2052756e74696d653e00220040457468657265756d56657269666965720400610401d50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c457468657265756d56657269666965722c2052756e74696d653e0023004843726f7373636861696e5472616e736665720400b90401dd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c43726f7373636861696e5472616e736665722c2052756e74696d653e00240000f9020c3070616c6c65745f70726f78791870616c6c65741043616c6c04045400012c1470726f78790c01107265616cfd0201504163636f756e7449644c6f6f6b75704f663c543e000140666f7263655f70726f78795f74797065050301504f7074696f6e3c543a3a50726f7879547970653e00011063616c6cf502017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e0000244d0144697370617463682074686520676976656e206063616c6c602066726f6d20616e206163636f756e742074686174207468652073656e64657220697320617574686f726973656420666f72207468726f75676830606164645f70726f7879602e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002c506172616d65746572733a0d012d20607265616c603a20546865206163636f756e742074686174207468652070726f78792077696c6c206d616b6520612063616c6c206f6e20626568616c66206f662e61012d2060666f7263655f70726f78795f74797065603a2053706563696679207468652065786163742070726f7879207479706520746f206265207573656420616e6420636865636b656420666f7220746869732063616c6c2ed02d206063616c6c603a205468652063616c6c20746f206265206d6164652062792074686520607265616c60206163636f756e742e246164645f70726f78790c012064656c6567617465fd0201504163636f756e7449644c6f6f6b75704f663c543e00012870726f78795f74797065980130543a3a50726f78795479706500011464656c6179100144426c6f636b4e756d626572466f723c543e0001244501526567697374657220612070726f7879206163636f756e7420666f72207468652073656e64657220746861742069732061626c6520746f206d616b652063616c6c73206f6e2069747320626568616c662e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002c506172616d65746572733a11012d206070726f7879603a20546865206163636f756e74207468617420746865206063616c6c65726020776f756c64206c696b6520746f206d616b6520612070726f78792efc2d206070726f78795f74797065603a20546865207065726d697373696f6e7320616c6c6f77656420666f7220746869732070726f7879206163636f756e742e4d012d206064656c6179603a2054686520616e6e6f756e63656d656e7420706572696f64207265717569726564206f662074686520696e697469616c2070726f78792e2057696c6c2067656e6572616c6c79206265147a65726f2e3072656d6f76655f70726f78790c012064656c6567617465fd0201504163636f756e7449644c6f6f6b75704f663c543e00012870726f78795f74797065980130543a3a50726f78795479706500011464656c6179100144426c6f636b4e756d626572466f723c543e00021ca8556e726567697374657220612070726f7879206163636f756e7420666f72207468652073656e6465722e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002c506172616d65746572733a25012d206070726f7879603a20546865206163636f756e74207468617420746865206063616c6c65726020776f756c64206c696b6520746f2072656d6f766520617320612070726f78792e41012d206070726f78795f74797065603a20546865207065726d697373696f6e732063757272656e746c7920656e61626c656420666f72207468652072656d6f7665642070726f7879206163636f756e742e3872656d6f76655f70726f78696573000318b4556e726567697374657220616c6c2070726f7879206163636f756e747320666f72207468652073656e6465722e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e005d015741524e494e473a2054686973206d61792062652063616c6c6564206f6e206163636f756e7473206372656174656420627920606372656174655f70757265602c20686f776576657220696620646f6e652c207468656e590174686520756e726573657276656420666565732077696c6c20626520696e61636365737369626c652e202a2a416c6c2061636365737320746f2074686973206163636f756e742077696c6c206265206c6f73742e2a2a2c6372656174655f707572650c012870726f78795f74797065980130543a3a50726f78795479706500011464656c6179100144426c6f636b4e756d626572466f723c543e000114696e6465789c010c7531360004483901537061776e2061206672657368206e6577206163636f756e7420746861742069732067756172616e7465656420746f206265206f746865727769736520696e61636365737369626c652c20616e64fc696e697469616c697a65206974207769746820612070726f7879206f66206070726f78795f747970656020666f7220606f726967696e602073656e6465722e006c5265717569726573206120605369676e656460206f726967696e2e0051012d206070726f78795f74797065603a205468652074797065206f66207468652070726f78792074686174207468652073656e6465722077696c6c2062652072656769737465726564206173206f766572207468654d016e6577206163636f756e742e20546869732077696c6c20616c6d6f737420616c7761797320626520746865206d6f7374207065726d697373697665206050726f7879547970656020706f737369626c6520746f78616c6c6f7720666f72206d6178696d756d20666c65786962696c6974792e51012d2060696e646578603a204120646973616d626967756174696f6e20696e6465782c20696e206361736520746869732069732063616c6c6564206d756c7469706c652074696d657320696e207468652073616d655d017472616e73616374696f6e2028652e672e207769746820607574696c6974793a3a626174636860292e20556e6c65737320796f75277265207573696e67206062617463686020796f752070726f6261626c79206a7573744077616e7420746f20757365206030602e4d012d206064656c6179603a2054686520616e6e6f756e63656d656e7420706572696f64207265717569726564206f662074686520696e697469616c2070726f78792e2057696c6c2067656e6572616c6c79206265147a65726f2e0051014661696c73207769746820604475706c69636174656020696620746869732068617320616c7265616479206265656e2063616c6c656420696e2074686973207472616e73616374696f6e2c2066726f6d207468659873616d652073656e6465722c2077697468207468652073616d6520706172616d65746572732e00e44661696c732069662074686572652061726520696e73756666696369656e742066756e647320746f2070617920666f72206465706f7369742e246b696c6c5f7075726514011c737061776e6572fd0201504163636f756e7449644c6f6f6b75704f663c543e00012870726f78795f74797065980130543a3a50726f787954797065000114696e6465789c010c753136000118686569676874d40144426c6f636b4e756d626572466f723c543e0001246578745f696e646578d4010c753332000540a052656d6f76657320612070726576696f75736c7920737061776e656420707572652070726f78792e0049015741524e494e473a202a2a416c6c2061636365737320746f2074686973206163636f756e742077696c6c206265206c6f73742e2a2a20416e792066756e64732068656c6420696e2069742077696c6c20626534696e61636365737369626c652e0059015265717569726573206120605369676e656460206f726967696e2c20616e64207468652073656e646572206163636f756e74206d7573742068617665206265656e206372656174656420627920612063616c6c20746fb0606372656174655f7075726560207769746820636f72726573706f6e64696e6720706172616d65746572732e0055012d2060737061776e6572603a20546865206163636f756e742074686174206f726967696e616c6c792063616c6c656420606372656174655f707572656020746f206372656174652074686973206163636f756e742e55012d2060696e646578603a2054686520646973616d626967756174696f6e20696e646578206f726967696e616c6c792070617373656420746f20606372656174655f70757265602e2050726f6261626c79206030602e09012d206070726f78795f74797065603a205468652070726f78792074797065206f726967696e616c6c792070617373656420746f20606372656174655f70757265602e45012d2060686569676874603a2054686520686569676874206f662074686520636861696e207768656e207468652063616c6c20746f20606372656174655f7075726560207761732070726f6365737365642e51012d20606578745f696e646578603a205468652065787472696e73696320696e64657820696e207768696368207468652063616c6c20746f20606372656174655f7075726560207761732070726f6365737365642e0035014661696c73207769746820604e6f5065726d697373696f6e6020696e2063617365207468652063616c6c6572206973206e6f7420612070726576696f75736c7920637265617465642070757265f86163636f756e742077686f736520606372656174655f70757265602063616c6c2068617320636f72726573706f6e64696e6720706172616d65746572732e20616e6e6f756e63650801107265616cfd0201504163636f756e7449644c6f6f6b75704f663c543e00012463616c6c5f6861736834013443616c6c486173684f663c543e00063c05015075626c697368207468652068617368206f6620612070726f78792d63616c6c20746861742077696c6c206265206d61646520696e20746865206675747572652e005d0154686973206d7573742062652063616c6c656420736f6d65206e756d626572206f6620626c6f636b73206265666f72652074686520636f72726573706f6e64696e67206070726f78796020697320617474656d7074656425016966207468652064656c6179206173736f6369617465642077697468207468652070726f78792072656c6174696f6e736869702069732067726561746572207468616e207a65726f2e0011014e6f206d6f7265207468616e20604d617850656e64696e676020616e6e6f756e63656d656e7473206d6179206265206d61646520617420616e79206f6e652074696d652e000901546869732077696c6c2074616b652061206465706f736974206f662060416e6e6f756e63656d656e744465706f736974466163746f72602061732077656c6c206173190160416e6e6f756e63656d656e744465706f736974426173656020696620746865726520617265206e6f206f746865722070656e64696e6720616e6e6f756e63656d656e74732e002501546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e6420612070726f7879206f6620607265616c602e002c506172616d65746572733a0d012d20607265616c603a20546865206163636f756e742074686174207468652070726f78792077696c6c206d616b6520612063616c6c206f6e20626568616c66206f662e15012d206063616c6c5f68617368603a205468652068617368206f66207468652063616c6c20746f206265206d6164652062792074686520607265616c60206163636f756e742e4c72656d6f76655f616e6e6f756e63656d656e740801107265616cfd0201504163636f756e7449644c6f6f6b75704f663c543e00012463616c6c5f6861736834013443616c6c486173684f663c543e0007287052656d6f7665206120676976656e20616e6e6f756e63656d656e742e0059014d61792062652063616c6c656420627920612070726f7879206163636f756e7420746f2072656d6f766520612063616c6c20746865792070726576696f75736c7920616e6e6f756e63656420616e642072657475726e30746865206465706f7369742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002c506172616d65746572733a0d012d20607265616c603a20546865206163636f756e742074686174207468652070726f78792077696c6c206d616b6520612063616c6c206f6e20626568616c66206f662e15012d206063616c6c5f68617368603a205468652068617368206f66207468652063616c6c20746f206265206d6164652062792074686520607265616c60206163636f756e742e4c72656a6563745f616e6e6f756e63656d656e7408012064656c6567617465fd0201504163636f756e7449644c6f6f6b75704f663c543e00012463616c6c5f6861736834013443616c6c486173684f663c543e000828b052656d6f76652074686520676976656e20616e6e6f756e63656d656e74206f6620612064656c65676174652e0061014d61792062652063616c6c6564206279206120746172676574202870726f7869656429206163636f756e7420746f2072656d6f766520612063616c6c2074686174206f6e65206f662074686569722064656c6567617465732501286064656c656761746560292068617320616e6e6f756e63656420746865792077616e7420746f20657865637574652e20546865206465706f7369742069732072657475726e65642e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002c506172616d65746572733af42d206064656c6567617465603a20546865206163636f756e7420746861742070726576696f75736c7920616e6e6f756e636564207468652063616c6c2ebc2d206063616c6c5f68617368603a205468652068617368206f66207468652063616c6c20746f206265206d6164652e3c70726f78795f616e6e6f756e63656410012064656c6567617465fd0201504163636f756e7449644c6f6f6b75704f663c543e0001107265616cfd0201504163636f756e7449644c6f6f6b75704f663c543e000140666f7263655f70726f78795f74797065050301504f7074696f6e3c543a3a50726f7879547970653e00011063616c6cf502017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00092c4d0144697370617463682074686520676976656e206063616c6c602066726f6d20616e206163636f756e742074686174207468652073656e64657220697320617574686f72697a656420666f72207468726f75676830606164645f70726f7879602e00a852656d6f76657320616e7920636f72726573706f6e64696e6720616e6e6f756e63656d656e742873292e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002c506172616d65746572733a0d012d20607265616c603a20546865206163636f756e742074686174207468652070726f78792077696c6c206d616b6520612063616c6c206f6e20626568616c66206f662e61012d2060666f7263655f70726f78795f74797065603a2053706563696679207468652065786163742070726f7879207479706520746f206265207573656420616e6420636865636b656420666f7220746869732063616c6c2ed02d206063616c6c603a205468652063616c6c20746f206265206d6164652062792074686520607265616c60206163636f756e742e30706f6b655f6465706f736974000a204901506f6b65202f2041646a757374206465706f73697473206d61646520666f722070726f7869657320616e6420616e6e6f756e63656d656e7473206261736564206f6e2063757272656e742076616c7565732e0d01546869732063616e2062652075736564206279206163636f756e747320746f20706f737369626c79206c6f776572207468656972206c6f636b656420616d6f756e742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e000101546865207472616e73616374696f6e206665652069732077616976656420696620746865206465706f73697420616d6f756e7420686173206368616e6765642e008c456d69747320604465706f736974506f6b656460206966207375636365737366756c2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732efd020c2873705f72756e74696d65306d756c746961646472657373304d756c74694164647265737308244163636f756e7449640100304163636f756e74496e6465780190011408496404000001244163636f756e74496400000014496e6465780400010301304163636f756e74496e6465780001000c526177040038011c5665633c75383e0002002441646472657373333204000401205b75383b2033325d000300244164647265737332300400110201205b75383b2032305d0004000001030000069000050304184f7074696f6e04045401980108104e6f6e6500000010536f6d65040098000001000009030c3070616c6c65745f7469636b731870616c6c65741043616c6c040454000100040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e0d030c4870616c6c65745f6d696e696e675f736c6f741870616c6c65741043616c6c0404540001080c6269640c010c626964180128543a3a42616c616e63650001106b657973b0011c543a3a4b6579730001446d696e696e675f6163636f756e745f6964bc01504f7074696f6e3c543a3a4163636f756e7449643e00005861015375626d697420612062696420666f722061206d696e696e6720736c6f7420696e20746865206e65787420636f686f72742e204f6e636520616c6c2073706f7473206172652066696c6c656420696e20746865206e657874f4636f686f72742c2061206269646465722063616e20626520737570706c616e74656420627920737570706c79696e67206120686967686572206269642e00b84561636820736c6f742068617320604d6178436f686f727453697a65602073706f747320617661696c61626c652e005101546f20626520656c696769626c6520666f72206120736c6f742c20796f75206d757374206861766520746865207265717569726564206f776e65727368697020746f6b656e7320286172676f6e6f74732920696e590174686973206163636f756e742e2054686520726571756972656420616d6f756e742069732063616c63756c6174656420617320612070657263656e74616765206f662074686520746f74616c206f776e6572736869705501746f6b656e7320696e20746865206e6574776f726b2e20546869732070657263656e746167652069732061646a7573746564206265666f72652074686520626567696e6e696e67206f66206561636820736c6f742e004501496620796f757220626964206973206e6f206c6f6e6765722077696e6e696e672c20612060536c6f7442696464657244726f7070656460206576656e742077696c6c20626520656d69747465642e2042792d016d6f6e69746f72696e6720666f722074686973206576656e742c20796f752077696c6c2062652061626c6520746f20656e7375726520796f7572206269642069732061636365707465642e000d014e4f54453a2062696464696e6720666f72206561636820736c6f742077696c6c20626520636c6f73656420617420612072616e646f6d20626c6f636b2077697468696e3d01606d696e696e675f636f6e6669672e7469636b735f6265666f72655f6269645f656e645f666f725f7672665f636c6f73656020626c6f636b73206f662074686520736c6f7420656e642074696d652e00610154686520736c6f74206475726174696f6e2063616e2062652063616c63756c617465642061732060426c6f636b734265747765656e536c6f7473202a204d61784d696e657273202f204d6178436f686f727453697a65602e002c506172616d65746572733a902d2060626964603a2054686520616d6f756e74206f66206172676f6e7320746f206269644d012d20606b657973603a205468652073657373696f6e2022686f7422206b65797320666f722074686520736c6f742028426c6f636b5365616c417574686f72697479496420616e64204772616e6470614964292e59012d20606d696e696e675f6163636f756e745f6964603a2054686973206163636f756e745f696420616c6c6f777320796f7520746f206f7065726174652061732074686973206d696e6572206163636f756e742069642c01012020627574207573652066756e64696e6720286172676f6e6f747320616e6420626964292066726f6d20746865207375626d697474696e67206163636f756e746c636f6e6669677572655f6d696e696e675f736c6f745f64656c61790801446d696e696e675f736c6f745f64656c61798d0101304f7074696f6e3c5469636b3e0001887469636b735f6265666f72655f6269645f656e645f666f725f7672665f636c6f73658d0101304f7074696f6e3c5469636b3e000104bc41646d696e2066756e6374696f6e20746f2075706461746520746865206d696e696e6720736c6f742064656c61792e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e11030c5070616c6c65745f626974636f696e5f7574786f731870616c6c65741043616c6c0404540001141073796e630401247574786f5f73796e631503013c426974636f696e5574786f53796e63000004e85375626d6974746564207768656e206120626974636f696e205554584f20686173206265656e206d6f766564206f7220636f6e6669726d65642e4c7365745f636f6e6669726d65645f626c6f636b080138626974636f696e5f686569676874300134426974636f696e486569676874000148626974636f696e5f626c6f636b5f68617368d00140426974636f696e426c6f636b4861736800011449015365747320746865206d6f737420726563656e7420636f6e6669726d656420626974636f696e20626c6f636b2068656967687420286f6e6c792065786563757461626c6520627920746865204f7261636c65444f70657261746f72206163636f756e7429002c2320417267756d656e747311012a2060626974636f696e5f68656967687460202d20746865206c617465737420626974636f696e20626c6f636b2068656967687420746f20626520636f6e6669726d6564307365745f6f70657261746f720401286163636f756e745f6964000130543a3a4163636f756e74496400021025015365747320746865206f7261636c65206f70657261746f72206163636f756e7420696420286f6e6c792065786563757461626c652062792074686520526f6f74206163636f756e7429002c2320417267756d656e7473bc2a20606163636f756e745f696460202d20746865206163636f756e74206964206f6620746865206f70657261746f726066756e645f776974685f7574786f5f63616e64696461746508011c7574786f5f69643001185574786f49640001207574786f5f726566cc011c5574786f52656600030cec42696e6420612063616e646964617465205554584f20726566206173207468652066756e64696e67205554584f20666f7220697473206c6f636b2e3d01546865206c6f636b732070616c6c657420617574686f72697a6573207468652070726f6d6f74696f6e3b20746869732070616c6c65742062696e6473207468652072656620616e6420626567696e7324747261636b696e672e5472656a6563745f7574786f5f63616e64696461746508011c7574786f5f69643001185574786f49640001207574786f5f726566cc011c5574786f526566000408450152656a65637420612070656e64696e672063616e646964617465205554584f20616e64206d6174657269616c697a6520697420617320616e206f727068616e207468726f75676820746865206c6f636b731c70616c6c65742e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e15030c406172676f6e5f7072696d69746976657324696e686572656e74733c426974636f696e5574786f53796e6300000c01147370656e74190301545665633c426974636f696e5574786f5370656e643e00011866756e6465642503015c5665633c426974636f696e5574786f46756e64696e673e00013473796e635f746f5f626c6f636b2d030130426974636f696e426c6f636b000019030000021d03001d030c406172676f6e5f7072696d69746976657324696e686572656e747340426974636f696e5574786f5370656e6400000c011c7574786f5f69642c01185574786f49640001207574786f5f7265662103013c4f7074696f6e3c5574786f5265663e000138626974636f696e5f6865696768742c0134426974636f696e4865696768740000210304184f7074696f6e04045401cc0108104e6f6e6500000010536f6d650400cc0000010000250300000229030029030c406172676f6e5f7072696d69746976657324696e686572656e747348426974636f696e5574786f46756e64696e67000014011c7574786f5f69642c01185574786f49640001207574786f5f726566cc011c5574786f5265660001207361746f736869732c01205361746f7368697300014465787065637465645f7361746f736869732c01205361746f73686973000138626974636f696e5f6865696768742c0134426974636f696e48656967687400002d030c406172676f6e5f7072696d6974697665731c626974636f696e30426974636f696e426c6f636b0000080130626c6f636b5f6865696768742c0134426974636f696e486569676874000128626c6f636b5f68617368d00140426974636f696e426c6f636b48617368000031030c3470616c6c65745f7661756c74731870616c6c65741043616c6c040454000124186372656174650401307661756c745f636f6e6669673503015c5661756c74436f6e6669673c543a3a42616c616e63653e000000386d6f646966795f66756e64696e670c01207661756c745f696410011c5661756c74496400013873656375726974697a6174696f6e180128543a3a42616c616e636500015073656375726974697a6174696f6e5f726174696fe0012446697865645531323800012061014d6f646966792066756e647320616c6c6f636174656420627920746865207661756c742e20546869732077696c6c206e6f74206166666563742069737375656420626974636f696e206c6f636b732c206275742077696c6cc86166666563742074686520616d6f756e74206f662066756e647320617661696c61626c6520666f72206e6577206f6e65732e00ec5468652073656375726974697a6174696f6e2070657263656e74206d757374206265206d61696e7461696e6564206f7220696e637265617365642e00610154686520616d6f756e7420616c6c6f6361746564206d6179206e6f7420676f2062656c6f7720746865206578697374696e6720726573657276656420616d6f756e74732c2062757420796f752063616e2072656c656173654d0166756e647320696e2074686973207661756c7420617320626974636f696e206c6f636b73206172652072656c65617365642e20546f2073746f702069737375696e6720616e79206d6f726520626974636f696e6c6c6f636b732c20757365207468652060636c6f736560206170692e306d6f646966795f7465726d730801207661756c745f696410011c5661756c7449640001147465726d73390301585661756c745465726d733c543a3a42616c616e63653e0002084d014368616e676520746865207465726d73206f662074686973207661756c742e20546865206368616e67652077696c6c206265206170706c69656420617420746865206e657874206d696e696e67206672616d6515016368616e67652074686174206973206174206c6561737420604d696e5465726d734d6f64696669636174696f6e426c6f636b44656c61796020626c6f636b7320617761792e14636c6f73650401207661756c745f696410011c5661756c744964000308410153746f70206f66666572696e67206164646974696f6e616c20626974636f696e206c6f636b732066726f6d2074686973207661756c742e2057696c6c206e6f7420616666656374206578697374696e671d016c6f636b732e2041732066756e6473206172652072657475726e65642c20746865792077696c6c2062652072656c656173656420746f20746865207661756c74206f776e65722e507265706c6163655f626974636f696e5f787075620801207661756c745f696410011c5661756c744964000130626974636f696e5f78707562510301444f7061717565426974636f696e5870756200040c61015265706c6163652074686520626974636f696e20787075626b657920666f722074686973207661756c742e20546869732077696c6c206e6f7420616666656374206578697374696e6720626974636f696e206c6f636b732c31016275742077696c6c206265207573656420666f7220616e79206c6f636b73206166746572207468697320706f696e742e2057696c6c2062652072656a656374656420696620616c726561647914757365642e1c636f6c6c6563740401207661756c745f696410011c5661756c744964000500647365745f626974636f696e5f6c6f636b5f64656c656761746504014c64656c65676174655f6163636f756e745f6964bc01504f7074696f6e3c543a3a4163636f756e7449643e000600207365745f6e616d650401106e616d65490301444f7074696f6e3c5661756c744e616d653e000700587365745f636f6d6d69747465645f6172676f6e6f7473040118616d6f756e74c00128543a3a42616c616e6365000800040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e35030c3470616c6c65745f7661756c74731870616c6c65742c5661756c74436f6e666967041c42616c616e63650118001401147465726d733903014c5661756c745465726d733c42616c616e63653e0001106e616d65490301444f7074696f6e3c5661756c744e616d653e00013873656375726974697a6174696f6ec0011c42616c616e636500013c626974636f696e5f787075626b6579510301444f7061717565426974636f696e5870756200015073656375726974697a6174696f6e5f726174696f3d030124466978656455313238000039030c406172676f6e5f7072696d697469766573147661756c74285661756c745465726d73041c42616c616e63650118000c016c626974636f696e5f616e6e75616c5f70657263656e745f726174653d030124466978656455313238000140626974636f696e5f626173655f666565c0011c42616c616e636500015c74726561737572795f70726f6669745f73686172696e674103011c5065726d696c6c00003d03000006e000410300000645030045030c3473705f61726974686d65746963287065725f7468696e67731c5065726d696c6c0000040010010c7533320000490304184f7074696f6e040454014d030108104e6f6e6500000010536f6d6504004d0300000100004d030c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e000051030c406172676f6e5f7072696d6974697665731c626974636f696e444f7061717565426974636f696e5870756200000400550301205b75383b2037385d000055030000034e000000080059030c5070616c6c65745f626974636f696e5f6c6f636b731870616c6c65741043616c6c04045400012428696e697469616c697a651001207661756c745f696410011c5661756c7449640001207361746f736869732c01205361746f73686973000138626974636f696e5f7075626b65795d03015c436f6d70726573736564426974636f696e5075626b657900011c6f7074696f6e73650301584f7074696f6e3c4c6f636b4f7074696f6e733c543e3e0000205901496e697469616c697a65206120626974636f696e206c6f636b2e20546869732077696c6c206372656174652061204c6f636b6564426974636f696e20666f7220746865207375626d697474696e67206163636f756e74a8616e64206c6f672074686520426974636f696e20536372697074206861736820746f204576656e74732e005d01546865207075626b6579207375626d697474656420686572652077696c6c206265207573656420746f20637265617465206120736372697074207075626b657920746861742077696c6c206265207573656420696e2061b474696d656c6f636b206d756c74697369672073637269707420746f206c6f636b2074686520626974636f696e2e0039014e4f54453a204120226c6f636b2d657222206d7573742073656e642062746320746f2074686520636f7369676e6572205554584f206164647265737320746f2022636f6d706c6574652220746865d04c6f636b6564426974636f696e20616e6420626520616464656420746f2074686520426974636f696e204d696e74206c696e652e3c726571756573745f72656c656173650c011c7574786f5f69643001185574786f4964000140746f5f7363726970745f7075626b65796d03014c426974636f696e5363726970745075626b657900014c626974636f696e5f6e6574776f726b5f6665653001205361746f7368697300011851015375626d6974746564206279206120426974636f696e20686f6c64657220746f2074726967676572207468652072656c65617365206f66207468656972205574786f206f7574206f662074686520636f7369676e45017363726970742e2041207472616e73616374696f6e207370656e64696e6720746865205554584f2073686f756c64206265207072652d6372656174656420736f20746861742074686520736967686173683d0163616e206265207375626d697474656420686572652e20546865207661756c74206f70657261746f722077696c6c2068617665203130206461797320746f20636f756e7465722d7369676e2074686555017472616e73616374696f6e2e2049742077696c6c206265207075626c6973686564207769746820746865207075626c6963206b6579206173206120426974636f696e5574786f436f7369676e6564204576656e742e003d014f776e6572206d757374207375626d6974206120736372697074207075626b657920616e6420616c736f20612066656520746f2070617920746f2074686520626974636f696e206e6574776f726b2e38636f7369676e5f72656c6561736508011c7574786f5f69643001185574786f49640001247369676e6174757265e80140426974636f696e5369676e617475726500021461015375626d69747465642062792061205661756c74206f70657261746f7220746f20636f7369676e207468652072656c65617365206f66206120626974636f696e207574786f2e2054686520426974636f696e206f776e6572550172656c65617365206665652077696c6c206265206275726e65642c20616e6420746865206c6f636b2077696c6c20626520616c6c6f77656420746f2065787069726520776974686f757420612070656e616c74792e004d0154686973206973207375626d69747465642061732061206e6f2d666565207472616e73616374696f6e206f666620636861696e20746f20616c6c6f77206b65797320746f2072656d61696e20696e20636f6c642077616c6c6574732e1c7261746368657408011c7574786f5f69643001185574786f496400011c6f7074696f6e73650301584f7074696f6e3c4c6f636b4f7074696f6e733c543e3e000338410152617463686574696e6720616c6c6f77732061207573657220746f206368616e676520746865206c6f636b207072696365206f6620746865697220626974636f696e206c6f636b2e2054686973206973510166756e6374696f6e616c6c79207468652073616d652061732072656c656173696e6720616e642072652d696e697469616c697a696e672c2062757420697420616c6c6f77732061207573657220746f20736b6970610173656e64696e67207472616e73616374696f6e73207468726f75676820626974636f696e20616e6420616e79206173736f63696174656420666565732e20497420616c736f20616c6c6f777320796f7520746f20737461794d016f6e20796f7572206f726967696e616c206c6f636b2065787069726174696f6e20776974686f757420686176696e6720746f20706179207468652066756c6c2079656172206f66206665657320616761696e2e00610152617463686574696e672022646f776e22202d207768656e20746865207072696365206f6620626974636f696e206973206c6f776572207468616e20796f7572206c6f636b2070726963652c20796f7520706179207468655d0166756c6c2072656c6561736520707269636520616e6420676574206164646564206261636b20746f20746865206d696e74207175657565206174207468652063757272656e74206d61726b657420726174652e20596f755901706f636b65742074686520646966666572656e6365206265747765656e2074686520616c7265616479206d696e74656420226c6f636b2070726963652220616e6420746865206e6577206d61726b65742076616c7565550128776869636820796f75206a75737420686164206275726e6564292e20596f7572206e6577206c6f636b2070726963652069732073657420746f20746865206d61726b6574206c6f772c20736f20796f752063616eb874616b6520616476616e74616765206f66207261746368657473202275702220696e20746865206675747572652e00550152617463686574696e672022757022202d207768656e20746865207072696365206f6620626974636f696e20697320686967686572207468616e20796f7572206c6f636b2070726963652c20796f75207061792061610170726f72617465642066656520666f72207468652072656d61696e646572206f6620796f7572206578697374696e67206c6f636b206475726174696f6e2e20596f752061726520616464656420746f20746865206d696e742d01717565756520666f722074686520646966666572656e636520696e20796f7572206e6577206c6f636b207072696365207673207468652070726576696f7573206c6f636b2070726963652e8061646d696e5f6d6f646966795f6d696e696d756d5f6c6f636b65645f736174730401207361746f736869733001205361746f7368697300040074726571756573745f6f727068616e65645f7574786f5f72656c656173650c01207574786f5f726566cc011c5574786f526566000140746f5f7363726970745f7075626b65796d03014c426974636f696e5363726970745075626b657900014c626974636f696e5f6e6574776f726b5f6665653001205361746f7368697300050070636f7369676e5f6f727068616e65645f7574786f5f72656c656173650c01306f727068616e5f6f776e6572000130543a3a4163636f756e7449640001207574786f5f726566cc011c5574786f5265660001247369676e6174757265e80140426974636f696e5369676e617475726500061c41014e4f54453a2054686520607369676e61747572656020706172616d65746572206973204e4f54207665726966696564206f6e2d636861696e2e20546865206f727068616e207265636f726420646f657339016e6f742072657461696e2074686520636f7369676e207363726970742061726773206e656564656420666f7220766572696669636174696f6e2028746865792061726520636c65616e6564207570f4776974682074686520426974636f696e4c6f636b292e20546865207369676e617475726520697320706173736564207468726f75676820746f207468654101604f727068616e65645574786f436f7369676e656460206576656e7420736f20746865206c6f636b206f776e65722063616e20636f6e7374727563742074686520426974636f696e2072656c6561736535017472616e73616374696f6e206f66662d636861696e2e20412067617262616765207369676e6174757265206d65616e7320746865206f776e65722063616e2774207370656e6420e28094206e6f41016f6e2d636861696e2064616d6167652e20546f20616464206f6e2d636861696e20766572696669636174696f6e2c2074686520636f7369676e20736372697074206172677320776f756c64206e656564f0746f2062652073746f72656420696e20604f727068616e65645574786f60202873746f72616765206d6967726174696f6e207265717569726564292e38696e697469616c697a655f666f721401286163636f756e745f6964000130543a3a4163636f756e7449640001207661756c745f696410011c5661756c7449640001207361746f736869732c01205361746f73686973000138626974636f696e5f7075626b65795d03015c436f6d70726573736564426974636f696e5075626b657900011c6f7074696f6e73650301584f7074696f6e3c4c6f636b4f7074696f6e733c543e3e0008005c696e6372656173655f73656375726974697a6174696f6e08011c7574786f5f69643001185574786f49640001306e65775f7361746f736869732c01205361746f73686973000900040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e5d030c406172676f6e5f7072696d6974697665731c626974636f696e5c436f6d70726573736564426974636f696e5075626b657900000400610301205b75383b2033335d00006103000003210000000800650304184f7074696f6e0404540169030108104e6f6e6500000010536f6d6504006903000001000069030c5070616c6c65745f626974636f696e5f6c6f636b731870616c6c65742c4c6f636b4f7074696f6e7304045400010408563104016c6d6963726f676f6e735f61745f7461726765745f7065725f627463850101484f7074696f6e3c543a3a42616c616e63653e000000006d030c406172676f6e5f7072696d6974697665731c626974636f696e4c426974636f696e5363726970745075626b65790000040071030170426f756e6465645665633c75382c20436f6e73745533323c33343e3e000071030c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e000075030c3c70616c6c65745f6e6f7461726965731870616c6c65741043616c6c04045400010c1c70726f706f73650401106d657461f4013c4e6f746172794d6574614f663c543e0000002061637469766174650401406f70657261746f725f6163636f756e74000130543a3a4163636f756e744964000100187570646174650c01246e6f746172795f6964d401204e6f7461727949640001106d657461f4013c4e6f746172794d6574614f663c543e0001386566666563746976655f7469636b2c01105469636b000208610155706461746520746865206d65746164617461206f662061206e6f746172792c20746f206265206566666563746976652061742074686520676976656e207469636b206865696768742c207768696368206d757374206265b03e3d204d6574614368616e6765735469636b44656c6179207469636b7320696e20746865206675747572652e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e79030c3c70616c6c65745f6e6f7465626f6f6b1870616c6c65741043616c6c040454000108187375626d69740401246e6f7465626f6f6b737d0301645665633c5369676e65644e6f7465626f6f6b4865616465723e00000018756e6c6f636b0401246e6f746172795f69641001204e6f746172794964000100040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e7d0300000281030081030c406172676f6e5f7072696d697469766573206e6f7465626f6f6b505369676e65644e6f7465626f6f6b4865616465720000080118686561646572850301384e6f7465626f6f6b4865616465720001247369676e6174757265b503013c4e6f746172795369676e6174757265000085030c406172676f6e5f7072696d697469766573206e6f7465626f6f6b384e6f7465626f6f6b48656164657200003c011c76657273696f6e8903010c75313600013c6e6f7465626f6f6b5f6e756d626572d401384e6f7465626f6f6b4e756d6265720001107469636b2c01105469636b00010c746178c00110753132380001246e6f746172795f6964d401204e6f74617279496400013c636861696e5f7472616e73666572738d0301bc426f756e6465645665633c436861696e5472616e736665722c204d61784e6f7465626f6f6b5472616e73666572733e0001546368616e6765645f6163636f756e74735f726f6f743401104832353600015c6368616e6765645f6163636f756e745f6f726967696e73990301c4426f756e6465645665633c4163636f756e744f726967696e2c20436f6e73745533323c7b207533323a3a4d4158207d3e3e000140626c6f636b5f766f7465735f726f6f7434011048323536000144626c6f636b5f766f7465735f636f756e74d4010c753332000144626c6f636b735f776974685f766f746573a5030180426f756e6465645665633c483235362c20436f6e73745533323c313030303e3e000148626c6f636b5f766f74696e675f706f776572c00140426c6f636b566f74696e67506f77657200012c7365637265745f686173683401484e6f7465626f6f6b53656372657448617368000134706172656e745f736563726574a10201584f7074696f6e3c4e6f7465626f6f6b5365637265743e00011c646f6d61696e73a90301e8426f756e6465645665633c28446f6d61696e486173682c204163636f756e744964292c204d6178446f6d61696e735065724e6f7465626f6f6b3e000089030000069c008d030c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454019103045300000400950301185665633c543e000091030c406172676f6e5f7072696d697469766573206e6f7465626f6f6b34436861696e5472616e736665720001082c546f4d61696e636861696e0801286163636f756e745f69640001244163636f756e744964000118616d6f756e74c001107531323800000030546f4c6f63616c636861696e04012c7472616e736665725f6964d401585472616e73666572546f4c6f63616c636861696e496400010000950300000291030099030c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454019d03045300000400a10301185665633c543e00009d030c406172676f6e5f7072696d6974697665733862616c616e63655f6368616e6765344163636f756e744f726967696e000008013c6e6f7465626f6f6b5f6e756d626572d401384e6f7465626f6f6b4e756d62657200012c6163636f756e745f756964d401404163636f756e744f726967696e5569640000a1030000029d0300a5030c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401340453000004002d0201185665633c543e0000a9030c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401ad03045300000400b10301185665633c543e0000ad0300000408340000b103000002ad0300b503000003400000000800b9030c6870616c6c65745f6c6f63616c636861696e5f7472616e736665721870616c6c65741043616c6c0404540001044873656e645f746f5f6c6f63616c636861696e080118616d6f756e74c001583c5420617320436f6e6669673e3a3a42616c616e63650001246e6f746172795f69641001204e6f746172794964000000040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ebd030c5870616c6c65745f626c6f636b5f7365616c5f737065631870616c6c65741043616c6c04045400010424636f6e666967757265080130766f74655f6d696e696d756d8501014c4f7074696f6e3c566f74654d696e696d756d3e000148636f6d707574655f646966666963756c7479850101304f7074696f6e3c753132383e000000040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ec1030c3870616c6c65745f646f6d61696e731870616c6c65741043616c6c0404540001043c7365745f7a6f6e655f7265636f726408012c646f6d61696e5f68617368340128446f6d61696e4861736800012c7a6f6e655f7265636f72643d0101605a6f6e655265636f72643c543a3a4163636f756e7449643e000000040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ec5030c4870616c6c65745f70726963655f696e6465781870616c6c65741043616c6c040454000108187375626d6974040114696e646578c90301285072696365496e64657800000435015375626d697420746865206c617465737420707269636520696e6465782e204f6e6c792076616c696420666f722074686520636f6e66696775726564206f70657261746f72206163636f756e74307365745f6f70657261746f720401286163636f756e745f6964000130543a3a4163636f756e74496400011009015365747320746865206f70657261746f72206163636f756e7420696420286f6e6c792065786563757461626c652062792074686520526f6f74206163636f756e7429002c2320417267756d656e7473bc2a20606163636f756e745f696460202d20746865206163636f756e74206964206f6620746865206f70657261746f72040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ec903084870616c6c65745f70726963655f696e646578285072696365496e64657800001801346274635f7573645f70726963653d0301244669786564553132380001446172676f6e6f745f7573645f7072696365e0012446697865645531323800013c6172676f6e5f7573645f70726963653d0301244669786564553132380001586172676f6e5f7573645f7461726765745f7072696365e001244669786564553132380001946172676f6e5f74696d655f77656967687465645f617665726167655f6c697175696469747918011c42616c616e63650001107469636b2c01105469636b0000cd030c3870616c6c65745f6772616e6470611870616c6c65741043616c6c04045400010c4c7265706f72745f65717569766f636174696f6e08014865717569766f636174696f6e5f70726f6f66d10301c8426f783c45717569766f636174696f6e50726f6f663c543a3a486173682c20426c6f636b4e756d626572466f723c543e3e3e00013c6b65795f6f776e65725f70726f6f66f5030140543a3a4b65794f776e657250726f6f6600001009015265706f727420766f7465722065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667920746865f465717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66f8616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63654477696c6c206265207265706f727465642e707265706f72745f65717569766f636174696f6e5f756e7369676e656408014865717569766f636174696f6e5f70726f6f66d10301c8426f783c45717569766f636174696f6e50726f6f663c543a3a486173682c20426c6f636b4e756d626572466f723c543e3e3e00013c6b65795f6f776e65725f70726f6f66f5030140543a3a4b65794f776e657250726f6f6600012409015265706f727420766f7465722065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667920746865f465717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66f8616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63654477696c6c206265207265706f727465642e000d01546869732065787472696e736963206d7573742062652063616c6c656420756e7369676e656420616e642069742069732065787065637465642074686174206f6e6c791501626c6f636b20617574686f72732077696c6c2063616c6c206974202876616c69646174656420696e206056616c6964617465556e7369676e656460292c2061732073756368150169662074686520626c6f636b20617574686f7220697320646566696e65642069742077696c6c20626520646566696e6564206173207468652065717569766f636174696f6e247265706f727465722e306e6f74655f7374616c6c656408011464656c6179100144426c6f636b4e756d626572466f723c543e00016c626573745f66696e616c697a65645f626c6f636b5f6e756d626572100144426c6f636b4e756d626572466f723c543e0002303d014e6f74652074686174207468652063757272656e7420617574686f7269747920736574206f6620746865204752414e4450412066696e616c6974792067616467657420686173207374616c6c65642e006101546869732077696c6c2074726967676572206120666f7263656420617574686f7269747920736574206368616e67652061742074686520626567696e6e696e67206f6620746865206e6578742073657373696f6e2c20746f6101626520656e6163746564206064656c61796020626c6f636b7320616674657220746861742e20546865206064656c6179602073686f756c64206265206869676820656e6f75676820746f20736166656c7920617373756d654901746861742074686520626c6f636b207369676e616c6c696e672074686520666f72636564206368616e67652077696c6c206e6f742062652072652d6f7267656420652e672e203130303020626c6f636b732e5d0154686520626c6f636b2070726f64756374696f6e207261746520287768696368206d617920626520736c6f77656420646f776e2062656361757365206f662066696e616c697479206c616767696e67292073686f756c64510162652074616b656e20696e746f206163636f756e74207768656e2063686f6f73696e6720746865206064656c6179602e20546865204752414e44504120766f74657273206261736564206f6e20746865206e65775501617574686f726974792077696c6c20737461727420766f74696e67206f6e20746f70206f662060626573745f66696e616c697a65645f626c6f636b5f6e756d6265726020666f72206e65772066696e616c697a65644d01626c6f636b732e2060626573745f66696e616c697a65645f626c6f636b5f6e756d626572602073686f756c64206265207468652068696768657374206f6620746865206c61746573742066696e616c697a6564c4626c6f636b206f6620616c6c2076616c696461746f7273206f6620746865206e657720617574686f72697479207365742e00584f6e6c792063616c6c61626c6520627920726f6f742e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ed103085073705f636f6e73656e7375735f6772616e6470614445717569766f636174696f6e50726f6f660804480134044e0110000801187365745f6964300114536574496400013065717569766f636174696f6ed503014845717569766f636174696f6e3c482c204e3e0000d503085073705f636f6e73656e7375735f6772616e6470613045717569766f636174696f6e0804480134044e011001081c507265766f74650400d90301890166696e616c6974795f6772616e6470613a3a45717569766f636174696f6e3c417574686f7269747949642c2066696e616c6974795f6772616e6470613a3a507265766f74653c0a482c204e3e2c20417574686f726974795369676e61747572652c3e00000024507265636f6d6d69740400e90301910166696e616c6974795f6772616e6470613a3a45717569766f636174696f6e3c417574686f7269747949642c2066696e616c6974795f6772616e6470613a3a507265636f6d6d69740a3c482c204e3e2c20417574686f726974795369676e61747572652c3e00010000d903084066696e616c6974795f6772616e6470613045717569766f636174696f6e0c08496401b4045601dd03045301e10300100130726f756e645f6e756d62657230010c7536340001206964656e74697479b4010849640001146669727374e503011828562c2053290001187365636f6e64e503011828562c2053290000dd03084066696e616c6974795f6772616e6470611c507265766f74650804480134044e01100008012c7461726765745f68617368340104480001347461726765745f6e756d6265721001044e0000e1030c5073705f636f6e73656e7375735f6772616e6470610c617070245369676e617475726500000400b5030148656432353531393a3a5369676e61747572650000e50300000408dd03e10300e903084066696e616c6974795f6772616e6470613045717569766f636174696f6e0c08496401b4045601ed03045301e10300100130726f756e645f6e756d62657230010c7536340001206964656e74697479b4010849640001146669727374f103011828562c2053290001187365636f6e64f103011828562c2053290000ed03084066696e616c6974795f6772616e64706124507265636f6d6d69740804480134044e01100008012c7461726765745f68617368340104480001347461726765745f6e756d6265721001044e0000f10300000408ed03e10300f503081c73705f636f726510566f696400010000f9030c4470616c6c65745f626c6f636b5f7365616c1870616c6c65741043616c6c040454000104146170706c790401107365616cfd030144426c6f636b5365616c496e686572656e74000000040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732efd030c406172676f6e5f7072696d69746976657324696e686572656e747344426c6f636b5365616c496e686572656e7400010810566f74651801347365616c5f737472656e677468ad020110553235360001246e6f746172795f6964d401204e6f746172794964000158736f757263655f6e6f7465626f6f6b5f6e756d626572d401384e6f7465626f6f6b4e756d626572000154736f757263655f6e6f7465626f6f6b5f70726f6f660104012c4d65726b6c6550726f6f66000128626c6f636b5f766f746509040124426c6f636b566f74650001446d696e65725f6e6f6e63655f73636f7265b50201304f7074696f6e3c553235363e0000001c436f6d707574650001000001040c406172676f6e5f7072696d6974697665733862616c616e63655f6368616e67652c4d65726b6c6550726f6f6600000c011470726f6f66050401a0426f756e6465645665633c483235362c20436f6e73745533323c7b207533323a3a4d4158207d3e3e0001406e756d6265725f6f665f6c6561766573d4010c7533320001286c6561665f696e646578d4010c753332000005040c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401340453000004002d0201185665633c543e000009040c406172676f6e5f7072696d69746976657328626c6f636b5f766f746528426c6f636b566f7465540410486173680134001c01286163636f756e745f69640001244163636f756e744964000128626c6f636b5f6861736834011048617368000114696e646578d4010c753332000114706f776572c00140426c6f636b566f74696e67506f7765720001247369676e61747572650d0401384d756c74695369676e6174757265000160626c6f636b5f726577617264735f6163636f756e745f69640001244163636f756e7449640001107469636b2c01105469636b00000d04082873705f72756e74696d65384d756c74695369676e61747572650001101c456432353531390400b5030148656432353531393a3a5369676e61747572650000001c537232353531390400b5030148737232353531393a3a5369676e617475726500010014456364736104001104014065636473613a3a5369676e61747572650002000c45746804001104015865636473613a3a4b656363616b5369676e617475726500030000110400000341000000080015040c5070616c6c65745f626c6f636b5f726577617264731870616c6c65741043616c6c040454000104607365745f626c6f636b5f726577617264735f706175736564040118706175736564200110626f6f6c000000040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e19040c2c70616c6c65745f6d696e741870616c6c65741043616c6c040454000100040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e1d040c3c70616c6c65745f62616c616e6365731870616c6c65741043616c6c080454000449000124507472616e736665725f616c6c6f775f646561746808011064657374fd0201504163636f756e7449644c6f6f6b75704f663c543e00011476616c7565c00128543a3a42616c616e636500001cd45472616e7366657220736f6d65206c697175696420667265652062616c616e636520746f20616e6f74686572206163636f756e742e003501607472616e736665725f616c6c6f775f6465617468602077696c6c207365742074686520604672656542616c616e636560206f66207468652073656e64657220616e642072656365697665722e11014966207468652073656e6465722773206163636f756e742069732062656c6f7720746865206578697374656e7469616c206465706f736974206173206120726573756c74b06f6620746865207472616e736665722c20746865206163636f756e742077696c6c206265207265617065642e001501546865206469737061746368206f726967696e20666f7220746869732063616c6c206d75737420626520605369676e65646020627920746865207472616e736163746f722e38666f7263655f7472616e736665720c0118736f75726365fd0201504163636f756e7449644c6f6f6b75704f663c543e00011064657374fd0201504163636f756e7449644c6f6f6b75704f663c543e00011476616c7565c00128543a3a42616c616e6365000208610145786163746c7920617320607472616e736665725f616c6c6f775f6465617468602c2065786365707420746865206f726967696e206d75737420626520726f6f7420616e642074686520736f75726365206163636f756e74446d6179206265207370656369666965642e4c7472616e736665725f6b6565705f616c69766508011064657374fd0201504163636f756e7449644c6f6f6b75704f663c543e00011476616c7565c00128543a3a42616c616e6365000318590153616d6520617320746865205b607472616e736665725f616c6c6f775f6465617468605d2063616c6c2c206275742077697468206120636865636b207468617420746865207472616e736665722077696c6c206e6f74606b696c6c20746865206f726967696e206163636f756e742e00e8393925206f66207468652074696d6520796f752077616e74205b607472616e736665725f616c6c6f775f6465617468605d20696e73746561642e00f05b607472616e736665725f616c6c6f775f6465617468605d3a207374727563742e50616c6c65742e68746d6c236d6574686f642e7472616e73666572307472616e736665725f616c6c08011064657374fd0201504163636f756e7449644c6f6f6b75704f663c543e0001286b6565705f616c697665200110626f6f6c00043c05015472616e736665722074686520656e74697265207472616e7366657261626c652062616c616e63652066726f6d207468652063616c6c6572206163636f756e742e0059014e4f54453a20546869732066756e6374696f6e206f6e6c7920617474656d70747320746f207472616e73666572205f7472616e7366657261626c655f2062616c616e6365732e2054686973206d65616e7320746861746101616e79206c6f636b65642c2072657365727665642c206f72206578697374656e7469616c206465706f7369747320287768656e20606b6565705f616c6976656020697320607472756560292c2077696c6c206e6f742062655d017472616e7366657272656420627920746869732066756e6374696f6e2e20546f20656e73757265207468617420746869732066756e6374696f6e20726573756c747320696e2061206b696c6c6564206163636f756e742c4501796f75206d69676874206e65656420746f207072657061726520746865206163636f756e742062792072656d6f76696e6720616e79207265666572656e636520636f756e746572732c2073746f72616765406465706f736974732c206574632e2e2e00c0546865206469737061746368206f726967696e206f6620746869732063616c6c206d757374206265205369676e65642e00a02d206064657374603a2054686520726563697069656e74206f6620746865207472616e736665722e59012d20606b6565705f616c697665603a204120626f6f6c65616e20746f2064657465726d696e652069662074686520607472616e736665725f616c6c60206f7065726174696f6e2073686f756c642073656e6420616c6c4d0120206f66207468652066756e647320746865206163636f756e74206861732c2063617573696e67207468652073656e646572206163636f756e7420746f206265206b696c6c6564202866616c7365292c206f72590120207472616e736665722065766572797468696e6720657863657074206174206c6561737420746865206578697374656e7469616c206465706f7369742c2077686963682077696c6c2067756172616e74656520746f9c20206b656570207468652073656e646572206163636f756e7420616c697665202874727565292e3c666f7263655f756e7265736572766508010c77686ffd0201504163636f756e7449644c6f6f6b75704f663c543e000118616d6f756e74180128543a3a42616c616e636500050cb0556e7265736572766520736f6d652062616c616e63652066726f6d2061207573657220627920666f7263652e006c43616e206f6e6c792062652063616c6c656420627920524f4f542e40757067726164655f6163636f756e747304010c77686fed0201445665633c543a3a4163636f756e7449643e0006207055706772616465206120737065636966696564206163636f756e742e00742d20606f726967696e603a204d75737420626520605369676e6564602e902d206077686f603a20546865206163636f756e7420746f2062652075706772616465642e005501546869732077696c6c20776169766520746865207472616e73616374696f6e20666565206966206174206c6561737420616c6c2062757420313025206f6620746865206163636f756e7473206e656564656420746f410162652075706772616465642e20285765206c657420736f6d65206e6f74206861766520746f206265207570677261646564206a75737420696e206f7264657220746f20616c6c6f7720666f722074686558706f73736962696c697479206f6620636875726e292e44666f7263655f7365745f62616c616e636508010c77686ffd0201504163636f756e7449644c6f6f6b75704f663c543e0001206e65775f66726565c00128543a3a42616c616e636500080cac5365742074686520726567756c61722062616c616e6365206f66206120676976656e206163636f756e742e00b0546865206469737061746368206f726967696e20666f7220746869732063616c6c2069732060726f6f74602e6c666f7263655f61646a7573745f746f74616c5f69737375616e6365080124646972656374696f6e2104014c41646a7573746d656e74446972656374696f6e00011464656c7461c00128543a3a42616c616e6365000914b841646a7573742074686520746f74616c2069737375616e636520696e20612073617475726174696e67207761792e00fc43616e206f6e6c792062652063616c6c656420627920726f6f7420616e6420616c77617973206e65656473206120706f736974697665206064656c7461602e002423204578616d706c65106275726e08011476616c7565c00128543a3a42616c616e63650001286b6565705f616c697665200110626f6f6c000a1cfc4275726e2074686520737065636966696564206c697175696420667265652062616c616e63652066726f6d20746865206f726967696e206163636f756e742e002501496620746865206f726967696e2773206163636f756e7420656e64732075702062656c6f7720746865206578697374656e7469616c206465706f736974206173206120726573756c7409016f6620746865206275726e20616e6420606b6565705f616c697665602069732066616c73652c20746865206163636f756e742077696c6c206265207265617065642e005101556e6c696b652073656e64696e672066756e647320746f2061205f6275726e5f20616464726573732c207768696368206d6572656c79206d616b6573207468652066756e647320696e61636365737369626c652c21017468697320606275726e60206f7065726174696f6e2077696c6c2072656475636520746f74616c2069737375616e63652062792074686520616d6f756e74205f6275726e65645f2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e21040c3c70616c6c65745f62616c616e6365731474797065734c41646a7573746d656e74446972656374696f6e00010820496e6372656173650000002044656372656173650001000025040c3c70616c6c65745f62616c616e6365731870616c6c65741043616c6c080454000449000124507472616e736665725f616c6c6f775f646561746808011064657374fd0201504163636f756e7449644c6f6f6b75704f663c543e00011476616c7565c00128543a3a42616c616e636500001cd45472616e7366657220736f6d65206c697175696420667265652062616c616e636520746f20616e6f74686572206163636f756e742e003501607472616e736665725f616c6c6f775f6465617468602077696c6c207365742074686520604672656542616c616e636560206f66207468652073656e64657220616e642072656365697665722e11014966207468652073656e6465722773206163636f756e742069732062656c6f7720746865206578697374656e7469616c206465706f736974206173206120726573756c74b06f6620746865207472616e736665722c20746865206163636f756e742077696c6c206265207265617065642e001501546865206469737061746368206f726967696e20666f7220746869732063616c6c206d75737420626520605369676e65646020627920746865207472616e736163746f722e38666f7263655f7472616e736665720c0118736f75726365fd0201504163636f756e7449644c6f6f6b75704f663c543e00011064657374fd0201504163636f756e7449644c6f6f6b75704f663c543e00011476616c7565c00128543a3a42616c616e6365000208610145786163746c7920617320607472616e736665725f616c6c6f775f6465617468602c2065786365707420746865206f726967696e206d75737420626520726f6f7420616e642074686520736f75726365206163636f756e74446d6179206265207370656369666965642e4c7472616e736665725f6b6565705f616c69766508011064657374fd0201504163636f756e7449644c6f6f6b75704f663c543e00011476616c7565c00128543a3a42616c616e6365000318590153616d6520617320746865205b607472616e736665725f616c6c6f775f6465617468605d2063616c6c2c206275742077697468206120636865636b207468617420746865207472616e736665722077696c6c206e6f74606b696c6c20746865206f726967696e206163636f756e742e00e8393925206f66207468652074696d6520796f752077616e74205b607472616e736665725f616c6c6f775f6465617468605d20696e73746561642e00f05b607472616e736665725f616c6c6f775f6465617468605d3a207374727563742e50616c6c65742e68746d6c236d6574686f642e7472616e73666572307472616e736665725f616c6c08011064657374fd0201504163636f756e7449644c6f6f6b75704f663c543e0001286b6565705f616c697665200110626f6f6c00043c05015472616e736665722074686520656e74697265207472616e7366657261626c652062616c616e63652066726f6d207468652063616c6c6572206163636f756e742e0059014e4f54453a20546869732066756e6374696f6e206f6e6c7920617474656d70747320746f207472616e73666572205f7472616e7366657261626c655f2062616c616e6365732e2054686973206d65616e7320746861746101616e79206c6f636b65642c2072657365727665642c206f72206578697374656e7469616c206465706f7369747320287768656e20606b6565705f616c6976656020697320607472756560292c2077696c6c206e6f742062655d017472616e7366657272656420627920746869732066756e6374696f6e2e20546f20656e73757265207468617420746869732066756e6374696f6e20726573756c747320696e2061206b696c6c6564206163636f756e742c4501796f75206d69676874206e65656420746f207072657061726520746865206163636f756e742062792072656d6f76696e6720616e79207265666572656e636520636f756e746572732c2073746f72616765406465706f736974732c206574632e2e2e00c0546865206469737061746368206f726967696e206f6620746869732063616c6c206d757374206265205369676e65642e00a02d206064657374603a2054686520726563697069656e74206f6620746865207472616e736665722e59012d20606b6565705f616c697665603a204120626f6f6c65616e20746f2064657465726d696e652069662074686520607472616e736665725f616c6c60206f7065726174696f6e2073686f756c642073656e6420616c6c4d0120206f66207468652066756e647320746865206163636f756e74206861732c2063617573696e67207468652073656e646572206163636f756e7420746f206265206b696c6c6564202866616c7365292c206f72590120207472616e736665722065766572797468696e6720657863657074206174206c6561737420746865206578697374656e7469616c206465706f7369742c2077686963682077696c6c2067756172616e74656520746f9c20206b656570207468652073656e646572206163636f756e7420616c697665202874727565292e3c666f7263655f756e7265736572766508010c77686ffd0201504163636f756e7449644c6f6f6b75704f663c543e000118616d6f756e74180128543a3a42616c616e636500050cb0556e7265736572766520736f6d652062616c616e63652066726f6d2061207573657220627920666f7263652e006c43616e206f6e6c792062652063616c6c656420627920524f4f542e40757067726164655f6163636f756e747304010c77686fed0201445665633c543a3a4163636f756e7449643e0006207055706772616465206120737065636966696564206163636f756e742e00742d20606f726967696e603a204d75737420626520605369676e6564602e902d206077686f603a20546865206163636f756e7420746f2062652075706772616465642e005501546869732077696c6c20776169766520746865207472616e73616374696f6e20666565206966206174206c6561737420616c6c2062757420313025206f6620746865206163636f756e7473206e656564656420746f410162652075706772616465642e20285765206c657420736f6d65206e6f74206861766520746f206265207570677261646564206a75737420696e206f7264657220746f20616c6c6f7720666f722074686558706f73736962696c697479206f6620636875726e292e44666f7263655f7365745f62616c616e636508010c77686ffd0201504163636f756e7449644c6f6f6b75704f663c543e0001206e65775f66726565c00128543a3a42616c616e636500080cac5365742074686520726567756c61722062616c616e6365206f66206120676976656e206163636f756e742e00b0546865206469737061746368206f726967696e20666f7220746869732063616c6c2069732060726f6f74602e6c666f7263655f61646a7573745f746f74616c5f69737375616e6365080124646972656374696f6e2104014c41646a7573746d656e74446972656374696f6e00011464656c7461c00128543a3a42616c616e6365000914b841646a7573742074686520746f74616c2069737375616e636520696e20612073617475726174696e67207761792e00fc43616e206f6e6c792062652063616c6c656420627920726f6f7420616e6420616c77617973206e65656473206120706f736974697665206064656c7461602e002423204578616d706c65106275726e08011476616c7565c00128543a3a42616c616e63650001286b6565705f616c697665200110626f6f6c000a1cfc4275726e2074686520737065636966696564206c697175696420667265652062616c616e63652066726f6d20746865206f726967696e206163636f756e742e002501496620746865206f726967696e2773206163636f756e7420656e64732075702062656c6f7720746865206578697374656e7469616c206465706f736974206173206120726573756c7409016f6620746865206275726e20616e6420606b6565705f616c697665602069732066616c73652c20746865206163636f756e742077696c6c206265207265617065642e005101556e6c696b652073656e64696e672066756e647320746f2061205f6275726e5f20616464726573732c207768696368206d6572656c79206d616b6573207468652066756e647320696e61636365737369626c652c21017468697320606275726e60206f7065726174696f6e2077696c6c2072656475636520746f74616c2069737375616e63652062792074686520616d6f756e74205f6275726e65645f2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e29040c3c70616c6c65745f74785f70617573651870616c6c65741043616c6c04045400010814706175736504012466756c6c5f6e616d65c901015052756e74696d6543616c6c4e616d654f663c543e00001034506175736520612063616c6c2e00b843616e206f6e6c792062652063616c6c6564206279205b60436f6e6669673a3a50617573654f726967696e605d2ec0456d69747320616e205b604576656e743a3a43616c6c506175736564605d206576656e74206f6e20737563636573732e1c756e70617573650401146964656e74c901015052756e74696d6543616c6c4e616d654f663c543e00011040556e2d706175736520612063616c6c2e00c043616e206f6e6c792062652063616c6c6564206279205b60436f6e6669673a3a556e70617573654f726967696e605d2ec8456d69747320616e205b604576656e743a3a43616c6c556e706175736564605d206576656e74206f6e20737563636573732e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e2d040c3870616c6c65745f7574696c6974791870616c6c65741043616c6c04045400012014626174636804011463616c6c733104017c5665633c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e0000487c53656e642061206261746368206f662064697370617463682063616c6c732e00b04d61792062652063616c6c65642066726f6d20616e79206f726967696e2065786365707420604e6f6e65602e005d012d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e20546865206e756d626572206f662063616c6c206d757374206e6f74390120206578636565642074686520636f6e7374616e743a2060626174636865645f63616c6c735f6c696d6974602028617661696c61626c6520696e20636f6e7374616e74206d65746164617461292e0055014966206f726967696e20697320726f6f74207468656e207468652063616c6c7320617265206469737061746368656420776974686f757420636865636b696e67206f726967696e2066696c7465722e202854686973ec696e636c7564657320627970617373696e6720606672616d655f73797374656d3a3a436f6e6669673a3a4261736543616c6c46696c74657260292e0034232320436f6d706c6578697479d02d204f284329207768657265204320697320746865206e756d626572206f662063616c6c7320746f20626520626174636865642e005501546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732e20546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e31016576656e74206973206465706f73697465642e20496620612063616c6c206661696c656420616e64207468652062617463682077617320696e7465727275707465642c207468656e207468655501604261746368496e74657272757074656460206576656e74206973206465706f73697465642c20616c6f6e67207769746820746865206e756d626572206f66207375636365737366756c2063616c6c73206d6164654d01616e6420746865206572726f72206f6620746865206661696c65642063616c6c2e20496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c65746564604c6576656e74206973206465706f73697465642e3461735f64657269766174697665080114696e6465789c010c75313600011063616c6cf502017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000134dc53656e6420612063616c6c207468726f75676820616e20696e64657865642070736575646f6e796d206f66207468652073656e6465722e00550146696c7465722066726f6d206f726967696e206172652070617373656420616c6f6e672e205468652063616c6c2077696c6c2062652064697370617463686564207769746820616e206f726967696e207768696368bc757365207468652073616d652066696c74657220617320746865206f726967696e206f6620746869732063616c6c2e0045014e4f54453a20496620796f75206e65656420746f20656e73757265207468617420616e79206163636f756e742d62617365642066696c746572696e67206973206e6f7420686f6e6f7265642028692e652e61016265636175736520796f7520657870656374206070726f78796020746f2068617665206265656e2075736564207072696f7220696e207468652063616c6c20737461636b20616e6420796f7520646f206e6f742077616e7451017468652063616c6c207265737472696374696f6e7320746f206170706c7920746f20616e79207375622d6163636f756e7473292c207468656e20757365206061735f6d756c74695f7468726573686f6c645f31607c696e20746865204d756c74697369672070616c6c657420696e73746561642e00f44e4f54453a205072696f7220746f2076657273696f6e202a31322c2074686973207761732063616c6c6564206061735f6c696d697465645f737562602e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e2462617463685f616c6c04011463616c6c733104017c5665633c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000234ec53656e642061206261746368206f662064697370617463682063616c6c7320616e642061746f6d6963616c6c792065786563757465207468656d2e21015468652077686f6c65207472616e73616374696f6e2077696c6c20726f6c6c6261636b20616e64206661696c20696620616e79206f66207468652063616c6c73206661696c65642e00b04d61792062652063616c6c65642066726f6d20616e79206f726967696e2065786365707420604e6f6e65602e005d012d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e20546865206e756d626572206f662063616c6c206d757374206e6f74390120206578636565642074686520636f6e7374616e743a2060626174636865645f63616c6c735f6c696d6974602028617661696c61626c6520696e20636f6e7374616e74206d65746164617461292e0055014966206f726967696e20697320726f6f74207468656e207468652063616c6c7320617265206469737061746368656420776974686f757420636865636b696e67206f726967696e2066696c7465722e202854686973ec696e636c7564657320627970617373696e6720606672616d655f73797374656d3a3a436f6e6669673a3a4261736543616c6c46696c74657260292e0034232320436f6d706c6578697479d02d204f284329207768657265204320697320746865206e756d626572206f662063616c6c7320746f20626520626174636865642e2c64697370617463685f617308012461735f6f726967696ee9010154426f783c543a3a50616c6c6574734f726967696e3e00011063616c6cf502017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000318c84469737061746368657320612066756e6374696f6e2063616c6c207769746820612070726f7669646564206f726967696e2e00c4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f2e0034232320436f6d706c65786974791c2d204f2831292e2c666f7263655f626174636804011463616c6c733104017c5665633c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e0004347c53656e642061206261746368206f662064697370617463682063616c6c732ed4556e6c696b6520606261746368602c20697420616c6c6f7773206572726f727320616e6420776f6e277420696e746572727570742e00b04d61792062652063616c6c65642066726f6d20616e79206f726967696e2065786365707420604e6f6e65602e005d012d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e20546865206e756d626572206f662063616c6c206d757374206e6f74390120206578636565642074686520636f6e7374616e743a2060626174636865645f63616c6c735f6c696d6974602028617661696c61626c6520696e20636f6e7374616e74206d65746164617461292e004d014966206f726967696e20697320726f6f74207468656e207468652063616c6c732061726520646973706174636820776974686f757420636865636b696e67206f726967696e2066696c7465722e202854686973ec696e636c7564657320627970617373696e6720606672616d655f73797374656d3a3a436f6e6669673a3a4261736543616c6c46696c74657260292e0034232320436f6d706c6578697479d02d204f284329207768657265204320697320746865206e756d626572206f662063616c6c7320746f20626520626174636865642e2c776974685f77656967687408011063616c6cf502017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000118776569676874280118576569676874000518c4446973706174636820612066756e6374696f6e2063616c6c2077697468206120737065636966696564207765696768742e002d01546869732066756e6374696f6e20646f6573206e6f7420636865636b2074686520776569676874206f66207468652063616c6c2c20616e6420696e737465616420616c6c6f777320746865b8526f6f74206f726967696e20746f20737065636966792074686520776569676874206f66207468652063616c6c2e00c4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f2e1c69665f656c73650801106d61696ef502017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00012066616c6c6261636bf502017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00065c1501446973706174636820612066616c6c6261636b2063616c6c20696e20746865206576656e7420746865206d61696e2063616c6c206661696c7320746f20657865637574652eb04d61792062652063616c6c65642066726f6d20616e79206f726967696e2065786365707420604e6f6e65602e00e4546869732066756e6374696f6e20666972737420617474656d70747320746f2064697370617463682074686520606d61696e602063616c6c2ed449662074686520606d61696e602063616c6c206661696c732c20746865206066616c6c6261636b6020697320617474656d7465642e15016966207468652066616c6c6261636b206973207375636365737366756c6c7920646973706174636865642c207468652077656967687473206f6620626f74682063616c6c73250161726520616363756d756c6174656420616e6420616e206576656e7420636f6e7461696e696e6720746865206d61696e2063616c6c206572726f72206973206465706f73697465642e00dc496e20746865206576656e74206f6620612066616c6c6261636b206661696c757265207468652077686f6c652063616c6c206661696c7368776974682074686520776569676874732072657475726e65642e0041012d20606d61696e603a20546865206d61696e2063616c6c20746f20626520646973706174636865642e205468697320697320746865207072696d61727920616374696f6e20746f20657865637574652e3d012d206066616c6c6261636b603a205468652066616c6c6261636b2063616c6c20746f206265206469737061746368656420696e20636173652074686520606d61696e602063616c6c206661696c732e00442323204469737061746368204c6f67696341012d20496620746865206f726967696e2069732060726f6f74602c20626f746820746865206d61696e20616e642066616c6c6261636b2063616c6c732061726520657865637574656420776974686f75747820206170706c79696e6720616e79206f726967696e2066696c746572732e49012d20496620746865206f726967696e206973206e6f742060726f6f74602c20746865206f726967696e2066696c746572206973206170706c69656420746f20626f74682074686520606d61696e6020616e644c20206066616c6c6261636b602063616c6c732e002c232320557365204361736559012d20536f6d6520757365206361736573206d6967687420696e766f6c7665207375626d697474696e672061206062617463686020747970652063616c6c20696e20656974686572206d61696e2c2066616c6c6261636b2820206f7220626f74682e5064697370617463685f61735f66616c6c69626c6508012461735f6f726967696ee9010154426f783c543a3a50616c6c6574734f726967696e3e00011063616c6cf502017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000714c84469737061746368657320612066756e6374696f6e2063616c6c207769746820612070726f7669646564206f726967696e2e005101416c6d6f7374207468652073616d65206173205b6050616c6c65743a3a64697370617463685f6173605d2062757420666f72776172647320616e79206572726f72206f662074686520696e6e65722063616c6c2e00c4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e3104000002f5020035040c2c70616c6c65745f7375646f1870616c6c65741043616c6c040454000114107375646f04011063616c6cf502017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000004350141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e547375646f5f756e636865636b65645f77656967687408011063616c6cf502017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000118776569676874280118576569676874000114350141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e2d01546869732066756e6374696f6e20646f6573206e6f7420636865636b2074686520776569676874206f66207468652063616c6c2c20616e6420696e737465616420616c6c6f777320746865b05375646f207573657220746f20737065636966792074686520776569676874206f66207468652063616c6c2e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e1c7365745f6b657904010c6e6577fd0201504163636f756e7449644c6f6f6b75704f663c543e0002085d0141757468656e74696361746573207468652063757272656e74207375646f206b657920616e6420736574732074686520676976656e204163636f756e7449642028606e6577602920617320746865206e6577207375646f106b65792e1c7375646f5f617308010c77686ffd0201504163636f756e7449644c6f6f6b75704f663c543e00011063616c6cf502017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e0003104d0141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c207769746820605369676e656460206f726967696e2066726f6d406120676976656e206163636f756e742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e2872656d6f76655f6b657900040c845065726d616e656e746c792072656d6f76657320746865207375646f206b65792e006c2a2a546869732063616e6e6f7420626520756e2d646f6e652e2a2a040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e39040c3c70616c6c65745f74726561737572791870616c6c65741043616c6c040454000108246275795f626f6e64730801207661756c745f696410011c5661756c744964000114626f6e6473100114426f6e647300040c984275792077686f6c65206031204152474f4e6020626f6e647320666f722061207661756c742e00d85468652070757263686173652065697468657220656e7465727320746865206163636570746564206c697374206f72206661696c732e486c69717569646174655f626f6e645f6c6f7404012c626f6e645f6c6f745f6964300124426f6e644c6f74496400050c704c6971756964617465206f6e652066756c6c20626f6e64206c6f742e001d01546865206c6f742073746f70732070617274696369706174696e67207269676874206177617920616e642069732072656c6561736564206166746572207468652064656c61792e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e3d040c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c65741043616c6c040454000118207265676973746572040130726567697374726174696f6e4104013c526567697374726174696f6e3c543e00000c31015265676973746572207661756c742c206d696e696e672066756e64696e672c20616e6420626f74206163636f756e747320666f7220616e206f7065726174696f6e616c206163636f756e742eec416e79206163636f756e7420696e2074686520726567697374726174696f6e206d6179207375626d697420746865207472616e73616374696f6e2e4d014966206120726566657272616c2070726f6f662069732070726f76696465642c2074686520726567697374726174696f6e207265636f726473207468652073706f6e736f722072656c6174696f6e736869702e447365745f7265776172645f636f6e66696708016c6f7065726174696f6e616c5f726566657272616c5f726577617264180128543a3a42616c616e6365000154726566657272616c5f626f6e75735f726577617264180128543a3a42616c616e6365000204bc5570646174652072657761726420616d6f756e747320666f72206f7065726174696f6e616c206163636f756e74732e48666f7263655f7365745f70726f67726573730c01146f776e6572000130543a3a4163636f756e7449640001147061746368590401904f7065726174696f6e616c50726f677265737350617463683c543a3a42616c616e63653e00016c7570646174655f6f7065726174696f6e616c5f70726f6772657373200110626f6f6c000304e4466f7263652d757064617465206f7065726174696f6e616c2070726f6772657373206d61726b65727320666f7220616e206163636f756e742e807365745f656e637279707465645f7365727665725f666f725f73706f6e73656508011c73706f6e736565000130543a3a4163636f756e744964000140656e637279707465645f73657276657238011c5665633c75383e000404550153746f726520616e206f706171756520656e637279707465642073706f6e736f7220736572766572207061796c6f616420666f7220612073706f6e736f726564206f7065726174696f6e616c206163636f756e742e2061637469766174650005040901416374697661746520616e20656c696769626c65206f7065726174696f6e616c206163636f756e742066726f6d20616e79206d616e61676564206163636f756e742e34636c61696d5f72657761726473040118616d6f756e74180128543a3a42616c616e6365000604e4436c61696d2070656e64696e67206f7065726174696f6e616c207265776172647320746f20616e79206d616e61676564206163636f756e742e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e41040c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c657430526567697374726174696f6e040454000104085631040045040144526567697374726174696f6e56313c543e0000000045040c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c657438526567697374726174696f6e5631040454000028014c6f7065726174696f6e616c5f6163636f756e74000130543a3a4163636f756e744964000144656e6372797074696f6e5f7075626b6579490401584f7061717565456e6372797074696f6e5075626b65790001646f7065726174696f6e616c5f6163636f756e745f70726f6f664d0401544163636f756e744f776e65727368697050726f6f660001347661756c745f6163636f756e74000130543a3a4163636f756e7449640001586d696e696e675f66756e64696e675f6163636f756e74000130543a3a4163636f756e7449640001486d696e696e675f626f745f6163636f756e74000130543a3a4163636f756e74496400014c7661756c745f6163636f756e745f70726f6f664d0401544163636f756e744f776e65727368697050726f6f660001706d696e696e675f66756e64696e675f6163636f756e745f70726f6f664d0401544163636f756e744f776e65727368697050726f6f660001606d696e696e675f626f745f6163636f756e745f70726f6f664d0401544163636f756e744f776e65727368697050726f6f66000138726566657272616c5f70726f6f665104018c4f7074696f6e3c526566657272616c50726f6f663c543a3a4163636f756e7449643e3e000049040c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c6574584f7061717565456e6372797074696f6e5075626b6579000004000401205b75383b2033325d00004d040c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c6574544163636f756e744f776e65727368697050726f6f6600000401247369676e61747572650d0401245369676e61747572650000510404184f7074696f6e0404540155040108104e6f6e6500000010536f6d6504005504000001000055040c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c657434526566657272616c50726f6f6604244163636f756e744964010000140134726566657272616c5f636f646504013c737232353531393a3a5075626c6963000148726566657272616c5f7369676e6174757265b5030148737232353531393a3a5369676e617475726500011c73706f6e736f720001244163636f756e744964000140657870697265735f61745f6672616d652c011c4672616d65496400014473706f6e736f725f7369676e61747572650d0401245369676e6174757265000059040c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c6574604f7065726174696f6e616c50726f67726573735061746368041c42616c616e63650118001401506861735f756e69737761705f7472616e736665725d0401304f7074696f6e3c626f6f6c3e0001347661756c745f637265617465645d0401304f7074696f6e3c626f6f6c3e00017c6861735f74726561737572795f706f6f6c5f70617274696369706174696f6e5d0401304f7074696f6e3c626f6f6c3e0001586f627365727665645f626974636f696e5f746f74616c8501013c4f7074696f6e3c42616c616e63653e0001686f627365727665645f6d696e696e675f736561745f746f74616c7102012c4f7074696f6e3c7533323e00005d0404184f7074696f6e04045401200108104e6f6e6500000010536f6d65040020000001000061040c6070616c6c65745f657468657265756d5f76657269666965721870616c6c65741043616c6c04045400010c40666f7263655f636865636b706f696e7408011875706461746565040154426f783c436865636b706f696e745570646174653e000134666f726b5f76657273696f6e7395040130466f726b56657273696f6e7300000841015573656420666f722070616c6c657420696e697469616c697a6174696f6e20616e64206c6967687420636c69656e7420726573657474696e672e204e6565647320746f2062652063616c6c65642062794074686520726f6f74206f726967696e2e187375626d69740401187570646174659d04012c426f783c5570646174653e00010c35015375626d6974732061206e65772066696e616c697a656420626561636f6e20686561646572207570646174652e2054686520757064617465206d617920636f6e7461696e20746865206e657874450173796e6320636f6d6d697474656520616e6420616e20657865637574696f6e20686561646572207769746e65737320666f72207468652066696e616c697a656420626561636f6e2068656164657220697424616476616e6365732e487365745f6f7065726174696e675f6d6f64650401106d6f6465fd01014842617369634f7065726174696e674d6f6465000304050148616c74206f7220726573756d6520616c6c2070616c6c6574206f7065726174696f6e732e204d6179206f6e6c792062652063616c6c656420627920726f6f742e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e65040c6070616c6c65745f657468657265756d5f766572696669657214747970657340436865636b706f696e74557064617465000014011868656164657269040130426561636f6e48656164657200015863757272656e745f73796e635f636f6d6d69747465656d04013453796e63436f6d6d697474656500017463757272656e745f73796e635f636f6d6d69747465655f6272616e63688104012c4272616e636850726f6f6600013c76616c696461746f72735f726f6f7434011048323536000158657865637574696f6e5f6865616465725f70726f6f6685040150457865637574696f6e48656164657250726f6f66000069040c70736e6f776272696467655f626561636f6e5f7072696d69746976657314747970657330426561636f6e4865616465720000140110736c6f7430010c75363400013870726f706f7365725f696e64657830013856616c696461746f72496e64657800012c706172656e745f726f6f743401104832353600012873746174655f726f6f7434011048323536000124626f64795f726f6f743401104832353600006d040c6070616c6c65745f657468657265756d5f76657269666965721474797065733453796e63436f6d6d6974746565000008011c7075626b657973710401f8426f756e6465645665633c5075626c69634b65792c20436f6e73745533323c7b2053594e435f434f4d4d49545445455f424f554e445f53495a45207d3e3e0001406167677265676174655f7075626b6579750401245075626c69634b6579000071040c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540175040453000004007d0401185665633c543e000075040c70736e6f776272696467655f626561636f6e5f7072696d697469766573147479706573245075626c69634b657900000400790401445b75383b205055424b45595f53495a455d000079040000033000000008007d0400000275040081040c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401340453000004002d0201185665633c543e000085040c6070616c6c65745f657468657265756d5f766572696669657214747970657350457865637574696f6e48656164657250726f6f660000080140657865637574696f6e5f6865616465728904017c56657273696f6e6564457865637574696f6e5061796c6f6164486561646572000140657865637574696f6e5f6272616e63688104012c4272616e636850726f6f66000089040c70736e6f776272696467655f626561636f6e5f7072696d6974697665731474797065737c56657273696f6e6564457865637574696f6e5061796c6f61644865616465720001081c436170656c6c6104008d040158457865637574696f6e5061796c6f61644865616465720000001444656e656204009104017464656e65623a3a457865637574696f6e5061796c6f6164486561646572000100008d040c70736e6f776272696467655f626561636f6e5f7072696d69746976657314747970657358457865637574696f6e5061796c6f616448656164657200003c012c706172656e745f68617368340110483235360001346665655f726563697069656e740d0201104831363000012873746174655f726f6f743401104832353600013472656365697074735f726f6f74340110483235360001286c6f67735f626c6f6f6d38011c5665633c75383e00012c707265765f72616e64616f34011048323536000130626c6f636b5f6e756d62657230010c7536340001246761735f6c696d697430010c7536340001206761735f7573656430010c75363400012474696d657374616d7030010c75363400012865787472615f6461746138011c5665633c75383e000140626173655f6665655f7065725f676173ad02011055323536000128626c6f636b5f68617368340110483235360001447472616e73616374696f6e735f726f6f74340110483235360001407769746864726177616c735f726f6f7434011048323536000091041070736e6f776272696467655f626561636f6e5f7072696d6974697665731474797065731464656e656258457865637574696f6e5061796c6f6164486561646572000044012c706172656e745f68617368340110483235360001346665655f726563697069656e740d0201104831363000012873746174655f726f6f743401104832353600013472656365697074735f726f6f74340110483235360001286c6f67735f626c6f6f6d38011c5665633c75383e00012c707265765f72616e64616f34011048323536000130626c6f636b5f6e756d62657230010c7536340001246761735f6c696d697430010c7536340001206761735f7573656430010c75363400012474696d657374616d7030010c75363400012865787472615f6461746138011c5665633c75383e000140626173655f6665655f7065725f676173ad02011055323536000128626c6f636b5f68617368340110483235360001447472616e73616374696f6e735f726f6f74340110483235360001407769746864726177616c735f726f6f7434011048323536000134626c6f625f6761735f7573656430010c75363400013c6578636573735f626c6f625f67617330010c753634000095040c6070616c6c65745f657468657265756d5f766572696669657214747970657330466f726b56657273696f6e7300001c011c67656e6573697399040110466f726b000118616c7461697299040110466f726b00012462656c6c617472697899040110466f726b00011c636170656c6c6199040110466f726b00011464656e656299040110466f726b00011c656c656374726199040110466f726b00011066756c7599040110466f726b000099040c6070616c6c65745f657468657265756d5f766572696669657214747970657310466f726b000008011c76657273696f6e48012c466f726b56657273696f6e00011465706f63682c010c75363400009d040c6070616c6c65745f657468657265756d5f76657269666965721474797065731855706461746500001c013c61747465737465645f68656164657269040130426561636f6e48656164657200013873796e635f616767726567617465a104013453796e634167677265676174650001387369676e61747572655f736c6f742c010c7536340001686e6578745f73796e635f636f6d6d69747465655f757064617465b104017c4f7074696f6e3c4e65787453796e63436f6d6d69747465655570646174653e00014066696e616c697a65645f68656164657269040130426561636f6e48656164657200013c66696e616c6974795f6272616e63688104012c4272616e636850726f6f66000158657865637574696f6e5f6865616465725f70726f6f6685040150457865637574696f6e48656164657250726f6f660000a1040c6070616c6c65745f657468657265756d5f76657269666965721474797065733453796e63416767726567617465000008014c73796e635f636f6d6d69747465655f62697473a50401f0426f756e6465645665633c75382c20436f6e73745533323c7b2053594e435f434f4d4d49545445455f424954535f424f554e445f53495a45207d3e3e00016073796e635f636f6d6d69747465655f7369676e6174757265a90401245369676e61747572650000a5040c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e0000a9040c70736e6f776272696467655f626561636f6e5f7072696d697469766573147479706573245369676e617475726500000400ad0401505b75383b205349474e41545552455f53495a455d0000ad04000003600000000800b10404184f7074696f6e04045401b5040108104e6f6e6500000010536f6d650400b5040000010000b5040c6070616c6c65745f657468657265756d5f76657269666965721474797065735c4e65787453796e63436f6d6d6974746565557064617465000008014c6e6578745f73796e635f636f6d6d69747465656d04013453796e63436f6d6d69747465650001686e6578745f73796e635f636f6d6d69747465655f6272616e63688104012c4272616e636850726f6f660000b9040c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c65741043616c6c040454000134407365745f636861696e5f636f6e666967080130736f757263655f636861696e0502012c536f75726365436861696e000118636f6e666967bd04012c436861696e436f6e66696700000084666f7263655f7365745f676c6f62616c5f69737375616e63655f636f756e63696c0c014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e00012c61667465725f6e6f6e63652c0164436f756e63696c417070726f76616c51756575654e6f6e63650001486d656d6265725f6163636f756e745f696473c10401b8426f756e6465645665633c543a3a4163636f756e7449642c20543a3a4d6178436f756e63696c4d656d626572733e0001003470617573655f67617465776179040130736f757263655f636861696e0502012c536f75726365436861696e0002003c756e70617573655f67617465776179040130736f757263655f636861696e0502012c536f75726365436861696e0003008c7365745f6d696e696d756d5f6d696e74696e675f617574686f726974795f76616c756508014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e0001346d696e696d756d5f76616c7565c00128543a3a42616c616e6365000400c87365745f6d696e74696e675f617574686f726974795f61637469766174696f6e5f72657061796d656e745f70726963696e6708014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e00011c70726963696e67c50401b44d696e74696e67417574686f7269747941637469766174696f6e52657061796d656e7450726963696e673c543e0005005c72656769737465725f636f756e63696c5f7369676e65720c014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e00012c7369676e696e675f6b65790d020110483136300001247369676e61747572651104013c4b656363616b5369676e617475726500060054617070726f76655f71756575655f656e747269657308014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e0001287369676e617475726573c90401e0426f756e6465645665633c4b656363616b5369676e61747572652c20543a3a4d61785175657565417070726f76616c7350657243616c6c3e0007005870726f76655f676174657761795f61637469766974790c0130736f757263655f636861696e0502012c536f75726365436861696e00017c70726576696f75735f676174657761795f61637469766974795f6e6f6e63652c01504761746577617941637469766974794e6f6e636500012c70726f6f665f6261746368d104017047617465776179416374697669747950726f6f6642617463683c543e0008006872656769737465725f6d696e74696e675f617574686f7269747914014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e00015c64657374696e6174696f6e5f7369676e696e675f6b65790d020110483136300001247369676e61747572651104013c4b656363616b5369676e617475726500014c6d6963726f676f6e5f636f6c6c61746572616cc00128543a3a42616c616e636500014c6d6963726f6e6f745f636f6c6c61746572616cc00128543a3a42616c616e636500090070646561637469766174655f6d696e74696e675f617574686f7269747908015c64657374696e6174696f6e5f7369676e696e675f6b65790d020110483136300001247369676e61747572651104013c4b656363616b5369676e6174757265000a00307472616e736665725f6f757410014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e00011461737365741502012441737365744b696e6400014c64657374696e6174696f6e5f6163636f756e740d02011048313630000118616d6f756e74c00128543a3a42616c616e6365000b0058636f6c6c61746572616c697a655f7472616e7366657210012c7472616e736665725f6964340110483235360001247369676e61747572651104013c4b656363616b5369676e617475726500014c6d6963726f676f6e5f636f6c6c61746572616cc00128543a3a42616c616e636500014c6d6963726f6e6f745f636f6c6c61746572616cc00128543a3a42616c616e6365000c00040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ebd040c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c65742c436861696e436f6e6669670001040c45766d100120636861696e5f69642c010c75363400011c676174657761790d0201104831363000012c6172676f6e5f746f6b656e0d020110483136300001346172676f6e6f745f746f6b656e0d0201104831363000000000c1040c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540100045300000400ed0201185665633c543e0000c5040c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c6574a84d696e74696e67417574686f7269747941637469766174696f6e52657061796d656e7450726963696e67040454000010014c61637469766174696f6e5f6761735f636f7374c00110753132380001487369676e61747572655f6761735f636f7374c0011075313238000154657374696d617465645f7765695f7065725f676173c001107531323800016c657374696d617465645f6d6963726f676f6e735f7065725f657468180128543a3a42616c616e63650000c9040c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454011104045300000400cd0401185665633c543e0000cd04000002110400d1040c406172676f6e5f7072696d69746976657320657468657265756d70457468657265756d526563656970744c6f6750726f6f66426174636808384d617850726f6f66426c6f636b7300384d6178526563656970744c6f67730000080154657865637574696f6e5f626c6f636b5f70726f6f66d504016c457468657265756d457865637574696f6e426c6f636b50726f6f66000118626c6f636b73e904012501426f756e6465645665633c457468657265756d526563656970744c6f6750726f6f66426c6f636b3c4d6178526563656970744c6f67733e2c204d617850726f6f66426c6f636b730a3e0000d5040c406172676f6e5f7072696d69746976657320657468657265756d6c457468657265756d457865637574696f6e426c6f636b50726f6f660000080144616e63686f725f626c6f636b5f68617368340110483235360001747461726765745f746f5f616e63686f725f6865616465725f636861696ed9040170457468657265756d457865637574696f6e486561646572436861696e0000d9040c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401dd04045300000400e50401185665633c543e0000dd040c406172676f6e5f7072696d69746976657320657468657265756d5c457468657265756d457865637574696f6e486561646572000004010c726c70e1040168457468657265756d457865637574696f6e486561646572526c700000e1040c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e0000e504000002dd0400e9040c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401ed04045300000400290501185665633c543e0000ed040c406172676f6e5f7072696d69746976657320657468657265756d70457468657265756d526563656970744c6f6750726f6f66426c6f636b04384d6178526563656970744c6f677300000c014c7461726765745f626c6f636b5f6e756d6265722c014c457468657265756d426c6f636b4e756d626572000134726563656970745f70726f6f66f1040170457468657265756d436f6d62696e65645265636569707450726f6f66000130726563656970745f6c6f6773110501b8426f756e6465645665633c457468657265756d526563656970744c6f672c204d6178526563656970744c6f67733e0000f1040c406172676f6e5f7072696d69746976657320657468657265756d70457468657265756d436f6d62696e65645265636569707450726f6f6600000801146e6f646573f5040184457468657265756d436f6d62696e65645265636569707450726f6f664e6f6465730001207265636569707473fd040190457468657265756d436f6d62696e65645265636569707450726f6f6652656365697074730000f5040c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401e104045300000400f90401185665633c543e0000f904000002e10400fd040c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540101050453000004000d0501185665633c543e000001050c406172676f6e5f7072696d69746976657320657468657265756d6c457468657265756d5265636569707450726f6f665265636569707400000801447472616e73616374696f6e5f696e6465782c010c7536340001306e6f64655f696e64657865730505017c457468657265756d5265636569707450726f6f664e6f6465496e6465786573000005050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454019c045300000400090501185665633c543e000009050000029c000d0500000201050011050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454011505045300000400250501185665633c543e000015050c406172676f6e5f7072696d69746976657320657468657265756d48457468657265756d526563656970744c6f6700000801447472616e73616374696f6e5f696e6465782c010c7536340001246576656e745f6c6f671905012c457468657265756d4c6f67000019050c406172676f6e5f7072696d69746976657320657468657265756d2c457468657265756d4c6f6700000c011c616464726573730d02011048313630000118746f706963731d050144457468657265756d4c6f67546f70696373000110646174612105013c457468657265756d4c6f674461746100001d050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401340453000004002d0201185665633c543e000021050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e000025050000021505002905000002ed04002d0504184f7074696f6e04045401880108104e6f6e6500000010536f6d65040088000001000031050c3c70616c6c65745f6d756c74697369671870616c6c6574144572726f72040454000138404d696e696d756d5468726573686f6c640000047c5468726573686f6c64206d7573742062652032206f7220677265617465722e3c416c7265616479417070726f766564000104ac43616c6c20697320616c726561647920617070726f7665642062792074686973207369676e61746f72792e444e6f417070726f76616c734e65656465640002049c43616c6c20646f65736e2774206e65656420616e7920286d6f72652920617070726f76616c732e44546f6f4665775369676e61746f72696573000304a854686572652061726520746f6f20666577207369676e61746f7269657320696e20746865206c6973742e48546f6f4d616e795369676e61746f72696573000404ac54686572652061726520746f6f206d616e79207369676e61746f7269657320696e20746865206c6973742e545369676e61746f726965734f75744f664f726465720005040d01546865207369676e61746f7269657320776572652070726f7669646564206f7574206f66206f726465723b20746865792073686f756c64206265206f7264657265642e4c53656e646572496e5369676e61746f726965730006040d015468652073656e6465722077617320636f6e7461696e656420696e20746865206f74686572207369676e61746f726965733b2069742073686f756c646e27742062652e204e6f74466f756e64000704a04d756c7469736967206f7065726174696f6e206e6f7420666f756e6420696e2073746f726167652e204e6f744f776e657200080851014f6e6c7920746865206163636f756e742074686174206f726967696e616c6c79206372656174656420746865206d756c74697369672069732061626c6520746f2063616e63656c206974206f722075706461746534697473206465706f736974732e2c4e6f54696d65706f696e740009041d014e6f2074696d65706f696e742077617320676976656e2c2079657420746865206d756c7469736967206f7065726174696f6e20697320616c726561647920756e6465727761792e3857726f6e6754696d65706f696e74000a042d014120646966666572656e742074696d65706f696e742077617320676976656e20746f20746865206d756c7469736967206f7065726174696f6e207468617420697320756e6465727761792e4c556e657870656374656454696d65706f696e74000b04f4412074696d65706f696e742077617320676976656e2c20796574206e6f206d756c7469736967206f7065726174696f6e20697320756e6465727761792e3c4d6178576569676874546f6f4c6f77000c04d0546865206d6178696d756d2077656967687420696e666f726d6174696f6e2070726f76696465642077617320746f6f206c6f772e34416c726561647953746f726564000d04a0546865206461746120746f2062652073746f72656420697320616c72656164792073746f7265642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e3505000004083905180039050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454013d05045300000400410501185665633c543e00003d05083070616c6c65745f70726f78793c50726f7879446566696e6974696f6e0c244163636f756e74496401002450726f78795479706501982c426c6f636b4e756d6265720110000c012064656c65676174650001244163636f756e74496400012870726f78795f7479706598012450726f78795479706500011464656c617910012c426c6f636b4e756d626572000041050000023d05004505000004084905180049050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454014d05045300000400510501185665633c543e00004d05083070616c6c65745f70726f787930416e6e6f756e63656d656e740c244163636f756e7449640100104861736801342c426c6f636b4e756d6265720110000c01107265616c0001244163636f756e74496400012463616c6c5f686173683401104861736800011868656967687410012c426c6f636b4e756d626572000051050000024d050055050c3070616c6c65745f70726f78791870616c6c6574144572726f720404540001201c546f6f4d616e79000004210154686572652061726520746f6f206d616e792070726f786965732072656769737465726564206f7220746f6f206d616e7920616e6e6f756e63656d656e74732070656e64696e672e204e6f74466f756e640001047450726f787920726567697374726174696f6e206e6f7420666f756e642e204e6f7450726f7879000204cc53656e646572206973206e6f7420612070726f7879206f6620746865206163636f756e7420746f2062652070726f786965642e2c556e70726f787961626c650003042101412063616c6c20776869636820697320696e636f6d70617469626c652077697468207468652070726f7879207479706527732066696c7465722077617320617474656d707465642e244475706c69636174650004046c4163636f756e7420697320616c726561647920612070726f78792e304e6f5065726d697373696f6e000504150143616c6c206d6179206e6f74206265206d6164652062792070726f78792062656361757365206974206d617920657363616c617465206974732070726976696c656765732e2c556e616e6e6f756e636564000604d0416e6e6f756e63656d656e742c206966206d61646520617420616c6c2c20776173206d61646520746f6f20726563656e746c792e2c4e6f53656c6650726f78790007046443616e6e6f74206164642073656c662061732070726f78792e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e59050c406172676f6e5f7072696d697469766573107469636b185469636b657200000801507469636b5f6475726174696f6e5f6d696c6c69732c010c7536340001746368616e6e656c5f686f6c645f65787069726174696f6e5f7469636b732c01105469636b00005d050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401340453000004002d0201185665633c543e000061050c3070616c6c65745f7469636b731870616c6c6574144572726f72040454000100048054686520604572726f726020656e756d206f6620746869732070616c6c65742e65050c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b013004560169050453000004007905013842547265654d61703c4b2c20563e000069050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454016d05045300000400750501185665633c543e00006d05084870616c6c65745f6d696e696e675f736c6f74444d696e65724e6f6e636553636f72696e6704045400001001146e6f6e6365ad020110553235360001386c6173745f77696e5f626c6f636b710201644f7074696f6e3c426c6f636b4e756d626572466f723c543e3e00014c626c6f636b735f776f6e5f696e5f6672616d659c010c7531360001786672616d655f73746172745f626c6f636b735f776f6e5f737572706c75737105010c693136000071050000050a0075050000026d05007905042042547265654d617008044b013004560169050004007d050000007d050000028105008105000004083069050085050000040830100089050c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b0100045601ac0453000004008d05013842547265654d61703c4b2c20563e00008d05042042547265654d617008044b0100045601ac0004009105000000910500000295050095050000040800ac0099050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454019d05045300000400a10501185665633c543e00009d050c406172676f6e5f7072696d69746976657328626c6f636b5f7365616c384d696e696e6742696453746174730000100128626964735f636f756e7410010c7533320001386269645f616d6f756e745f6d696e18011c42616c616e63650001386269645f616d6f756e745f6d617818011c42616c616e63650001386269645f616d6f756e745f73756d18011c42616c616e63650000a1050000029d0500a5050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540118045300000400a90501185665633c543e0000a9050000021800ad050c406172676f6e5f7072696d69746976657328626c6f636b5f7365616c404d696e696e67536c6f74436f6e66696700000c01887469636b735f6265666f72655f6269645f656e645f666f725f7672665f636c6f73652c01105469636b00014c7469636b735f6265747765656e5f736c6f74732c01105469636b000178736c6f745f62696464696e675f73746172745f61667465725f7469636b732c01105469636b0000b1050c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b013004560110045300000400b505013842547265654d61703c4b2c20563e0000b505042042547265654d617008044b013004560110000400b905000000b905000002850500bd050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540110045300000400c10501185665633c543e0000c1050000021000c5050c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b013004560130045300000400c905013842547265654d61703c4b2c20563e0000c905042042547265654d617008044b013004560130000400cd05000000cd05000002d10500d10500000408303000d5050c3473705f61726974686d65746963287065725f7468696e67731c50657263656e740000040008010875380000d9050c4870616c6c65745f6d696e696e675f736c6f741870616c6c6574144572726f7204045400012844536c6f744e6f7454616b696e67426964730000049842696464696e6720666f7220746865206e65787420636f686f72742068617320636c6f7365645c546f6f4d616e79426c6f636b52656769737472616e74730001048854686520636f686f727420726567697374726174696f6e206f766572666c6f7765646c496e73756666696369656e744f776e657273686970546f6b656e73000204f8546869732066756e64696e67206163636f756e7420646f6573206e6f7420686f6c6420746865206d696e696d756d206172676f6e6f7473206e656564656424426964546f6f4c6f77000304cc54686520676976656e206269642069736e2774206869676820656e6f75676820746f20626520696e2074686520636f686f72748443616e6e6f7452656769737465724f7665726c617070696e6753657373696f6e73000404c0416e206163636f756e742063616e206f6e6c792068617665206f6e652061637469766520726567697374726174696f6e6843616e6e6f744368616e676546756e64696e674163636f756e74000504f843616e6e6f742072652d726567697374657220616e206163636f756e742077697468206120646966666572656e742066756e64696e67206163636f756e7444496e73756666696369656e7446756e6473000604fc5468652066756e64696e67206163636f756e7420646f6573206e6f74206861766520656e6f7567682066756e647320746f20636f76657220746865206269644842696443616e6e6f7442655265647563656400070480546865206d696e696e67206269642063616e6e6f74206265207265647563656440496e76616c6964426964416d6f756e740008048842696473206d75737420626520696e20616c6c6f77656420696e6372656d656e747344556e7265636f76657261626c65486f6c640009049c546865206172676f6e6f7473206f6e20686f6c642063616e6e6f742062652072656c6561736564048054686520604572726f726020656e756d206f6620746869732070616c6c65742edd050c406172676f6e5f7072696d6974697665731c626974636f696e245574786f56616c7565000014011c7574786f5f69643001185574786f49640001347363726970745f7075626b6579e1050164426974636f696e436f7369676e5363726970745075626b65790001207361746f736869732c01205361746f7368697300014c7375626d69747465645f61745f6865696768742c0134426974636f696e48656967687400017077617463685f666f725f7370656e745f756e74696c5f6865696768742c0134426974636f696e4865696768740000e1050c406172676f6e5f7072696d6974697665731c626974636f696e64426974636f696e436f7369676e5363726970745075626b6579000104145032575348040130777363726970745f686173683401104832353600000000e5050c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b0130045601dd05045300000400e905013842547265654d61703c4b2c20563e0000e905042042547265654d617008044b0130045601dd05000400ed05000000ed05000002f10500f1050000040830dd0500f5050c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b01cc04560130045300000400f905013842547265654d61703c4b2c20563e0000f905042042547265654d617008044b01cc04560130000400fd05000000fd05000002010600010600000408cc300005060c406172676f6e5f7072696d6974697665731c626974636f696e38426974636f696e4e6574776f726b0001101c426974636f696e0000001c546573746e6574000100185369676e65740002001c526567746573740003000009060c5070616c6c65745f626974636f696e5f7574786f731870616c6c6574144572726f7204045400013c344e6f5065726d697373696f6e73000004bc4f6e6c7920616e204f7261636c65204f70657261746f722063616e20706572666f726d207468697320616374696f6e5c4e6f426974636f696e436f6e6669726d6564426c6f636b00010405014e6f204f7261636c652d70726f766964656420626974636f696e20626c6f636b20686173206265656e2070726f766964656420746f20746865206e6574776f726b64496e73756666696369656e74426974636f696e416d6f756e740002046c496e73756666696369656e7420626974636f696e20616d6f756e74604e6f426974636f696e507269636573417661696c61626c65000304a04e6f207072696365732061726520617661696c61626c6520746f206d696e7420626974636f696e73505363726970745075626b6579436f6e666c696374000404a05363726970745075624b657920697320616c7265616479206265696e672077616974656420666f72345574786f4e6f744c6f636b6564000504544c6f636b6564205574786f204e6f7420466f756e6458526564656d7074696f6e73556e617661696c61626c650006048c526564656d7074696f6e73206e6f742063757272656e746c7920617661696c61626c6560496e76616c6964426974636f696e53796e6348656967687400070494496e76616c696420626974636f696e2073796e632068656967687420617474656d7074656464426974636f696e4865696768744e6f74436f6e6669726d656400080480426974636f696e20686569676874206e6f7420636f6e6669726d656420796574404d61785574786f73457863656564656400090480546f6f206d616e79205554584f7320617265206265696e67207761746368656450496e76616c6964426974636f696e536372697074000a04644c6f636b696e672073637269707420686173206572726f72733c4475706c69636174655574786f4964000b04844475706c696361746564205574786f49642e20416c726561647920696e20757365644d617843616e6469646174655574786f734578636565646564000c04dc546f6f206d616e792063616e646964617465205554584f7320617265206265696e672073746f72656420666f722074686973206c6f636b405574786f4e6f7443616e646964617465000d04d0546865205554584f207265666572656e636520646f6573206e6f74206d617020746f20612063616e64696461746520656e747279444c6f636b416c726561647946756e646564000e04b854686973204c6f636b20616c72656164792068617320616e2061747461636865642066756e64696e67205554584f048054686520604572726f726020656e756d206f6620746869732070616c6c65742e0d060c406172676f6e5f7072696d697469766573147661756c74145661756c7408244163636f756e74496401001c42616c616e636501180044014c6f70657261746f725f6163636f756e745f69640001244163636f756e744964000174626974636f696e5f6c6f636b5f64656c65676174655f6163636f756e74bc01444f7074696f6e3c4163636f756e7449643e0001106e616d65490301444f7074696f6e3c5661756c744e616d653e0001546c6173745f6e616d655f6368616e67655f7469636b8d0101304f7074696f6e3c5469636b3e00013873656375726974697a6174696f6ec0011c42616c616e636500015473656375726974697a6174696f6e5f746172676574c0011c42616c616e636500015473656375726974697a6174696f6e5f6c6f636b6564c0011c42616c616e636500018473656375726974697a6174696f6e5f70656e64696e675f61637469766174696f6ec0011c42616c616e636500013c6c6f636b65645f7361746f736869732c01205361746f7368697300015073656375726974697a65645f7361746f736869732c01205361746f7368697300017c73656375726974697a6174696f6e5f72656c656173655f7363686564756c65110601d8426f756e64656442547265654d61703c426974636f696e4865696768742c2042616c616e63652c20436f6e73745533323c3336363e3e00015073656375726974697a6174696f6e5f726174696f3d03012446697865645531323800012469735f636c6f736564200110626f6f6c0001147465726d733903014c5661756c745465726d733c42616c616e63653e00013470656e64696e675f7465726d732106018c4f7074696f6e3c285469636b2c205661756c745465726d733c42616c616e63653e293e00012c6f70656e65645f7469636b2c01105469636b0001806f7065726174696f6e616c5f6d696e696d756d5f72656c656173655f7469636b8d0101304f7074696f6e3c5469636b3e000011060c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b0130045601180453000004001506013842547265654d61703c4b2c20563e00001506042042547265654d617008044b013004560118000400190600000019060000021d06001d0600000408301800210604184f7074696f6e0404540125060108104e6f6e6500000010536f6d650400250600000100002506000004083039030029060c406172676f6e5f7072696d697469766573147661756c74585661756c744172676f6e6f74436f6d6d69746d656e74041c42616c616e636501180008014c636f6d6d69747465645f6d6963726f6e6f7473c0011c42616c616e6365000150656e63756d62657265645f6d6963726f6e6f7473c0011c42616c616e636500002d06000004083106100031060c406172676f6e5f7072696d6974697665731c626974636f696e2c426974636f696e5850756200001801287075626c69635f6b65795d03015c436f6d70726573736564426974636f696e5075626b65790001146465707468350601087538000148706172656e745f66696e6765727072696e7448013c5850756246696e6765727072696e740001306368696c645f6e756d626572d4013c585075624368696c644e756d626572000128636861696e5f636f64650401205b75383b2033325d00011c6e6574776f726b3906012c4e6574776f726b4b696e6400003506000006080039060c406172676f6e5f7072696d6974697665731c626974636f696e2c4e6574776f726b4b696e64000108104d61696e0000001054657374000100003d060c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540110045300000400c10501185665633c543e000041060c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f7365743c426f756e646564425472656553657408045401300453000004004506012c42547265655365743c543e000045060420425472656553657404045401300004004906000000490600000230004d060000040810000051060c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f7365743c426f756e646564425472656553657408045401100453000004005506012c42547265655365743c543e00005506042042547265655365740404540110000400c10500000059060c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454015d06045300000400610601185665633c543e00005d060c3470616c6c65745f7661756c74731870616c6c6574445661756c744672616d65526576656e756504045400004001206672616d655f69642c011c4672616d654964000160626974636f696e5f6c6f636b5f6665655f726576656e7565c00128543a3a42616c616e6365000188626974636f696e5f6c6f636b5f6665655f636f75706f6e5f76616c75655f75736564c00128543a3a42616c616e6365000154626974636f696e5f6c6f636b735f63726561746564d4010c753332000190626974636f696e5f6c6f636b735f6e65775f6c69717569646974795f70726f6d69736564c00128543a3a42616c616e6365000180626974636f696e5f6c6f636b735f72656c65617365645f6c6971756964697479c00128543a3a42616c616e6365000170626974636f696e5f6c6f636b735f61646465645f7361746f736869732c01205361746f7368697300017c626974636f696e5f6c6f636b735f72656c65617365645f7361746f736869732c01205361746f7368697300016073656375726974697a6174696f6e5f616374697661746564c00128543a3a42616c616e636500016473656375726974697a6174696f6e5f72656c6f636b61626c65c00128543a3a42616c616e636500013873656375726974697a6174696f6ec00128543a3a42616c616e636500015c74726561737572795f7661756c745f6561726e696e6773c00128543a3a42616c616e636500015c74726561737572795f746f74616c5f6561726e696e6773c00128543a3a42616c616e636500015874726561737572795f7661756c745f6361706974616cc00128543a3a42616c616e636500016474726561737572795f65787465726e616c5f6361706974616cc00128543a3a42616c616e636500014c756e636f6c6c65637465645f726576656e7565c00128543a3a42616c616e6365000061060000025d060065060c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540169060453000004006d0601185665633c543e000069060c3470616c6c65745f7661756c74731870616c6c657448526563656e74436170616369747944726f70081c42616c616e636501182c426c6f636b4e756d626572011000100130626c6f636b5f6e756d626572d4012c426c6f636b4e756d626572000154617661696c61626c655f6265666f72655f64726f70c0011c42616c616e6365000150617661696c61626c655f61667465725f64726f70c0011c42616c616e63650001506e6f5f6665655f6661696c757265735f75736564d4010c75333200006d0600000269060071060c3470616c6c65745f7661756c74731870616c6c6574144572726f72040454000180384e6f4d6f72655661756c744964730000049c496e7465726e616c6c792c20746865207661756c742069647320617265206d61786564206f757444496e73756666696369656e7446756e6473000104ec546865207573657220646f65736e2774206861766520656e6f7567682066756e647320746f20636f6d706c6574652074686973207265717565737458496e73756666696369656e745661756c7446756e647300020429015468657265206172656e277420656e6f7567682066756e647320696e20746865207661756c7420746f20636f766572207468652072657175657374656420626974636f696e206c6f636b684163636f756e7442656c6f774d696e696d756d42616c616e63650003045d015468652070726f706f736564207472616e73616374696f6e20776f756c642074616b6520746865206163636f756e742062656c6f7720746865206d696e696d756d20286578697374656e7469616c292062616c616e63652c5661756c74436c6f7365640004045054686973207661756c7420697320636c6f73656448496e76616c69645661756c74416d6f756e74000504dc46756e64696e6720776f756c6420726573756c7420696e20616e206f766572666c6f77206f66207468652062616c616e63652074797065845661756c74526564756374696f6e42656c6f7753656375726974697a6174696f6e00060439015468697320726564756374696f6e20696e207661756c742073656375726974697a6174696f6e20676f65732062656c6f772074686520616d6f756e7420616c726561647920636f6d6d697474656454496e76616c696453656375726974697a6174696f6e0007084101416e20696e76616c69642073656375726974697a6174696f6e2070657263656e74207761732070726f766964656420666f7220746865207661756c742e204e4f54453a2069742063616e6e6f742062655c64656372656173656420286f72206e6567617469766529585265757365645661756c74426974636f696e58707562000804bc546865207661756c7420626974636f696e20787075626b65792068617320616c7265616479206265656e207573656450496e76616c6964426974636f696e536372697074000904c854686520626974636f696e2073637269707420746f206c6f636b207468697320626974636f696e20686173206572726f727338496e76616c6964587075626b6579000a0460556e61626c6520746f206465636f646520787075626b65794057726f6e67587075624e6574776f726b000b044857726f6e672058707562204e6574776f726b34556e73616665587075626b6579000c040901546865205850756220697320756e7361666520746f2075736520696e2061207075626c696320626c6f636b636861696e2028616b612c20756e68617264656e65642970556e61626c65546f4465726976655661756c74587075624368696c64000d0478556e61626c6520746f2064657269766520787075626b6579206368696c645c426974636f696e436f6e76657273696f6e4661696c6564000e04b8426974636f696e20636f6e76657273696f6e20746f20636f6d70726573736564207075626b6579206661696c6564344e6f5065726d697373696f6e73000f0060486f6c64556e65787065637465646c794d6f64696669656400100044556e7265636f76657261626c65486f6c64001100345661756c744e6f74466f756e64001200445661756c744e6f745965744163746976650013046c546865207661756c74206973206e6f742079657420616374697665784e6f5661756c74426974636f696e5075626b657973417661696c61626c65001404884e6f205661756c74207075626c6963206b6579732061726520617661696c61626c65645465726d734d6f64696669636174696f6e4f766572666c6f77001504ec546865207465726d73206d6f64696669636174696f6e206c69737420636f756c64206e6f742068616e646c6520616e79206d6f7265206974656d736c5465726d734368616e6765416c72656164795363686564756c6564001604a45465726d732061726520616c7265616479207363686564756c656420746f206265206368616e67656434496e7465726e616c4572726f7200170494416e20696e7465726e616c2070726f63657373696e67206572726f72206f6363757272656488556e61626c65546f47656e65726174655661756c74426974636f696e5075626b6579001804b4556e61626c6520746f2067656e65726174652061206e6577207661756c7420626974636f696e207075626b65797446756e64696e674368616e6765416c72656164795363686564756c656400190494412066756e64696e67206368616e676520697320616c7265616479207363686564756c656440496e76616c69645661756c744e616d65001a0831015661756c74206e616d6573206d757374207374617274207769746820616e20757070657263617365204153434949206c657474657220616e64206f746865727769736520626520415343494934616c7068616e756d657269632e6c50656e64696e67436f7369676e734265666f7265436f6c6c656374001b04010141207661756c74206d75737420636c656172206f757420616c6c2070656e64696e6720636f7369676e73206265666f72652069742063616e20636f6c6c6563749c50656e64696e674f727068616e65645574786f436f7369676e734265666f7265436f6c6c656374001c041d0141207661756c74206d75737420636c656172206f757420616c6c2070656e64696e67206f727068616e20636f7369676e73206265666f72652069742063616e20636f6c6c6563748c4f766572647565436f6c6c656374426c6f636b6572734265666f7265436f6c6c656374001d044d0141207661756c74206d75737420636c656172206f757420616c6c206f7665726475652065787465726e616c20636f6c6c65637420626c6f636b657273206265666f72652069742063616e20636f6c6c6563742e584163636f756e74416c72656164794861735661756c74001e04d4416e206163636f756e74206d6179206f6e6c79206265206173736f636961746564207769746820612073696e676c65207661756c749c436f6d6d69747465644172676f6e6f747342656c6f77456e63756d62657265644261636b696e67001f045101436f6d6d6974746564204172676f6e6f74732063616e6e6f7420626520726564756365642062656c6f772074686520616d6f756e7420616c72656164792063726f7373636861696e2d656e63756d62657265642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e75060c5070616c6c65745f626974636f696e5f6c6f636b731870616c6c6574344c6f636b6564426974636f696e04045400005001207661756c745f6964d4011c5661756c7449640001486c69717569646974795f70726f6d69736564c00128543a3a42616c616e636500014c6c6f636b65645f7461726765745f7072696365c00128543a3a42616c616e63650001346f776e65725f6163636f756e74000130543a3a4163636f756e74496400015073656375726974697a6174696f6e5f726174696fe0012446697865645531323800013473656375726974795f66656573c00128543a3a42616c616e6365000140636f75706f6e5f706169645f66656573c00128543a3a42616c616e63650001207361746f736869732c01205361746f736869730001347574786f5f7361746f736869738d0101404f7074696f6e3c5361746f736869733e0001307661756c745f7075626b65795d03015c436f6d70726573736564426974636f696e5075626b65790001487661756c745f636c61696d5f7075626b65795d03015c436f6d70726573736564426974636f696e5075626b65790001487661756c745f787075625f736f7572636573790601cc285850756246696e6765727072696e742c20585075624368696c644e756d6265722c20585075624368696c644e756d626572290001306f776e65725f7075626b65795d03015c436f6d70726573736564426974636f696e5075626b65790001487661756c745f636c61696d5f6865696768742c0134426974636f696e4865696768740001446f70656e5f636c61696d5f6865696768742c0134426974636f696e486569676874000144637265617465645f61745f6865696768742c0134426974636f696e4865696768740001487574786f5f7363726970745f7075626b6579e1050164426974636f696e436f7369676e5363726970745075626b657900012469735f66756e646564200110626f6f6c00015066756e645f686f6c645f657874656e73696f6e73110601e4426f756e64656442547265654d61703c426974636f696e4865696768742c20543a3a42616c616e63652c20436f6e73745533323c3336363e3e000158637265617465645f61745f6172676f6e5f626c6f636bd40144426c6f636b4e756d626572466f723c543e000079060000040c481010007d060000040810300081060c5070616c6c65745f626974636f696e5f6c6f636b731870616c6c6574484c6f636b52656c6561736552657175657374041c42616c616e636501180018011c7574786f5f69642c01185574786f49640001207661756c745f6964d4011c5661756c74496400014c626974636f696e5f6e6574776f726b5f6665652c01205361746f73686973000140636f7369676e5f6475655f6672616d652c011c4672616d654964000140746f5f7363726970745f7075626b65796d03014c426974636f696e5363726970745075626b6579000144726564656d7074696f6e5f616d6f756e74c0011c42616c616e6365000085060000040800cc0089060c5070616c6c65745f626974636f696e5f6c6f636b731870616c6c6574304f727068616e65645574786f042c426c6f636b4e756d62657201100014011c7574786f5f69642c01185574786f49640001207661756c745f6964d4011c5661756c7449640001207361746f736869732c01205361746f7368697300016c7265636f726465645f6172676f6e5f626c6f636b5f6e756d626572d4012c426c6f636b4e756d626572000138636f7369676e5f726571756573748d0601b84f7074696f6e3c4f727068616e65645574786f436f7369676e526571756573743c426c6f636b4e756d6265723e3e00008d0604184f7074696f6e0404540191060108104e6f6e6500000010536f6d6504009106000001000091060c5070616c6c65745f626974636f696e5f6c6f636b731870616c6c6574644f727068616e65645574786f436f7369676e52657175657374042c426c6f636b4e756d6265720110000c014c626974636f696e5f6e6574776f726b5f6665653001205361746f73686973000140746f5f7363726970745f7075626b65796d03014c426974636f696e5363726970745075626b6579000174637265617465645f61745f6172676f6e5f626c6f636b5f6e756d62657210012c426c6f636b4e756d626572000095060c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f7365743c426f756e646564425472656553657408045401300453000004004506012c42547265655365743c543e000099060c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f7365743c426f756e646564425472656553657408045401300453000004004506012c42547265655365743c543e00009d060c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f7365743c426f756e6465644254726565536574080454018506045300000400a106012c42547265655365743c543e0000a10604204254726565536574040454018506000400a506000000a506000002850600a9060c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454011d06045300000400190601185665633c543e0000ad060c5070616c6c65745f626974636f696e5f6c6f636b731870616c6c6574144572726f7204045400018c44496e73756666696369656e7446756e647300000058496e73756666696369656e745661756c7446756e6473000100844163636f756e74576f756c64476f42656c6f774d696e696d756d42616c616e63650002045d015468652070726f706f736564207472616e73616374696f6e20776f756c642074616b6520746865206163636f756e742062656c6f7720746865206d696e696d756d20286578697374656e7469616c292062616c616e63652c5661756c74436c6f7365640003045054686973207661756c7420697320636c6f73656448496e76616c69645661756c74416d6f756e74000404dc46756e64696e6720776f756c6420726573756c7420696e20616e206f766572666c6f77206f66207468652062616c616e636520747970654c526564656d7074696f6e4e6f744c6f636b6564000504b85468697320626974636f696e20726564656d7074696f6e20686173206e6f74206265656e206c6f636b656420696e98426974636f696e52656c65617365496e6974696174696f6e446561646c696e65506173736564000604c454686520626974636f696e20686173207061737365642074686520646561646c696e6520746f2072656c6561736520697444426974636f696e466565546f6f48696768000704b05468652066656520666f72207468697320626974636f696e2072656c6561736520697320746f6f20686967684c426974636f696e5574786f4e6f74466f756e64000804ec54686520426974636f696e20556e7370656374205472616e73616374696f6e204f757470757420285554584f2920776173206e6f7420666f756e6488426974636f696e556e61626c65546f42654465636f646564466f7252656c65617365000904e85468697320626974636f696e20636f7369676e2073637269707420636f756c646e2774206265206465636f64656420666f722072656c6561736584426974636f696e5369676e6174757265556e61626c65546f42654465636f646564000a04d85468697320626974636f696e207369676e617475726520636f756c646e2774206265206465636f64656420666f722072656c6561736578426974636f696e5075626b6579556e61626c65546f42654465636f646564000b04cc5468697320626974636f696e207075626b657920636f756c646e2774206265206465636f64656420666f722072656c6561736564426974636f696e496e76616c6964436f7369676e6174757265000c04e454686520636f7369676e207369676e6174757265206973206e6f742076616c696420666f722074686520626974636f696e2072656c6561736568496e73756666696369656e745361746f736869734c6f636b6564000d04a8546865206d696e696d756d206e756d626572206f66207361746f7368697320776173206e6f74206d6574604e6f426974636f696e507269636573417661696c61626c65000e0435015468652070726963652070726f766964657220686173206e6f20626974636f696e2070726963657320617661696c61626c652e205468697320697320612074656d706f72617279206572726f7250496e76616c6964426974636f696e536372697074000f04c854686520626974636f696e2073637269707420746f206c6f636b207468697320626974636f696e20686173206572726f7273344e6f5065726d697373696f6e73001004e4546865207573657220646f6573206e6f742068617665207065726d697373696f6e7320746f20706572666f726d207468697320616374696f6e60486f6c64556e65787065637465646c794d6f646966696564001104090154686520657870656374656420616d6f756e74206f662066756e647320746f2072657475726e2066726f6d20686f6c6420776173206e6f7420617661696c61626c6544556e7265636f76657261626c65486f6c64001204a054686520686f6c64206f6e2066756e647320636f756c64206e6f74206265207265636f7665726564345661756c744e6f74466f756e640013045c546865207661756c7420776173206e6f7420666f756e644447656e657269635661756c744572726f720400b10601285661756c744572726f7200140494416e206572726f72206f6363757272656420696e20746865207661756c74206d6f64756c65304c6f636b4e6f74466f756e640015049454686520426974636f696e204c6f636b207265636f726420776173206e6f7420666f756e64784e6f5661756c74426974636f696e5075626b657973417661696c61626c65001604884e6f205661756c74207075626c6963206b6579732061726520617661696c61626c6588556e61626c65546f47656e65726174655661756c74426974636f696e5075626b6579001704a4556e61626c6520746f2067656e65726174652061206e6577207661756c74207075626c6963206b6579445661756c744e6f745965744163746976650018047054686973207661756c74206973206e6f7420796574206163746976656445787069726174696f6e4174426c6f636b4f766572666c6f77001904c0416e206f766572666c6f77206f63637572726564207265636f7264696e672061206c6f636b2065787069726174696f6e544e6f52617463686574696e67417661696c61626c65001a04484e6f7468696e6720746f2072617463686574584c6f636b496e50726f636573734f6652656c65617365001b04c041206c6f636b20696e2070726f63657373206f662072656c656173652063616e6e6f7420626520726174636865746564484c6f636b50656e64696e6746756e64696e67001c04c8546865206c6f636b2066756e64696e6720686173206e6f74206265656e20636f6e6669726d6564206f6e20626974636f696e344f766572666c6f774572726f72001d042101416e206f766572666c6f77206f7220756e646572666c6f77206f63637572726564207768696c652063616c63756c6174696e672074686520726564656d7074696f6e2070726963657c496e656c696769626c654d6963726f676f6e52617465526571756573746564001e04c4416e20696e656c696769626c65206d6963726f676f6e2072617465207065722062746320776173207265717565737465646c4f727068616e65645574786f46756e64696e67436f6e666c696374001f04050143616e6e6f742066756e64207769746820616e206f727068616e6564207574786f206166746572206c6f636b2066756e64696e6720697320636f6e6669726d6564704f727068616e65645574786f52656c65617365526571756573746564002004ec43616e6e6f74206c6f636b20616e206f727068616e6564207574786f207769746820612070656e64696e672072656c6561736520726571756573746c46756e64696e675574786f43616e6e6f74426552656c6561736564002104dc43616e6e6f74207265717565737420616e206f727068616e65642072656c6561736520666f72207468652066756e64696e67205554584f984d61784f727068616e65645574786f52656c6561736552657175657374734578636565646564002204c8546f6f206d616e79206f727068616e6564207574786f2072656c6561736520726571756573747320666f722061206c6f636b048054686520604572726f726020656e756d206f6620746869732070616c6c65742eb1060c406172676f6e5f7072696d697469766573147661756c74285661756c744572726f720001342c5661756c74436c6f736564000000684163636f756e74576f756c64426542656c6f774d696e696d756d00010044496e73756666696369656e7446756e647300020058496e73756666696369656e745661756c7446756e647300030060486f6c64556e65787065637465646c794d6f64696669656400040044556e7265636f76657261626c65486f6c64000500345661756c744e6f74466f756e64000600784e6f5661756c74426974636f696e5075626b657973417661696c61626c6500070088556e61626c65546f47656e65726174655661756c74426974636f696e5075626b657900080050496e76616c6964426974636f696e53637269707400090034496e7465726e616c4572726f72000a00445661756c744e6f74596574416374697665000b009c436f6d6d69747465644172676f6e6f747342656c6f77456e63756d62657265644261636b696e67000c0000b50600000408f41000b9060c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540100045300000400ed0201185665633c543e0000bd060c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454011101045300000400c10601185665633c543e0000c106000002110100c5060c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401c906045300000400cd0601185665633c543e0000c90600000408300400cd06000002c90600d1060c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b0110045601f4045300000400d506013842547265654d61703c4b2c20563e0000d506042042547265654d617008044b0110045601f4000400d906000000d906000002dd0600dd060000040810f400e1060c3c70616c6c65745f6e6f7461726965731870616c6c6574144572726f720404540001244050726f706f73616c4e6f74466f756e64000004985468652070726f706f73616c20746f20616374697661746520776173206e6f7420666f756e644c4d61784e6f74617269657345786365656465640001048c4d6178696d756d206e756d626572206f66206e6f746172696573206578636565646564704d617850726f706f73616c73506572426c6f636b4578636565646564000204b84d6178696d756d206e756d626572206f662070726f706f73616c732070657220626c6f636b206578636565646564444e6f74416e4163746976654e6f74617279000304f054686973206e6f74617279206973206e6f74206163746976652c20736f2074686973206368616e67652063616e6e6f74206265206d6164652079657454496e76616c69644e6f746172794f70657261746f72000404a8496e76616c6964206e6f74617279206f70657261746f7220666f722074686973206f7065726174696f6e3c4e6f4d6f72654e6f74617279496473000504f4416e20696e7465726e616c206572726f7220686173206f636375727265642e20546865206e6f746172792069647320617265206578686175737465642e504566666563746976655469636b546f6f536f6f6e0006049c5468652070726f706f73656420656666656374697665207469636b20697320746f6f20736f6f6e2c546f6f4d616e794b65797300070458546f6f206d616e7920696e7465726e616c206b65797334496e76616c69644e6f7461727900080454546865206e6f7461727920697320696e76616c6964048054686520604572726f726020656e756d206f6620746869732070616c6c65742ee50600000408109d0300e9060c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401ed06045300000400f50601185665633c543e0000ed0600000408f1062000f1060c406172676f6e5f7072696d697469766573186e6f74617279604e6f746172794e6f7465626f6f6b4b657944657461696c73000014013c6e6f7465626f6f6b5f6e756d626572d401384e6f7465626f6f6b4e756d6265720001107469636b2c01105469636b000140626c6f636b5f766f7465735f726f6f743401104832353600012c7365637265745f686173683401484e6f7465626f6f6b53656372657448617368000134706172656e745f736563726574a10201584f7074696f6e3c4e6f7465626f6f6b5365637265743e0000f506000002ed0600f9060000040c1030190100fd060c3c70616c6c65745f6e6f7465626f6f6b1870616c6c6574144572726f7204045400013c5c4475706c69636174654e6f7465626f6f6b4e756d626572000004a054686973206e6f7465626f6f6b2068617320616c7265616479206265656e207375626d6974746564544d697373696e674e6f7465626f6f6b4e756d6265720001047c4e6f7465626f6f6b73207265636569766564206f7574206f66206f726465725c4e6f7465626f6f6b5469636b416c726561647955736564000204b041206e6f7465626f6f6b2077617320616c72656164792070726f76696465642061742074686973207469636b60496e76616c69644e6f7465626f6f6b5369676e6174757265000304a0546865207369676e6174757265206f6620746865206e6f7465626f6f6b20697320696e76616c696454496e76616c696453656372657450726f7669646564000404f454686520736563726574206f72207365637265742068617368206f662074686520706172656e74206e6f7465626f6f6b20646f206e6f74206d6174636858436f756c644e6f744465636f64654e6f7465626f6f6b000504c0436f756c64206e6f74206465636f646520746865207363616c65206279746573206f6620746865206e6f7465626f6f6b5c4475706c69636174654e6f7465626f6f6b446967657374000604bc546865206e6f7465626f6f6b206469676573742077617320696e636c75646564206d6f7265207468616e206f6e6365544d697373696e674e6f7465626f6f6b44696765737400070490546865206e6f7465626f6f6b2064696765737420776173206e6f7420696e636c7564656454496e76616c69644e6f7465626f6f6b446967657374000804e0546865206e6f7465626f6f6b2064696765737420646964206e6f74206d617463682074686520696e636c75646564206e6f7465626f6f6b73844d756c7469706c654e6f7465626f6f6b496e686572656e747350726f76696465640009046c4d756c7469706c6520696e686572656e74732070726f766964656434496e7465726e616c4572726f72000a04a0556e61626c6520746f20747261636b20746865206e6f7465626f6f6b206368616e6765206c697374804e6f7465626f6f6b5375626d6974746564466f724c6f636b65644e6f74617279000b04350141206e6f7465626f6f6b20776173207375626d697474656420666f722061206e6f746172792074686174206661696c65642061756469742c207768696368206973206e6f7420616c6c6f77656460496e76616c6964526570726f636573734e6f7465626f6f6b000c0468496e76616c696420726570726f63657373206e6f7465626f6f6b54496e76616c69644e6f746172794f70657261746f72000d045c496e76616c6964206e6f74617279206f70657261746f7274496e76616c69644e6f7465626f6f6b5375626d697373696f6e5469636b000e0480496e76616c6964206e6f7465626f6f6b207375626d697373696f6e207469636b048054686520604572726f726020656e756d206f6620746869732070616c6c65742e0107086870616c6c65745f6c6f63616c636861696e5f7472616e73666572445175657565645472616e736665724f757408244163636f756e74496401001c42616c616e63650118001001286163636f756e745f69640001244163636f756e744964000118616d6f756e7418011c42616c616e636500013c65787069726174696f6e5f7469636b3001105469636b0001246e6f746172795f69641001204e6f746172794964000005070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540110045300000400c10501185665633c543e0000090708346672616d655f737570706f72742050616c6c65744964000004008902011c5b75383b20385d00000d070c6870616c6c65745f6c6f63616c636861696e5f7472616e736665721870616c6c6574144572726f72040454000120644d6178426c6f636b5472616e7366657273457863656564656400000044496e73756666696369656e7446756e6473000104b0496e73756666696369656e742062616c616e636520746f206372656174652074686973207472616e7366657268496e73756666696369656e744e6f746172697a656446756e6473000204d0496e73756666696369656e742062616c616e636520746f2066756c66696c6c2061206d61696e636861696e207472616e7366657294496e76616c69644f724475706c6963617465644c6f63616c636861696e5472616e73666572000304d8546865207472616e736665722077617320616c7265616479207375626d697474656420696e20612070726576696f757320626c6f636ba44e6f7465626f6f6b496e636c75646573457870697265644c6f63616c636861696e5472616e73666572000404410141207472616e7366657220776173207375626d697474656420696e20612070726576696f757320626c6f636b20627574207468652065787069726174696f6e20626c6f636b206861732070617373656470496e76616c69644e6f7461727955736564466f725472616e736665720005047c546865206e6f74617279206964206973206e6f7420726567697374657265645c4e6f746172794c6f636b6564466f725472616e73666572000604ec546865206e6f746172792069732063757272656e746c79206c6f636b656420616e642063616e6e6f742070726f63657373207472616e7366657273544e6f417661696c61626c655472616e7366657249640007049c4e6f207472616e7366657220494473206172652063757272656e746c7920617661696c61626c65048054686520604572726f726020656e756d206f6620746869732070616c6c65742e11070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540130045300000400490601185665633c543e000015070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540118045300000400a90501185665633c543e000019070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454011d07045300000400210701185665633c543e00001d070c406172676f6e5f7072696d697469766573186e6f746172797c4e6f746172794e6f7465626f6f6b566f746544696765737444657461696c7300001401246e6f746172795f6964d401204e6f74617279496400013c6e6f7465626f6f6b5f6e756d626572d401384e6f7465626f6f6b4e756d6265720001107469636b2c01105469636b000144626c6f636b5f766f7465735f636f756e74d4010c753332000148626c6f636b5f766f74696e675f706f776572c00140426c6f636b566f74696e67506f776572000021070000021d070025070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540129070453000004002d0701185665633c543e000029070000040c301018002d0700000229070031070c5870616c6c65745f626c6f636b5f7365616c5f737065631870616c6c6574144572726f72040454000104684d61784e6f7465626f6f6b7341745469636b45786365656465640000041501546865206d6178696d756d206e756d626572206f66206e6f7465626f6f6b73206174207468652063757272656e74207469636b20686173206265656e206578636565646564048054686520604572726f726020656e756d206f6620746869732070616c6c65742e35070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401340453000004002d0201185665633c543e000039070c3870616c6c65745f646f6d61696e731870616c6c6574144572726f720404540001144c446f6d61696e4e6f74526567697374657265640000047454686520646f6d61696e206973206e6f7420726567697374657265642e384e6f74446f6d61696e4f776e6572000104a85468652073656e646572206973206e6f7420746865206f776e6572206f662074686520646f6d61696e2e6c4661696c6564546f416464546f41646472657373486973746f7279000204944661696c656420746f2061646420746f20746865206164647265737320686973746f72792e644661696c6564546f4164644578706972696e67446f6d61696e000304a44661696c656420746f2061646420746f20746865206578706972696e6720646f6d61696e206c697374504163636f756e744465636f64696e674572726f72000404884572726f72206465636f64696e67206163636f756e742066726f6d206e6f74617279048054686520604572726f726020656e756d206f6620746869732070616c6c65742e3d070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454014107045300000400450701185665633c543e00004107084870616c6c65745f70726963655f696e646578504370694d6561737572656d656e744275636b657400000c01287469636b5f72616e6765d1050130285469636b2c205469636b29000124746f74616c5f637069910101204172676f6e4350490001486d6561737572656d656e74735f636f756e7410010c7533320000450700000241070049070c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b0130045601180453000004001506013842547265654d61703c4b2c20563e00004d070c4870616c6c65745f70726963655f696e6465781870616c6c6574144572726f72040454000110544e6f74417574686f72697a65644f70657261746f72000004904e6f7420617574686f72697a656420617320616e206f7261636c65206f70657261746f72304d697373696e6756616c7565000104344d697373696e672076616c756530507269636573546f6f4f6c6400020480546865207375626d6974746564207072696365732061726520746f6f206f6c64744d617850726963654368616e67655065725469636b4578636565646564000304884368616e676520696e206172676f6e20707269636520697320746f6f206c61726765048054686520604572726f726020656e756d206f6620746869732070616c6c65742e5107083870616c6c65745f6772616e6470612c53746f726564537461746504044e01100110104c6976650000003050656e64696e6750617573650801307363686564756c65645f61741001044e00011464656c61791001044e000100185061757365640002003450656e64696e67526573756d650801307363686564756c65645f61741001044e00011464656c61791001044e000300005507083870616c6c65745f6772616e6470614c53746f72656450656e64696e674368616e676508044e0110144c696d697400001001307363686564756c65645f61741001044e00011464656c61791001044e0001406e6578745f617574686f7269746965735907016c426f756e646564417574686f726974794c6973743c4c696d69743e000118666f72636564710201244f7074696f6e3c4e3e000059070c4c626f756e6465645f636f6c6c656374696f6e73407765616b5f626f756e6465645f766563385765616b426f756e646564566563080454016d01045300000400690101185665633c543e00005d070c3870616c6c65745f6772616e6470611870616c6c6574144572726f7204045400011c2c50617573654661696c65640000080501417474656d707420746f207369676e616c204752414e445041207061757365207768656e2074686520617574686f72697479207365742069736e2774206c697665a42865697468657220706175736564206f7220616c72656164792070656e64696e67207061757365292e30526573756d654661696c65640001081101417474656d707420746f207369676e616c204752414e44504120726573756d65207768656e2074686520617574686f72697479207365742069736e277420706175736564a028656974686572206c697665206f7220616c72656164792070656e64696e6720726573756d65292e344368616e676550656e64696e67000204e8417474656d707420746f207369676e616c204752414e445041206368616e67652077697468206f6e6520616c72656164792070656e64696e672e1c546f6f536f6f6e000304bc43616e6e6f74207369676e616c20666f72636564206368616e676520736f20736f6f6e206166746572206c6173742e60496e76616c69644b65794f776e65727368697050726f6f66000404310141206b6579206f776e6572736869702070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e60496e76616c696445717569766f636174696f6e50726f6f660005043101416e2065717569766f636174696f6e2070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e584475706c69636174654f6666656e63655265706f727400060415014120676976656e2065717569766f636174696f6e207265706f72742069732076616c69642062757420616c72656164792070726576696f75736c79207265706f727465642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e61070c406172676f6e5f7072696d6974697665732470726f7669646572733c426c6f636b5365616c6572496e666f08244163636f756e74496401002c417574686f72697479496401b8000c015c626c6f636b5f617574686f725f6163636f756e745f69640001244163636f756e744964000168626c6f636b5f766f74655f726577617264735f6163636f756e74bc01444f7074696f6e3c4163636f756e7449643e000150626c6f636b5f7365616c5f617574686f726974798101014c4f7074696f6e3c417574686f7269747949643e000065070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454018505045300000400b90501185665633c543e000069070c4470616c6c65745f626c6f636b5f7365616c1870616c6c6574144572726f720404540001545c496e76616c6964566f74655365616c537472656e677468000004e454686520737472656e677468206f662074686520676976656e207365616c20646964206e6f74206d617463682063616c63756c6174696f6e7340496e76616c69645375626d697474657200010494566f7465206e6f74207375626d697474656420627920746865207269676874206d696e657264556e61626c65546f4465636f6465566f74654163636f756e740002047c436f756c64206e6f74206465636f64652074686520766f74652062797465735c556e72656769737465726564426c6f636b417574686f72000304a854686520626c6f636b20617574686f72206973206e6f7420612072656769737465726564206d696e657254496e76616c6964426c6f636b566f746550726f6f66000404f4546865206d65726b6c652070726f6f66206f6620766f746520696e636c7573696f6e20696e20746865206e6f7465626f6f6b20697320696e76616c6964604e6f4772616e64706172656e74566f74654d696e696d756d000504ac4e6f20766f7465206d696e696d756d20666f756e64206174206772616e64706172656e7420686569676874684475706c6963617465426c6f636b5365616c50726f766964656400060478546f6f206d616e7920626c6f636b207365616c73207375626d69747465645c496e73756666696369656e74566f74696e67506f776572000704590154686520626c6f636b20766f746520646964206e6f7420726561636820746865206d696e696d756d20766f74696e6720706f7765722061742074696d65206f6620746865206772616e64706172656e7420626c6f636b5c506172656e74566f74696e674b65794e6f74466f756e64000804cc4e6f207265676973746572656420766f74696e67206b657920666f756e6420666f722074686520706172656e7420626c6f636b68496e76616c6964566f74654772616e64706172656e7448617368000904a054686520626c6f636b20766f746520776173206e6f7420666f7220612076616c696420626c6f636b58496e656c696769626c654e6f7465626f6f6b55736564000a04cc546865206e6f7465626f6f6b20666f72207468697320766f746520776173206e6f7420656c696769626c6520746f20766f7465504e6f456c696769626c65566f74696e67526f6f74000b043d01546865206c6f6f6b757020746f20766572696679206120766f746527732061757468656e746963697479206973206e6f7420617661696c61626c6520666f722074686520676976656e20626c6f636b48436f756c644e6f744465636f6465566f7465000c04b4436f756c64206e6f74206465636f646520746865207363616c65206279746573206f662074686520766f746573684d61784e6f7465626f6f6b7341745469636b4578636565646564000d043901546f6f206d616e79206e6f7465626f6f6b732077657265207375626d697474656420666f72207468652063757272656e74207469636b2e2053686f756c64206e6f7420626520706f737369626c65684e6f436c6f736573744d696e6572466f756e64466f72566f7465000e047c4e6f20636c6f73657374206d696e657220666f756e6420666f7220766f746564426c6f636b566f7465496e76616c69645369676e6174757265000f047854686520766f7465207369676e61747572652077617320696e76616c696458496e76616c6964466f726b506f776572506172656e7400100464496e76616c696420666f726b20706f77657220706172656e7450426c6f636b5365616c4465636f64654572726f72001104d04120626c6f636b207365616c20617574686f7269747920636f756c64206e6f742062652070726f7065726c79206465636f6465645c496e76616c6964436f6d70757465426c6f636b5469636b001204dc436f6d7075746520626c6f636b732063616e7420626520616464656420696e207468652073616d65207469636b206173206120766f746558496e76616c69644d696e65724e6f6e636553636f7265001304b0546865206e6f6e63652073636f72652064697374616e636520737570706c69656420697320696e76616c6964604475706c6963617465566f7465426c6f636b41745469636b001404504475706c696361746520766f746520626c6f636b048054686520604572726f726020656e756d206f6620746869732070616c6c65742e6d070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454017901045300000400750101185665633c543e000071070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454011d06045300000400190601185665633c543e000075070000040c1830180079070c5070616c6c65745f626c6f636b5f726577617264731870616c6c6574144572726f72040454000100048054686520604572726f726020656e756d206f6620746869732070616c6c65742e7d070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454018107045300000400850701185665633c543e000081070000040c30001800850700000281070089070c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b0130045601180453000004001506013842547265654d61703c4b2c20563e00008d07000004081091070091070c2c70616c6c65745f6d696e741870616c6c6574284d696e74416374696f6e0404420118000c01306172676f6e5f6275726e6564180104420001306172676f6e5f6d696e74656418010442000138626974636f696e5f6d696e74656418010442000095070c2c70616c6c65745f6d696e741870616c6c6574144572726f720404540001044c546f6f4d616e7950656e64696e674d696e7473000000048054686520604572726f726020656e756d206f6620746869732070616c6c65742e99070c4c626f756e6465645f636f6c6c656374696f6e73407765616b5f626f756e6465645f766563385765616b426f756e646564566563080454019d07045300000400a50701185665633c543e00009d070c3c70616c6c65745f62616c616e6365731474797065732c42616c616e63654c6f636b041c42616c616e63650118000c01086964890201384c6f636b4964656e746966696572000118616d6f756e7418011c42616c616e636500011c726561736f6e73a107011c526561736f6e730000a1070c3c70616c6c65745f62616c616e6365731474797065731c526561736f6e7300010c0c466565000000104d6973630001000c416c6c00020000a5070000029d0700a9070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401ad07045300000400b10701185665633c543e0000ad070c3c70616c6c65745f62616c616e6365731474797065732c52657365727665446174610844526573657276654964656e7469666965720189021c42616c616e6365011800080108696489020144526573657276654964656e746966696572000118616d6f756e7418011c42616c616e63650000b107000002ad0700b5070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401b907045300000400bd0701185665633c543e0000b90714346672616d655f737570706f72741874726169747318746f6b656e73106d697363204964416d6f756e740808496401a1011c42616c616e63650118000801086964a10101084964000118616d6f756e7418011c42616c616e63650000bd07000002b90700c1070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401c507045300000400d10701185665633c543e0000c50714346672616d655f737570706f72741874726169747318746f6b656e73106d697363204964416d6f756e740808496401c9071c42616c616e63650118000801086964c90701084964000118616d6f756e7418011c42616c616e63650000c90708346172676f6e5f72756e74696d654c52756e74696d65467265657a65526561736f6e00010430426c6f636b526577617264730400cd07018870616c6c65745f626c6f636b5f726577617264733a3a467265657a65526561736f6e00130000cd070c5070616c6c65745f626c6f636b5f726577617264731870616c6c657430467265657a65526561736f6e000104404d617475726174696f6e506572696f6400000000d107000002c50700d5070c3c70616c6c65745f62616c616e6365731870616c6c6574144572726f720804540004490001303856657374696e6742616c616e63650000049c56657374696e672062616c616e636520746f6f206869676820746f2073656e642076616c75652e544c69717569646974795265737472696374696f6e73000104c84163636f756e74206c6971756964697479207265737472696374696f6e732070726576656e74207769746864726177616c2e4c496e73756666696369656e7442616c616e63650002047842616c616e636520746f6f206c6f7720746f2073656e642076616c75652e484578697374656e7469616c4465706f736974000304ec56616c756520746f6f206c6f7720746f20637265617465206163636f756e742064756520746f206578697374656e7469616c206465706f7369742e34457870656e646162696c697479000404905472616e736665722f7061796d656e7420776f756c64206b696c6c206163636f756e742e5c4578697374696e6756657374696e675363686564756c65000504cc412076657374696e67207363686564756c6520616c72656164792065786973747320666f722074686973206163636f756e742e2c446561644163636f756e740006048c42656e6566696369617279206163636f756e74206d757374207072652d65786973742e3c546f6f4d616e795265736572766573000704b84e756d626572206f66206e616d65642072657365727665732065786365656420604d61785265736572766573602e30546f6f4d616e79486f6c6473000804f84e756d626572206f6620686f6c647320657863656564206056617269616e74436f756e744f663c543a3a52756e74696d65486f6c64526561736f6e3e602e38546f6f4d616e79467265657a6573000904984e756d626572206f6620667265657a65732065786365656420604d6178467265657a6573602e4c49737375616e63654465616374697661746564000a0401015468652069737375616e63652063616e6e6f74206265206d6f6469666965642073696e636520697420697320616c72656164792064656163746976617465642e2444656c74615a65726f000b04645468652064656c74612063616e6e6f74206265207a65726f2e048054686520604572726f726020656e756d206f6620746869732070616c6c65742ed9070c3c70616c6c65745f62616c616e6365731870616c6c6574144572726f720804540004490001303856657374696e6742616c616e63650000049c56657374696e672062616c616e636520746f6f206869676820746f2073656e642076616c75652e544c69717569646974795265737472696374696f6e73000104c84163636f756e74206c6971756964697479207265737472696374696f6e732070726576656e74207769746864726177616c2e4c496e73756666696369656e7442616c616e63650002047842616c616e636520746f6f206c6f7720746f2073656e642076616c75652e484578697374656e7469616c4465706f736974000304ec56616c756520746f6f206c6f7720746f20637265617465206163636f756e742064756520746f206578697374656e7469616c206465706f7369742e34457870656e646162696c697479000404905472616e736665722f7061796d656e7420776f756c64206b696c6c206163636f756e742e5c4578697374696e6756657374696e675363686564756c65000504cc412076657374696e67207363686564756c6520616c72656164792065786973747320666f722074686973206163636f756e742e2c446561644163636f756e740006048c42656e6566696369617279206163636f756e74206d757374207072652d65786973742e3c546f6f4d616e795265736572766573000704b84e756d626572206f66206e616d65642072657365727665732065786365656420604d61785265736572766573602e30546f6f4d616e79486f6c6473000804f84e756d626572206f6620686f6c647320657863656564206056617269616e74436f756e744f663c543a3a52756e74696d65486f6c64526561736f6e3e602e38546f6f4d616e79467265657a6573000904984e756d626572206f6620667265657a65732065786365656420604d6178467265657a6573602e4c49737375616e63654465616374697661746564000a0401015468652069737375616e63652063616e6e6f74206265206d6f6469666965642073696e636520697420697320616c72656164792064656163746976617465642e2444656c74615a65726f000b04645468652064656c74612063616e6e6f74206265207a65726f2e048054686520604572726f726020656e756d206f6620746869732070616c6c65742edd070c3c70616c6c65745f74785f70617573651870616c6c6574144572726f720404540001102049735061757365640000044c5468652063616c6c206973207061757365642e284973556e706175736564000104545468652063616c6c20697320756e7061757365642e28556e7061757361626c65000204b45468652063616c6c2069732077686974656c697374656420616e642063616e6e6f74206265207061757365642e204e6f74466f756e64000300048054686520604572726f726020656e756d206f6620746869732070616c6c65742ee107086870616c6c65745f7472616e73616374696f6e5f7061796d656e742052656c6561736573000108245631416e6369656e7400000008563200010000e50710346672616d655f737570706f7274187472616974731c73746f72616765184e6f44726f7004045401e907000400e9070104540000e90718346672616d655f737570706f72741874726169747318746f6b656e732066756e6769626c6524696d62616c616e636524496d62616c616e63650c04420118184f6e44726f7000384f70706f736974654f6e44726f700000040118616d6f756e74180104420000ed070c3870616c6c65745f7574696c6974791870616c6c6574144572726f7204045400010430546f6f4d616e7943616c6c730000045c546f6f206d616e792063616c6c7320626174636865642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742ef1070c2c70616c6c65745f7375646f1870616c6c6574144572726f720404540001042c526571756972655375646f0000048053656e646572206d75737420626520746865205375646f206163636f756e742e04684572726f7220666f7220746865205375646f2070616c6c65742ef5070c3c70616c6c65745f74726561737572791870616c6c6574444672616d655661756c744361706974616c04045400000801206672616d655f69642c011c4672616d6549640001187661756c7473f90701f8426f756e64656442547265654d61703c5661756c7449642c205661756c744361706974616c3c543e2c20543a3a4d61785661756c7473506572506f6f6c3e0000f9070c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b0110045601fd070453000004000d08013842547265654d61703c4b2c20563e0000fd070c3c70616c6c65745f74726561737572791870616c6c6574305661756c744361706974616c04045400000c0150626f6e645f6c6f745f616c6c6f636174696f6e73010801e4426f756e6465645665633c426f6e644c6f74416c6c6f636174696f6e2c20543a3a4d61785472656173757279436f6e7472696275746f72733e000138656c696769626c655f626f6e6473d40114426f6e64730001547661756c745f73686172696e675f70657263656e744103011c5065726d696c6c000001080c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454010508045300000400090801185665633c543e000005080c3c70616c6c65745f74726561737572791870616c6c657444426f6e644c6f74416c6c6f636174696f6e000008012c626f6e645f6c6f745f69642c0124426f6e644c6f74496400011c70726f72617461e00124466978656455313238000009080000020508000d08042042547265654d617008044b0110045601fd070004001108000000110800000215080015080000040810fd070019080c3c70616c6c65745f74726561737572791870616c6c65741c426f6e644c6f7404045400002801146f776e6572000130543a3a4163636f756e7449640001207661756c745f6964d4011c5661756c744964000114626f6e6473d40114426f6e6473000140637265617465645f6672616d655f69642c011c4672616d65496400014c7061727469636970617465645f6672616d6573d4010c7533320001706c6173745f6672616d655f6561726e696e67735f6672616d655f69648d01013c4f7074696f6e3c4672616d6549643e00014c6c6173745f6672616d655f6561726e696e6773850101484f7074696f6e3c543a3a42616c616e63653e00014c63756d756c61746976655f6561726e696e6773c00128543a3a42616c616e636500014072656c656173655f6672616d655f69648d01013c4f7074696f6e3c4672616d6549643e00013872656c656173655f726561736f6e1d0801644f7074696f6e3c426f6e6452656c65617365526561736f6e3e00001d0804184f7074696f6e04045401e1010108104e6f6e6500000010536f6d650400e101000001000021080000040800300025080c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540130045300000400490601185665633c543e000029080c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454012d08045300000400310801185665633c543e00002d080c3c70616c6c65745f74726561737572791870616c6c657438426f6e644c6f7453756d6d617279000008012c626f6e645f6c6f745f69642c0124426f6e644c6f744964000114626f6e6473d40114426f6e6473000031080000022d080035080c3c70616c6c65745f74726561737572791870616c6c6574144572726f7204045400012c50426f6e64507572636861736552656a6563746564000004dc54686520707572636861736520776f756c64206e6f7420656e74657220746865207661756c742773206163636570746564206c6973742e785661756c744e6f74416363657074696e67426f6e64507572636861736573000104a8546865207661756c74206973206e6f7420616363657074696e6720626f6e64207075726368617365732e60426f6e64507572636861736542656c6f774d696e696d756d000204a45468652070757263686173652069732062656c6f7720746865206d696e696d756d20616d6f756e742e34496e7465726e616c4572726f720003046c416e20696e7465726e616c206572726f72206f636375727265642e6c4d61784163636570746564426f6e644c6f74734578636565646564000404fc546865207661756c7420616c72656164792068617320746865206d6178696d756d206e756d626572206f6620616363657074656420626f6e64206c6f74732e784d617850656e64696e67426f6e6452656c65617365734578636565646564000504f0546f6f206d616e7920626f6e64206c6f742072656c656173657320617265207363686564756c656420666f72207468652073616d65206672616d652e3c426f6e644c6f744e6f74466f756e640006048054686520626f6e64206c6f7420636f756c64206e6f7420626520666f756e642e3c4e6f74426f6e644c6f744f776e6572000704945468652063616c6c657220646f6573206e6f74206f776e2074686520626f6e64206c6f742e5c426f6e644c6f74416c726561647952656c656173696e67000804b854686520626f6e64206c6f7420697320616c7265616479207363686564756c656420666f722072656c656173652e64426f6e64507572636861736541626f766553656375726974790009043101546865207661756c7420646f65736e2774206861766520656e6f75676820626974636f696e20736563757269747920746f20737570706f7274207468697320626f6e6420707572636861736598416374697665426f6e64416d6f756e7442656c6f77456e63756d62657265644261636b696e67000a0841014c69717569646174696e67207468697320626f6e64206c6f7420776f756c642074616b6520746865206163636f756e742062656c6f77206974732063726f7373636861696e2d656e63756d6265726564447472656173757279206261636b696e672e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e39080c4870616c6c65745f6665655f636f6e74726f6c1870616c6c6574144572726f720404540001044c53706f6e736f726564466565546f6f4869676800000425015468652072657175657374656420746970202b2066656520697320686967686572207468616e20746865206d6178696d756d20616c6c6f776564206279207468652073706f6e736f72048054686520604572726f726020656e756d206f6620746869732070616c6c65742e3d080c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c6574484f7065726174696f6e616c4163636f756e7404045400004c01347661756c745f6163636f756e74000130543a3a4163636f756e7449640001586d696e696e675f66756e64696e675f6163636f756e74000130543a3a4163636f756e7449640001486d696e696e675f626f745f6163636f756e74000130543a3a4163636f756e744964000144656e6372797074696f6e5f7075626b6579490401584f7061717565456e6372797074696f6e5075626b657900011c73706f6e736f72bc01504f7074696f6e3c543a3a4163636f756e7449643e0001506861735f756e69737761705f7472616e73666572200110626f6f6c0001347661756c745f63726561746564200110626f6f6c00013c626974636f696e5f6163637275616c180128543a3a42616c616e6365000154626974636f696e5f6170706c6965645f746f74616c180128543a3a42616c616e636500017c6861735f74726561737572795f706f6f6c5f70617274696369706174696f6e200110626f6f6c00014c6d696e696e675f736561745f6163637275616cd4010c7533320001646d696e696e675f736561745f6170706c6965645f746f74616cd4010c75333200016c6f7065726174696f6e616c5f726566657272616c735f636f756e74d4010c753332000140726566657272616c5f70656e64696e67200110626f6f6c00014c617661696c61626c655f726566657272616c73d4010c753332000150726577617264735f6561726e65645f636f756e74d4010c753332000154726577617264735f6561726e65645f616d6f756e74180128543a3a42616c616e6365000160726577617264735f636f6c6c65637465645f616d6f756e74180128543a3a42616c616e636500013869735f6f7065726174696f6e616c200110626f6f6c000041080000040830040045080c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c65743452657761726473436f6e666967041c42616c616e636501180008016c6f7065726174696f6e616c5f726566657272616c5f726577617264c0011c42616c616e6365000154726566657272616c5f626f6e75735f726577617264c0011c42616c616e6365000049080c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e00004d080c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c6574144572726f7204045400014444416c726561647952656769737465726564000004d45468652063616c6c657220616c7265616479207265676973746572656420616e206f7065726174696f6e616c206163636f756e742e70496e76616c6964526567697374726174696f6e5375626d69747465720001040d015468652063616c6c6572206973206e6f74206f6e65206f6620746865206163636f756e747320696e636c7564656420696e2074686520726567697374726174696f6e2e504163636f756e74416c72656164794c696e6b656400020425014f6e65206f66207468652070726f7669646564206163636f756e747320697320616c7265616479206c696e6b656420746f20616e206f7065726174696f6e616c206163636f756e742e4c496e76616c69644163636f756e7450726f6f66000304d84f6e65206f6620746865206c696e6b6564206163636f756e74206f776e6572736869702070726f6f667320697320696e76616c69642e544e6f744f7065726174696f6e616c4163636f756e74000404d45468652063616c6c657220686173206e6f74207265676973746572656420616e206f7065726174696f6e616c206163636f756e742e50496e76616c6964526566657272616c50726f6f66000504bc54686520726566657272616c2070726f6f66206f722073706f6e736f722070726f6f6620697320696e76616c69642e50526566657272616c50726f6f66457870697265640006047c54686520726566657272616c2070726f6f662068617320657870697265642e604e6f50726f677265737355706461746550726f7669646564000704e8546865207265717565737465642070726f677265737320706174636820646f6573206e6f7420636f6e7461696e20616e7920757064617465732e58456e63727970746564536572766572546f6f4c6f6e67000804fc54686520656e6372797074656420736572766572207061796c6f616420657863656564732074686520636f6e66696775726564206d6178206c656e6774682e4c4e6f7453706f6e736f724f6653706f6e736565000904dc5468652063616c6c6572206973206e6f74207468652073706f6e736f72206f6620746865207265717565737465642073706f6e7365652e404e6f50656e64696e6752657761726473000a04e0546865206f7065726174696f6e616c206163636f756e7420686173206e6f2070656e64696e67207265776172647320746f20636c61696d2e5c526577617264436c61696d42656c6f774d696e696d756d000b04a452657761726420636c61696d73206d757374206265206174206c65617374206f6e65204172676f6e2e60526577617264436c61696d4e6f7457686f6c654172676f6e000c04b452657761726420636c61696d73206d7573742062652077686f6c65204172676f6e20696e6372656d656e74732e64526577617264436c61696d4578636565647350656e64696e67000d04cc546865207265717565737465642072657761726420636c61696d20657863656564732070656e64696e6720726577617264732e645472656173757279496e73756666696369656e7446756e6473000e04350154686520747265617375727920646f6573206e6f742063757272656e746c79206861766520656e6f75676820617661696c61626c6520726573657276657320666f722074686520636c61696d2e48416c72656164794f7065726174696f6e616c000f048c546865206163636f756e7420697320616c7265616479206f7065726174696f6e616c2e604e6f74456c696769626c65466f7241637469766174696f6e001004ec546865206163636f756e7420686173206e6f7420736174697366696564206f7065726174696f6e616c20726571756972656d656e7473207965742e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e51080c6070616c6c65745f657468657265756d5f76657269666965721474797065736846696e616c697a6564426561636f6e48656164657253746174650000040110736c6f742c010c753634000055080c6070616c6c65745f657468657265756d5f766572696669657214747970657354457865637574696f6e486561646572416e63686f720000140130626c6f636b5f6e756d6265722c0150457865637574696f6e426c6f636b4e756d62657200014074696d657374616d705f6d696c6c69732c010c753634000128626c6f636b5f68617368340148457865637574696f6e426c6f636b4861736800012c706172656e745f68617368340148457865637574696f6e426c6f636b4861736800013472656365697074735f726f6f743401305265636569707473526f6f74000059080c6070616c6c65745f657468657265756d5f76657269666965721474797065735453796e63436f6d6d6974746565507265706172656400000c0110726f6f743401104832353600011c7075626b6579735d08011901426f756e6465645665633c5075626c69634b657950726570617265642c20436f6e73745533323c7b2053594e435f434f4d4d49545445455f424f554e445f53495a45207d3e3e0001406167677265676174655f7075626b6579610801445075626c69634b6579507265706172656400005d080c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454016108045300000400790801185665633c543e000061080c58736e6f776272696467655f6d696c6167726f5f626c73106b657973245075626c69634b65790000040114706f696e746508011c47726f7570473100006508103c736e6f776272696467655f616d636c18626c733338310c6563700c45435000000c010478690801084650000104796908010846500001047a69080108465000006908103c736e6f776272696467655f616d636c18626c733338310866700846500000080104786d08010c42696700010c7865737508010c69333200006d08103c736e6f776272696467655f616d636c18626c733338310c6269670c426967000004010477710801345b4368756e6b3b204e4c454e5d000071080000030e00000075080075080000050b0079080000026108007d080c406172676f6e5f7072696d69746976657320657468657265756d50457468657265756d426561636f6e5072657365740001081c4d61696e6e65740000001c4d696e696d616c0001000081080c6070616c6c65745f657468657265756d5f76657269666965721870616c6c6574144572726f7204045400015468536b697070656453796e63436f6d6d6974746565506572696f640000006c53796e63436f6d6d6974746565557064617465526571756972656400010040497272656c6576616e74557064617465000204d8417474657374656420686561646572206973206f6c646572207468616e206c61746573742066696e616c697a6564206865616465722e3c4e6f74426f6f747374726170706564000300a453796e63436f6d6d69747465655061727469636970616e74734e6f7453757065726d616a6f7269747900040060496e76616c69644865616465724d65726b6c6550726f6f660005007c496e76616c696453796e63436f6d6d69747465654d65726b6c6550726f6f660006006c496e76616c6964457865637574696f6e48656164657250726f6f6600070064496e76616c696446696e616c697a6564486561646572476170000804410154686520676170206265747765656e2066696e616c697a65642068656164657273206973206c6172676572207468616e207468652072657461696e656420686973746f726963616c2077696e646f772e604865616465724861736854726565526f6f744661696c65640009006c426c6f636b426f64794861736854726565526f6f744661696c6564000a007c53796e63436f6d6d69747465654861736854726565526f6f744661696c6564000b00745369676e696e67526f6f744861736854726565526f6f744661696c6564000c0068466f726b446174614861736854726565526f6f744661696c6564000d0080457870656374656446696e616c697a65644865616465724e6f7453746f726564000e0068424c53507265706172655075626c69634b6579734661696c6564000f0054424c53566572696669636174696f6e4661696c656400100058556e6578706563746564426561636f6e50726573657400110044496e76616c6964557064617465536c6f7400120068496e76616c696453796e63436f6d6d6974746565557064617465001308550154686520676976656e20757064617465206973206e6f7420696e2074686520657870656374656420706572696f642c206f722074686520676976656e206e6578742073796e6320636f6d6d697474656520646f6573b46e6f74206d6174636820746865206e6578742073796e6320636f6d6d697474656520696e2073746f726167652e1848616c746564001400048054686520604572726f726020656e756d206f6620746869732070616c6c65742e8508000004080502000089080c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c657454476c6f62616c49737375616e6365436f756e63696c04045400000c016c65706f63685f6d6963726f676f6e735f7065725f6172676f6e6f74180128543a3a42616c616e636500011c6d656d626572738d08013101426f756e64656442547265654d61703c483136302c20476c6f62616c49737375616e6365436f756e63696c4d656d6265723c543e2c20543a3a0a4d6178436f756e63696c4d656d626572733e000130746f74616c5f776569676874180128543a3a42616c616e636500008d080c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b010d0204560191080453000004009508013842547265654d61703c4b2c20563e000091080c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c65746c476c6f62616c49737375616e6365436f756e63696c4d656d62657204045400000c01286163636f756e745f6964000130543a3a4163636f756e7449640001187369676e65720d02011048313630000118776569676874180128543a3a42616c616e636500009508042042547265654d617008044b010d020456019108000400990800000099080000029d08009d08000004080d02910800a1080000040805023000a5080c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c657464436f756e63696c417070726f76616c5175657565456e7472790404540000200158617070726f76696e675f636f756e63696c5f68617368340110483235360001187461726765741902015c436f756e63696c417070726f76616c546172676574496400014c7461726765745f7061796c6f61645f68617368340110483235360001306475655f6672616d655f69642c011c4672616d65496400015870726576696f75735f617070726f76616c5f6861736834011048323536000134617070726f76616c5f6861736834011048323536000154617070726f7665645f746f74616c5f776569676874180128543a3a42616c616e63650001287369676e617475726573a90801f0426f756e64656442547265654d61703c483136302c204b656363616b5369676e61747572652c20543a3a4d6178436f756e63696c4d656d626572733e0000a9080c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b010d020456011104045300000400ad08013842547265654d61703c4b2c20563e0000ad08042042547265654d617008044b010d020456011104000400b108000000b108000002b50800b508000004080d02110400b9080c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c6574404d696e74696e67417574686f7269747904045400003401286163636f756e745f6964000130543a3a4163636f756e74496400014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e00015c64657374696e6174696f6e5f7369676e696e675f6b65790d020110483136300001147374617465bd0801544d696e74696e67417574686f726974795374617465000194676174657761795f72656d61696e696e675f6d6963726f676f6e5f636f6c6c61746572616c180128543a3a42616c616e6365000194676174657761795f72656d61696e696e675f6d6963726f6e6f745f636f6c6c61746572616c180128543a3a42616c616e636500019070656e64696e675f72657365727665645f6d6963726f676f6e5f636f6c6c61746572616c180128543a3a42616c616e636500019070656e64696e675f72657365727665645f6d6963726f6e6f745f636f6c6c61746572616c180128543a3a42616c616e636500016c6163746976655f70656e64696e675f7472616e736665725f696473c108012901426f756e6465645665633c483235362c3c5420617320436f6e6669673e3a3a0a4d617850656e64696e675472616e736665724f75747350657244657374696e6174696f6e436861696e3e00017c61637469766174696f6e5f617070726f76616c5f71756575655f6e6f6e6365300164436f756e63696c417070726f76616c51756575654e6f6e636500017c61637469766174696f6e5f626173655f72657061796d656e745f71756f7465c00128543a3a42616c616e636500019061637469766174696f6e5f7369676e61747572655f72657061796d656e745f71756f7465c00128543a3a42616c616e6365000184646561637469766174696f6e5f617070726f76616c5f71756575655f6e6f6e63658d0101844f7074696f6e3c436f756e63696c417070726f76616c51756575654e6f6e63653e0000bd080c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c6574544d696e74696e67417574686f72697479537461746500010c4450656e64696e6741637469766174696f6e0000001841637469766500010030446561637469766174696e6700020000c1080c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401340453000004002d0201185665633c543e0000c5080c6870616c6c65745f63726f7373636861696e5f7472616e73666572307472616e736665725f6f7574485472616e736665724f75744f664172676f6e04045400003001406172676f6e5f6163636f756e745f6964000130543a3a4163636f756e7449640001506172676f6e5f7472616e736665725f6e6f6e63652c015c5472616e736665724f7574526571756573744e6f6e636500014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e0001546d6963726f676f6e735f7065725f6172676f6e6f74c00128543a3a42616c616e636500014c64657374696e6174696f6e5f6163636f756e740d0201104831363000016876616c69645f756e74696c5f657468657265756d5f626c6f636b2c014c457468657265756d426c6f636b4e756d62657200011461737365741502012441737365744b696e64000118616d6f756e74180128543a3a42616c616e63650001546d696e74696e675f617574686f726974795f746970180128543a3a42616c616e6365000164746f74616c5f61747461636865645f636f6c6c61746572616c180128543a3a42616c616e63650001986d696e74696e675f617574686f726974795f636f6c6c61746572616c5f62795f7369676e6572c908015101426f756e64656442547265654d61703c483136302c204d696e74696e67417574686f726974795472616e736665725265736572766174696f6e3c543e2c20543a3a0a4d6178436f756e63696c4d656d626572733e0001147374617465dd0801405472616e736665724f757453746174650000c9080c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b010d02045601cd08045300000400d108013842547265654d61703c4b2c20563e0000cd080c6870616c6c65745f63726f7373636861696e5f7472616e73666572307472616e736665725f6f75748c4d696e74696e67417574686f726974795472616e736665725265736572766174696f6e040454000010014c6d6963726f676f6e5f636f6c6c61746572616c180128543a3a42616c616e636500014c6d6963726f6e6f745f636f6c6c61746572616c180128543a3a42616c616e6365000140636f6c6c61746572616c5f7368617265180128543a3a42616c616e63650001247369676e61747572651104013c4b656363616b5369676e61747572650000d108042042547265654d617008044b010d02045601cd08000400d508000000d508000002d90800d908000004080d02cd0800dd080c6870616c6c65745f63726f7373636861696e5f7472616e73666572307472616e736665725f6f7574405472616e736665724f757453746174650001081c5374617274656400000014526561647900010000e1080c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401e508045300000400e90801185665633c543e0000e5080c6870616c6c65745f63726f7373636861696e5f7472616e73666572307472616e736665725f6f75747c50656e64696e67436f6c6c61746572616c697a6174696f6e5265717565737404045400000c012c7472616e736665725f69643401104832353600015072656d61696e696e675f636f6c6c61746572616c180128543a3a42616c616e636500017c72656d61696e696e675f6d696e74696e675f617574686f726974795f746970180128543a3a42616c616e63650000e908000002e50800ed080c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c657458536f75726365436861696e43697263756c6174696f6e04045400000801446172676f6e5f63697263756c6174696f6e180128543a3a42616c616e636500014c6172676f6e6f745f63697263756c6174696f6e180128543a3a42616c616e63650000f1080c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c6574144572726f720404540001d878496e76616c69645472616e73666572546f4172676f6e41637469766974790000042d0154686520457468657265756d206576656e7420746f70696373206f72207061796c6f616420646f206e6f74206d6174636820605472616e73666572546f4172676f6e53746172746564602e704e6f4761746577617950726f6f66426c6f636b7350726f7669646564000104f04174206c65617374206f6e652070726f76656e20676174657761792d616374697669747920626c6f636b206d75737420626520737570706c6965642e6c4e6f476174657761794163746976697469657350726f766964656400020429014174206c65617374206f6e652067617465776179206163746976697479206c6f67206d75737420626520737570706c69656420776974682074686520726563656970742070726f6f662e30496e76616c696450726f6f66000304c854686520457468657265756d2076657269666965722072656a65637465642074686520737570706c6965642070726f6f662e44556e737570706f72746564536f75726365000404d854686520736f7572636520636861696e206973206e6f7420636f6e6669677572656420666f7220696e626f756e6420636c61696d732e48556e737570706f7274656447617465776179000504e8546865206761746577617920646f6573206e6f74206d617463682074686520636f6e66696775726564206761746577617920616464726573732e40556e737570706f72746564546f6b656e000604e054686520746f6b656e206973206e6f7420737570706f7274656420756e6465722074686520636f6e6669677572656420676174657761792e98556e657870656374656450726576696f75734761746577617941637469766974794e6f6e636500070449015468652063616c6c6572277320657870656374656420616c72656164792d70726f76656e2067617465776179206163746976697479206e6f6e6365206973207374616c65206f7220696e636f72726563742e78556e65787065637465644761746577617941637469766974794e6f6e63650008040d015468652070726f76656e2067617465776179206163746976697479206e6f6e6365206973206e6f7420746865206e65787420636f6e746967756f7573206e6f6e63652e48496e76616c6964436861696e436f6e666967000904f454686520636f6e6669677572656420736f757263652d636861696e20736861706520697320696e636f6d706c657465206f72206d616c666f726d65642e54496e73756666696369656e744c6971756964697479000a04d4546865206275726e206163636f756e74206c61636b7320656e6f7567682062616c616e636520666f7220746865207061796f75742e604d696e74696e67417574686f726974794e6f74466f756e64000b04090154686520737570706c696564204d696e74696e6720417574686f72697479207369676e696e67206b657920646f6573206e6f74206578697374206c6f63616c6c792e604d696e74696e67417574686f726974794d69736d61746368000c041d01546865206c6f63616c204d696e74696e6720417574686f7269747920646964206e6f74206d61746368207468652070726f76656e20457468657265756d2061637469766974792e7c556e65787065637465644d696e74696e67417574686f726974795374617465000d041101546865206c6f63616c204d696e74696e6720417574686f7269747920776173206e6f7420696e20746865206578706563746564206c6966656379636c652073746174652e44556e6b6e6f776e4f776e65725661756c74000e04b0546865206c6f63616c206f776e6572207661756c7420636f756c64206e6f74206265207265736f6c7665642e84496e76616c69644d696e74696e67417574686f726974795369676e696e674b6579000f04d854686520737570706c696564204d696e74696e6720417574686f72697479207369676e696e67206b657920697320696e76616c69642e844d696e74696e67417574686f72697479416c726561647952656769737465726564001004550154686520737570706c696564204d696e74696e6720417574686f72697479207369676e696e67206b657920616c7265616479206861732061206c697665206c6f63616c20617574686f72697479207265636f72642e98496e76616c69644d696e74696e67417574686f726974795369676e696e674b657950726f6f6600110841015468652070726f7669646564204d696e74696e6720417574686f72697479207369676e65722070726f6f6620646964206e6f74206d6174636820746865207265636f766572656420457468657265756d1c7369676e65722e84496e76616c69644d696e74696e67417574686f72697479436f6c6c61746572616c001204d454686520737570706c696564204d696e74696e6720417574686f7269747920636f6c6c61746572616c20697320696e76616c69642e74476c6f62616c49737375616e6365436f756e63696c4e6f74466f756e6400130449015468652061637469766520476c6f62616c2049737375616e636520436f756e63696c20686173206e6f74206265656e2073656564656420666f7220746869732064657374696e6174696f6e20636861696e2e70496e76616c6964476c6f62616c49737375616e6365436f756e63696c001404250154686520737570706c69656420476c6f62616c2049737375616e636520436f756e63696c20697320656d707479206f7220696e7465726e616c6c7920696e636f6e73697374656e742e904475706c6963617465476c6f62616c49737375616e6365436f756e63696c5369676e6572001504350154686520737570706c69656420476c6f62616c2049737375616e636520436f756e63696c20636f6e7461696e73207468652073616d65207369676e6572206d6f7265207468616e206f6e63652e944475706c6963617465476c6f62616c49737375616e6365436f756e63696c4163636f756e74001604390154686520737570706c69656420476c6f62616c2049737375616e636520436f756e63696c20636f6e7461696e73207468652073616d65206163636f756e74206d6f7265207468616e206f6e63652e64496e76616c6964436f756e63696c5369676e657250726f6f6600170439015468652070726f766964656420636f756e63696c207369676e65722070726f6f6620646964206e6f74206d6174636820746865207265636f766572656420457468657265756d207369676e65722e8c476c6f62616c49737375616e6365436f756e63696c4d656d6265724e6f74466f756e640018045501546865206f726967696e206973206e6f7420616e2061637469766520476c6f62616c2049737375616e636520436f756e63696c206d656d62657220666f72207468652064657374696e6174696f6e20636861696e2e68436f756e63696c5369676e65724e6f74526567697374657265640019042d01546865206163636f756e7420686173206e6f742072656769737465726564206120636f756e63696c207369676e657220666f7220746869732064657374696e6174696f6e20636861696e2e84436f756e63696c417070726f76616c5175657565456e7472794e6f74466f756e64001a04e8546865204d696e74696e6720417574686f7269747920617070726f76616c20717565756520656e74727920646f6573206e6f742065786973742e78436f756e63696c417070726f76616c416c72656164795265636f72646564001b0409015468697320636f756e63696c206d656d62657220616c726561647920617070726f7665642074686520717565756564204d696e74696e6720417574686f726974792e64496e76616c6964466f72636553657441667465724e6f6e6365001c04110154686520666f7263652d7365742063757420706f696e742077617320626568696e6420616c726561647920636f6e6669726d65642071756575652070726f67726573732e9843616e6e6f74466f72636553657451756f72756d417070726f7665645175657565456e747279001d04310154686520666f7263652d7365742063757420776f756c642064697363617264206120717565756520656e747279207468617420616c726561647920686173206c6f63616c2071756f72756d2e7c496e76616c6964436f756e63696c417070726f76616c5369676e6174757265001e044d015468652070726f766964656420636f756e63696c20617070726f76616c207369676e617475726520646964206e6f74206d617463682074686520657870656374656420457468657265756d207369676e65722e8c4e6f436f756e63696c417070726f76616c5369676e61747572657350726f7669646564001f04e44174206c65617374206f6e6520636f756e63696c20617070726f76616c207369676e6174757265206d75737420626520737570706c6965642e9c496e73756666696369656e74436f6d6d69747465644d6963726f676f6e436f6c6c61746572616c0020084901546865206f70657261746f7220646f6573206e6f74206861766520656e6f7567682072656d61696e696e6720636f6d6d6974746564206d6963726f676f6e20636f6c6c61746572616c20666f722074686973484d696e74696e6720417574686f726974792e98496e73756666696369656e74436f6d6d69747465644172676f6e6f74436f6c6c61746572616c0021084501546865206f70657261746f7220646f6573206e6f74206861766520656e6f7567682072656d61696e696e6720636f6d6d6974746564204172676f6e6f7420636f6c6c61746572616c20666f722074686973484d696e74696e6720417574686f726974792eb0496e76616c69644d696e74696e67417574686f72697479446561637469766174696f6e5369676e617475726500220841015468652070726f7669646564207369676e65722d617574686f72697a656420646561637469766174696f6e207369676e617475726520646964206e6f74206d6174636820746865206578706563746564784d696e74696e6720417574686f72697479207369676e696e67206b65792e68496e76616c69644d6963726f676f6e735065724172676f6e6f740023043d0154686520636f756e63696c2d6d616e61676564204172676f6e6f7420666c6f6f7220636f756c64206e6f742062652064657465726d696e65642066726f6d2063757272656e742070726963696e672e984d696e74696e67417574686f72697479436f6c6c61746572616c42656c6f774d696e696d756d0024084d0154686520737570706c696564204d696e74696e6720417574686f7269747920636f6c6c61746572616c2069732062656c6f772074686520636f6e66696775726564207065722d636861696e206d696e696d756d686e6f726d616c697a6564206d6963726f676f6e2076616c75652ec4496e76616c69644d696e74696e67417574686f7269747941637469766174696f6e52657061796d656e7450726963696e67002504090154686520636f6e666967757265642061637469766174696f6e2072657061796d656e742070726963696e6720697320696e7465726e616c6c7920696e76616c69642ec44d697373696e674d696e74696e67417574686f7269747941637469766174696f6e52657061796d656e7450726963696e67002604350154686520636f6e666967757265642061637469766174696f6e2072657061796d656e742070726963696e67206973206d697373696e6720666f72207468697320736f7572636520636861696e2e58496e76616c69644761746577617941637469766974790027043d0154686520457468657265756d206576656e7420746f70696373206f72207061796c6f616420646f206e6f74206d61746368206120737570706f7274656420676174657761792061637469766974792e444761746577617953796e635061757365640028083d015468697320736f7572636520636861696e206973207061757365642064756520746f20676174657761792073796e63206d6973616c69676e6d656e7420616e64206e65656473206f70657261746f72247265636f766572792e60496e76616c69645472616e736665724f7574416d6f756e74002904a0546865207472616e736665722d6f757420616d6f756e74206d757374206265206e6f6e7a65726f2e6c496e76616c69645472616e736665724f7574526563697069656e74002a041501546865207472616e736665722d6f757420726563697069656e74206d757374206265206e6f6e7a65726f20666f72207468652064657374696e6174696f6e20636861696e2e744d697373696e675665726966696564457865637574696f6e426c6f636b002b0845014e6f2076657269666965722d6261636b656420457468657265756d20657865637574696f6e20626c6f636b20697320617661696c61626c6520746f20616e63686f722061207472616e736665722d6f7574386578706972792077696e646f772e6c5374616c655665726966696564457865637574696f6e426c6f636b002c084d01546865206c61746573742076657269666965722d6261636b656420457468657265756d20657865637574696f6e20626c6f636b20697320746f6f206f6c6420746f20736166656c79206f70656e2061206e6577347472616e73666572206f75742e4c5472616e736665724f75744e6f74466f756e64002d04b0546865206f7574626f756e64207472616e73666572207265636f726420646f6573206e6f742065786973742e5c5472616e736665724f7574416c72656164795265616479002e083d01546865206f7574626f756e64207472616e736665722063616e6e6f7420616363657074206d6f726520636f6c6c61746572616c206265636175736520697420697320616c72656164792066756c6c7920636f76657265642e485472616e736665724f757445787069726564002f045d01546865206f7574626f756e64207472616e73666572207265717565737420697320616c72656164792065787069726564206f6e20746865206c617465737420766572696669656420457468657265756d20626c6f636b2e64496e76616c69645472616e73666572436f6c6c61746572616c00300421015468652070726f7669646564207472616e7366657220636f6c6c61746572616c20726f7720697320696e76616c696420666f722074686973207472616e736665722061737365742e7c496e76616c69645472616e73666572436f6c6c61746572616c55706461746500310451015468652070726f7669646564207472616e7366657220636f6c6c61746572616c20726f7720646964206e6f7420616476616e636520746865207369676e65722773206c6f63616c207265736572766174696f6e2e88496e76616c69645472616e73666572436f6c6c61746572616c5369676e61747572650032042901546865207472616e7366657220636f6c6c61746572616c207369676e617475726520646964206e6f74206d617463682074686520617574686f72697479207369676e696e67206b65792e98496e73756666696369656e744d696e74696e67417574686f72697479436f6c6c61746572616c003304590154686520617574686f7269747920646f6573206e6f74206861766520656e6f7567682072656d61696e696e67206761746577617920636f6c6c61746572616c20666f722074686973207472616e7366657220726f772e8c5472616e73666572436f6c6c61746572616c496e6372656d656e74546f6f536d616c6c003408490154686520636f6c6c61746572616c20696e6372656d656e742069732062656c6f772074686520636f6e66696775726564206d696e696d756d20616e6420646f6573206e6f7420636f6d706c65746520746865247472616e736665722e68546f6f4d616e7950656e64696e675472616e736665724f75747300350851015468652064657374696e6174696f6e20636861696e20616c726561647920747261636b7320746865206d6178696d756d206e756d626572206f66206e6f6e2d7465726d696e616c207472616e736665722d6f75742472657175657374732e048054686520604572726f726020656e756d206f6620746869732070616c6c65742ef508102873705f72756e74696d651c67656e657269634c756e636865636b65645f65787472696e73696348556e636865636b656445787472696e736963101c4164647265737301fd021043616c6c01f502245369676e6174757265010d0414457874726101f90800040038000000f9080000042cfd080109050909090d09110919091d09210925092d0900fd0810306672616d655f73797374656d28657874656e73696f6e7338617574686f72697a655f63616c6c34417574686f72697a6543616c6c04045400000000010910306672616d655f73797374656d28657874656e73696f6e7354636865636b5f6e6f6e5f7a65726f5f73656e64657248436865636b4e6f6e5a65726f53656e64657204045400000000050910306672616d655f73797374656d28657874656e73696f6e7348636865636b5f737065635f76657273696f6e40436865636b5370656356657273696f6e04045400000000090910306672616d655f73797374656d28657874656e73696f6e7340636865636b5f74785f76657273696f6e38436865636b547856657273696f6e040454000000000d0910306672616d655f73797374656d28657874656e73696f6e7334636865636b5f67656e6573697330436865636b47656e6573697304045400000000110910306672616d655f73797374656d28657874656e73696f6e733c636865636b5f6d6f7274616c69747938436865636b4d6f7274616c697479040454000004001509010c45726100001509102873705f72756e74696d651c67656e657269630c6572610c4572610001010420496d6d6f7274616c0000001c4d6f7274616c31040008000001001c4d6f7274616c32040008000002001c4d6f7274616c33040008000003001c4d6f7274616c34040008000004001c4d6f7274616c35040008000005001c4d6f7274616c36040008000006001c4d6f7274616c37040008000007001c4d6f7274616c38040008000008001c4d6f7274616c3904000800000900204d6f7274616c313004000800000a00204d6f7274616c313104000800000b00204d6f7274616c313204000800000c00204d6f7274616c313304000800000d00204d6f7274616c313404000800000e00204d6f7274616c313504000800000f00204d6f7274616c313604000800001000204d6f7274616c313704000800001100204d6f7274616c313804000800001200204d6f7274616c313904000800001300204d6f7274616c323004000800001400204d6f7274616c323104000800001500204d6f7274616c323204000800001600204d6f7274616c323304000800001700204d6f7274616c323404000800001800204d6f7274616c323504000800001900204d6f7274616c323604000800001a00204d6f7274616c323704000800001b00204d6f7274616c323804000800001c00204d6f7274616c323904000800001d00204d6f7274616c333004000800001e00204d6f7274616c333104000800001f00204d6f7274616c333204000800002000204d6f7274616c333304000800002100204d6f7274616c333404000800002200204d6f7274616c333504000800002300204d6f7274616c333604000800002400204d6f7274616c333704000800002500204d6f7274616c333804000800002600204d6f7274616c333904000800002700204d6f7274616c343004000800002800204d6f7274616c343104000800002900204d6f7274616c343204000800002a00204d6f7274616c343304000800002b00204d6f7274616c343404000800002c00204d6f7274616c343504000800002d00204d6f7274616c343604000800002e00204d6f7274616c343704000800002f00204d6f7274616c343804000800003000204d6f7274616c343904000800003100204d6f7274616c353004000800003200204d6f7274616c353104000800003300204d6f7274616c353204000800003400204d6f7274616c353304000800003500204d6f7274616c353404000800003600204d6f7274616c353504000800003700204d6f7274616c353604000800003800204d6f7274616c353704000800003900204d6f7274616c353804000800003a00204d6f7274616c353904000800003b00204d6f7274616c363004000800003c00204d6f7274616c363104000800003d00204d6f7274616c363204000800003e00204d6f7274616c363304000800003f00204d6f7274616c363404000800004000204d6f7274616c363504000800004100204d6f7274616c363604000800004200204d6f7274616c363704000800004300204d6f7274616c363804000800004400204d6f7274616c363904000800004500204d6f7274616c373004000800004600204d6f7274616c373104000800004700204d6f7274616c373204000800004800204d6f7274616c373304000800004900204d6f7274616c373404000800004a00204d6f7274616c373504000800004b00204d6f7274616c373604000800004c00204d6f7274616c373704000800004d00204d6f7274616c373804000800004e00204d6f7274616c373904000800004f00204d6f7274616c383004000800005000204d6f7274616c383104000800005100204d6f7274616c383204000800005200204d6f7274616c383304000800005300204d6f7274616c383404000800005400204d6f7274616c383504000800005500204d6f7274616c383604000800005600204d6f7274616c383704000800005700204d6f7274616c383804000800005800204d6f7274616c383904000800005900204d6f7274616c393004000800005a00204d6f7274616c393104000800005b00204d6f7274616c393204000800005c00204d6f7274616c393304000800005d00204d6f7274616c393404000800005e00204d6f7274616c393504000800005f00204d6f7274616c393604000800006000204d6f7274616c393704000800006100204d6f7274616c393804000800006200204d6f7274616c393904000800006300244d6f7274616c31303004000800006400244d6f7274616c31303104000800006500244d6f7274616c31303204000800006600244d6f7274616c31303304000800006700244d6f7274616c31303404000800006800244d6f7274616c31303504000800006900244d6f7274616c31303604000800006a00244d6f7274616c31303704000800006b00244d6f7274616c31303804000800006c00244d6f7274616c31303904000800006d00244d6f7274616c31313004000800006e00244d6f7274616c31313104000800006f00244d6f7274616c31313204000800007000244d6f7274616c31313304000800007100244d6f7274616c31313404000800007200244d6f7274616c31313504000800007300244d6f7274616c31313604000800007400244d6f7274616c31313704000800007500244d6f7274616c31313804000800007600244d6f7274616c31313904000800007700244d6f7274616c31323004000800007800244d6f7274616c31323104000800007900244d6f7274616c31323204000800007a00244d6f7274616c31323304000800007b00244d6f7274616c31323404000800007c00244d6f7274616c31323504000800007d00244d6f7274616c31323604000800007e00244d6f7274616c31323704000800007f00244d6f7274616c31323804000800008000244d6f7274616c31323904000800008100244d6f7274616c31333004000800008200244d6f7274616c31333104000800008300244d6f7274616c31333204000800008400244d6f7274616c31333304000800008500244d6f7274616c31333404000800008600244d6f7274616c31333504000800008700244d6f7274616c31333604000800008800244d6f7274616c31333704000800008900244d6f7274616c31333804000800008a00244d6f7274616c31333904000800008b00244d6f7274616c31343004000800008c00244d6f7274616c31343104000800008d00244d6f7274616c31343204000800008e00244d6f7274616c31343304000800008f00244d6f7274616c31343404000800009000244d6f7274616c31343504000800009100244d6f7274616c31343604000800009200244d6f7274616c31343704000800009300244d6f7274616c31343804000800009400244d6f7274616c31343904000800009500244d6f7274616c31353004000800009600244d6f7274616c31353104000800009700244d6f7274616c31353204000800009800244d6f7274616c31353304000800009900244d6f7274616c31353404000800009a00244d6f7274616c31353504000800009b00244d6f7274616c31353604000800009c00244d6f7274616c31353704000800009d00244d6f7274616c31353804000800009e00244d6f7274616c31353904000800009f00244d6f7274616c3136300400080000a000244d6f7274616c3136310400080000a100244d6f7274616c3136320400080000a200244d6f7274616c3136330400080000a300244d6f7274616c3136340400080000a400244d6f7274616c3136350400080000a500244d6f7274616c3136360400080000a600244d6f7274616c3136370400080000a700244d6f7274616c3136380400080000a800244d6f7274616c3136390400080000a900244d6f7274616c3137300400080000aa00244d6f7274616c3137310400080000ab00244d6f7274616c3137320400080000ac00244d6f7274616c3137330400080000ad00244d6f7274616c3137340400080000ae00244d6f7274616c3137350400080000af00244d6f7274616c3137360400080000b000244d6f7274616c3137370400080000b100244d6f7274616c3137380400080000b200244d6f7274616c3137390400080000b300244d6f7274616c3138300400080000b400244d6f7274616c3138310400080000b500244d6f7274616c3138320400080000b600244d6f7274616c3138330400080000b700244d6f7274616c3138340400080000b800244d6f7274616c3138350400080000b900244d6f7274616c3138360400080000ba00244d6f7274616c3138370400080000bb00244d6f7274616c3138380400080000bc00244d6f7274616c3138390400080000bd00244d6f7274616c3139300400080000be00244d6f7274616c3139310400080000bf00244d6f7274616c3139320400080000c000244d6f7274616c3139330400080000c100244d6f7274616c3139340400080000c200244d6f7274616c3139350400080000c300244d6f7274616c3139360400080000c400244d6f7274616c3139370400080000c500244d6f7274616c3139380400080000c600244d6f7274616c3139390400080000c700244d6f7274616c3230300400080000c800244d6f7274616c3230310400080000c900244d6f7274616c3230320400080000ca00244d6f7274616c3230330400080000cb00244d6f7274616c3230340400080000cc00244d6f7274616c3230350400080000cd00244d6f7274616c3230360400080000ce00244d6f7274616c3230370400080000cf00244d6f7274616c3230380400080000d000244d6f7274616c3230390400080000d100244d6f7274616c3231300400080000d200244d6f7274616c3231310400080000d300244d6f7274616c3231320400080000d400244d6f7274616c3231330400080000d500244d6f7274616c3231340400080000d600244d6f7274616c3231350400080000d700244d6f7274616c3231360400080000d800244d6f7274616c3231370400080000d900244d6f7274616c3231380400080000da00244d6f7274616c3231390400080000db00244d6f7274616c3232300400080000dc00244d6f7274616c3232310400080000dd00244d6f7274616c3232320400080000de00244d6f7274616c3232330400080000df00244d6f7274616c3232340400080000e000244d6f7274616c3232350400080000e100244d6f7274616c3232360400080000e200244d6f7274616c3232370400080000e300244d6f7274616c3232380400080000e400244d6f7274616c3232390400080000e500244d6f7274616c3233300400080000e600244d6f7274616c3233310400080000e700244d6f7274616c3233320400080000e800244d6f7274616c3233330400080000e900244d6f7274616c3233340400080000ea00244d6f7274616c3233350400080000eb00244d6f7274616c3233360400080000ec00244d6f7274616c3233370400080000ed00244d6f7274616c3233380400080000ee00244d6f7274616c3233390400080000ef00244d6f7274616c3234300400080000f000244d6f7274616c3234310400080000f100244d6f7274616c3234320400080000f200244d6f7274616c3234330400080000f300244d6f7274616c3234340400080000f400244d6f7274616c3234350400080000f500244d6f7274616c3234360400080000f600244d6f7274616c3234370400080000f700244d6f7274616c3234380400080000f800244d6f7274616c3234390400080000f900244d6f7274616c3235300400080000fa00244d6f7274616c3235310400080000fb00244d6f7274616c3235320400080000fc00244d6f7274616c3235330400080000fd00244d6f7274616c3235340400080000fe00244d6f7274616c3235350400080000ff0000190910306672616d655f73797374656d28657874656e73696f6e732c636865636b5f6e6f6e636528436865636b4e6f6e636504045400000400d40120543a3a4e6f6e636500001d0910306672616d655f73797374656d28657874656e73696f6e7330636865636b5f7765696768742c436865636b576569676874040454000000002109086870616c6c65745f7472616e73616374696f6e5f7061796d656e74604368617267655472616e73616374696f6e5061796d656e7404045400000400c0013042616c616e63654f663c543e0000250908746672616d655f6d657461646174615f686173685f657874656e73696f6e44436865636b4d657461646174614861736804045400000401106d6f6465290901104d6f64650000290908746672616d655f6d657461646174615f686173685f657874656e73696f6e104d6f64650001082044697361626c65640000001c456e61626c6564000100002d0910306672616d655f73797374656d28657874656e73696f6e73387765696768745f7265636c61696d345765696768745265636c61696d04045400000000310904184f7074696f6e04045401040108104e6f6e6500000010536f6d650400040000010000350908346172676f6e5f72756e74696d651c52756e74696d6500000000801853797374656d011853797374656d501c4163636f756e7401010402000c4101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008004e8205468652066756c6c206163636f756e7420696e666f726d6174696f6e20666f72206120706172746963756c6172206163636f756e742049442e3845787472696e736963436f756e74000010040004b820546f74616c2065787472696e7369637320636f756e7420666f72207468652063757272656e7420626c6f636b2e40496e686572656e74734170706c696564010020040004a4205768657468657220616c6c20696e686572656e74732068617665206265656e206170706c6965642e2c426c6f636b576569676874010024180000000000000488205468652063757272656e742077656967687420666f722074686520626c6f636b2e24426c6f636b53697a6500001004000cb020546f74616c2073697a652028696e20627974657329206f66207468652063757272656e7420626c6f636b2e00c820547261636b73207468652073697a65206f66207468652068656164657220616e6420616c6c2065787472696e736963732e24426c6f636b486173680101040510348000000000000000000000000000000000000000000000000000000000000000000498204d6170206f6620626c6f636b206e756d6265727320746f20626c6f636b206861736865732e3445787472696e736963446174610101040510380400043d012045787472696e73696373206461746120666f72207468652063757272656e7420626c6f636b20286d61707320616e2065787472696e736963277320696e64657820746f206974732064617461292e184e756d6265720100101000000000040901205468652063757272656e7420626c6f636b206e756d626572206265696e672070726f6365737365642e205365742062792060657865637574655f626c6f636b602e28506172656e744861736801003480000000000000000000000000000000000000000000000000000000000000000004702048617368206f66207468652070726576696f757320626c6f636b2e1844696765737401003c040004f020446967657374206f66207468652063757272656e7420626c6f636b2c20616c736f2070617274206f662074686520626c6f636b206865616465722e184576656e747301004c04001ca0204576656e7473206465706f736974656420666f72207468652063757272656e7420626c6f636b2e001d01204e4f54453a20546865206974656d20697320756e626f756e6420616e642073686f756c64207468657265666f7265206e657665722062652072656164206f6e20636861696e2ed020497420636f756c64206f746865727769736520696e666c6174652074686520506f562073697a65206f66206120626c6f636b2e002d01204576656e747320686176652061206c6172676520696e2d6d656d6f72792073697a652e20426f7820746865206576656e747320746f206e6f7420676f206f75742d6f662d6d656d6f7279fc206a75737420696e206361736520736f6d656f6e65207374696c6c207265616473207468656d2066726f6d2077697468696e207468652072756e74696d652e284576656e74436f756e74010010100000000004b820546865206e756d626572206f66206576656e747320696e2074686520604576656e74733c543e60206c6973742e2c4576656e74546f70696373010104023431020400282501204d617070696e67206265747765656e206120746f7069632028726570726573656e74656420627920543a3a486173682920616e64206120766563746f72206f6620696e646578657394206f66206576656e747320696e2074686520603c4576656e74733c543e3e60206c6973742e00510120416c6c20746f70696320766563746f727320686176652064657465726d696e69737469632073746f72616765206c6f636174696f6e7320646570656e64696e67206f6e2074686520746f7069632e2054686973450120616c6c6f7773206c696768742d636c69656e747320746f206c6576657261676520746865206368616e67657320747269652073746f7261676520747261636b696e67206d656368616e69736d20616e64e420696e2063617365206f66206368616e67657320666574636820746865206c697374206f66206576656e7473206f6620696e7465726573742e005901205468652076616c756520686173207468652074797065206028426c6f636b4e756d626572466f723c543e2c204576656e74496e646578296020626563617573652069662077652075736564206f6e6c79206a7573744d012074686520604576656e74496e64657860207468656e20696e20636173652069662074686520746f70696320686173207468652073616d6520636f6e74656e7473206f6e20746865206e65787420626c6f636b0101206e6f206e6f74696669636174696f6e2077696c6c20626520747269676765726564207468757320746865206576656e74206d69676874206265206c6f73742e484c61737452756e74696d65557067726164650000390204000455012053746f726573207468652060737065635f76657273696f6e6020616e642060737065635f6e616d6560206f66207768656e20746865206c6173742072756e74696d6520757067726164652068617070656e65642e44426c6f636b7354696c6c55706772616465000008040004ec204e756d626572206f6620626c6f636b732074696c6c207468652070656e64696e6720636f64652075706772616465206973206170706c6965642e545570677261646564546f553332526566436f756e740100200400044d012054727565206966207765206861766520757067726164656420736f207468617420607479706520526566436f756e74602069732060753332602e2046616c7365202864656661756c7429206966206e6f742e605570677261646564546f547269706c65526566436f756e740100200400085d012054727565206966207765206861766520757067726164656420736f2074686174204163636f756e74496e666f20636f6e7461696e73207468726565207479706573206f662060526566436f756e74602e2046616c736548202864656661756c7429206966206e6f742e38457865637574696f6e506861736500002902040004882054686520657865637574696f6e207068617365206f662074686520626c6f636b2e44417574686f72697a65645570677261646500004502040004b82060536f6d6560206966206120636f6465207570677261646520686173206265656e20617574686f72697a65642e6045787472696e7369635765696768745265636c61696d65640100280800001ca02054686520776569676874207265636c61696d656420666f72207468652065787472696e7369632e002101205468697320696e666f726d6174696f6e20697320617661696c61626c6520756e74696c2074686520656e64206f66207468652065787472696e73696320657865637574696f6e2e2101204d6f726520707265636973656c79207468697320696e666f726d6174696f6e2069732072656d6f76656420696e20606e6f74655f6170706c6965645f65787472696e736963602e007101204c6f67696320646f696e6720736f6d6520706f73742064697370617463682077656967687420726564756374696f6e206d7573742075706461746520746869732073746f7261676520746f2061766f6964206475706c69636174652c20726564756374696f6e2e01490201581830426c6f636b576569676874735902fd01c2a0e766000b00a0724e180913ffffffffffffffff2261c91900010bb81711ca5d061332333333333333b3010b00f8d53ad20613ffffffffffffffbf0100002261c91900010bb8bfaddda3081332333333333333f3010b00a0724e180913ffffffffffffffff010b00a89c1346021300000000000000402261c9190000000004d020426c6f636b20262065787472696e7369637320776569676874733a20626173652076616c75657320616e64206c696d6974732e2c426c6f636b4c656e67746869023400003c0000005000000050000004a820546865206d6178696d756d206c656e677468206f66206120626c6f636b2028696e206279746573292e38426c6f636b48617368436f756e74101000100000045501204d6178696d756d206e756d626572206f6620626c6f636b206e756d62657220746f20626c6f636b2068617368206d617070696e677320746f206b65657020286f6c64657374207072756e6564206669727374292e20446257656967687475024040787d010000000000e1f505000000000409012054686520776569676874206f662072756e74696d65206461746162617365206f7065726174696f6e73207468652072756e74696d652063616e20696e766f6b652e1c56657273696f6e79026904146172676f6e146172676f6e01000000970000000a00000054df6acb689907609b0500000037e397fc7c91f5e402000000ccd9de6396c899ca0100000040fe3ad401f8959a06000000d2bc9897eed08f1503000000f78b278be53f454c02000000bc9d89904f5b923f01000000ab3c0572291feb8b0200000037c8bb1350a9a2a804000000f3ff14d5ab5270590300000061571683e6d7a7c8010000005e4dc2ce83c23f0901000000e6683faaa563317a0200000011de59f9923f03d80100000051c97e4020145cb001000000bab599c4f0d362c601000000fff0fb031985f8a1020000000090f9d890bb0bb20100000005dd9be92cc17d2803000000ed99c5acb25eedf503000000fbc577b9d747efd60100000005000000010484204765742074686520636861696e277320696e2d636f64652076657273696f6e2e28535335385072656669789c082a0014a8205468652064657369676e61746564205353353820707265666978206f66207468697320636861696e2e0039012054686973207265706c6163657320746865202273733538466f726d6174222070726f7065727479206465636c6172656420696e2074686520636861696e20737065632e20526561736f6e20697331012074686174207468652072756e74696d652073686f756c64206b6e6f772061626f7574207468652070726566697820696e206f7264657220746f206d616b6520757365206f662069742061737020616e206964656e746966696572206f662074686520636861696e2e018d02001c44696765737473011c44696765737473042c54656d7044696765737473000091020400000001800001d902012454696d657374616d70012454696d657374616d70080c4e6f7701003020000000000000000004a0205468652063757272656e742074696d6520666f72207468652063757272656e7420626c6f636b2e24446964557064617465010020040010d82057686574686572207468652074696d657374616d7020686173206265656e207570646174656420696e207468697320626c6f636b2e00550120546869732076616c7565206973207570646174656420746f206074727565602075706f6e207375636365737366756c207375626d697373696f6e206f6620612074696d657374616d702062792061206e6f64652e4501204974206973207468656e20636865636b65642061742074686520656e64206f66206561636820626c6f636b20657865637574696f6e20696e2074686520606f6e5f66696e616c697a656020686f6f6b2e01dd020004344d696e696d756d506572696f6430200100000000000000188c20546865206d696e696d756d20706572696f64206265747765656e20626c6f636b732e004d012042652061776172652074686174207468697320697320646966666572656e7420746f20746865202a65787065637465642a20706572696f6420746861742074686520626c6f636b2070726f64756374696f6e4901206170706172617475732070726f76696465732e20596f75722063686f73656e20636f6e73656e7375732073797374656d2077696c6c2067656e6572616c6c7920776f726b2077697468207468697320746f61012064657465726d696e6520612073656e7369626c6520626c6f636b2074696d652e20466f72206578616d706c652c20696e2074686520417572612070616c6c65742069742077696c6c20626520646f75626c6520746869737020706572696f64206f6e2064656661756c742073657474696e67732e0002204d756c746973696701204d756c746973696704244d756c7469736967730001080502e102e502040004942054686520736574206f66206f70656e206d756c7469736967206f7065726174696f6e732e01f10201840c2c4465706f736974426173651840a005000000000000000000000000000018590120546865206261736520616d6f756e74206f662063757272656e6379206e656564656420746f207265736572766520666f72206372656174696e672061206d756c746973696720657865637574696f6e206f7220746f842073746f726520612064697370617463682063616c6c20666f72206c617465722e00010120546869732069732068656c6420666f7220616e206164646974696f6e616c2073746f72616765206974656d2077686f73652076616c75652073697a652069733101206034202b2073697a656f662828426c6f636b4e756d6265722c2042616c616e63652c204163636f756e74496429296020627974657320616e642077686f7365206b65792073697a652069738020603332202b2073697a656f66284163636f756e74496429602062797465732e344465706f736974466163746f721840a00000000000000000000000000000000c55012054686520616d6f756e74206f662063757272656e6379206e65656465642070657220756e6974207468726573686f6c64207768656e206372656174696e672061206d756c746973696720657865637574696f6e2e00250120546869732069732068656c6420666f7220616464696e67203332206279746573206d6f726520696e746f2061207072652d6578697374696e672073746f726167652076616c75652e384d61785369676e61746f7269657310106400000004ec20546865206d6178696d756d20616d6f756e74206f66207369676e61746f7269657320616c6c6f77656420696e20746865206d756c74697369672e013105031450726f7879011450726f7879081c50726f78696573010104050035054400000000000000000000000000000000000845012054686520736574206f66206163636f756e742070726f786965732e204d61707320746865206163636f756e74207768696368206861732064656c65676174656420746f20746865206163636f756e7473210120776869636820617265206265696e672064656c65676174656420746f2c20746f67657468657220776974682074686520616d6f756e742068656c64206f6e206465706f7369742e34416e6e6f756e63656d656e74730101040500450544000000000000000000000000000000000004ac2054686520616e6e6f756e63656d656e7473206d616465206279207468652070726f787920286b6579292e01f9020194184050726f78794465706f736974426173651840b004000000000000000000000000000010110120546865206261736520616d6f756e74206f662063757272656e6379206e656564656420746f207265736572766520666f72206372656174696e6720612070726f78792e00010120546869732069732068656c6420666f7220616e206164646974696f6e616c2073746f72616765206974656d2077686f73652076616c75652073697a652069732501206073697a656f662842616c616e6365296020627974657320616e642077686f7365206b65792073697a65206973206073697a656f66284163636f756e74496429602062797465732e4850726f78794465706f736974466163746f721840a500000000000000000000000000000014bc2054686520616d6f756e74206f662063757272656e6379206e6565646564207065722070726f78792061646465642e00350120546869732069732068656c6420666f7220616464696e6720333220627974657320706c757320616e20696e7374616e6365206f66206050726f78795479706560206d6f726520696e746f20616101207072652d6578697374696e672073746f726167652076616c75652e20546875732c207768656e20636f6e6669677572696e67206050726f78794465706f736974466163746f7260206f6e652073686f756c642074616b65f420696e746f206163636f756e7420603332202b2070726f78795f747970652e656e636f646528292e6c656e282960206279746573206f6620646174612e284d617850726f7869657310102000000004f020546865206d6178696d756d20616d6f756e74206f662070726f7869657320616c6c6f77656420666f7220612073696e676c65206163636f756e742e284d617850656e64696e6710102000000004450120546865206d6178696d756d20616d6f756e74206f662074696d652d64656c6179656420616e6e6f756e63656d656e747320746861742061726520616c6c6f77656420746f2062652070656e64696e672e5c416e6e6f756e63656d656e744465706f736974426173651840d804000000000000000000000000000010310120546865206261736520616d6f756e74206f662063757272656e6379206e656564656420746f207265736572766520666f72206372656174696e6720616e20616e6e6f756e63656d656e742e00490120546869732069732068656c64207768656e2061206e65772073746f72616765206974656d20686f6c64696e672061206042616c616e636560206973206372656174656420287479706963616c6c7920313620206279746573292e64416e6e6f756e63656d656e744465706f736974466163746f7218404a01000000000000000000000000000010d42054686520616d6f756e74206f662063757272656e6379206e65656465642070657220616e6e6f756e63656d656e74206d6164652e00590120546869732069732068656c6420666f7220616464696e6720616e20604163636f756e744964602c2060486173686020616e642060426c6f636b4e756d6265726020287479706963616c6c79203638206279746573298c20696e746f2061207072652d6578697374696e672073746f726167652076616c75652e01550504145469636b7301145469636b73143050726576696f75735469636b010030200000000000000000002c43757272656e745469636b010030200000000000000000002c47656e657369735469636b010030200000000000000000003447656e657369735469636b657201005905080000004c526563656e74426c6f636b7341745469636b7301010405305d05040008e820426c6f636b732066726f6d20746865206c61737420313030207469636b732e205472696d6d656420696e206f6e5f696e697469616c697a652ef4204e4f54453a2063616e6e6f7420696e636c756465207468652063757272656e7420626c6f636b206861736820756e74696c206e65787420626c6f636b010903000001610505284d696e696e67536c6f7401284d696e696e67536c6f74505c48617341646465644772616e647061526f746174696f6e010020040000384d696e6572734279436f686f72740101040230a80400045901204d696e6572732074686174206172652061637469766520696e207468652063757272656e7420626c6f636b2028706f737420696e697469616c697a6529206279207468656972207374617274696e67206672616d65444163746976654d696e657273436f756e7401009c08000000644d696e65724e6f6e636553636f72696e674279436f686f72740100650504000c610120546869732069732061206c6f6f6b7570206f662065616368206d696e65722773206e6f6e636520746f20757365207768656e207069636b696e672061206265737420617574686f7269747920746f207375626d69742061510120626c6f636b2e2049742773206120626c616b6532203235362068617368206f6620746865206d696e6572206163636f756e7420696420616e642074686520626c6f636b20686173682061742074696d65206f66302061637469766174696f6e2e544172676f6e6f74735065724d696e696e6753656174010018400000000000000000000000000000000004c8204172676f6e6f74732074686174206d757374206265206c6f636b656420746f2074616b652061204d696e657220726f6c65484163636f756e74496e6465784c6f6f6b7570000104020085050400046901204c6f6f6b7570206279206163636f756e7420696420746f2074686520636f72726573706f6e64696e6720696e64657820696e204d696e6572734279436f686f727420616e64204d696e65724e6f6e6365734279436f686f72745442696473466f724e657874536c6f74436f686f72740100a80400080d012054686520636f686f72742073657420746f20676f20696e746f2065666665637420696e20746865206e65787420736c6f742e20546865205665632068617320616c6c882072656769737472616e747320776974682074686569722062696420616d6f756e746452656c65617365644d696e65727342794163636f756e74496401008905040004150120546865206d696e6572732072656c656173656420696e20746865206c61737420626c6f636b20286f6e6c79206b65707420666f7220612073696e676c6520626c6f636b295449734e657874536c6f7442696464696e674f70656e0100200400049420497320746865206e65787420736c6f74207374696c6c206f70656e20666f72206269647354486973746f726963616c42696473506572536c6f7401009905040004050120546865206e756d626572206f6620626964732070657220736c6f7420666f7220746865206c61737420313020736c6f747320286e6577657374206669727374294c417665726167655072696365506572536561740100a505040004050120546865206176657261676520707269636520706572207365617420666f7220746865206c617374203130206672616d657320286e657765737420666972737429304d696e696e67436f6e6669670100ad050c00000004b420546865206d696e696e6720736c6f7420636f6e66696775726174696f6e2073657420696e2067656e657369732c4e6578744672616d65496401003020000000000000000008750120546865206e657874206672616d6549642e2041206672616d6520696e206172676f6e2069732074686520323420686f757273206265747765656e20746865207374617274206f662074776f20646966666572656e74206d696e696e672420636f686f7274732e4c4e65776c79537461727465644672616d654964000030040004942049732061206e6577206672616d65207374617274656420696e207468697320626c6f636b384e657874436f686f727453697a65010010100000000004f420546865206e756d626572206f6620616c6c6f77206d696e65727320746f2062696420666f7220746865206e657874206d696e696e6720636f686f7274805363686564756c6564436f686f727453697a654368616e676542794672616d650100b10504000ce420546865207570636f6d696e67206368616e676573207363686564756c656420666f7220636f686f72742073697a65206279206672616d652e5501204361706163697479206f6620313120616c6c6f777320666f72203130206672616d657320776f727468206f66207363686564756c6564206368616e67657320706c7573206f6e6520776f726b696e6720736c6f74d020746f207363686564756c652061206e6577206368616e676520647572696e67206672616d652066696e616c697a6174696f6e2e644672616d655265776172645469636b7352656d61696e696e6701003020000000000000000004c820546865206e756d626572206f6620726577617264207469636b732072656d61696e696e6720696e20746865206672616d65584672616d655374617274426c6f636b4e756d626572730100bd05040004a8205468652070726576696f7573203130206672616d6520737461727420626c6f636b206e756d626572733c4672616d6553746172745469636b730100c50504000488205468652070726576696f7573203130206672616d65207374617274207469636b734c54656d704672616d65496e666f4469676573740000bd02040004982054656d706f726172792073746f726520746865206672616d6520696e666f20646967657374010d0301a42c4c4672616d65735065724d696e696e675465726d10100a00000004a820546865206e756d626572206f66206672616d65732061206d696e6572206f7065726174657320666f72344d696e436f686f727453697a6510100a00000004a020546865206d696e696d756d206e756d626572206f66206d696e6572732070657220636f686f7274344d6178436f686f727453697a65101090000000085d0120486f77206d616e79206e6577206d696e6572732063616e20626520696e2074686520636f686f727420666f72206561636820736c6f742e205468652061637475616c206d6178696d756d2077696c6c2061646a757374302064796e616d6963616c6c797c4172676f6e6f747350657263656e7441646a7573746d656e7444616d706572e040000014bbf08ac602000000000000000004210120546865206d61782070657263656e74207377696e6720666f7220746865206172676f6e6f74732070657220736c6f74202866726f6d20746865206c6173742070657263656e7429584d696e696d756d4172676f6e6f747350657253656174184010270000000000000000000000000000049420546865206d696e696d756d206172676f6e6f7473206e6565646564207065722073656174704d6178696d756d4172676f6e6f7450726f7261746150657263656e74d5050428082d0120546865206d6178696d756d2070657263656e74206f66206172676f6e6f747320696e20746865206e6574776f726b20746861742073686f756c6420626520726571756972656420666f7234206d696e696e6720736561747360546172676574426964735065725365617450657263656e74e0400000c84e676dc11b000000000000000008590120546865207461726765742070657263656e74206f662062696473207065722061756374696f6e2072656c617469766520746f20746865206d6178206e756d626572206f662073656174732e20546869732077696c6c2d012061646a75737420746865206172676f6e6f7473207065722073656174207570206f7220646f776e20746f20656e73757265206d696e696e6720736c6f7473206172652066696c6c65642e48546172676574507269636550657253656174184000ca9a3b000000000000000000000000046c20546865207461726765742070726963652070657220736561742e7050726963655065725365617441646a7573746d656e7444616d706572e040000014bbf08ac6020000000000000000040901205468652064616d706572206f6e207468652070726963652070657220736561742061646a7573746d656e74202866726f6d20746865206c61737420707269636529504d696e696e67426964506f6f6c4163636f756e7400806d6f646c6c7164506f6f6c730000000000000000000000000000000000000000041501204163636f756e742074686174207265636569766573206d696e696e67206269642066756e6473206265666f726520747265617375727920646973747269627574696f6e2e34426964496e6372656d656e74731840102700000000000000000000000000000419012054686520696e6372656d656e74207468617420626964732063616e206265206f6e2028666f7220696e7374616e63652c206f6e652063656e7420696e6372656d656e74732901d9050630426974636f696e5574786f730130426974636f696e5574786f73302c4c6f636b65645574786f7300010402ccdd0504000c5d01204c6f636b656420426974636f696e205554584f7320746861742068617665206265656e2066756e64656420776974682061205574786f5265662066726f6d2074686520426974636f696e206e6574776f726b20616e645d0120616d6f756e74732077697468696e20746865204d696e696d756d5361746f7368695468726573686f6c64206f66207468652065787065637465642e204966206120426974636f696e205554584f206973206d6f7665643101206265666f7265207468652065787069726174696f6e20626c6f636b2c207468652066756e647320617265206275726e656420616e6420746865205554584f20697320756e6c6f636b65642e585574786f4964546f46756e64696e675574786f5265660001040530cc040004d42041206d617070696e67206f66207574786f20696420746f2074686520636f6e6669726d6564207574786f207265666572656e63654c4c6f636b7350656e64696e6746756e64696e670100e5050400040d0120426974636f696e206c6f636b732074686174206172652070656e64696e672066756c6c2066756e64696e67206f6e2074686520626974636f696e206e6574776f726b544578706972656450656e64696e6746756e64696e670100e50504000431012050656e64696e672066756e64696e6720656e747269657320746861742068617665206578706972656420616e6420617265206177616974696e6720626f756e64656420636c65616e75702e6443616e6469646174655574786f5265667342795574786f49640101040530f50504000429012043616e646964617465205554584f73206173736f63696174656420776974682061206c6f636b20286d69736d6174636865732c2065787472612066756e64696e672c206574632e292e38426974636f696e4e6574776f726b01000506040304ec205468652067656e657369732073657420626974636f696e206e6574776f726b2074686174207468697320636861696e206973207469656420746f60436f6e6669726d6564426974636f696e426c6f636b54697000002d03040004fc20416e206f7261636c652d70726f766964656420636f6e6669726d656420626974636f696e20626c6f636b202865672c203620626c6f636b73206261636b295c50726576696f7573426974636f696e426c6f636b54697000002d030400005854656d70506172656e7448617353796e635374617465010020040004d42053746f72657320696620706172656e7420626c6f636b20686164206120636f6e6669726d656420626974636f696e20626c6f636b4c53796e63686564426974636f696e426c6f636b00002d030400047c20546865206c6173742073796e6368656420626974636f696e20626c6f636b544f7261636c654f70657261746f724163636f756e740000000400048020426974636f696e204f7261636c65204f70657261746f72204163636f756e7440496e686572656e74496e636c756465640100200400048c20436865636b2069662074686520696e686572656e742077617320696e636c7564656401110301c8146c4d617850656e64696e67436f6e6669726d6174696f6e5574786f7310101027000004650120546865206d6178696d756d206e756d626572206f66205554584f7320746861742063616e206265207761746368656420696e206120626c6f636b20616e642f6f72206578706972696e672061742073616d6520626c6f636b904d617850656e64696e6746756e64696e6745787069726174696f6e73506572426c6f636b10106400000004310120546865206d6178696d756d206e756d626572206f6620657870697265642070656e64696e672066756e64696e6720656e747269657320636c65616e656420757020696e206120626c6f636b604d617843616e6469646174655574786f735065724c6f636b10106400000004c8204d6178696d756d206e756d626572206f662063616e646964617465205554584f732073746f72656420706572206c6f636b704d617850656e64696e67436f6e6669726d6174696f6e426c6f636b7330209000000000000000042501204d6178696d756d20626974636f696e20626c6f636b7320746f2077617463682061205574786f20666f7220636f6e6669726d6174696f6e206265666f72652063616e63656c696e678c4d6178696d756d5361746f7368695468726573686f6c6446726f6d45787065637465643020e803000000000000084501204d6178696d756d206e756d626572206f66207361746f73686920646966666572656e636520616c6c6f7765642066726f6d20657870656374656420746f20636f6e73696465722061205554584f206173302022636f6e6669726d65642201090607185661756c747301185661756c7473382c4e6578745661756c744964000010040000285661756c74734279496400010405100d0604000434205661756c7473206279206964445661756c74496442794f70657261746f7200010405001004000440205661756c7473206279206f776e6572684172676f6e6f74436f6d6d69746d656e7442795661756c744964000104051029060400040101205661756c742d7369646520636f6d6d697474656420616e642063726f7373636861696e2d656e63756d6265726564206172676f6e6f74206261636b696e672e345661756c74585075624279496400010405102d06040004e0205661756c7420426974636f696e205870756220616e642063757272656e74206368696c6420636f756e746572206279205661756c744964644c617374436f6c6c6563744672616d6542795661756c7449640001040510300400049420546865206c61737420636f6c6c656374206672616d65206f662065616368207661756c747c50656e64696e675465726d734d6f64696669636174696f6e7342795469636b01010405303d060400085d012050656e64696e67207465726d7320746861742077696c6c20626520636f6d6d69747465642061742074686520676976656e20626c6f636b206e756d62657220286d7573742062652061206d696e696d756d206f6620314c206672616d65206368616e67652061776179295850656e64696e67436f7369676e42795661756c74496401010405104106040004a420426974636f696e204c6f636b732070656e64696e6720636f7369676e206279207661756c74206964744f727068616e65645574786f4163636f756e747342795661756c74496401010805024d0610100000000004c8204f727068616e656420426974636f696e205574786f732070656e64696e6720636f7369676e206279207661756c742069646c5661756c7446756e647352656c656173696e67427948656967687401010405305106040004fc20546865207661756c7473207468617420686176652066756e64732072656c656173696e67206174206120676976656e20626974636f696e206865696768749c5661756c747352656c656173696e674f7065726174696f6e616c4d696e696d756d42795469636b010104053051060400043101205661756c74732077686f73652074656d706f72617279206f7065726174696f6e616c206d696e696d756d206d61792062652072656c6561736564206174206120676976656e207469636b2e58526576656e75655065724672616d6542795661756c740101040510590604000c710120547261636b7320726576656e75652066726f6d20426974636f696e204c6f636b7320616e6420547265617375727920506f6f6c7320666f722074686520747261696c696e67206672616d657320666f722065616368207661756c747101202861206672616d65206973206120226d696e696e67206461792220696e204172676f6e292e204e6577657374206672616d6573206172652066697273742e204672616d6573206172652072656d6f76656420616674657220746865050120636f6c6c6563742065787069726174696f6e2077696e646f77202860526576656e7565436f6c6c656374696f6e45787069726174696f6e4672616d657360292e6c526576656e75655065724672616d6542795661756c74436f756e7401001010000000000068526563656e74436170616369747944726f707342795661756c7401010405106506040004f420526563656e7420726564756374696f6e7320696e2060617661696c61626c655f666f725f6c6f636b602c2067726f75706564206279207661756c742e01310301dc24884d617850656e64696e675465726d4d6f64696669636174696f6e735065725469636b10106400000004b420546865206d61782070656e64696e67207661756c74207465726d206368616e6765732070657220626c6f636b244d61785661756c747310101027000004b420546865206d6178206e756d626572206f66207661756c747320746861742063616e2062652063726561746564644d617850656e64696e67436f7369676e735065725661756c7410106400000004a4204d617820636f6e63757272656e7420636f7369676e732070656e64696e6720706572207661756c7484526576656e7565436f6c6c656374696f6e45787069726174696f6e4672616d657330200a0000000000000004f020546865206e756d626572206f66206672616d65732077697468696e20776869636820726576656e7565206d75737420626520636f6c6c6563746564944f7065726174696f6e616c4d696e696d756d5661756c7453656375726974697a6174696f6e184000943577000000000000000000000000044901204d696e696d756d207661756c742073656375726974697a6174696f6e207265717569726564207768696c6520746865206f7065726174696f6e616c20666c6f6f72206c6f636b206973206163746976652e804f7065726174696f6e616c4d696e696d756d5661756c744c6f636b5469636b7330202005080000000000045101204475726174696f6e20746f206b65657020746865206f7065726174696f6e616c206d696e696d756d2073656375726974697a6174696f6e206c6f636b65642066726f6d207661756c74206372656174696f6e2e74526563656e74436170616369747944726f70426c6f636b57696e646f77101008000000046101204e756d626572206f66204172676f6e20626c6f636b7320746f206b65657020726563656e742060617661696c61626c655f666f725f6c6f636b602064726f707320666f72207374616c6520696e697420636865636b732e784d6178526563656e74436170616369747944726f70735065725661756c74101040000000042101204d6178696d756d206e756d626572206f6620726563656e742060617661696c61626c655f666f725f6c6f636b602064726f70732072657461696e656420706572207661756c742e5c436170616369747944726f70417474656d7074556e6974184000e1f505000000000000000000000000085901204f6e65206e6f2d666565207374616c652060696e697469616c697a655f666f7260206661696c75726520697320616c6c6f77656420666f72206561636820746869732d6d616e7920756e697473206f66206c6f7374582060617661696c61626c655f666f725f6c6f636b602e0171060830426974636f696e4c6f636b730130426974636f696e4c6f636b732c284e6578745574786f4964000030040000344c6f636b7342795574786f496400010405307506040004e02053746f72657320626974636f696e207574786f73207468617420686176652072657175657374656420746f2062652072656c6561736564405574786f49647342795661756c74496400010805057d06900400048c20496e646578206f6620616374697665205554584f2049447320706572207661756c746c4c6f636b52656c65617365436f7369676e486569676874427949640001040530100400040d012053746f7265732074686520626c6f636b206e756d62657220776865726520612072656c656173652077617320636f7369676e656420627920746865207661756c742e6c4c6f636b52656c65617365526571756573747342795574786f496400010405308106040004e02053746f72657320626974636f696e206c6f636b73207468617420686176652072657175657374656420746f2062652072656c6561736564584f727068616e65645574786f7342794163636f756e740001080505850689060400042501204d69736d617463686564207574786f73207468617420776572652073656e74207769746820696e76616c696420616d6f756e747320746f2061206c6f636b656420626974636f696e3c4d696e696d756d5361746f7368697301003020000000000000000004c820546865206d696e696d756d206e756d626572206f66207361746f7368697320746861742063616e206265206c6f636b6564504c6f636b436f7369676e44756542794672616d6501010405309506040004f0205574786f7320746861742068617665206265656e2072657175657374656420746f20626520636f7369676e656420666f722072656c656173696e67784c6f636b45787069726174696f6e734279426974636f696e486569676874010104053099060400085d012045787069726174696f6e206f6620626974636f696e206c6f636b7320627920626974636f696e206865696768742e2046756e647320617265206275726e65642073696e636520746865207573657220646964206e6f749020756e6c6f636b2069742e20426974636f696e2077696c6c20676f20746f207661756c74744f727068616e65645574786f45787069726174696f6e42794672616d6501010405309d06040004c42045787069726174696f6e206f66206f727068616e6564207574786f20726566732062792075736572206163636f756e74544d6963726f676f6e506572427463486973746f72790100a9060400049420486973746f7279206f6620746172676574206d6963726f676f6e7320706572206274632e01590301e424404172676f6e5469636b735065724461793020a005000000000000044c204172676f6e207469636b2070657220646179744d6178436f6e63757272656e746c7952656c656173696e674c6f636b731010e80300000488204d6178696d756d2072656c656173696e67207574786f7320617420612074696d65484c6f636b4475726174696f6e426c6f636b73302050cd00000000000004d420546865206e756d626572206f6620626974636f696e20626c6f636b73206120626974636f696e206973206c6f636b656420666f72544c6f636b5265636c616d6174696f6e426c6f636b733020e0100000000000000861012054686520626974636f696e20626c6f636b73206166746572206120426974636f696e4c6f636b206578706972657320776869636820746865207661756c742077696c6c20626520616c6c6f77656420746f20636c61696d28206120626974636f696e7c4c6f636b52656c65617365436f7369676e446561646c696e654672616d657330200a0000000000000004fc204e756d626572206f66206672616d65732061207661756c742068617320746f20636f756e7465722d7369676e206120626974636f696e2072656c656173657c4f727068616e65645574786f52656c656173654578706972794672616d657330200a00000000000000084d01204e756d626572206f66206672616d6573206f727068616e6564205554584f2072656c6561736520656e7472696573206172652072657461696e65642061667465722061206c6f636b206c6966656379636c6590207472616e736974696f6e206265666f7265206265696e6720636c65616e65642075702e704d6178436f6e63757272656e746c794578706972696e674c6f636b731010102700000861012050616c6c65742073746f7261676520726571756972657320626f756e64732c20736f207765206861766520746f207365742061206d6178696d756d206e756d62657220746861742063616e2065787069726520696e2061342073696e676c6520626c6f636b505469636b73506572426974636f696e426c6f636b30200a000000000000000488204e756d626572206f66207469636b732070657220626974636f696e20626c6f636b484d617842746350726963655469636b41676510101e00000004c0204d617820616c6c6f776564207469636b2d616765206f66206d6963726f676f6e2d7065722d6274632070726963657301ad0609204e6f74617269657301204e6f74617269657318304e6578744e6f7461727949640000100400004050726f706f7365644e6f7461726965730001040200b506040000444578706972696e6750726f706f73616c730101040510b906040000384163746976654e6f7461726965730100bd06040000404e6f746172794b6579486973746f72790101040510c5060400005c5175657565644e6f746172794d6574614368616e6765730101040530d106040004cc204d65746164617461206368616e67657320746f206265206163746976617465642061742074686520676976656e207469636b01750301f018444d61784163746976654e6f746172696573101019000000049020546865206d6178696d756d20616374697665206e6f74617269657320616c6c6f776564544d617850726f706f73616c486f6c64426c6f636b731010c04e000004c420546865206d6178696d756d20626c6f636b7320612070726f706f73616c2063616e2073697420756e617070726f766564504d617850726f706f73616c73506572426c6f636b10100a00000000504d6574614368616e6765735469636b44656c617930200600000000000000084901204e756d626572206f66207469636b7320746f2064656c6179206368616e67696e672061206e6f74617269657327206d65746120287468697320697320746f20616c6c6f7720612077696e646f7720666f72f4206e6f74617269657320746f2073776974636820746f206e6577206b6579732061667465722061206e6577206b65792069732066696e616c697a656429544d61785469636b73466f724b6579486973746f72791010400b000008e0204e756d626572206f66207469636b7320746f206d61696e7461696e206b657920686973746f727920666f722065616368206e6f74617279a8204e4f54453a206f6e6c79207072756e6564207768656e206e6577206b65797320617265206164646564384d61784e6f74617279486f7374731010040000000488204d6178696d756d20686f7374732061206e6f746172792063616e20737570706c7901e1060a204e6f7465626f6f6b01204e6f7465626f6f6b1c8c4e6f7465626f6f6b4368616e6765644163636f756e7473526f6f7442794e6f746172790001080205350234040004010120446f75626c652073746f72616765206d6170206f66206e6f74617279206964202b206e6f7465626f6f6b202320746f20746865206368616e676520726f6f74a04163636f756e744f726967696e4c6173744368616e6765644e6f7465626f6f6b42794e6f746172790001080202e5061004000c35012053746f72616765206d6170206f66206163636f756e74206f726967696e20286e6f746172795f69642c206e6f7465626f6f6b2c206163636f756e745f7569642920746f20746865206c6173741501206e6f7465626f6f6b20636f6e7461696e696e672074686973206163636f756e7420696e20746865206368616e676564206163636f756e7473206d65726b6c6520726f6f749820284e6f7465626f6f6b4368616e6765644163636f756e7473526f6f7442794e6f74617279296c4c6173744e6f7465626f6f6b44657461696c7342794e6f746172790101040210e9060400086901204c697374206f66206c61737420666577206e6f7465626f6f6b2064657461696c73206279206e6f746172792e2054686520626f6f6c206973207768657468657220746865206e6f7465626f6f6b20697320656c696769626c65d820666f7220766f7465732028726563656976656420617420636f7272656374207469636b20616e64206175646974207061737365642938426c6f636b4e6f7465626f6f6b730100c5020400049420546865206e6f7465626f6f6b7320696e636c7564656420696e207468697320626c6f636b40496e686572656e74496e636c756465640100200400048c20436865636b2069662074686520696e686572656e742077617320696e636c75646564704e6f7461726965734c6f636b6564466f724661696c656441756469740001040210f9060400048c204e6f746172696573206c6f636b656420666f72206661696c696e6720617564697473744c6f636b65644e6f746172795265616479466f72526570726f636573730001040210100400040101204e6f74617269657320726561647920746f20737461727420726570726f63657373696e67206174206120676976656e206e6f7465626f6f6b206e756d6265720179030115010001fd060b484c6f63616c636861696e5472616e7366657201484c6f63616c636861696e5472616e736665720c384e6578745472616e7366657249640000100400004c50656e64696e675472616e73666572734f757400010402100107040000704578706972696e675472616e73666572734f757442794e6f7461727901010805057d06050704001845012045787069726174696f6e20696e64657820666f72206f7574676f696e67207472616e7366657273206b657965642062792060286e6f746172795f69642c2065787069726174696f6e5f7469636b29602e006901204e4f54453a2045787069726174696f6e2070726f63657373696e6720666f6c6c6f7773206e6f7465626f6f6b2070726f6772657373696f6e2028606865616465722e7469636b602920666f722065616368206e6f746172792c5101206e6f742077616c6c2f72756e74696d65207469636b2e2049662061206e6f746172792073746f7073207375626d697474696e67206e6f7465626f6f6b7320696e646566696e6974656c792c2070656e64696e676501207472616e736665727320666f722074686174206e6f746172792072656d61696e2066726f7a656e2062792064657369676e20756e74696c2061206e6f746172792d737769746368207265636f766572792070617468206973282065786563757465642e01b9030131010c2050616c6c657449640907207472616e73666572005c5472616e7366657245787069726174696f6e5469636b733020b036000000000000085d0120486f77206c6f6e672061207472616e736665722073686f756c642072656d61696e20696e2073746f72616765206265666f72652072657475726e696e672e204e4f54453a20746865726520697320612032207469636bc820677261636520706572696f642077686572652077652077696c6c207374696c6c20616c6c6f772061207472616e73666572784d617850656e64696e675472616e73666572734f7574506572426c6f636b1010e803000004bc20486f77206d616e79207472616e7366657273206f75742063616e206265207175657565642070657220626c6f636b010d070c34426c6f636b5365616c537065630134426c6f636b5365616c53706563284843757272656e74566f74654d696e696d756d01001840000000000000000000000000000000000c5501205468652063757272656e7420766f7465206d696e696d756d206f662074686520636861696e2e20426c6f636b20766f746573207573652074686973206d696e696d756d20746f2064657465726d696e65207468655d01206d696e696d756d20616d6f756e74206f6620746178206f7220636f6d70757465206e656564656420746f20637265617465206120766f74652e2049742069732061646a7573746564207570206f7220646f776e20746f74207461726765742061206d6178206e756d626572206f6620766f7465736043757272656e74436f6d70757465446966666963756c747901001840000000000000000000000000000000000c5501205468652063757272656e7420766f7465206d696e696d756d206f662074686520636861696e2e20426c6f636b20766f746573207573652074686973206d696e696d756d20746f2064657465726d696e65207468655d01206d696e696d756d20616d6f756e74206f6620746178206f7220636f6d70757465206e656564656420746f20637265617465206120766f74652e2049742069732061646a7573746564207570206f7220646f776e20746f74207461726765742061206d6178206e756d626572206f6620766f7465735843757272656e74436f6d707574654b6579426c6f636b00003404000c650120546865206b6579204b2069732073656c656374656420746f206265207468652068617368206f66206120626c6f636b20696e2074686520626c6f636b636861696e202d207468697320626c6f636b2069732063616c6c656445012074686520276b657920626c6f636b272e20466f72206f7074696d616c206d696e696e6720616e6420766572696669636174696f6e20706572666f726d616e63652c20746865206b65792073686f756c6444206368616e6765206576657279206461795450617374436f6d70757465426c6f636b54696d6573010011070400005850726576696f7573426c6f636b54696d657374616d7000003004000498205468652074696d657374616d702066726f6d207468652070726576696f757320626c6f636b4854656d70426c6f636b54696d657374616d7000003004000048566f74654d696e696d756d486973746f7279010015070400043101204b6565707320746865206c617374203320766f7465206d696e696d756d732e20546865206669727374206f6e65206170706c69657320746f207468652063757272656e7420626c6f636b2e7c54656d7043757272656e745469636b4e6f7465626f6f6b73496e426c6f636b010019070400043d012054656d706f726172792073746f7265206f6620616e792063757272656e74207469636b206e6f7465626f6f6b7320696e636c7564656420696e207468697320626c6f636b20287673207469636b294c54656d70426c6f636b566f746544696765737400009502040004802054656d706f726172792073746f72652074686520766f7465206469676573743850617374426c6f636b566f7465730100250704000001bd0301350110444d61784163746976654e6f746172696573101019000000049020546865206d6178696d756d20616374697665206e6f74617269657320616c6c6f77656440546172676574426c6f636b566f746573184050c30000000000000000000000000000047020546865206465736972656420766f7465732070657220626c6f636b84486973746f726963616c436f6d70757465426c6f636b73466f724176657261676510100a000000085d0120546865206e756d626572206f6620686973746f726963616c20636f6d707574652074696d657320746f2075736520746f2063616c63756c6174652074686520726f6c6c696e6720636f6d707574652061766572616765442028666f722061646a7573746d656e742978486973746f726963616c566f7465426c6f636b73466f72417665726167651010a005000004490120546865206e756d626572206f6620686973746f726963616c20766f746520626c6f636b7320746f2075736520746f2063616c63756c6174652074686520726f6c6c696e6720766f746520617665726167650131070d1c446f6d61696e73011c446f6d61696e730c4452656769737465726564446f6d61696e7300010402345d010400004c5a6f6e655265636f7264734279446f6d61696e00010402343d01040000584578706972696e67446f6d61696e734279426c6f636b0101040530350704000001c103013901000139070e285072696365496e64657801285072696365496e646578141c43757272656e740000c903040004782053746f726573207468652061637469766520707269636520696e646578244c61737456616c69640000c903040004882053746f72657320746865206c6173742076616c696420707269636520696e64657840486973746f7269634172676f6e43504901003d07040004ac20547261636b73207468652061766572616765206370692064617461206576657279203630207469636b736c486973746f7269634172676f6e6f74466c6f6f7242794672616d6501004907040004fc20547261636b7320746865206c6f77657374204172676f6e6f7420666c6f6f72206f6273657276656420696e206561636820726563656e74206672616d652e204f70657261746f72000000040004842054686520707269636520696e646578206f70657261746f72206163636f756e7401c503016101146c4d6178446f776e74696d655469636b734265666f7265526573657430203c0000000000000004d820546865206d6178696d756d206e756d626572206f66207469636b7320746f207072657365727665206120707269636520696e646578484d61785072696365416765496e5469636b733020a005000000000000046c20546865206f6c6465737420686973746f727920746f206b656570704d61784172676f6e6f74466c6f6f72486973746f72794672616d657310100a00000004f4204d6178696d756d206e756d626572206f66207065722d6672616d65204172676f6e6f7420666c6f6f72206275636b65747320746f2072657461696e2e8c4d61784172676f6e4368616e67655065725469636b4177617946726f6d546172676574e0400000c16ff2862300000000000000000008650120546865206d617820707269636520646966666572656e63652064726f7070696e672062656c6f7720746172676574206f722072616973696e672061626f76652074617267657420706572207469636b2e2054686572652773e4206e6f20636f72726573706f6e64696e6720636f6e7374616e7420666f722074696d6520746f207265636f7665727920746f207461726765746c4d61784172676f6e5461726765744368616e67655065725469636be0400000c16ff2862300000000000000000000014d070f28417574686f72736869700128417574686f72736869700418417574686f720000000400046420417574686f72206f662063757272656e7420626c6f636b2e00000000101c4772616e647061011c4772616e6470611c1453746174650100510704000490205374617465206f66207468652063757272656e7420617574686f72697479207365742e3450656e64696e674368616e676500005507040004c42050656e64696e67206368616e67653a20287369676e616c65642061742c207363686564756c6564206368616e6765292e284e657874466f72636564000010040004bc206e65787420626c6f636b206e756d6265722077686572652077652063616e20666f7263652061206368616e67652e1c5374616c6c6564000035020400049020607472756560206966207765206172652063757272656e746c79207374616c6c65642e3043757272656e745365744964010030200000000000000000085d0120546865206e756d626572206f66206368616e6765732028626f746820696e207465726d73206f66206b65797320616e6420756e6465726c79696e672065636f6e6f6d696320726573706f6e736962696c697469657329c420696e20746865202273657422206f66204772616e6470612076616c696461746f72732066726f6d2067656e657369732e30536574496453657373696f6e00010405301004002859012041206d617070696e672066726f6d206772616e6470612073657420494420746f2074686520696e646578206f6620746865202a6d6f737420726563656e742a2073657373696f6e20666f722077686963682069747368206d656d62657273207765726520726573706f6e7369626c652e0045012054686973206973206f6e6c79207573656420666f722076616c69646174696e672065717569766f636174696f6e2070726f6f66732e20416e2065717569766f636174696f6e2070726f6f66206d7573744d0120636f6e7461696e732061206b65792d6f776e6572736869702070726f6f6620666f72206120676976656e2073657373696f6e2c207468657265666f7265207765206e65656420612077617920746f20746965450120746f6765746865722073657373696f6e7320616e64204752414e44504120736574206964732c20692e652e207765206e65656420746f2076616c6964617465207468617420612076616c696461746f7241012077617320746865206f776e6572206f66206120676976656e206b6579206f6e206120676976656e2073657373696f6e2c20616e642077686174207468652061637469766520736574204944207761735420647572696e6720746861742073657373696f6e2e00b82054574f582d4e4f54453a2060536574496460206973206e6f7420756e646572207573657220636f6e74726f6c2e2c417574686f7269746965730100590704000484205468652063757272656e74206c697374206f6620617574686f7269746965732e01cd030165010c384d6178417574686f7269746965731010e8030000045c204d617820417574686f72697469657320696e20757365344d61784e6f6d696e61746f727310100000000004d420546865206d6178696d756d206e756d626572206f66206e6f6d696e61746f727320666f7220656163682076616c696461746f722e584d6178536574496453657373696f6e456e74726965733020020000000000000018390120546865206d6178696d756d206e756d626572206f6620656e747269657320746f206b65657020696e207468652073657420696420746f2073657373696f6e20696e646578206d617070696e672e0031012053696e6365207468652060536574496453657373696f6e60206d6170206973206f6e6c79207573656420666f722076616c69646174696e672065717569766f636174696f6e73207468697329012076616c75652073686f756c642072656c61746520746f2074686520626f6e64696e67206475726174696f6e206f66207768617465766572207374616b696e672073797374656d2069733501206265696e6720757365642028696620616e79292e2049662065717569766f636174696f6e2068616e646c696e67206973206e6f7420656e61626c6564207468656e20746869732076616c7565342063616e206265207a65726f2e015d071124426c6f636b5365616c0124426c6f636b5365616c1c4c4c617374426c6f636b5365616c6572496e666f000061070400003c506172656e74566f74696e674b65790100a1020400086101205468652063616c63756c6174656420706172656e7420766f74696e67206b657920666f72206120626c6f636b2e2052656665727320746f20746865204e6f7465626f6f6b20426c6f636b566f74652052657665616c6564e020536563726574202b20566f7465734d65726b6c65526f6f74206f662074686520706172656e7420626c6f636b206e6f7465626f6f6b732e38426c6f636b466f726b506f7765720100a902910100000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000008e4205468652063616c63756c6174656420737472656e67746820696e207468652072756e74696d6520736f20746861742069742063616e20626511012075706772616465642c20627574206973207573656420627920746865206e6f646520746f2064657465726d696e6520776869636820666f726b20746f20666f6c6c6f7744566f746573496e50617374335469636b73010065070400049c2054686520636f756e74206f6620766f74657320696e20746865206c6173742033207469636b734054656d705365616c496e686572656e740000fd03040004a820456e7375726573206f6e6c7920612073696e676c6520696e686572656e74206973206170706c696564504c6173745469636b57697468566f74655365616c010030200000000000000000004c4973426c6f636b46726f6d566f74655365616c0100200400047c2049732074686520626c6f636b2066726f6d206120766f7465207365616c3f01f90300000169071230426c6f636b526577617264730130426c6f636b5265776172647314385061796f7574734279426c6f636b01010402106d070400048c20486973746f726963616c207061796f75747320627920626c6f636b206e756d62657248426c6f636b526577617264735061757365640100200400048420426f6f6c20696620626c6f636b2072657761726473206172652070617573656450426c6f636b526577617264734279436f686f72740100710704000441012054686520636f686f727420626c6f636b2072657761726473206279206d696e696e6720636f686f7274202869652c2077697468207468652073616d65207374617274696e67206672616d6520696429384172676f6e73506572426c6f636b0100184000000000000000000000000000000000087501205468652063757272656e74207363616c656420626c6f636b20726577617264732e2049742077696c6c2061646a757374206261736564206f6e20746865206172676f6e206d6f76656d656e7420617761792066726f6d2070726963651c2074617267657424426c6f636b4665657301001840000000000000000000000000000000000001150401710118585374617274696e674172676f6e73506572426c6f636b184020a107000000000000000000000000000488204e756d626572206f66206172676f6e73206d696e7465642070657220626c6f636b7c5374617274696e674f776e657273686970546f6b656e73506572426c6f636b184020a1070000000000000000000000000004b0204e756d626572206f66206f776e65727368697020746f6b656e73206d696e7465642070657220626c6f636b44496e6372656d656e74616c47726f7774687507a0e8030000000000000000000000000000b400000000000000404b4c0000000000000000000000000004f4205468652067726f777468207061746820666f7220626f7468206f776e65727368697020616e64206172676f6e73206265666f72652068616c76696e673048616c76696e675469636b733020200b20000000000004dc204e756d626572206f66207469636b7320666f722068616c76696e67206f66206f776e65727368697020736861726520726577617264734448616c76696e67426567696e5469636b733020105c0c000000000004050120546865207469636b206e756d626572206174207768696368207468652068616c76696e6720626567696e7320666f72206f776e65727368697020746f6b656e73484d696e65725061796f757450657263656e74e04000008bbd0689680a0000000000000000042d012050657263656e742061732061206e756d626572206f7574206f6620313030206f662074686520626c6f636b20726577617264207468617420676f657320746f20746865206d696e65722e01790713104d696e7401104d696e74144050656e64696e674d696e745574786f7301007d0704000c6d0120426974636f696e205554584f7320746861742068617665206265656e207375626d697474656420666f72206d696e74696e672e2054686973206c697374206973204649464f20666f72206d696e74696e67207768656e657665724020612920435049203e3d203020616e643d012062292074686520616767726567617465206d696e74656420426974636f696e73203c3d2074686520616767726567617465206d696e746564206d6963726f676f6e732066726f6d206d696e696e67544d696e7465644d696e696e674d6963726f676f6e73010018400000000000000000000000000000000004c02054686520746f74616c20616d6f756e74206f66206d6963726f676f6e73206d696e74656420666f72206d696e696e67584d696e746564426974636f696e4d6963726f676f6e7301001840000000000000000000000000000000000455012054686520746f74616c20616d6f756e74206f6620426974636f696e206d6963726f676f6e73206d696e7465642e2043616e6e6f742065786365656420604d696e7465644d696e696e674d6963726f676f6e73602e4c4d696e696e674d696e74506572436f686f72740100890704000445012054686520616d6f756e74206f66206172676f6e73206d696e74656420706572206d696e696e6720636f686f7274202869652c2067726f75706564206279207374617274696e67206672616d65206964293c426c6f636b4d696e74416374696f6e01008d07d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000119040189010c4c4d617850656e64696e674d696e745574786f7310101027000004f020546865206d6178696d756d206e756d626572206f66205554584f7320746861742063616e2062652077616974696e6720666f72206d696e74696e67604d61784d696e74486973746f7279546f4d61696e7461696e10100a00000004b420546865206d6178696d756d206e756d626572206f66206d696e7420686973746f7269657320746f206b656570444d6178506f737369626c654d696e6572731010a005000000019507142042616c616e636573012042616c616e6365731c34546f74616c49737375616e6365010018400000000000000000000000000000000004982054686520746f74616c20756e6974732069737375656420696e207468652073797374656d2e40496e61637469766549737375616e636501001840000000000000000000000000000000000409012054686520746f74616c20756e697473206f66206f75747374616e64696e672064656163746976617465642062616c616e636520696e207468652073797374656d2e1c4163636f756e74010104020014010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080600901205468652042616c616e6365732070616c6c6574206578616d706c65206f662073746f72696e67207468652062616c616e6365206f6620616e206163636f756e742e00282023204578616d706c650034206060606e6f636f6d70696c65b02020696d706c2070616c6c65745f62616c616e6365733a3a436f6e66696720666f722052756e74696d65207b19022020202074797065204163636f756e7453746f7265203d2053746f726167654d61705368696d3c53656c663a3a4163636f756e743c52756e74696d653e2c206672616d655f73797374656d3a3a50726f76696465723c52756e74696d653e2c204163636f756e7449642c2053656c663a3a4163636f756e74446174613c42616c616e63653e3e0c20207d102060606000150120596f752063616e20616c736f2073746f7265207468652062616c616e6365206f6620616e206163636f756e7420696e20746865206053797374656d602070616c6c65742e00282023204578616d706c650034206060606e6f636f6d70696c65b02020696d706c2070616c6c65745f62616c616e6365733a3a436f6e66696720666f722052756e74696d65207b7420202074797065204163636f756e7453746f7265203d2053797374656d0c20207d102060606000510120427574207468697320636f6d657320776974682074726164656f6666732c2073746f72696e67206163636f756e742062616c616e63657320696e207468652073797374656d2070616c6c65742073746f7265736d0120606672616d655f73797374656d60206461746120616c6f6e677369646520746865206163636f756e74206461746120636f6e747261727920746f2073746f72696e67206163636f756e742062616c616e63657320696e207468652901206042616c616e636573602070616c6c65742c20776869636820757365732061206053746f726167654d61706020746f2073746f72652062616c616e6365732064617461206f6e6c792e4101204e4f54453a2054686973206973206f6e6c79207573656420696e207468652063617365207468617420746869732070616c6c6574206973207573656420746f2073746f72652062616c616e6365732e144c6f636b7301010402009907040010b820416e79206c6971756964697479206c6f636b73206f6e20736f6d65206163636f756e742062616c616e6365732e2501204e4f54453a2053686f756c64206f6e6c79206265206163636573736564207768656e2073657474696e672c206368616e67696e6720616e642066726565696e672061206c6f636b2e00ad0120557365206f66206c6f636b73206973206465707265636174656420696e206661766f7572206f6620667265657a65732e20536565206068747470733a2f2f6769746875622e636f6d2f706172697479746563682f7375627374726174652f70756c6c2f31323935312f602052657365727665730101040200a90704000ca4204e616d6564207265736572766573206f6e20736f6d65206163636f756e742062616c616e6365732e00b10120557365206f66207265736572766573206973206465707265636174656420696e206661766f7572206f6620686f6c64732e20536565206068747470733a2f2f6769746875622e636f6d2f706172697479746563682f7375627374726174652f70756c6c2f31323935312f6014486f6c64730101040200b5070400046c20486f6c6473206f6e206163636f756e742062616c616e6365732e1c467265657a65730101040200c1070400048820467265657a65206c6f636b73206f6e206163636f756e742062616c616e6365732e011d0401990110484578697374656e7469616c4465706f73697418401027000000000000000000000000000020410120546865206d696e696d756d20616d6f756e7420726571756972656420746f206b65657020616e206163636f756e74206f70656e2e204d5553542042452047524541544552205448414e205a45524f2100590120496620796f75202a7265616c6c792a206e65656420697420746f206265207a65726f2c20796f752063616e20656e61626c652074686520666561747572652060696e7365637572655f7a65726f5f65646020666f72610120746869732070616c6c65742e20486f77657665722c20796f7520646f20736f20617420796f7572206f776e207269736b3a20746869732077696c6c206f70656e2075702061206d616a6f7220446f5320766563746f722e590120496e206361736520796f752068617665206d756c7469706c6520736f7572636573206f662070726f7669646572207265666572656e6365732c20796f75206d617920616c736f2067657420756e65787065637465648c206265686176696f757220696620796f7520736574207468697320746f207a65726f2e00f020426f74746f6d206c696e653a20446f20796f757273656c662061206661766f757220616e64206d616b65206974206174206c65617374206f6e6521204d61784c6f636b7310103200000010f420546865206d6178696d756d206e756d626572206f66206c6f636b7320746861742073686f756c64206578697374206f6e20616e206163636f756e742edc204e6f74207374726963746c7920656e666f726365642c20627574207573656420666f722077656967687420657374696d6174696f6e2e00ad0120557365206f66206c6f636b73206973206465707265636174656420696e206661766f7572206f6620667265657a65732e20536565206068747470733a2f2f6769746875622e636f6d2f706172697479746563682f7375627374726174652f70756c6c2f31323935312f602c4d617852657365727665731010000000000c0d0120546865206d6178696d756d206e756d626572206f66206e616d656420726573657276657320746861742063616e206578697374206f6e20616e206163636f756e742e00b10120557365206f66207265736572766573206973206465707265636174656420696e206661766f7572206f6620686f6c64732e20536565206068747470733a2f2f6769746875622e636f6d2f706172697479746563682f7375627374726174652f70756c6c2f31323935312f60284d6178467265657a657310100200000004610120546865206d6178696d756d206e756d626572206f6620696e646976696475616c20667265657a65206c6f636b7320746861742063616e206578697374206f6e20616e206163636f756e7420617420616e792074696d652e01d50715244f776e65727368697001244f776e6572736869701c34546f74616c49737375616e6365010018400000000000000000000000000000000004982054686520746f74616c20756e6974732069737375656420696e207468652073797374656d2e40496e61637469766549737375616e636501001840000000000000000000000000000000000409012054686520746f74616c20756e697473206f66206f75747374616e64696e672064656163746976617465642062616c616e636520696e207468652073797374656d2e1c4163636f756e74010104020014010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080600901205468652042616c616e6365732070616c6c6574206578616d706c65206f662073746f72696e67207468652062616c616e6365206f6620616e206163636f756e742e00282023204578616d706c650034206060606e6f636f6d70696c65b02020696d706c2070616c6c65745f62616c616e6365733a3a436f6e66696720666f722052756e74696d65207b19022020202074797065204163636f756e7453746f7265203d2053746f726167654d61705368696d3c53656c663a3a4163636f756e743c52756e74696d653e2c206672616d655f73797374656d3a3a50726f76696465723c52756e74696d653e2c204163636f756e7449642c2053656c663a3a4163636f756e74446174613c42616c616e63653e3e0c20207d102060606000150120596f752063616e20616c736f2073746f7265207468652062616c616e6365206f6620616e206163636f756e7420696e20746865206053797374656d602070616c6c65742e00282023204578616d706c650034206060606e6f636f6d70696c65b02020696d706c2070616c6c65745f62616c616e6365733a3a436f6e66696720666f722052756e74696d65207b7420202074797065204163636f756e7453746f7265203d2053797374656d0c20207d102060606000510120427574207468697320636f6d657320776974682074726164656f6666732c2073746f72696e67206163636f756e742062616c616e63657320696e207468652073797374656d2070616c6c65742073746f7265736d0120606672616d655f73797374656d60206461746120616c6f6e677369646520746865206163636f756e74206461746120636f6e747261727920746f2073746f72696e67206163636f756e742062616c616e63657320696e207468652901206042616c616e636573602070616c6c65742c20776869636820757365732061206053746f726167654d61706020746f2073746f72652062616c616e6365732064617461206f6e6c792e4101204e4f54453a2054686973206973206f6e6c79207573656420696e207468652063617365207468617420746869732070616c6c6574206973207573656420746f2073746f72652062616c616e6365732e144c6f636b7301010402009907040010b820416e79206c6971756964697479206c6f636b73206f6e20736f6d65206163636f756e742062616c616e6365732e2501204e4f54453a2053686f756c64206f6e6c79206265206163636573736564207768656e2073657474696e672c206368616e67696e6720616e642066726565696e672061206c6f636b2e00ad0120557365206f66206c6f636b73206973206465707265636174656420696e206661766f7572206f6620667265657a65732e20536565206068747470733a2f2f6769746875622e636f6d2f706172697479746563682f7375627374726174652f70756c6c2f31323935312f602052657365727665730101040200a90704000ca4204e616d6564207265736572766573206f6e20736f6d65206163636f756e742062616c616e6365732e00b10120557365206f66207265736572766573206973206465707265636174656420696e206661766f7572206f6620686f6c64732e20536565206068747470733a2f2f6769746875622e636f6d2f706172697479746563682f7375627374726174652f70756c6c2f31323935312f6014486f6c64730101040200b5070400046c20486f6c6473206f6e206163636f756e742062616c616e6365732e1c467265657a65730101040200c1070400048820467265657a65206c6f636b73206f6e206163636f756e742062616c616e6365732e01250401c10110484578697374656e7469616c4465706f73697418401027000000000000000000000000000020410120546865206d696e696d756d20616d6f756e7420726571756972656420746f206b65657020616e206163636f756e74206f70656e2e204d5553542042452047524541544552205448414e205a45524f2100590120496620796f75202a7265616c6c792a206e65656420697420746f206265207a65726f2c20796f752063616e20656e61626c652074686520666561747572652060696e7365637572655f7a65726f5f65646020666f72610120746869732070616c6c65742e20486f77657665722c20796f7520646f20736f20617420796f7572206f776e207269736b3a20746869732077696c6c206f70656e2075702061206d616a6f7220446f5320766563746f722e590120496e206361736520796f752068617665206d756c7469706c6520736f7572636573206f662070726f7669646572207265666572656e6365732c20796f75206d617920616c736f2067657420756e65787065637465648c206265686176696f757220696620796f7520736574207468697320746f207a65726f2e00f020426f74746f6d206c696e653a20446f20796f757273656c662061206661766f757220616e64206d616b65206974206174206c65617374206f6e6521204d61784c6f636b7310103200000010f420546865206d6178696d756d206e756d626572206f66206c6f636b7320746861742073686f756c64206578697374206f6e20616e206163636f756e742edc204e6f74207374726963746c7920656e666f726365642c20627574207573656420666f722077656967687420657374696d6174696f6e2e00ad0120557365206f66206c6f636b73206973206465707265636174656420696e206661766f7572206f6620667265657a65732e20536565206068747470733a2f2f6769746875622e636f6d2f706172697479746563682f7375627374726174652f70756c6c2f31323935312f602c4d617852657365727665731010000000000c0d0120546865206d6178696d756d206e756d626572206f66206e616d656420726573657276657320746861742063616e206578697374206f6e20616e206163636f756e742e00b10120557365206f66207265736572766573206973206465707265636174656420696e206661766f7572206f6620686f6c64732e20536565206068747470733a2f2f6769746875622e636f6d2f706172697479746563682f7375627374726174652f70756c6c2f31323935312f60284d6178467265657a657310100200000004610120546865206d6178696d756d206e756d626572206f6620696e646976696475616c20667265657a65206c6f636b7320746861742063616e206578697374206f6e20616e206163636f756e7420617420616e792074696d652e01d907161c54785061757365011c54785061757365042c50617573656443616c6c7300010402c90190040004b42054686520736574206f662063616c6c73207468617420617265206578706c696369746c79207061757365642e01290401c50104284d61784e616d654c656e1010000100000c2501204d6178696d756d206c656e67746820666f722070616c6c6574206e616d6520616e642063616c6c206e616d65205343414c4520656e636f64656420737472696e67206e616d65732e00a820544f4f204c4f4e47204e414d45532057494c4c2042452054524541544544204153205041555345442e01dd0717485472616e73616374696f6e5061796d656e7401485472616e73616374696f6e5061796d656e740c444e6578744665654d756c7469706c6965720100e040000064a7b3b6e00d0000000000000000003853746f7261676556657273696f6e0100e1070400003c54785061796d656e744372656469740000e50704000cf02054686520604f6e4368617267655472616e73616374696f6e602073746f726573207468652077697468647261776e2074782066656520686572652e00350120557365206077697468647261775f74786665656020616e64206072656d61696e696e675f74786665656020746f206163636573732066726f6d206f757473696465207468652063726174652e0001d10104604f7065726174696f6e616c4665654d756c7469706c696572080405545901204120666565206d756c7469706c69657220666f7220604f7065726174696f6e616c602065787472696e7369637320746f20636f6d7075746520227669727475616c207469702220746f20626f6f73742074686569722c20607072696f726974796000510120546869732076616c7565206973206d756c7469706c69656420627920746865206066696e616c5f6665656020746f206f627461696e206120227669727475616c20746970222074686174206973206c61746572f420616464656420746f20612074697020636f6d706f6e656e7420696e20726567756c617220607072696f72697479602063616c63756c6174696f6e732e4d01204974206d65616e732074686174206120604e6f726d616c60207472616e73616374696f6e2063616e2066726f6e742d72756e20612073696d696c61726c792d73697a656420604f7065726174696f6e616c6041012065787472696e736963202877697468206e6f20746970292c20627920696e636c7564696e672061207469702076616c75652067726561746572207468616e20746865207669727475616c207469702e003c20606060727573742c69676e6f726540202f2f20466f7220604e6f726d616c608c206c6574207072696f72697479203d207072696f726974795f63616c6328746970293b0054202f2f20466f7220604f7065726174696f6e616c601101206c6574207669727475616c5f746970203d2028696e636c7573696f6e5f666565202b2074697029202a204f7065726174696f6e616c4665654d756c7469706c6965723bc4206c6574207072696f72697479203d207072696f726974795f63616c6328746970202b207669727475616c5f746970293b1020606060005101204e6f746520746861742073696e636520776520757365206066696e616c5f6665656020746865206d756c7469706c696572206170706c69657320616c736f20746f2074686520726567756c61722060746970605d012073656e74207769746820746865207472616e73616374696f6e2e20536f2c206e6f74206f6e6c7920646f657320746865207472616e73616374696f6e206765742061207072696f726974792062756d702062617365646101206f6e207468652060696e636c7573696f6e5f666565602c2062757420776520616c736f20616d706c6966792074686520696d70616374206f662074697073206170706c69656420746f20604f7065726174696f6e616c6038207472616e73616374696f6e732e00181c5574696c69747900012d0401d501044c626174636865645f63616c6c735f6c696d69741010aa2a000004a820546865206c696d6974206f6e20746865206e756d626572206f6620626174636865642063616c6c732e01ed0719105375646f01105375646f040c4b6579000000040004842054686520604163636f756e74496460206f6620746865207375646f206b65792e01350401d9010001f1071a20547265617375727901205472656173757279206043757272656e744672616d655661756c744361706974616c0000f50704000cc020546865207661756c74206361706974616c206c6f636b656420666f72207468652063757272656e74206672616d652e004d01205061796f75742075736573207468697320746f20736565207768696368207661756c747320616e6420626f6e64206c6f7473206172652070617274696369706174696e6720696e20746865206672616d652e344e657874426f6e644c6f744964010030200000000000000000045820546865206e65787420626f6e64206c6f742069642e2c426f6e644c6f74427949640001040530190804000490205468652073746f72656420737461746520666f72206561636820626f6e64206c6f742e4c426f6e644c6f7449647342794163636f756e740001080505210890040004b02054686520626f6e64206c6f742069647320746861742062656c6f6e6720746f20616e206163636f756e742e80456e63756d6265726564426f6e644d6963726f676f6e7342794163636f756e74010104050018400000000000000000000000000000000018510120457861637420747265617375727920626f6e64206261636b696e6720726573657276656420666f722063726f7373636861696e206d696e74696e6720617574686f726974696573206279206163636f756e742e005d01205468697320697320616e206578616374206d6963726f676f6e20636c61696d2c206e6f742061206d6972726f72206f6620746865206163636f756e742773206163746976652077686f6c652d626f6e64206c6f74732e750120426f6e64206c6f7473207374617920636f6172736520626563617573652070617274696369706174696f6e206f6e6c79206d6f76657320696e2077686f6c6520626f6e64732c207768696c6520656e63756d6272616e63652063616e65012072656d61696e206672616374696f6e616c2061667465722061206275726e2e20546865206b657920696e76617269616e74206973207468617420746865206e6f6e2d72656c656173696e672068656c642062616c616e63656c20616c7761797320636f76657273207468697320616d6f756e742e6850656e64696e67426f6e6452656c656173657342794672616d6501010405302508040004a420426f6e64206c6f747320746f2072656c656173652061742074686520676976656e206672616d652e7450656e64696e67426f6e6452656c656173655265747279437572736f72000030040004f820546865206f6c64657374206672616d652074686174207374696c6c2068617320626f6e64206c6f747320746f2072657472792072656c656173696e672e3c426f6e644c6f747342795661756c740101040510290804000c902054686520616363657074656420626f6e64206c6f747320666f722061207661756c742e004501204c6f747320617265206b65707420696e2064657363656e64696e6720626f6e64206f726465722c207468656e206c6f7765722060626f6e645f6c6f745f69646020666972737420666f7220746965732e01390401dd01205c4d61785472656173757279436f6e7472696275746f727310106400000004390120546865206d6178696d756d206e756d626572206f6620616363657074656420626f6e64206c6f747320696e2061207661756c74277320616363657074656420626f6e642d6c6f74206c6973742e6c4d696e696d756d4172676f6e73506572436f6e7472696275746f72184000e1f50500000000000000000000000004a020546865206d696e696d756d2077686f6c652d626f6e6420707572636861736520616d6f756e742e2050616c6c657449640907206c7164506f6f6c730401012054726561737572792070616c6c65742069642072657461696e656420696e206d6574616461746120666f72206163636f756e742064657269766174696f6e2e5c547265617375727952657365727665734163636f756e7400806d6f646c6c7164506f6f6c7374726561737572792d7265736572766500000000043101204163636f756e74207468617420686f6c647320747265617375727920726573657276657320666f7220636c61696d7320616e6420726573657276652d66756e646564207061796f7574732e6850657263656e74466f7254726561737572795265736572766573d505041404e02050657263656e74206f66207468652062696420706f6f6c20726573657276656420666f722074726561737572792072657365727665732e404d61785661756c7473506572506f6f6c101064000000045d0120546865206d6178696d756d206e756d626572206f66207661756c747320746861742063616e20706172746963697061746520696e206f6e65206672616d652773206c6f636b6564207661756c74206361706974616c2e644d617850656e64696e67556e6c6f636b735065724672616d651010e803000004490120546865206d6178696d756d206e756d626572206f6620626f6e64206c6f74732077686f73652072656c656173652064656c6179206d6179206d617475726520696e20612073696e676c65206672616d652e5c54726561737572794578697444656c61794672616d657330200a00000000000000041d0120546865206e756d626572206f66206672616d657320612072656c656173696e6720626f6e64206c6f742072656d61696e732068656c64206265666f72652072656c656173652e0135081f28466565436f6e74726f6c000001e50100013908204c4f7065726174696f6e616c4163636f756e7473014c4f7065726174696f6e616c4163636f756e74731c4c4f7065726174696f6e616c4163636f756e747300010402003d0804000405012052656769737465726564206f7065726174696f6e616c206163636f756e7473206b6579656420627920746865207072696d617279206163636f756e742069642e784f7065726174696f6e616c4163636f756e7442795375624163636f756e7400010402000004000411012052657665727365206c6f6f6b7570206f6620616e79206c696e6b6564206163636f756e7420746f20697473206f7065726174696f6e616c206163636f756e742069642e54436f6e73756d6564526566657272616c436f646573000104020430040004550120526566657272616c20636f6465732074686174206861766520616c7265616479206265656e206c696e6b65642c206b6579656420746f2074686569722070726f6f662065787069726174696f6e206672616d652e84436f6e73756d6564526566657272616c436f646573427945787069726174696f6e0001080502410890040004150120526566657272616c20636f64657320746f20636c65617220616674657220746865697220726566657272616c2070726f6f662065787069726174696f6e206672616d652e7c45787069726564526566657272616c436f6465436c65616e75704672616d650000300400042101204f6c6465737420726566657272616c2065787069726174696f6e206672616d652074686174207374696c6c2068617320636c65616e757020776f726b20746f20726573756d652e1c526577617264730100450808000004d020436f6e666967757265642072657761726420616d6f756e747320666f72206f7065726174696f6e616c206163636f756e74732e60456e63727970746564536572766572427953706f6e736565000104020049080400044901204f706171756520656e637279707465642073706f6e736f7220736572766572207061796c6f6164206b65796564206279207468652073706f6e736565206f7065726174696f6e616c206163636f756e742e013d0401f1012868426974636f696e4c6f636b53697a65466f72526566657272616c184000f2052a010000000000000000000000043901204164646974696f6e616c206172676f6e20616d6f756e7420286261736520756e697473292072657175697265642070657220726566657272616c206166746572206f7065726174696f6e616c2e644f7065726174696f6e616c526566657272616c52657761726418400065cd1d00000000000000000000000004e42044656661756c74207265776172642070616964207768656e20616e206163636f756e74206265636f6d6573206f7065726174696f6e616c2e784f7065726174696f6e616c526566657272616c426f6e7573526577617264184000f2052a01000000000000000000000004d02044656661756c7420626f6e757320726577617264207061696420657665727920726566657272616c207468726573686f6c642e98526566657272616c426f6e75734576657279584f7065726174696f6e616c53706f6e73656573101005000000040d01204e756d626572206f66206f7065726174696f6e616c2073706f6e736565732072657175697265642070657220726566657272616c20626f6e7573207265776172642e544d6178417661696c61626c65526566657272616c7310100300000004dc204d6178696d756d206e756d626572206f6620617661696c61626c6520726566657272616c7320616c6c6f776564206174206f6e63652e984d617845787069726564526566657272616c436f6465436c65616e757073506572426c6f636b1010e803000004f0204d6178696d756d206e756d626572206f66206578706972656420726566657272616c20636f64657320636c65617265642070657220626c6f636b2e544d6178456e637279707465645365727665724c656e10100001000004f4204d6178696d756d206e756d626572206f6620656e63727970746564207365727665722062797465732073746f726564207065722073706f6e7365652e944f7065726174696f6e616c4d696e696d756d5661756c7453656375726974697a6174696f6e18400094357700000000000000000000000004f4204d696e696d756d207661756c742073656375726974697a6174696f6e20726571756972656420746f206265636f6d65206f7065726174696f6e616c2e644d696e696e675365617473466f724f7065726174696f6e616c10100200000004b4204d696e696e6720736561747320726571756972656420746f206265636f6d65206f7065726174696f6e616c2e584d696e696e675365617473506572526566657272616c10100500000004d8204d696e696e672073656174732072657175697265642070657220726566657272616c206166746572206f7065726174696f6e616c2e014d082240457468657265756d56657269666965720140457468657265756d56657269666965724054496e697469616c436865636b706f696e74526f6f740100348000000000000000000000000000000000000000000000000000000000000000000480204c617465737420696d706f7274656420636865636b706f696e7420726f6f74604c617465737446696e616c697a6564426c6f636b526f6f740100348000000000000000000000000000000000000000000000000000000000000000000494204c617465737420696d706f727465642066696e616c697a656420626c6f636b20726f6f745046696e616c697a6564426561636f6e5374617465000104063451080400049420426561636f6e2073746174652062792066696e616c697a656420626c6f636b20726f6f746446696e616c697a6564426561636f6e5374617465496e646578010010100000000004cc2046696e616c697a656420486561646572733a2043757272656e7420706f736974696f6e20696e2072696e67206275666665726c46696e616c697a6564426561636f6e53746174654d617070696e67010104061034800000000000000000000000000000000000000000000000000000000000000000041d012046696e616c697a656420486561646572733a204d617070696e67206f662072696e672062756666657220696e64657820746f2061207072756e696e672063616e64696461746558457865637574696f6e486561646572416e63686f72730001040634550804000405012052657461696e656420657865637574696f6e2d6c617965722068656164657220616e63686f727320627920657865637574696f6e20626c6f636b20686173682e8c457865637574696f6e486561646572416e63686f72734279426c6f636b4e756d62657200010406890255080400182901204f7264657265642072657461696e656420657865637574696f6e2d6c6179657220616e63686f7273206b6579656420627920657865637574696f6e20626c6f636b206e756d6265722e00710120546865206b657920697320746865206269672d656e6469616e20657865637574696f6e20626c6f636b206e756d62657220736f20636c69656e74732063616e20737461727420617420612074617267657420657865637574696f6e690120626c6f636b206e756d62657220616e64207363616e20666f727761726420746f207468652066697273742072657461696e656420616e63686f72206174206f72206166746572207468617420626c6f636b20776974686f757475012077616c6b696e672065766572792072657461696e65642066696e616c697a656420626561636f6e20726f6f742e2060457865637574696f6e486561646572416e63686f7273602072656d61696e73207468652063616e6f6e6963616c6420686173682d6b657965642070726f6f66206c6f6f6b75702e7846696e616c697a6564457865637574696f6e486561646572416e63686f72000104063434040004550120417474616368656420657865637574696f6e2d6c6179657220616e63686f72206861736820666f7220656163682072657461696e65642066696e616c697a656420626561636f6e2068656164657220726f6f742e904c6174657374457865637574696f6e486561646572416e63686f72426c6f636b48617368000034040004cc204c61746573742072657461696e656420657865637574696f6e2d6c6179657220616e63686f7220626c6f636b20686173682e3856616c696461746f7273526f6f74010034800000000000000000000000000000000000000000000000000000000000000000004c466f726b56657273696f6e5363686564756c6500009504040004590120466f726b2d76657273696f6e207363686564756c65207573656420666f722073796e632d636f6d6d6974746565207369676e696e6720646f6d61696e7320616e6420626561636f6e2073746174652070617468732e5043757272656e7453796e63436f6d6d697474656501005908550300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004882053796e6320636f6d6d697474656520666f722063757272656e7420706572696f64444e65787453796e63436f6d6d6974746565010059085503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047c2053796e6320636f6d6d697474656520666f72206e65787420706572696f647c4c617465737453796e63436f6d6d6974746565557064617465506572696f6401003020000000000000000004110120546865206c61737420706572696f6420776865726520746865206e6578742073796e6320636f6d6d697474656520776173207570646174656420666f7220667265652e344f7065726174696e674d6f64650100fd01040004a8205468652063757272656e74206f7065726174696e67206d6f6465206f66207468652070616c6c65742e30426561636f6e50726573657401007d08040004450120436861696e2d636f6e6669677572656420626561636f6e2070726573657420657870656374656420627920636c69656e74732074686174207375626d697420766572696669657220757064617465732e01610401f901044c4672656548656164657273496e74657276616c101020000000040101204d696e696d756d20676170206265747765656e2066696e616c697a6564206865616465727320666f7220616e2075706461746520746f20626520667265652e018108234843726f7373636861696e5472616e73666572014843726f7373636861696e5472616e736665726460436861696e436f6e6669674279536f75726365436861696e000104020502bd04040004c420436f6e66696720616363657074656420666f72206561636820737570706f7274656420736f7572636520636861696e2e644761746577617953746174654279536f75726365436861696e0001040205022502040004fc204c61746573742070726f76656e206761746577617920616374697669747920736e617073686f7420666f72206561636820736f7572636520636861696e2e744761746577617953796e6350617573654279536f75726365436861696e0001040205021d020400044501205061757365207374617465207265636f72646564207768656e20612063616e6f6e6963616c20676174657761792061637469766974792063616e6e6f74206265206170706c69656420736166656c792e74526563656e744172676f6e5472616e736665727342794163636f756e740101040200101000000000042d0120436f756e74206f66207374696c6c2d72657461696e6564207175616c696679696e67204172676f6e207472616e736665727320666f722065616368206c6f63616c206163636f756e742ecc436f756e63696c417070726f76616c437572736f72427944657374696e6174696f6e436861696e416e644163636f756e74496400010802028508300400045901204c617465737420636f756e63696c20617070726f76616c207175657565206e6f6e6365207369676e65642062792074686973206163636f756e7420666f72206f6e652064657374696e6174696f6e20636861696e2e68496e626f756e645472616e73666572734578706972696e6741740101040530ed020400040501204163636f756e74732077686f736520726563656e742d7472616e736665722065766964656e63652065787069726573206174206120676976656e207469636b2e744c6173745472616e73666572457870697279436c65616e75705469636b010030200000000000000000041101204c6174657374207469636b2077686f736520726563656e742d7472616e736665722065787069726174696f6e206275636b65742077617320636c65616e65642075702eac436f756e63696c5369676e6572427944657374696e6174696f6e436861696e416e644163636f756e744964000108020285080d02040004290120546865207265676973746572656420636f756e63696c207369676e657220666f722065616368206163636f756e74206f6e20656163682064657374696e6174696f6e20636861696e2ec850656e64696e67436f756e63696c5369676e6572427944657374696e6174696f6e436861696e416e644163636f756e744964000108020285080d02040004710120412073746167656420636f756e63696c207369676e657220726f746174696f6e20666f7220746865206e65787420636f756e63696c2061637469766174696f6e206f6e20656163682064657374696e6174696f6e20636861696e2eb4416374697665476c6f62616c49737375616e6365436f756e63696c427944657374696e6174696f6e436861696e000104020502340400043501205468652061637469766520476c6f62616c2049737375616e636520436f756e63696c206861736820696e20666f72636520666f7220656163682064657374696e6174696f6e20636861696e2edc43757272656e745472616e736665724f75744d6963726f676f6e735065724172676f6e6f74427944657374696e6174696f6e436861696e000104020502180400045d0120436f6e736572766174697665207472616e736665722d6f757420636f6e76657273696f6e20726174652063757272656e746c792071756f74656420666f7220656163682064657374696e6174696f6e20636861696e2ee050726576696f75735472616e736665724f75744d6963726f676f6e735065724172676f6e6f74427944657374696e6174696f6e436861696e00010402050218040008690120496d6d6564696174656c792070726576696f7573207472616e736665722d6f757420636f6e76657273696f6e2072617465207374696c6c206163636570746564207768696c652074686520666c6f6f722072617463686574738c20757077617264206163726f737320636f756e63696c207472616e736974696f6e732e6c476c6f62616c49737375616e6365436f756e63696c42794861736800010402348908040004650120486973746f726963616c20476c6f62616c2049737375616e636520436f756e63696c20736e617073686f7473206b65796564206279207468656972207369676e65722d6f72646572656420636f756e63696c20686173682ea44c6174657374517565756564436f756e63696c48617368427944657374696e6174696f6e436861696e000104020502340400086d0120546865206c61746573742071756575656420636f756e63696c206861736820746861742073686f756c6420676f7665726e20746865206e65787420717565756520656e747279206f6e20656163682064657374696e6174696f6e1c20636861696e2ed45472616e736665724f757451756f74654d6963726f676f6e735065724172676f6e6f74427944657374696e6174696f6e436861696e0001040205021804000855012054686520636f6e736572766174697665207472616e736665722d6f75742071756f746520666c6f6f72207468617420746865206e657874206e65776c79206f70656e6564207472616e736665722073686f756c649020736e617073686f74206f6e20656163682064657374696e6174696f6e20636861696e2ebc4e657874436f756e63696c417070726f76616c51756575654e6f6e6365427944657374696e6174696f6e436861696e0101040205023020000000000000000004310120546865206e657874206f7574626f756e6420617070726f76616c2d7175657565206e6f6e636520746f2061737369676e206f6e20656163682064657374696e6174696f6e20636861696e2eb8436f756e63696c417070726f76616c5175657565427944657374696e6174696f6e436861696e416e644e6f6e63650001080205a108a508040004210120546865206f726465726564206f7574626f756e6420636f756e63696c20617070726f76616c20717565756520666f7220656163682064657374696e6174696f6e20636861696e2e684d696e74696e67417574686f72697469657342795369676e6572000104020d02b9080400042101204c6f63616c204d696e74696e6720417574686f72697479207265636f726473206b657965642062792074686569722064657374696e6174696f6e207369676e696e67206b65792eb84d696e696d756d4d696e74696e67417574686f7269747956616c7565427944657374696e6174696f6e436861696e010104020502184010270000000000000000000000000000085101205065722d636861696e206f7665727269646520666f7220746865206d696e696d756d206e6f726d616c697a6564206d6963726f676f6e2076616c756520726571756972656420746f20726567697374657220614c204d696e74696e6720417574686f726974792ef04d696e74696e67417574686f7269747941637469766174696f6e52657061796d656e7450726963696e67427944657374696e6174696f6e436861696e000104020502c5040400085d012050726963696e6720696e70757473207573656420746f2072657061792072656c617965727320666f72204d696e74696e6720417574686f726974792061637469766174696f6e2062617463686573206f6e20656163684c2064657374696e6174696f6e20636861696e2e984e6578745472616e736665724f75744e6f6e6365427953656e64696e674163636f756e74496401010402003020000000000000000004dc204e657874206f7574626f756e64207472616e73666572206e6f6e636520666f7220656163682073656e64696e67206163636f756e742e3c5472616e736665724f7574427949640001040234c5080400048c204f7574626f756e64207472616e7366657273206279207472616e736665722069642e9c50656e64696e67436f6c6c61746572616c697a6174696f6e52657175657374734279436861696e010104020502e108040004050120436f6c6c61746572616c697a6174696f6e207265717565737473207374696c6c206f70656e206f6e20656163682064657374696e6174696f6e20636861696e2eb44e6f6e5465726d696e616c5472616e736665724f7574436f756e74427944657374696e6174696f6e436861696e010104020502101000000000042101204e756d626572206f66206e6f6e2d7465726d696e616c207472616e736665722d6f7574207265717565737473206f6e20656163682064657374696e6174696f6e20636861696e2ebc50656e64696e675472616e736665724f757443697263756c6174696f6e427944657374696e6174696f6e436861696e010104020502ed0880000000000000000000000000000000000000000000000000000000000000000004c42050656e64696e67206f7574626f756e64207072696e636970616c2062792064657374696e6174696f6e20636861696e2e01b904010102384c457468657265756d4275726e4163636f756e7400806d6f646c78636861696e7472006275726e0000000000000000000000000000000445012043616e6f6e6963616c20457468657265756d206275726e2d6163636f756e74696e67206163636f756e7420726570726573656e74696e672066756e6473206d6f76656420746f20457468657265756d2e70526563656e745472616e73666572526574656e74696f6e5469636b7330204038000000000000084d0120526574656e74696f6e2077696e646f772c20696e207469636b732c20666f7220726563656e74204172676f6e207472616e736665722065766964656e63652075736564206279206f7065726174696f6e616c28206163636f756e74732e704d6178416374697669746965735065725265636569707450726f6f66101010000000043d01204d6178696d756d206e756d626572206f66206f726465726564206761746577617920616374697669746965732074686174206d6179207368617265206f6e6520726563656970742070726f6f662e704d61785265636569707450726f6f667350657245787472696e73696310100a000000043d01204d6178696d756d206e756d626572206f662070726f76656e20726563656970742070726f6f66732074686174206d617920626520737570706c69656420696e206f6e652065787472696e7369632e444d6178436f756e63696c4d656d62657273101064000000042101204d6178696d756d206e756d626572206f66206d656d62657273207468652061637469766520476c6f62616c2049737375616e636520436f756e63696c206d61792063617272792e604d61785175657565417070726f76616c7350657243616c6c101020000000046101204d6178696d756d206e756d626572206f6620636f6e746967756f757320717565756520617070726f76616c73206f6e6520636f756e63696c206d656d626572206d6179207375626d697420696e206f6e652063616c6c2e845472616e736665724f757456616c6964697479457468657265756d426c6f636b733020401901000000000008210120457468657265756d2d626c6f636b2077696e646f7720616464656420746f20746865206c617465737420766572696669656420626c6f636b207768656e206f70656e696e67206138207472616e73666572206f75742e844d61785665726966696564457865637574696f6e426c6f636b4167655469636b7330203c00000000000000084101204d6178696d756d206167652c20696e207469636b732c206f662074686520766572696669656420457468657265756d20657865637574696f6e20616e63686f72207573656420746f206f70656e206138207472616e73666572206f75742ea45472616e736665724f75744d696e74696e67417574686f726974795469704261736973506f696e747310100a000000043501204d696e74696e6720617574686f72697479207469702072617465206170706c69656420746f207472616e736665722d6f757420726571756573747320696e20626173697320706f696e74732e784d696e5472616e73666572436f6c6c61746572616c496e6372656d656e74184010270000000000000000000000000000085d01204d696e696d756d206e6f726d616c697a656420636f6c6c61746572616c20696e6372656d656e7420616363657074656420666f72206f6e65207472616e7366657220756e6c6573732074686520696e6372656d656e74a820636f6d706c65746573207468652072656d61696e696e6720756e636f766572656420616d6f756e742eac44656661756c744d696e696d756d4d696e74696e67417574686f726974794d6963726f676f6e56616c75651840102700000000000000000000000000000859012044656661756c74206d696e696d756d206e6f726d616c697a6564206d6963726f676f6e2076616c756520726571756972656420746f2072656769737465722061204d696e74696e6720417574686f72697479206f6e5c206f6e652064657374696e6174696f6e20636861696e2ea44d617850656e64696e675472616e736665724f75747350657244657374696e6174696f6e436861696e101064000000046101204d6178696d756d206e756d626572206f66206e6f6e2d7465726d696e616c207472616e736665722d6f757420726571756573747320747261636b656420666f72206f6e652064657374696e6174696f6e20636861696e2e54436f756e63696c526f746174696f6e4672616d657330200a00000000000000085101204d696e696d756d2072656d61696e696e67206672616d6520636f6d6d69746d656e74207265717569726564207768656e2072656164696e67207661756c7420636f6d6d697474656420636f6c6c61746572616c050120636170616369747920666f7220636f756e63696c20776569676874696e6720616e64204d696e74696e6720417574686f7269747920636f6c6c61746572616c2e806d61785f70726f6f665f657865637574696f6e5f6865616465725f6465707468101040000000044501204d6178696d756d20657865637574696f6e2068656164657273206361727269656420696e206f6e6520726563656970742070726f6f662773207461726765742d746f2d616e63686f7220636861696e2e01f10824f508042c34417574686f72697a6543616c6cfd089048436865636b4e6f6e5a65726f53656e64657201099040436865636b5370656356657273696f6e05091038436865636b547856657273696f6e09091030436865636b47656e657369730d093438436865636b4d6f7274616c69747911093428436865636b4e6f6e63651909902c436865636b5765696768741d0990604368617267655472616e73616374696f6e5061796d656e7421099044436865636b4d657461646174614861736825093109345765696768745265636c61696d2d09903509\"\n}\n","{\n \"specName\": \"argon\",\n \"implName\": \"argon\",\n \"authoringVersion\": 1,\n \"specVersion\": 151,\n \"implVersion\": 10,\n \"apis\": [\n [\"0x0090f9d890bb0bb2\", 1],\n [\"0x5e4dc2ce83c23f09\", 1],\n [\"0xdf6acb689907609b\", 5],\n [\"0x61571683e6d7a7c8\", 1],\n [\"0x40fe3ad401f8959a\", 6],\n [\"0x51c97e4020145cb0\", 1],\n [\"0xd2bc9897eed08f15\", 3],\n [\"0x05dd9be92cc17d28\", 3],\n [\"0xfff0fb031985f8a1\", 2],\n [\"0x11de59f9923f03d8\", 1],\n [\"0xf78b278be53f454c\", 2],\n [\"0xfbc577b9d747efd6\", 1],\n [\"0xbab599c4f0d362c6\", 1],\n [\"0xe6683faaa563317a\", 2],\n [\"0xbc9d89904f5b923f\", 1],\n [\"0x37c8bb1350a9a2a8\", 4],\n [\"0xed99c5acb25eedf5\", 3],\n [\"0xf3ff14d5ab527059\", 3],\n [\"0x37e397fc7c91f5e4\", 2],\n [\"0xccd9de6396c899ca\", 1],\n [\"0xab3c0572291feb8b\", 2]\n ],\n \"transactionVersion\": 5,\n \"systemVersion\": 1,\n \"stateVersion\": 1\n}\n","{\n \"mainnet\": \"0xee11bf2ff8838fcb0832c09085c5319a08ba6111c225ecd899fe659872d9d45d\",\n \"testnet\": \"0x66dc4e5ff85faddb0311b768eb73a58d9a00c65f06056ffaa370a1b1354d7411\"\n}\n","import { ArgonClient } from './index';\n\nexport interface IArgonCpiSnapshot {\n // The target price of the argon as a fixed point number (18 decimals)\n argonUsdTargetPrice: bigint;\n // The current price of the argon as a fixed point number (18 decimals)\n argonUsdPrice: bigint;\n // The block hash in which the cpi was finalized\n finalizedBlock: Uint8Array;\n tick: bigint;\n}\n\n/**\n * The WageProtector class is used to protect wages from inflation by using the current Argon Price Index to adjust the\n * baseAmount to current conditions. This ensures that the wage is always stable and does not lose or gain value based on\n * demand for the argon or fiat monetary supply changes.\n */\nexport class WageProtector {\n constructor(public latestCpi: IArgonCpiSnapshot) {}\n\n /**\n * Converts the base wage to the current wage using the latest CPI snapshot\n *\n * @param baseWage The base wage to convert\n * @returns The protected wage\n */\n public getProtectedWage(baseWage: bigint): bigint {\n return (baseWage * this.latestCpi.argonUsdTargetPrice) / this.latestCpi.argonUsdPrice;\n }\n\n /**\n * Subscribes to the current CPI and calls the callback function whenever the CPI changes\n * @param client The ArgonClient to use\n * @param callback The callback function to call when the CPI changes\n * @returns An object with an unsubscribe function that can be called to stop the subscription\n */\n public static async subscribe(\n client: ArgonClient,\n callback: (cpi: WageProtector) => void,\n ): Promise<{\n unsubscribe: () => void;\n }> {\n const unsubscribe = await client.query.priceIndex.current(async cpi => {\n if (cpi.isNone) {\n return;\n }\n const finalizedBlock = await client.rpc.chain.getFinalizedHead();\n\n callback(\n new WageProtector({\n argonUsdTargetPrice: cpi.value.argonUsdTargetPrice.toBigInt(),\n argonUsdPrice: cpi.value.argonUsdPrice.toBigInt(),\n finalizedBlock: new Uint8Array(finalizedBlock),\n tick: cpi.value.tick.toBigInt(),\n }),\n );\n });\n return { unsubscribe };\n }\n\n /**\n * Creates a new WageProtector instance by subscribing to the current CPI and waiting for the first value\n * @param client The ArgonClient to use\n */\n public static async create(client: ArgonClient): Promise<WageProtector> {\n return new Promise<WageProtector>(async (resolve, reject) => {\n try {\n const { unsubscribe } = await WageProtector.subscribe(client, x => {\n resolve(x);\n unsubscribe();\n });\n } catch (e) {\n reject(e);\n }\n });\n }\n}\n","import BigNumber from 'bignumber.js';\nimport type { ArgonClient } from './index';\nimport { EventRecord } from '@polkadot/types/interfaces/system';\n\nexport const MICROGONS_PER_ARGON = 1_000_000;\ntype IDispatchErrorLike = {\n isModule: boolean;\n asModule: Parameters<ArgonClient['registry']['findMetaError']>[0];\n toString(): string;\n};\n\nexport function formatArgons(microgons: bigint | number): string {\n if (microgons === undefined || microgons === null) return 'na';\n const isNegative = microgons < 0;\n let format = BigNumber(microgons.toString())\n .abs()\n .div(MICROGONS_PER_ARGON)\n .toFormat(2, BigNumber.ROUND_FLOOR);\n if (format.endsWith('.00')) {\n format = format.slice(0, -3);\n }\n return `${isNegative ? '-' : ''}₳${format}`;\n}\n\nexport async function gettersToObject<T>(obj: T): Promise<T> {\n if (obj === null || obj === undefined || typeof obj !== 'object') return obj;\n\n const keys = [];\n\n for (const key in obj) {\n keys.push(key);\n }\n\n if (Symbol.iterator in obj) {\n const iterableToArray = [];\n // @ts-expect-error - it should iterate by virtue of Symbol.iterator\n for (const item of obj) {\n iterableToArray.push(await gettersToObject(item));\n }\n return iterableToArray as T;\n }\n\n const result = {} as any;\n for (const key of keys) {\n const descriptor = Object.getOwnPropertyDescriptor(obj, key);\n // Skip functions\n if (descriptor && typeof descriptor.value === 'function') {\n continue;\n }\n const value = descriptor && descriptor.get ? descriptor.get.call(obj) : obj[key as keyof T];\n if (typeof value === 'function') continue;\n\n result[key] = await gettersToObject(value);\n }\n return result as T;\n}\n\nexport function dispatchErrorToString(client: ArgonClient, error: IDispatchErrorLike) {\n let message = error.toString();\n if (error.isModule) {\n const decoded = client.registry.findMetaError(error.asModule);\n const { docs, name, section } = decoded;\n message = `${section}.${name}: ${docs.join(' ')}`;\n }\n return message;\n}\n\nexport function isOutdatedTransactionError(error: unknown): boolean {\n const message = error instanceof Error ? error.message : String(error);\n return (\n message.includes('Invalid Transaction: Transaction is outdated') ||\n message.includes('InvalidTransaction::Stale')\n );\n}\n\n// ExtrinsicError\nexport class ExtrinsicError extends Error {\n constructor(\n public readonly errorCode: string,\n public readonly details?: string,\n public readonly batchInterruptedIndex?: number,\n public readonly txFee: bigint = 0n,\n ) {\n super(errorCode);\n }\n\n public override toString() {\n if (this.batchInterruptedIndex !== undefined) {\n return `${this.errorCode} ${this.details ?? ''} (Batch interrupted at index ${this.batchInterruptedIndex})`;\n }\n return `${this.errorCode} ${this.details ?? ''}`;\n }\n}\n\nexport function dispatchErrorToExtrinsicError(\n client: ArgonClient,\n error: IDispatchErrorLike,\n batchInterruptedIndex?: number,\n txFee?: bigint,\n) {\n if (error.isModule) {\n const decoded = client.registry.findMetaError(error.asModule);\n const { docs, name, section } = decoded;\n return new ExtrinsicError(`${section}.${name}`, docs.join(' '), batchInterruptedIndex, txFee);\n }\n return new ExtrinsicError(error.toString(), undefined, batchInterruptedIndex, txFee);\n}\n\n/**\n * Check for an extrinsic success event in the given events. Helpful to validate the result of an extrinsic inclusion in a block (it will be included even if it fails)\n * @param events The events to check\n * @param client The client to use\n * @returns A promise that resolves if the extrinsic was successful, and rejects if it failed\n */\nexport function checkForExtrinsicSuccess(\n events: EventRecord[],\n client: ArgonClient,\n): Promise<void> {\n return new Promise((resolve, reject) => {\n for (const { event } of events) {\n if (client.events.system.ExtrinsicSuccess.is(event)) {\n resolve();\n } else if (client.events.system.ExtrinsicFailed.is(event)) {\n // extract the data for this event\n const [dispatchError] = event.data;\n let errorInfo = dispatchError.toString();\n\n if (dispatchError.isModule) {\n const decoded = client.registry.findMetaError(dispatchError.asModule);\n errorInfo = `${decoded.section}.${decoded.name}`;\n }\n\n reject(new Error(`${event.section}.${event.method}:: ExtrinsicFailed:: ${errorInfo}`));\n }\n }\n });\n}\n\n/**\n * Return a bigint value using a canonical field first, then named fallback fields on the same source object.\n * Helpful when reading runtime records that may use older field names across spec versions.\n * @param value The preferred bigint-like value, usually from the current field name\n * @param source The object to read fallback fields from\n * @param fallbackFields The fallback field names to check in order\n * @param fallback The value to return if no preferred or fallback field is present\n * @returns The preferred or fallback value converted to bigint\n */\nexport function getBigIntFallback<T extends object>(\n value: IBigIntLike | undefined,\n source: T,\n fallbackFields: readonly string[],\n fallback = 0n,\n): bigint {\n if (typeof value === 'bigint') return value;\n if (value !== undefined) return value.toBigInt();\n\n const record = source as Record<string, IBigIntLike | undefined>;\n\n for (const fieldName of fallbackFields) {\n const field = record[fieldName];\n if (typeof field === 'bigint') return field;\n if (field !== undefined) return field.toBigInt();\n }\n\n return fallback;\n}\n\ntype IBigIntLike = bigint | { toBigInt(): bigint };\n","import { ArgonClient, GenericEvent, SpRuntimeDispatchError } from './index';\nimport { dispatchErrorToExtrinsicError, ExtrinsicError } from './utils';\nimport type { ISubmittableResult } from '@polkadot/types/types/extrinsic';\nimport { DispatchError } from '@polkadot/types/interfaces';\n\nexport type ITxProgressCallback = (progressToInBlock: number, result?: TxResult) => void;\n\nexport class TxResult {\n #isBroadcast = false;\n #submissionError?: Error;\n\n set isBroadcast(value: boolean) {\n this.#isBroadcast = value;\n this.updateProgress();\n }\n\n get isBroadcast(): boolean {\n return this.#isBroadcast;\n }\n\n set submissionError(value: Error) {\n if (value) {\n this.#submissionError = value;\n this.finalizedReject(value);\n this.inBlockReject(value);\n this.updateProgress();\n }\n }\n\n get submissionError(): Error | undefined {\n return this.#submissionError;\n }\n\n public waitForFinalizedBlock: Promise<Uint8Array>;\n public waitForInFirstBlock: Promise<Uint8Array>;\n public events: GenericEvent[] = [];\n\n public extrinsicError: ExtrinsicError | Error | undefined;\n public extrinsicIndex: number | undefined;\n\n public txProgressCallback?: ITxProgressCallback;\n /**\n * The index of the batch that was interrupted, if any.\n */\n public batchInterruptedIndex?: number;\n public blockHash?: Uint8Array;\n public blockNumber?: number;\n /**\n * The final fee paid for the transaction, including the fee tip.\n */\n public finalFee?: bigint;\n /**\n * The fee tip paid for the transaction.\n */\n public finalFeeTip?: bigint;\n\n public txProgress = 0;\n public isFinalized = false;\n\n protected finalizedResolve!: (block: Uint8Array) => void;\n protected finalizedReject!: (error: ExtrinsicError | Error) => void;\n protected inBlockResolve!: (block: Uint8Array) => void;\n protected inBlockReject!: (error: ExtrinsicError | Error) => void;\n\n constructor(\n protected readonly client: ArgonClient,\n public extrinsic: {\n signedHash: string;\n method: any;\n submittedTime: Date;\n submittedAtBlockNumber: number;\n accountAddress: string;\n nonce: number;\n },\n ) {\n this.waitForFinalizedBlock = new Promise((resolve, reject) => {\n this.finalizedResolve = resolve;\n this.finalizedReject = reject;\n });\n this.waitForInFirstBlock = new Promise((resolve, reject) => {\n this.inBlockResolve = resolve;\n this.inBlockReject = reject;\n });\n // drown reject\n this.waitForFinalizedBlock.catch(() => null);\n this.waitForInFirstBlock.catch(() => null);\n }\n\n public async setSeenInBlock(block: {\n blockHash: Uint8Array;\n blockNumber?: number;\n extrinsicIndex: number;\n events: GenericEvent[];\n }): Promise<void> {\n const { blockHash, blockNumber, events } = block;\n if (blockHash !== this.blockHash) {\n this.parseEvents(events);\n this.blockHash = blockHash;\n this.blockNumber =\n blockNumber ??\n (await this.client.rpc.chain.getHeader(blockHash).then(h => h.number.toNumber()));\n this.extrinsicIndex = block.extrinsicIndex;\n this.updateProgress();\n if (this.extrinsicError) {\n this.inBlockReject(this.extrinsicError);\n } else {\n this.inBlockResolve(blockHash);\n }\n }\n }\n\n public setFinalized() {\n this.isFinalized = true;\n this.updateProgress();\n\n let error = this.extrinsicError ?? this.submissionError;\n if (!error && !this.blockHash) {\n error = new Error('Cannot finalize transaction before it is included in a block');\n }\n\n if (error) {\n this.finalizedReject(error);\n this.inBlockReject(error);\n } else {\n this.finalizedResolve(this.blockHash!);\n this.inBlockResolve(this.blockHash!);\n }\n }\n\n public onSubscriptionResult(result: ISubmittableResult) {\n const { events, status, isFinalized, txIndex } = result;\n const extrinsicEvents = events.map(x => x.event);\n\n if (status.isBroadcast) {\n this.isBroadcast = true;\n if (result.internalError) this.submissionError = result.internalError;\n }\n if (status.isInBlock) {\n void this.setSeenInBlock({\n blockHash: Uint8Array.from(status.asInBlock),\n events: extrinsicEvents,\n extrinsicIndex: txIndex!,\n });\n }\n if (isFinalized) {\n this.setFinalized();\n }\n }\n\n private updateProgress() {\n if (this.isFinalized || this.submissionError) {\n this.txProgress = 100;\n } else if (this.blockNumber) {\n const elapsedBlocks = this.blockNumber - this.extrinsic.submittedAtBlockNumber;\n const FINALIZATION_BLOCKS = 5;\n const remainingPercent = Math.max(0, FINALIZATION_BLOCKS - elapsedBlocks) * 20;\n const percent = 100 - remainingPercent;\n this.txProgress = Math.min(percent, 99);\n } else if (this.extrinsic.submittedAtBlockNumber) {\n this.txProgress = 10;\n }\n this.txProgressCallback?.(this.txProgress);\n }\n\n private parseEvents(events: GenericEvent[]) {\n let encounteredError: SpRuntimeDispatchError | undefined;\n for (const event of events) {\n if (this.client.events.system.ExtrinsicFailed.is(event)) {\n const { dispatchError } = event.data;\n encounteredError ??= dispatchError;\n }\n if (this.client.events.utility.BatchInterrupted.is(event)) {\n const { index, error } = event.data;\n this.batchInterruptedIndex = index.toNumber();\n encounteredError = error;\n }\n if (this.client.events.transactionPayment.TransactionFeePaid.is(event)) {\n const { actualFee, tip } = event.data;\n this.finalFee = actualFee.toBigInt();\n this.finalFeeTip = tip.toBigInt();\n }\n }\n if (encounteredError) {\n this.extrinsicError = dispatchErrorToExtrinsicError(\n this.client,\n encounteredError as unknown as DispatchError,\n this.batchInterruptedIndex,\n this.finalFee,\n );\n } else {\n this.extrinsicError = undefined;\n }\n this.events = events;\n }\n}\n","import { waitForLoad } from './index';\nimport type { ArgonClient } from './index';\nimport type { SubmittableExtrinsic } from '@polkadot/api/promise/types';\nimport type { SignerOptions } from '@polkadot/api/types';\nimport type { KeyringPair } from '@polkadot/keyring/types';\nimport { ITxProgressCallback, TxResult } from './TxResult';\n\nexport type TxSigningAccount =\n | KeyringPair\n | { address: string; signer: NonNullable<SignerOptions['signer']> };\n\nexport type ISubmittableOptions = Partial<Omit<SignerOptions, 'signer'>> & {\n tip?: bigint;\n logResults?: boolean;\n useLatestNonce?: boolean;\n txProgressCallback?: ITxProgressCallback;\n disableAutomaticTxTracking?: boolean;\n};\n\nexport class TxSubmitter {\n public readonly address: string;\n\n constructor(\n public readonly client: ArgonClient,\n public tx: SubmittableExtrinsic,\n public readonly account: TxSigningAccount,\n ) {\n this.address = account.address;\n }\n\n public async feeEstimate(tip?: bigint): Promise<bigint> {\n const { partialFee } = await this.tx.paymentInfo(this.address, { tip });\n return partialFee.toBigInt();\n }\n\n public async canAfford(\n options: {\n tip?: bigint;\n unavailableBalance?: bigint;\n includeExistentialDeposit?: boolean;\n } = {},\n ): Promise<{ canAfford: boolean; availableBalance: bigint; txFee: bigint }> {\n const { tip, unavailableBalance } = options;\n const account = await this.client.query.system.account(this.address);\n let availableBalance = account.data.free.toBigInt();\n const userBalance = availableBalance;\n if (unavailableBalance) {\n availableBalance -= unavailableBalance;\n }\n const existentialDeposit = options.includeExistentialDeposit\n ? this.client.consts.balances.existentialDeposit.toBigInt()\n : 0n;\n const fees = await this.feeEstimate(tip);\n const totalCharge = fees + (tip ?? 0n);\n const canAfford = availableBalance >= totalCharge + existentialDeposit;\n return { canAfford, availableBalance: userBalance, txFee: fees };\n }\n\n public async sign(options: ISubmittableOptions = {}): Promise<SubmittableExtrinsic> {\n const { useLatestNonce, ...apiOptions } = options;\n await waitForLoad();\n if (useLatestNonce && apiOptions.nonce === undefined) {\n apiOptions.nonce = await this.client.rpc.system.accountNextIndex(this.address);\n }\n\n if ('signer' in this.account) {\n return await this.tx.signAsync(this.address, { ...apiOptions, signer: this.account.signer });\n }\n\n return await this.tx.signAsync(this.account, apiOptions);\n }\n\n public async submitSigned(\n signedTx: SubmittableExtrinsic,\n options: ISubmittableOptions = {},\n ): Promise<TxResult> {\n const blockHeight = await this.client.rpc.chain.getHeader().then(h => h.number.toNumber());\n if (options.logResults) {\n this.logRequest();\n }\n const txHash = signedTx.hash.toHex();\n const result = new TxResult(this.client, {\n signedHash: txHash,\n method: signedTx.method.toHuman(),\n accountAddress: this.address,\n submittedTime: new Date(),\n submittedAtBlockNumber: blockHeight,\n nonce: signedTx.nonce.toNumber(),\n });\n result.txProgressCallback = options.txProgressCallback;\n if (options.disableAutomaticTxTracking !== true) {\n await signedTx.send(result.onSubscriptionResult.bind(result));\n } else {\n try {\n await signedTx.send();\n result.isBroadcast = true;\n } catch (error) {\n result.submissionError = error as Error;\n }\n }\n return result;\n }\n\n public async submit(options: ISubmittableOptions = {}): Promise<TxResult> {\n const signedTx = await this.sign(options);\n return await this.submitSigned(signedTx, options);\n }\n\n private logRequest() {\n let toHuman = (this.tx.toHuman() as any).method;\n const txString = [];\n let api = formatCall(toHuman);\n const args: any[] = [];\n if (api === 'proxy.proxy') {\n toHuman = toHuman.args.call;\n txString.push('Proxy');\n api = formatCall(toHuman);\n }\n if (api.startsWith('utility.batch')) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n const calls = toHuman.args.calls.map(formatCall).join(', ');\n txString.push(`Batch[${calls}]`);\n } else {\n txString.push(api);\n args.push(toHuman.args);\n }\n args.unshift(txString.join('->'));\n console.log('Submitting transaction from %s:', this.address, ...args);\n }\n}\n\nfunction formatCall(call: any): string {\n return `${call.section}.${call.method}`;\n}\n","import { Keyring, KeyringPair, mnemonicGenerate } from './index';\n\nexport function keyringFromSuri(\n suri: string,\n cryptoType: 'sr25519' | 'ed25519' = 'sr25519',\n): KeyringPair {\n return new Keyring({ type: cryptoType }).createFromUri(suri);\n}\n\nexport function createKeyringPair(opts: { cryptoType?: 'sr25519' | 'ed25519' }): KeyringPair {\n const { cryptoType } = opts;\n const seed = mnemonicGenerate();\n return keyringFromSuri(seed, cryptoType);\n}\n","import { getOfflineRegistry, type ArgonPrimitivesDigestsFrameInfo, type Header } from './index';\n\nexport function getTickFromHeader(header: Header): number | undefined {\n for (const x of header.digest.logs) {\n if (x.isPreRuntime) {\n const [engineId, data] = x.asPreRuntime;\n if (engineId.toString() === 'aura') {\n return getOfflineRegistry().createType('u64', data).toNumber();\n }\n }\n }\n return undefined;\n}\n\nexport function getAuthorFromHeader(header: Header): string | undefined {\n for (const x of header.digest.logs) {\n if (x.isPreRuntime) {\n const [engineId, data] = x.asPreRuntime;\n if (engineId.toString() === 'pow_') {\n return getOfflineRegistry().createType('AccountId32', data).toHuman();\n }\n }\n }\n return undefined;\n}\n\nexport function getFrameInfoFromHeader(\n header: Header,\n): { isNewFrame: boolean; frameId: number; frameRewardTicksRemaining: number } | undefined {\n for (const x of header.digest.logs) {\n if (x.isConsensus) {\n const [engineId, data] = x.asConsensus;\n if (engineId.toString() === 'fram') {\n const decoded: ArgonPrimitivesDigestsFrameInfo = getOfflineRegistry().createType(\n 'ArgonPrimitivesDigestsFrameInfo',\n data,\n );\n return {\n isNewFrame: decoded.isNewFrame.toPrimitive(),\n frameId: decoded.frameId.toNumber(),\n frameRewardTicksRemaining: decoded.frameRewardTicksRemaining.toNumber(),\n };\n }\n }\n }\n return undefined;\n}\n","import {\n type ArgonClient,\n type ArgonPrimitivesVault,\n FIXED_U128_DECIMALS,\n formatArgons,\n fromFixedNumber,\n MICROGONS_PER_ARGON,\n PERMILL_DECIMALS,\n toFixedNumber,\n TxSubmitter,\n} from './index';\nimport BigNumber from 'bignumber.js';\nimport bs58check from 'bs58check';\nimport { hexToU8a } from '@polkadot/util';\nimport { TxResult } from './TxResult';\nimport type { ISubmittableOptions, TxSigningAccount } from './TxSubmitter';\nimport type { PriceIndex } from './PriceIndex';\nimport { ApiDecoration } from '@polkadot/api/types';\nimport type {\n bool,\n BTreeMap,\n Bytes,\n Compact,\n Option,\n Struct,\n u128,\n u64,\n} from '@polkadot/types-codec';\nimport type { AccountId32 } from '@polkadot/types/interfaces/runtime';\nimport type { ITuple } from '@polkadot/types-codec/types';\nimport { ArgonPrimitivesVaultVaultTerms } from '@polkadot/types/lookup';\n\ninterface ArgonPrimitivesVaultV144 extends Struct {\n readonly operatorAccountId: AccountId32;\n readonly securitization: Compact<u128>;\n readonly argonsLocked: Compact<u128>;\n readonly argonsPendingActivation: Compact<u128>;\n readonly argonsScheduledForRelease: BTreeMap<u64, u128>;\n readonly securitizationRatio: Compact<u128>;\n readonly isClosed: bool;\n readonly terms: ArgonPrimitivesVaultVaultTerms;\n readonly pendingTerms: Option<ITuple<[u64, ArgonPrimitivesVaultVaultTerms]>>;\n readonly openedTick: Compact<u64>;\n}\n\nexport class Vault {\n public securitization!: bigint;\n public securitizationLocked!: bigint;\n public securitizationPendingActivation!: bigint;\n /**\n * Map of bitcoin height to amount of securitization released at that height\n */\n public securitizationReleaseSchedule: Map<number, bigint>;\n public terms!: ITerms;\n public operatorAccountId!: string;\n public isClosed!: boolean;\n public vaultId: number;\n public pendingTerms?: ITerms;\n public pendingTermsChangeTick?: number;\n public openedDate: Date;\n public openedTick: number;\n public securitizationRatio!: number;\n\n public lockedSatoshis!: number;\n public securitizedSatoshis!: number;\n public name?: string;\n public lastNameChangeTick?: number;\n public bitcoinLockDelegateAccount?: string;\n\n constructor(\n id: number,\n vault: ArgonPrimitivesVault,\n public tickDuration: number,\n ) {\n this.vaultId = id;\n this.openedTick = vault.openedTick.toNumber();\n this.openedDate = new Date(this.openedTick * this.tickDuration);\n this.securitizationReleaseSchedule = new Map();\n this.load(vault);\n }\n\n public load(vault: ArgonPrimitivesVault | ArgonPrimitivesVaultV144): void {\n this.securitization = vault.securitization.toBigInt();\n this.securitizationRatio = fromFixedNumber(\n vault.securitizationRatio.toBigInt(),\n FIXED_U128_DECIMALS,\n ).toNumber();\n this.securitizationReleaseSchedule.clear();\n let schedule: BTreeMap<u64, u128>;\n if ('argonsLocked' in vault) {\n // spec 143 compatibility - don't bother with ratio as it was forced to 1:1\n this.securitizationLocked = vault.argonsLocked.toBigInt();\n this.securitizationPendingActivation = vault.argonsPendingActivation.toBigInt();\n schedule = vault.argonsScheduledForRelease;\n } else {\n this.securitizationLocked = vault.securitizationLocked.toBigInt();\n this.securitizationPendingActivation = vault.securitizationPendingActivation.toBigInt();\n schedule = vault.securitizationReleaseSchedule;\n }\n if (schedule.size > 0) {\n for (const [bitcoinHeight, amount] of schedule.entries()) {\n this.securitizationReleaseSchedule.set(bitcoinHeight.toNumber(), amount.toBigInt());\n }\n }\n this.terms = {\n bitcoinAnnualPercentRate: fromFixedNumber(\n vault.terms.bitcoinAnnualPercentRate.toBigInt(),\n FIXED_U128_DECIMALS,\n ),\n bitcoinBaseFee: vault.terms.bitcoinBaseFee.toBigInt(),\n treasuryProfitSharing: fromFixedNumber(\n vault.terms.treasuryProfitSharing.toBigInt(),\n PERMILL_DECIMALS,\n ),\n };\n if ('lockedSatoshis' in vault) {\n this.lockedSatoshis = vault.lockedSatoshis.toNumber();\n this.securitizedSatoshis = vault.securitizedSatoshis.toNumber();\n } else {\n this.lockedSatoshis = 0;\n this.securitizedSatoshis = 0;\n }\n\n this.operatorAccountId = vault.operatorAccountId.toString();\n this.isClosed = vault.isClosed.valueOf();\n this.pendingTerms = undefined;\n this.pendingTermsChangeTick = undefined;\n this.name = undefined;\n this.lastNameChangeTick = undefined;\n this.bitcoinLockDelegateAccount = undefined;\n if (vault.pendingTerms.isSome) {\n const [tickApply, terms] = vault.pendingTerms.value;\n this.pendingTermsChangeTick = tickApply.toNumber();\n this.pendingTerms = {\n bitcoinAnnualPercentRate: fromFixedNumber(\n terms.bitcoinAnnualPercentRate.toBigInt(),\n FIXED_U128_DECIMALS,\n ),\n bitcoinBaseFee: terms.bitcoinBaseFee.toBigInt(),\n treasuryProfitSharing: fromFixedNumber(\n vault.terms.treasuryProfitSharing.toBigInt(),\n PERMILL_DECIMALS,\n ),\n };\n }\n if ('name' in vault && vault.name.isSome) {\n this.name = decodeVaultName(vault.name.unwrap());\n }\n if ('lastNameChangeTick' in vault && vault.lastNameChangeTick.isSome) {\n this.lastNameChangeTick = vault.lastNameChangeTick.unwrap().toNumber();\n }\n if ('bitcoinLockDelegateAccount' in vault && vault.bitcoinLockDelegateAccount.isSome) {\n this.bitcoinLockDelegateAccount = vault.bitcoinLockDelegateAccount.unwrap().toHuman();\n }\n }\n\n public availableBitcoinSpace(): bigint {\n const availableSecuritization = this.availableSecuritization();\n const microgons = BigNumber(availableSecuritization).div(this.securitizationRatioBN());\n return bigNumberToBigInt(microgons);\n }\n\n public availableSecuritization(): bigint {\n return this.securitization - this.securitizationLocked;\n }\n\n public availableBondSpace(\n priceIndex: PriceIndex,\n bondLots?: Iterable<{ activeBonds: number }>,\n bondFullCapacityPerFrame?: boolean,\n ): bigint {\n if (this.securitizedSatoshis <= 0) return 0n;\n\n const microgonsPerBond = BigInt(MICROGONS_PER_ARGON);\n const totalBondCapacityMicrogons = priceIndex.getSatoshiPriceInTargetMicrogons(\n BigInt(this.securitizedSatoshis),\n );\n const capacityMicrogons = bondFullCapacityPerFrame\n ? totalBondCapacityMicrogons\n : totalBondCapacityMicrogons / 10n;\n const bondCapacity = Number(capacityMicrogons / microgonsPerBond);\n const activeBonds = [...(bondLots ?? [])].reduce(\n (sum, bondLot) => sum + bondLot.activeBonds,\n 0,\n );\n const availableBonds = activeBonds < bondCapacity ? bondCapacity - activeBonds : 0;\n\n return BigInt(availableBonds) * microgonsPerBond;\n }\n\n public getRelockCapacity(): bigint {\n return [...this.securitizationReleaseSchedule.values()].reduce((acc, val) => acc + val, 0n);\n }\n\n public securitizationRatioBN(): BigNumber {\n return new BigNumber(this.securitizationRatio);\n }\n\n public activatedSecuritization(): bigint {\n return this.securitizationLocked - this.securitizationPendingActivation;\n }\n\n /**\n * Returns the amount of securitization available to match per treasury pool\n */\n public activatedSecuritizationPerSlot(): bigint {\n const activated = this.activatedSecuritization();\n return activated / 10n;\n }\n\n public calculateBitcoinFee(amount: bigint): bigint {\n const feeBn = this.terms.bitcoinAnnualPercentRate\n .multipliedBy(amount)\n .integerValue(BigNumber.ROUND_CEIL);\n return BigInt(feeBn.toString()) + this.terms.bitcoinBaseFee;\n }\n\n public static async get(\n client: ArgonClient | ApiDecoration<'promise'>,\n vaultId: number,\n tickDurationMillis?: number,\n ): Promise<Vault> {\n const rawVault = await client.query.vaults.vaultsById(vaultId);\n if (rawVault.isNone) {\n throw new Error(`Vault with id ${vaultId} not found`);\n }\n const tickDuration =\n tickDurationMillis ??\n (await client.query.ticks.genesisTicker().then(x => x.tickDurationMillis.toNumber()))!;\n return new Vault(vaultId, rawVault.unwrap(), tickDuration);\n }\n\n public static async create(\n client: ArgonClient,\n txSigner: TxSigningAccount,\n args: {\n securitization: bigint | number;\n securitizationRatio: number;\n annualPercentRate: number;\n baseFee: bigint | number;\n bitcoinXpub: string;\n name?: string;\n treasuryProfitSharing: number;\n doNotExceedBalance?: bigint;\n } & ISubmittableOptions,\n config: { tickDurationMillis?: number } = {},\n ): Promise<{ getVault(): Promise<Vault>; txResult: TxResult }> {\n const {\n securitization,\n securitizationRatio,\n annualPercentRate,\n baseFee,\n bitcoinXpub,\n name,\n tip,\n doNotExceedBalance,\n } = args;\n let xpubBytes = hexToU8a(bitcoinXpub);\n if (xpubBytes.length !== 78) {\n if (\n bitcoinXpub.startsWith('xpub') ||\n bitcoinXpub.startsWith('tpub') ||\n bitcoinXpub.startsWith('zpub')\n ) {\n const bytes = bs58check.decode(bitcoinXpub);\n if (bytes.length !== 78) {\n throw new Error('Invalid Bitcoin xpub key length, must be 78 bytes');\n }\n xpubBytes = bytes;\n }\n }\n if (securitizationRatio < 1 || securitizationRatio > 2) {\n throw new Error('Securitization ratio must be between 1 and 2');\n }\n const encodedName = encodeVaultName(name);\n const vaultParams = {\n terms: {\n // convert to fixed u128\n bitcoinAnnualPercentRate: toFixedNumber(annualPercentRate, FIXED_U128_DECIMALS),\n bitcoinBaseFee: BigInt(baseFee),\n treasuryProfitSharing: toFixedNumber(args.treasuryProfitSharing, PERMILL_DECIMALS),\n },\n securitizationRatio: toFixedNumber(securitizationRatio, FIXED_U128_DECIMALS),\n securitization: BigInt(securitization),\n bitcoinXpubkey: xpubBytes,\n name: encodedName,\n };\n const tx = new TxSubmitter(client, client.tx.vaults.create(vaultParams), txSigner);\n if (doNotExceedBalance) {\n const finalTip = tip ?? 0n;\n let txFee = await tx.feeEstimate(finalTip);\n while (txFee + finalTip + vaultParams.securitization > doNotExceedBalance) {\n vaultParams.securitization = doNotExceedBalance - txFee - finalTip;\n tx.tx = client.tx.vaults.create(vaultParams);\n txFee = await tx.feeEstimate(finalTip);\n }\n }\n const canAfford = await tx.canAfford({ tip, unavailableBalance: BigInt(securitization) });\n if (!canAfford.canAfford) {\n throw new Error(\n `Insufficient balance to create vault. Required: ${formatArgons(securitization)}, Available: ${formatArgons(canAfford.availableBalance)}`,\n );\n }\n\n const result = await tx.submit({\n ...args,\n useLatestNonce: true,\n });\n\n async function getVault(): Promise<Vault> {\n await result.waitForFinalizedBlock;\n let vaultId: number | undefined;\n for (const event of result.events) {\n if (client.events.vaults.VaultCreated.is(event)) {\n vaultId = event.data.vaultId.toNumber();\n break;\n }\n }\n if (vaultId === undefined) {\n throw new Error('Vault creation failed, no VaultCreated event found');\n }\n return Vault.get(client, vaultId, config.tickDurationMillis);\n }\n return { getVault, txResult: result };\n }\n\n public static async setName(\n client: ArgonClient,\n txSigner: TxSigningAccount,\n args: {\n name?: string | null;\n } & ISubmittableOptions,\n ): Promise<TxResult> {\n const tx = new TxSubmitter(\n client,\n client.tx.vaults.setName(encodeVaultName(args.name)),\n txSigner,\n );\n\n return tx.submit({\n ...args,\n useLatestNonce: true,\n });\n }\n}\n\nexport interface ITerms {\n readonly bitcoinAnnualPercentRate: BigNumber;\n readonly bitcoinBaseFee: bigint;\n readonly treasuryProfitSharing: BigNumber;\n}\nfunction bigNumberToBigInt(bn: BigNumber): bigint {\n return BigInt(bn.integerValue(BigNumber.ROUND_DOWN).toString());\n}\n\nfunction decodeVaultName(name: Bytes): string {\n return new TextDecoder().decode(Uint8Array.from(name));\n}\n\nfunction encodeVaultName(name?: string | null): string | null {\n if (name === undefined || name === null) {\n return null;\n }\n if (!/^[A-Z][A-Za-z0-9]{0,17}$/.test(name)) {\n throw new Error(\n 'Vault name must start with a capital letter and contain at most 18 alphanumeric characters',\n );\n }\n return name;\n}\n","import BigNumber from 'bignumber.js';\n\nexport function toFixedNumber(\n value: string | number | BigNumber, // accept string to avoid early precision loss\n decimals: number,\n): bigint {\n const factor = new BigNumber(10).pow(decimals);\n const bn = new BigNumber(value);\n // truncate toward 0; use ROUND_FLOOR if you really need floor for positives\n const int = bn.times(factor).integerValue(BigNumber.ROUND_DOWN);\n return BigInt(int.toFixed(0));\n}\n\nexport function fromFixedNumber(value: bigint, decimals: number = FIXED_U128_DECIMALS): BigNumber {\n const factor = new BigNumber(10).pow(decimals);\n const bn = new BigNumber(value.toString());\n return bn.div(factor);\n}\n\nexport const FIXED_U128_DECIMALS = 18;\nexport const PERMILL_DECIMALS = 6;\n","import {\n ArgonClient,\n ArgonPrimitivesBitcoinBitcoinNetwork,\n ArgonPrimitivesBitcoinUtxoRef,\n getBigIntFallback,\n} from './index';\nimport { GenericEvent } from '@polkadot/types';\nimport type { SubmittableExtrinsic } from '@polkadot/api/promise/types';\nimport type { ISubmittableOptions, TxSigningAccount } from './TxSubmitter';\nimport { TxSubmitter } from './TxSubmitter';\nimport { TxResult } from './TxResult';\nimport { u8aToHex } from '@polkadot/util';\nimport { ApiDecoration } from '@polkadot/api/types';\nimport { PriceIndex } from './PriceIndex';\nimport { bool, Option, u128 } from '@polkadot/types-codec';\nimport { formatArgons } from './utils';\nimport type { Vault } from './Vault';\nimport BigNumber from 'bignumber.js';\n\nexport const SATS_PER_BTC = 100_000_000n;\n\ntype IQueryableClient = ArgonClient | ApiDecoration<'promise'>;\ntype UtxoRefLike =\n | ArgonPrimitivesBitcoinUtxoRef\n | { txid: string | Uint8Array; outputIndex: number };\n\ntype UtxoRefOption = { unwrap: () => ArgonPrimitivesBitcoinUtxoRef };\n\nfunction normalizeUtxoRef(utxoRef: UtxoRefLike): {\n txid: string;\n outputIndex: number;\n} {\n let txid = utxoRef.txid;\n if (typeof txid === 'object' && 'toHex' in txid) {\n txid = txid.toHex();\n } else if (typeof txid !== 'string') {\n txid = u8aToHex(txid);\n }\n let outputIndex = utxoRef.outputIndex;\n if (typeof outputIndex !== 'number') {\n outputIndex = outputIndex.toNumber();\n }\n return { txid, outputIndex };\n}\n\nexport class BitcoinLock implements IBitcoinLock {\n public utxoId: number;\n public p2wshScriptHashHex: string;\n public vaultId: number;\n public lockedTargetPrice: bigint;\n public liquidityPromised: bigint;\n public ownerAccount: string;\n public satoshis: bigint;\n public utxoSatoshis?: bigint;\n public vaultPubkey: string;\n public securityFees: bigint;\n public vaultClaimPubkey: string;\n public ownerPubkey: string;\n public vaultXpubSources: {\n parentFingerprint: Uint8Array;\n cosignHdIndex: number;\n claimHdIndex: number;\n };\n public vaultClaimHeight: number;\n public openClaimHeight: number;\n public createdAtHeight: number;\n public isFunded: boolean;\n public createdAtArgonBlock: number;\n public fundHoldExtensionsByBitcoinExpirationHeight: Record<number, bigint>;\n\n constructor(data: IBitcoinLock) {\n this.utxoId = data.utxoId;\n this.p2wshScriptHashHex = data.p2wshScriptHashHex;\n this.vaultId = data.vaultId;\n this.lockedTargetPrice = data.lockedTargetPrice;\n this.liquidityPromised = data.liquidityPromised;\n this.ownerAccount = data.ownerAccount;\n this.satoshis = data.satoshis;\n this.utxoSatoshis = data.utxoSatoshis;\n this.vaultPubkey = data.vaultPubkey;\n this.securityFees = data.securityFees;\n this.vaultClaimPubkey = data.vaultClaimPubkey;\n this.ownerPubkey = data.ownerPubkey;\n this.vaultXpubSources = data.vaultXpubSources;\n this.vaultClaimHeight = data.vaultClaimHeight;\n this.openClaimHeight = data.openClaimHeight;\n this.createdAtHeight = data.createdAtHeight;\n this.isFunded = data.isFunded;\n this.fundHoldExtensionsByBitcoinExpirationHeight =\n data.fundHoldExtensionsByBitcoinExpirationHeight;\n this.createdAtArgonBlock = data.createdAtArgonBlock;\n }\n\n /**\n * Gets the UTXO reference by ID.\n * @param client - client at the block height to query the UTXO reference at a specific point in time.\n * @return An object containing the transaction ID and output index, or undefined if not found.\n * @return.txid - The Bitcoin transaction ID of the UTXO.\n * @return.vout - The output index of the UTXO in the transaction.\n * @return.bitcoinTxid - The Bitcoin transaction ID of the UTXO formatted in little endian\n */\n public async getFundingUtxoRef(\n client: IQueryableClient,\n ): Promise<{ txid: string; vout: number; bitcoinTxid: string } | undefined> {\n let refRaw: Option<ArgonPrimitivesBitcoinUtxoRef>;\n if (\n 'utxoIdToRef' in client.query.bitcoinUtxos &&\n typeof client.query.bitcoinUtxos.utxoIdToRef === 'function'\n ) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n refRaw = await client.query.bitcoinUtxos.utxoIdToRef(this.utxoId);\n } else {\n refRaw = await client.query.bitcoinUtxos.utxoIdToFundingUtxoRef(this.utxoId);\n }\n if (!refRaw || refRaw.isNone) {\n return;\n }\n const ref = refRaw.unwrap();\n\n const txid = u8aToHex(ref.txid);\n const bitcoinTxid = u8aToHex(ref.txid.slice().reverse());\n const vout = ref.outputIndex.toNumber();\n return { txid, vout, bitcoinTxid };\n }\n\n public async findPendingMints(client: IQueryableClient): Promise<bigint[]> {\n const pendingMint = await client.query.mint.pendingMintUtxos();\n const mintsPending: bigint[] = [];\n for (const [utxoIdRaw, _accountId, mintAmountRaw] of pendingMint) {\n if (utxoIdRaw.toNumber() === this.utxoId) {\n mintsPending.push(mintAmountRaw.toBigInt());\n }\n }\n return mintsPending;\n }\n\n public async calculateRatchetingCosts(\n client: IQueryableClient,\n priceIndex: PriceIndex,\n vault: Vault,\n microgonsAtTargetPerBtc?: bigint,\n ): Promise<{ burnAmount: bigint; ratchetingFee: bigint }> {\n const { createdAtHeight, vaultClaimHeight, lockedTargetPrice, satoshis } = this;\n const currentTargetPrice =\n microgonsAtTargetPerBtc !== undefined\n ? (microgonsAtTargetPerBtc * satoshis) / SATS_PER_BTC\n : priceIndex.getSatoshiPriceInTargetMicrogons(satoshis);\n\n let ratchetingFee = vault.terms.bitcoinBaseFee;\n let burnAmount = 0n;\n\n // ratchet up\n if (currentTargetPrice > lockedTargetPrice) {\n const diffTargetAmount = currentTargetPrice - lockedTargetPrice;\n const amountToMint = BitcoinLock.calculateRedemptionAmount(priceIndex, diffTargetAmount);\n const bitcoinFee = vault.calculateBitcoinFee(amountToMint);\n const percentageFee = bitcoinFee - vault.terms.bitcoinBaseFee;\n\n const currentBitcoinHeight = await client.query.bitcoinUtxos\n .confirmedBitcoinBlockTip()\n .then(x => x.unwrap().blockHeight.toNumber());\n const fullTerm = Math.max(1, vaultClaimHeight - createdAtHeight);\n const elapsedBlocks = Math.max(0, currentBitcoinHeight - createdAtHeight);\n const cappedRemainingBlocks = Math.max(0, fullTerm - elapsedBlocks);\n const proratedFee = (percentageFee * BigInt(cappedRemainingBlocks)) / BigInt(fullTerm);\n ratchetingFee = vault.terms.bitcoinBaseFee + proratedFee;\n } else {\n burnAmount = BitcoinLock.calculateRedemptionAmount(priceIndex, currentTargetPrice);\n }\n\n return {\n ratchetingFee,\n burnAmount,\n };\n }\n\n public async ratchet(\n args: {\n client: ArgonClient;\n priceIndex: PriceIndex;\n txSigner: TxSigningAccount;\n vault: Vault;\n microgonsAtTargetPerBtc?: bigint;\n } & ISubmittableOptions,\n ): Promise<{\n txResult: TxResult;\n getRatchetResult: () => Promise<{\n securityFee: bigint;\n txFee: bigint;\n lockedTargetPrice: bigint;\n liquidityPromised: bigint;\n pendingMint: bigint;\n burned: bigint;\n blockHeight: number;\n bitcoinBlockHeight: number;\n }>;\n }> {\n const { priceIndex, txSigner, tip = 0n, vault, client, microgonsAtTargetPerBtc } = args;\n\n const ratchetingCosts = await this.calculateRatchetingCosts(\n client,\n priceIndex,\n vault,\n microgonsAtTargetPerBtc,\n );\n const tx = client.tx.bitcoinLocks.ratchet(this.utxoId, { V1: { microgonsAtTargetPerBtc } });\n const txSubmitter = new TxSubmitter(client, tx, txSigner);\n const canAfford = await txSubmitter.canAfford({\n tip,\n unavailableBalance: BigInt(ratchetingCosts.burnAmount + ratchetingCosts.ratchetingFee),\n });\n if (!canAfford.canAfford) {\n throw new Error(\n `Insufficient funds to ratchet lock. Available: ${formatArgons(canAfford.availableBalance)}, Required: ${formatArgons(\n ratchetingCosts.burnAmount + ratchetingCosts.ratchetingFee,\n )}`,\n );\n }\n\n const txResult = await txSubmitter.submit(args);\n\n const getRatchetResult = async () => {\n const blockHash = await txResult.waitForFinalizedBlock;\n const ratchetEvent = txResult.events.find(x =>\n client.events.bitcoinLocks.BitcoinLockRatcheted.is(x),\n );\n if (!ratchetEvent) {\n throw new Error(`Ratchet event not found in transaction events`);\n }\n const api = await client.at(blockHash);\n const bitcoinBlockHeight = await api.query.bitcoinUtxos\n .confirmedBitcoinBlockTip()\n .then(x => x.unwrap().blockHeight.toNumber());\n const {\n amountBurned,\n liquidityPromised: liquidityPromisedRaw,\n newTargetPrice: newTargetPriceRaw,\n oldTargetPrice: oldTargetPriceRaw,\n securityFee,\n } = ratchetEvent.data;\n\n const liquidityPromised = liquidityPromisedRaw.toBigInt();\n const newTargetPrice = newTargetPriceRaw.toBigInt();\n const oldTargetPrice = oldTargetPriceRaw.toBigInt();\n const pendingMint =\n newTargetPrice > oldTargetPrice\n ? BitcoinLock.calculateRedemptionAmount(priceIndex, newTargetPrice - oldTargetPrice)\n : liquidityPromised;\n\n return {\n txFee: txResult.finalFee ?? 0n,\n blockHeight: txResult.blockNumber!,\n bitcoinBlockHeight,\n pendingMint,\n liquidityPromised,\n lockedTargetPrice: newTargetPrice,\n burned: amountBurned.toBigInt(),\n securityFee: securityFee.toBigInt(),\n };\n };\n\n return {\n txResult,\n getRatchetResult,\n };\n }\n\n public calculateRedemptionAmount(priceIndex: PriceIndex): bigint {\n return BitcoinLock.calculateRedemptionAmountFromSatoshis(\n priceIndex,\n this.satoshis,\n this.lockedTargetPrice,\n );\n }\n\n public async requestRelease(\n args: {\n client: ArgonClient;\n priceIndex: PriceIndex;\n releaseRequest: IReleaseRequest;\n txSigner: TxSigningAccount;\n } & ISubmittableOptions,\n ): Promise<TxResult> {\n const {\n priceIndex,\n releaseRequest: { bitcoinNetworkFee, toScriptPubkey },\n txSigner,\n tip = 0n,\n client,\n } = args;\n\n if (!toScriptPubkey.startsWith('0x')) {\n throw new Error('toScriptPubkey must be a hex string starting with 0x');\n }\n\n const submitter = new TxSubmitter(\n client,\n client.tx.bitcoinLocks.requestRelease(this.utxoId, toScriptPubkey, bitcoinNetworkFee),\n txSigner,\n );\n\n const redemptionAmount = this.calculateRedemptionAmount(priceIndex);\n\n const canAfford = await submitter.canAfford({\n tip,\n unavailableBalance: BigInt(redemptionAmount),\n });\n\n if (!canAfford.canAfford) {\n throw new Error(\n `Insufficient funds to release lock. Available: ${formatArgons(canAfford.availableBalance)}, Required: ${formatArgons(redemptionAmount + canAfford.txFee + tip)}`,\n );\n }\n return submitter.submit({\n logResults: true,\n ...args,\n });\n }\n\n public async getReleaseRequest(\n client: IQueryableClient,\n ): Promise<IReleaseRequestDetails | undefined> {\n const requestMaybe = await client.query.bitcoinLocks.lockReleaseRequestsByUtxoId(this.utxoId);\n if (!requestMaybe.isSome) {\n return undefined;\n }\n const request = requestMaybe.unwrap();\n return {\n toScriptPubkey: request.toScriptPubkey.toHex(),\n bitcoinNetworkFee: request.bitcoinNetworkFee.toBigInt(),\n dueFrame: request.cosignDueFrame.toNumber(),\n vaultId: request.vaultId.toNumber(),\n redemptionAmount: getBigIntFallback(request.redemptionAmount, request, ['redemptionPrice']),\n };\n }\n\n /**\n * Finds the cosign signature for a vault lock by UTXO ID. Optionally waits for the signature\n * @param client - The Argon client with rpc access\n * @param finalizedStateOnly - If true, only checks finalized state\n * @param waitForSignatureMillis - Optional timeout in milliseconds to wait for the signature. If -1, waits indefinitely.\n */\n public async findVaultCosignSignature(\n client: ArgonClient,\n finalizedStateOnly = false,\n waitForSignatureMillis?: number,\n ): Promise<{ blockHeight: number; signature: Uint8Array } | undefined> {\n let queryClient = client as IQueryableClient;\n if (finalizedStateOnly) {\n const finalizedHead = await client.rpc.chain.getFinalizedHead();\n queryClient = await client.at(finalizedHead);\n }\n const releaseHeight = await queryClient.query.bitcoinLocks.lockReleaseCosignHeightById(\n this.utxoId,\n );\n if (releaseHeight.isSome) {\n const releaseHeightValue = releaseHeight.unwrap().toNumber();\n const signature = await this.getVaultCosignSignature(client, releaseHeightValue);\n if (signature) {\n return { blockHeight: releaseHeightValue, signature };\n }\n }\n\n if (!waitForSignatureMillis) {\n return undefined;\n }\n\n return await new Promise(async (resolve, reject) => {\n let timeout: NodeJS.Timeout | undefined;\n const unsub = await client.rpc.chain.subscribeNewHeads(header => {\n const atHeight = header.number.toNumber();\n this.getVaultCosignSignature(client, atHeight)\n .then(signature => {\n if (signature) {\n unsub?.();\n clearTimeout(timeout);\n resolve({ signature, blockHeight: atHeight });\n }\n })\n .catch(err => {\n console.error(`Error checking for cosign signature at height ${atHeight}:`, err);\n });\n });\n if (waitForSignatureMillis !== -1) {\n timeout = setTimeout(() => {\n unsub?.();\n reject(new Error(`Timeout waiting for cosign signature for UTXO ID ${this.utxoId}`));\n }, waitForSignatureMillis);\n }\n });\n }\n\n public async getVaultCosignSignature(\n client: ArgonClient,\n atHeight: number,\n ): Promise<Uint8Array | undefined> {\n const blockHash = await BitcoinLock.blockHashAtHeight(client, atHeight);\n if (!blockHash) {\n console.warn(`Block hash not found for height ${atHeight}`);\n return undefined;\n }\n\n const blockEvents = await client.at(blockHash).then(api => api.query.system.events());\n for (const event of blockEvents) {\n if (client.events.bitcoinLocks.BitcoinUtxoCosigned.is(event.event)) {\n const { utxoId: id, signature } = event.event.data;\n if (id.toNumber() === this.utxoId) {\n return new Uint8Array(signature);\n }\n }\n }\n return undefined;\n }\n\n public static async getUtxoIdFromEvents(client: IQueryableClient, events: GenericEvent[]) {\n for (const event of events) {\n if (client.events.bitcoinLocks.BitcoinLockCreated.is(event)) {\n return event.data.utxoId.toNumber();\n }\n }\n return undefined;\n }\n\n public static calculateRedemptionAmountFromSatoshis(\n priceIndex: PriceIndex,\n satoshis: bigint,\n lockedTargetPrice?: bigint,\n ): bigint {\n const btcMicrogonsAtTarget = priceIndex.getSatoshiPriceInTargetMicrogons(satoshis);\n return this.calculateRedemptionAmount(priceIndex, btcMicrogonsAtTarget, lockedTargetPrice);\n }\n\n public static calculateRedemptionAmount(\n priceIndex: PriceIndex,\n btcMicrogonsAtTarget: bigint,\n maxMicrogonsAtTarget?: bigint,\n ): bigint {\n let price = btcMicrogonsAtTarget;\n if (maxMicrogonsAtTarget !== undefined && maxMicrogonsAtTarget < btcMicrogonsAtTarget) {\n price = maxMicrogonsAtTarget;\n }\n\n const multiplierBn = this.redemptionMultiplierBn(priceIndex);\n\n return BigInt(\n new BigNumber(price.toString())\n .times(multiplierBn)\n .integerValue(BigNumber.ROUND_DOWN)\n .toFixed(0),\n );\n }\n\n private static redemptionMultiplierBn(priceIndex: PriceIndex): BigNumber {\n const r = priceIndex.rValue;\n\n if (r.gte(1)) {\n // Case 1: no penalty\n return new BigNumber(1);\n } else if (r.gte(0.9)) {\n // Case 2: quadratic curve\n // Formula: 20r² - 38r + 19\n return new BigNumber(20).times(r.pow(2)).minus(new BigNumber(38).times(r)).plus(19);\n } else if (r.gte(0.01)) {\n // Case 3: rational linear formula\n // Formula: (0.5618r + 0.3944) / r\n return new BigNumber(0.5618).times(r).plus(0.3944).div(r);\n } else {\n // Case 4: extreme deviation\n // Formula: (1 / r) * (0.576r + 0.4)\n return new BigNumber(1).div(r).times(new BigNumber(0.576).times(r).plus(0.4));\n }\n }\n\n public static async getConfig(client: IQueryableClient): Promise<IBitcoinLockConfig> {\n const bitcoinNetwork = await client.query.bitcoinUtxos.bitcoinNetwork();\n return {\n lockReleaseCosignDeadlineFrames:\n client.consts.bitcoinLocks.lockReleaseCosignDeadlineFrames.toNumber(),\n pendingConfirmationExpirationBlocks:\n client.consts.bitcoinUtxos.maxPendingConfirmationBlocks.toNumber(),\n tickDurationMillis: await client.query.ticks\n .genesisTicker()\n .then(x => x.tickDurationMillis.toNumber()),\n bitcoinNetwork,\n lockSatoshiAllowedVariance:\n client.consts.bitcoinUtxos.maximumSatoshiThresholdFromExpected?.toNumber() ?? 10_000,\n };\n }\n\n public static async getBitcoinConfirmedBlockHeight(client: IQueryableClient): Promise<number> {\n return await client.query.bitcoinUtxos\n .confirmedBitcoinBlockTip()\n .then(x => x.value?.blockHeight.toNumber() ?? 0);\n }\n\n public static async submitVaultSignature(\n args: {\n client: ArgonClient;\n utxoId: number;\n vaultSignature: Uint8Array;\n txSigner: TxSigningAccount;\n } & ISubmittableOptions,\n ): Promise<TxResult> {\n const { utxoId, vaultSignature, txSigner, client } = args;\n if (!vaultSignature || vaultSignature.byteLength < 70 || vaultSignature.byteLength > 73) {\n throw new Error(\n `Invalid vault signature length: ${vaultSignature.byteLength}. Must be 70-73 bytes.`,\n );\n }\n const signature = u8aToHex(vaultSignature);\n const tx = client.tx.bitcoinLocks.cosignRelease(utxoId, signature);\n const submitter = new TxSubmitter(client, tx, txSigner);\n\n return await submitter.submit(args);\n }\n\n public static async createIncreaseSecuritizationTx(\n args: {\n utxoId: number;\n client: ArgonClient;\n newSatoshis: bigint;\n } & ISubmittableOptions,\n ): Promise<SubmittableExtrinsic | undefined> {\n const { client, newSatoshis, utxoId } = args;\n const txBuilder = client.tx.bitcoinLocks.increaseSecuritization;\n if (!txBuilder?.meta) {\n return undefined;\n }\n return txBuilder(utxoId, newSatoshis);\n }\n\n public static async createFundWithUtxoCandidateTx(\n args: {\n client: ArgonClient;\n utxoId: number;\n utxoRef: UtxoRefLike;\n } & ISubmittableOptions,\n ): Promise<SubmittableExtrinsic | undefined> {\n const { client, utxoId, utxoRef } = args;\n const txBuilder = client.tx.bitcoinUtxos?.fundWithUtxoCandidate;\n if (!txBuilder?.meta) {\n return undefined;\n }\n return txBuilder(utxoId, normalizeUtxoRef(utxoRef));\n }\n\n public static async createOrphanedUtxoReleaseRequestTx(\n args: {\n client: ArgonClient;\n utxoRef: UtxoRefLike;\n releaseRequest: IReleaseRequest;\n } & ISubmittableOptions,\n ): Promise<SubmittableExtrinsic | undefined> {\n const {\n client,\n utxoRef,\n releaseRequest: { bitcoinNetworkFee, toScriptPubkey },\n } = args;\n\n if (!toScriptPubkey.startsWith('0x')) {\n throw new Error('toScriptPubkey must be a hex string starting with 0x');\n }\n\n const txBuilder = client.tx.bitcoinLocks.requestOrphanedUtxoRelease;\n if (!txBuilder?.meta) {\n return undefined;\n }\n\n return txBuilder(normalizeUtxoRef(utxoRef), toScriptPubkey, bitcoinNetworkFee);\n }\n\n public static async createOrphanedUtxoCosignTx(\n args: {\n client: ArgonClient;\n orphanOwner: string;\n utxoRef: UtxoRefLike;\n vaultSignature: Uint8Array;\n } & ISubmittableOptions,\n ): Promise<SubmittableExtrinsic | undefined> {\n const { client, orphanOwner, utxoRef, vaultSignature } = args;\n if (!vaultSignature || vaultSignature.byteLength < 70 || vaultSignature.byteLength > 73) {\n throw new Error(\n `Invalid vault signature length: ${vaultSignature.byteLength}. Must be 70-73 bytes.`,\n );\n }\n if (!client.tx.bitcoinLocks.cosignOrphanedUtxoRelease?.meta) {\n return undefined;\n }\n const signature = u8aToHex(vaultSignature);\n return client.tx.bitcoinLocks.cosignOrphanedUtxoRelease(\n orphanOwner,\n normalizeUtxoRef(utxoRef),\n signature,\n );\n }\n\n public static async get(\n client: IQueryableClient,\n utxoId: number,\n ): Promise<BitcoinLock | undefined> {\n const utxoRaw = await client.query.bitcoinLocks.locksByUtxoId(utxoId);\n if (!utxoRaw.isSome) {\n return;\n }\n const utxo = utxoRaw.unwrap();\n const p2shBytesPrefix = '0020';\n const wscriptHash = utxo.utxoScriptPubkey.asP2wsh.wscriptHash.toHex().replace('0x', '');\n const p2wshScriptHashHex = `0x${p2shBytesPrefix}${wscriptHash}`;\n const vaultId = utxo.vaultId.toNumber();\n const lockedTargetPrice = getBigIntFallback(utxo.lockedTargetPrice, utxo, [\n 'lockedMarketRate',\n 'peggedPrice',\n ]);\n const liquidityPromised = utxo.liquidityPromised.toBigInt();\n const ownerAccount = utxo.ownerAccount.toHuman();\n const satoshis = utxo.satoshis.toBigInt();\n const utxoSatoshis = utxo.utxoSatoshis?.isSome ? utxo.utxoSatoshis.value.toBigInt() : undefined;\n const vaultPubkey = utxo.vaultPubkey.toHex();\n const vaultClaimPubkey = utxo.vaultClaimPubkey.toHex();\n const ownerPubkey = utxo.ownerPubkey.toHex();\n const [fingerprint, cosign_hd_index, claim_hd_index] = utxo.vaultXpubSources;\n const vaultXpubSources = {\n parentFingerprint: new Uint8Array(fingerprint),\n cosignHdIndex: cosign_hd_index.toNumber(),\n claimHdIndex: claim_hd_index.toNumber(),\n };\n\n const createdAtArgonBlock = utxo.createdAtArgonBlock?.toNumber() ?? 0;\n const securityFees = utxo.securityFees.toBigInt();\n const vaultClaimHeight = utxo.vaultClaimHeight.toNumber();\n const openClaimHeight = utxo.openClaimHeight.toNumber();\n const createdAtHeight = utxo.createdAtHeight.toNumber();\n const isFunded = ((utxo as { isVerified?: bool })?.isVerified ?? utxo.isFunded).toJSON();\n const fundHoldExtensionsByBitcoinExpirationHeight = Object.fromEntries(\n [...utxo.fundHoldExtensions.entries()].map(([x, y]) => [x.toNumber(), y.toBigInt()]),\n );\n return new BitcoinLock({\n utxoId,\n p2wshScriptHashHex,\n vaultId,\n lockedTargetPrice,\n liquidityPromised,\n ownerAccount,\n satoshis,\n utxoSatoshis,\n vaultPubkey,\n vaultClaimPubkey,\n ownerPubkey,\n vaultXpubSources,\n vaultClaimHeight,\n openClaimHeight,\n createdAtHeight,\n securityFees,\n isFunded,\n fundHoldExtensionsByBitcoinExpirationHeight,\n createdAtArgonBlock,\n });\n }\n\n public static async blockHashAtHeight(\n client: ArgonClient,\n atHeight: number,\n ): Promise<string | undefined> {\n for (let i = 0; i < 10; i++) {\n const currentHeight = await client.query.system.number().then(x => x.toNumber());\n if (atHeight > currentHeight) {\n console.warn(\n `Requested block height ${atHeight} is greater than current height ${currentHeight}. Retrying...`,\n );\n await new Promise(resolve => setTimeout(resolve, 1000)); // wait 1 second before retrying\n continue;\n }\n const hash = await client.rpc.chain.getBlockHash(atHeight).then(x => x.toHex());\n if (hash === '0x0000000000000000000000000000000000000000000000000000000000000000') {\n console.warn(`Block hash not found for height ${atHeight}. Retrying...`);\n await new Promise(resolve => setTimeout(resolve, 1000)); // wait 1 second before retrying\n continue;\n }\n return hash;\n }\n return undefined;\n }\n\n public static async createInitializeTx(args: {\n client: ArgonClient;\n vault: Vault;\n priceIndex: PriceIndex;\n ownerBitcoinPubkey: Uint8Array;\n satoshis: bigint;\n txSigner: TxSigningAccount;\n reducedBalanceBy?: bigint;\n microgonsAtTargetPerBtc?: bigint;\n tip?: bigint;\n initializeForAccountId?: string;\n }) {\n const {\n vault,\n priceIndex,\n txSigner,\n satoshis,\n tip = 0n,\n ownerBitcoinPubkey,\n client,\n microgonsAtTargetPerBtc = null,\n initializeForAccountId,\n } = args;\n if (ownerBitcoinPubkey.length !== 33) {\n throw new Error(\n `Invalid Bitcoin key length: ${ownerBitcoinPubkey.length}. Must be a compressed pukey (33 bytes).`,\n );\n }\n\n let tx: SubmittableExtrinsic;\n if (initializeForAccountId) {\n tx = client.tx.bitcoinLocks.initializeFor(\n initializeForAccountId,\n vault.vaultId,\n satoshis,\n ownerBitcoinPubkey,\n {\n V1: {\n microgonsAtTargetPerBtc,\n },\n },\n );\n } else {\n tx = client.tx.bitcoinLocks.initialize(vault.vaultId, satoshis, ownerBitcoinPubkey, {\n V1: {\n microgonsAtTargetPerBtc,\n },\n });\n }\n const submitter = new TxSubmitter(client, tx, txSigner);\n const targetPrice =\n microgonsAtTargetPerBtc !== null\n ? (microgonsAtTargetPerBtc * satoshis) / SATS_PER_BTC\n : priceIndex.getSatoshiPriceInTargetMicrogons(satoshis);\n const unlockAmount = this.calculateRedemptionAmount(priceIndex, targetPrice);\n const isVaultOwner = txSigner.address === vault.operatorAccountId;\n const securityFee = isVaultOwner ? 0n : vault.calculateBitcoinFee(unlockAmount);\n\n const { canAfford, availableBalance, txFee } = await submitter.canAfford({\n tip,\n unavailableBalance: securityFee + (args.reducedBalanceBy ?? 0n),\n includeExistentialDeposit: true,\n });\n return {\n tx,\n securityFee,\n txFee,\n canAfford,\n availableBalance,\n txFeePlusTip: txFee + tip,\n };\n }\n\n public static async initialize(\n args: {\n client: ArgonClient;\n vault: Vault;\n priceIndex: PriceIndex;\n ownerBitcoinPubkey: Uint8Array;\n txSigner: TxSigningAccount;\n satoshis: bigint;\n } & ISubmittableOptions,\n ): Promise<{\n getLock(): Promise<{ lock: BitcoinLock; createdAtHeight: number }>;\n txResult: TxResult;\n securityFee: bigint;\n }> {\n const { txSigner, client } = args;\n\n const { tx, securityFee, canAfford, txFeePlusTip } = await this.createInitializeTx(args);\n if (!canAfford) {\n throw new Error(\n `Insufficient funds to initialize bitcoin lock. Required security fee: ${formatArgons(securityFee)}, Tx fee plus tip: ${formatArgons(txFeePlusTip)}`,\n );\n }\n const submitter = new TxSubmitter(client, tx, txSigner);\n const txResult = await submitter.submit({ logResults: true, ...args });\n\n return {\n getLock: () => this.getBitcoinLockFromTxResult(client, txResult),\n txResult,\n securityFee,\n };\n }\n\n public static async getBitcoinLockFromTxResult(\n client: IQueryableClient,\n txResult: TxResult,\n ): Promise<{\n lock: BitcoinLock;\n createdAtHeight: number;\n txResult: TxResult;\n }> {\n await txResult.waitForFinalizedBlock;\n const blockHeight = txResult.blockNumber!;\n const utxoId = (await this.getUtxoIdFromEvents(client, txResult.events)) ?? 0;\n if (utxoId === 0) {\n throw new Error('Bitcoin lock creation failed, no UTXO ID found in transaction events');\n }\n const lock = await this.get(client, utxoId);\n if (!lock) {\n throw new Error(`Lock with ID ${utxoId} not found after initialization`);\n }\n return { lock, createdAtHeight: blockHeight, txResult };\n }\n\n public static satoshisRequiredForRedemptionAmount(\n priceIndex: PriceIndex,\n redemptionAmount: bigint,\n ): bigint {\n if (redemptionAmount <= 0n) return 0n;\n\n const multiplierBn = this.redemptionMultiplierBn(priceIndex);\n const targetMicrogonsPerBtc = priceIndex.getSatoshiPriceInTargetMicrogons(SATS_PER_BTC);\n let requiredTargetMicrogons = BigInt(\n new BigNumber(redemptionAmount.toString())\n .div(multiplierBn)\n .integerValue(BigNumber.ROUND_CEIL)\n .toFixed(0),\n );\n\n while (this.calculateRedemptionAmount(priceIndex, requiredTargetMicrogons) < redemptionAmount) {\n requiredTargetMicrogons += 1n;\n }\n\n let satoshis = BigInt(\n new BigNumber(requiredTargetMicrogons.toString())\n .times(SATS_PER_BTC.toString())\n .div(targetMicrogonsPerBtc.toString())\n .integerValue(BigNumber.ROUND_CEIL)\n .toFixed(0),\n );\n\n // The forward path floors target microgons from sats, then floors the redemption amount.\n // Verify the computed sats satisfy both boundaries, then step down to the minimal sat count.\n while (this.calculateRedemptionAmountFromSatoshis(priceIndex, satoshis) < redemptionAmount) {\n satoshis += 1n;\n }\n while (\n satoshis > 0n &&\n this.calculateRedemptionAmountFromSatoshis(priceIndex, satoshis - 1n) >= redemptionAmount\n ) {\n satoshis -= 1n;\n }\n\n return satoshis;\n }\n}\n\nexport interface IBitcoinLockConfig {\n lockReleaseCosignDeadlineFrames: number;\n pendingConfirmationExpirationBlocks: number;\n tickDurationMillis: number;\n bitcoinNetwork: ArgonPrimitivesBitcoinBitcoinNetwork;\n lockSatoshiAllowedVariance: number;\n}\nexport interface IReleaseRequest {\n toScriptPubkey: string;\n bitcoinNetworkFee: bigint;\n}\n\nexport interface IReleaseRequestDetails extends IReleaseRequest {\n dueFrame: number;\n vaultId: number;\n redemptionAmount: bigint;\n}\n\nexport interface IBitcoinLock {\n utxoId: number;\n p2wshScriptHashHex: string;\n vaultId: number;\n lockedTargetPrice: bigint;\n liquidityPromised: bigint;\n ownerAccount: string;\n satoshis: bigint;\n utxoSatoshis?: bigint;\n vaultPubkey: string;\n securityFees: bigint;\n vaultClaimPubkey: string;\n ownerPubkey: string;\n vaultXpubSources: {\n parentFingerprint: Uint8Array;\n cosignHdIndex: number;\n claimHdIndex: number;\n };\n vaultClaimHeight: number;\n openClaimHeight: number;\n createdAtHeight: number;\n isFunded: boolean;\n createdAtArgonBlock: number;\n fundHoldExtensionsByBitcoinExpirationHeight: Record<number, bigint>;\n}\n","import type { ArgonClient } from './index';\nimport { FIXED_U128_DECIMALS, fromFixedNumber } from './convert';\nimport { MICROGONS_PER_ARGON } from './utils';\nimport BigNumber from 'bignumber.js';\nimport { ApiDecoration } from '@polkadot/api/types';\n\nconst SATS_PER_BTC = 100_000_000n;\n\nexport class PriceIndex {\n btcUsdPrice?: BigNumber;\n argonotUsdPrice?: BigNumber;\n argonUsdPrice?: BigNumber;\n argonUsdTargetPrice?: BigNumber;\n argonTimeWeightedAverageLiquidity?: BigNumber;\n lastUpdatedTick?: number;\n\n async load(client: ArgonClient | ApiDecoration<'promise'>): Promise<this> {\n const current = await client.query.priceIndex.current();\n if (!current.isSome) {\n this.argonUsdPrice = undefined;\n this.argonotUsdPrice = undefined;\n this.btcUsdPrice = undefined;\n this.argonUsdTargetPrice = undefined;\n this.argonTimeWeightedAverageLiquidity = undefined;\n this.lastUpdatedTick = undefined;\n return this;\n }\n const value = current.unwrap();\n\n this.btcUsdPrice = fromFixedNumber(value.btcUsdPrice.toBigInt(), FIXED_U128_DECIMALS);\n this.argonotUsdPrice = fromFixedNumber(value.argonotUsdPrice.toBigInt(), FIXED_U128_DECIMALS);\n this.argonUsdPrice = fromFixedNumber(value.argonUsdPrice.toBigInt(), FIXED_U128_DECIMALS);\n this.argonUsdTargetPrice = fromFixedNumber(\n value.argonUsdTargetPrice.toBigInt(),\n FIXED_U128_DECIMALS,\n );\n this.argonTimeWeightedAverageLiquidity = fromFixedNumber(\n value.argonTimeWeightedAverageLiquidity.toBigInt(),\n FIXED_U128_DECIMALS,\n );\n this.lastUpdatedTick = value.tick.toNumber();\n return this;\n }\n\n getSatoshiPriceInMarketMicrogons(satoshis: bigint | number): bigint {\n if (this.btcUsdPrice === undefined || this.argonUsdPrice === undefined) {\n throw new Error('PriceIndex not loaded');\n }\n\n const satoshiCents = this.btcUsdPrice.multipliedBy(satoshis).dividedBy(SATS_PER_BTC);\n\n const microgons = satoshiCents.multipliedBy(MICROGONS_PER_ARGON).dividedBy(this.argonUsdPrice);\n return BigInt(microgons.integerValue(BigNumber.ROUND_DOWN).toString());\n }\n\n getSatoshiPriceInTargetMicrogons(satoshis: bigint | number): bigint {\n if (this.btcUsdPrice === undefined || this.argonUsdTargetPrice === undefined) {\n throw new Error('PriceIndex not loaded');\n }\n\n const satoshiCents = this.btcUsdPrice.multipliedBy(satoshis).dividedBy(SATS_PER_BTC);\n\n const microgons = satoshiCents\n .multipliedBy(MICROGONS_PER_ARGON)\n .dividedBy(this.argonUsdTargetPrice);\n return BigInt(microgons.integerValue(BigNumber.ROUND_DOWN).toString());\n }\n\n get rValue(): BigNumber {\n if (this.argonUsdTargetPrice === undefined || this.argonUsdPrice === undefined) {\n throw new Error('PriceIndex not loaded');\n }\n return this.argonUsdPrice.div(this.argonUsdTargetPrice);\n }\n\n get argonCpi(): BigNumber {\n if (this.argonUsdTargetPrice === undefined || this.argonUsdPrice === undefined) {\n throw new Error('PriceIndex not loaded');\n }\n const ratio = this.argonUsdTargetPrice.div(this.argonUsdPrice);\n return ratio.minus(1);\n }\n}\n","import type { Abi, Hex } from 'viem';\nimport {\n ArgonTokenEvents,\n ArgonotTokenEvents,\n CanonicalMintableBurnableERC20Events,\n ICanonicalTokenEvents,\n MINTING_GATEWAY_RUNTIME_DECIMALS,\n MINTING_GATEWAY_RUNTIME_TO_ERC20_SCALE,\n MINTING_GATEWAY_TOKEN_DECIMALS,\n MINTING_GATEWAY_UPDATE_KINDS,\n MintingGatewayEvents,\n ProxyAdminEvents,\n TransparentUpgradeableProxyEvents,\n argonTokenAbi,\n argonTokenArtifact as rawArgonTokenArtifact,\n argonotTokenAbi,\n argonotTokenArtifact as rawArgonotTokenArtifact,\n canonicalMintableBurnableErc20Abi,\n encodeMintingGatewayCouncilSnapshot,\n encodeMintingGatewayGlobalIssuanceCouncilRotateTarget,\n encodeMintingGatewayMintingAuthorityActivationTarget,\n encodeMintingGatewayMintingAuthorityDeactivateTarget,\n hashMintingGatewayActivateMintingAuthority,\n hashMintingGatewayActivateMintingAuthorityApproval,\n hashMintingGatewayGatewayUpdateApproval,\n hashMintingGatewayGlobalIssuanceCouncil,\n hashMintingGatewayMintingAuthority,\n hashMintingGatewayMintingAuthorityDeactivation,\n hashMintingGatewayMintingAuthorization as rawHashMintingGatewayMintingAuthorization,\n hashMintingGatewayRotateGlobalIssuanceCouncil,\n hashMintingGatewayRotateGlobalIssuanceCouncilApproval,\n hashMintingGatewayTransferOutOfArgonRequest as rawHashMintingGatewayTransferOutOfArgonRequest,\n iCanonicalTokenAbi,\n mintingGatewayAbi,\n mintingGatewayArtifact as rawMintingGatewayArtifact,\n proxyAdminAbi,\n proxyAdminArtifact as rawProxyAdminArtifact,\n transparentUpgradeableProxyAbi,\n transparentUpgradeableProxyArtifact as rawTransparentUpgradeableProxyArtifact,\n} from '@argonprotocol/ethereum-contracts';\n\nexport type * from '@argonprotocol/ethereum-contracts';\n\nexport type EvmContractArtifact = {\n abi: Abi;\n bytecode: Hex;\n};\n\nexport const argonTokenArtifact = rawArgonTokenArtifact as EvmContractArtifact;\nexport const argonotTokenArtifact = rawArgonotTokenArtifact as EvmContractArtifact;\nexport const mintingGatewayArtifact = rawMintingGatewayArtifact as EvmContractArtifact;\nexport const proxyAdminArtifact = rawProxyAdminArtifact as EvmContractArtifact;\nexport const transparentUpgradeableProxyArtifact =\n rawTransparentUpgradeableProxyArtifact as EvmContractArtifact;\n\nexport type MintingGatewayTransferOutOfArgonRequest = Parameters<\n typeof rawHashMintingGatewayTransferOutOfArgonRequest\n>[0];\n\nexport function hashMintingGatewayTransferOutOfArgonRequest(\n request: MintingGatewayTransferOutOfArgonRequest,\n) {\n return rawHashMintingGatewayTransferOutOfArgonRequest(request);\n}\n\nexport function hashMintingGatewayMintingAuthorization(\n gateway: Parameters<typeof rawHashMintingGatewayMintingAuthorization>[0],\n authorization: Omit<\n Parameters<typeof rawHashMintingGatewayMintingAuthorization>[1],\n 'request'\n > & {\n request: MintingGatewayTransferOutOfArgonRequest;\n },\n) {\n return rawHashMintingGatewayMintingAuthorization(gateway, authorization);\n}\n\nexport {\n ArgonTokenEvents,\n ArgonotTokenEvents,\n CanonicalMintableBurnableERC20Events,\n ICanonicalTokenEvents,\n MINTING_GATEWAY_RUNTIME_DECIMALS,\n MINTING_GATEWAY_RUNTIME_TO_ERC20_SCALE,\n MINTING_GATEWAY_TOKEN_DECIMALS,\n MINTING_GATEWAY_UPDATE_KINDS,\n MintingGatewayEvents,\n ProxyAdminEvents,\n TransparentUpgradeableProxyEvents,\n argonTokenAbi,\n argonotTokenAbi,\n canonicalMintableBurnableErc20Abi,\n encodeMintingGatewayCouncilSnapshot,\n encodeMintingGatewayGlobalIssuanceCouncilRotateTarget,\n encodeMintingGatewayMintingAuthorityActivationTarget,\n encodeMintingGatewayMintingAuthorityDeactivateTarget,\n hashMintingGatewayActivateMintingAuthority,\n hashMintingGatewayActivateMintingAuthorityApproval,\n hashMintingGatewayGatewayUpdateApproval,\n hashMintingGatewayGlobalIssuanceCouncil,\n hashMintingGatewayMintingAuthority,\n hashMintingGatewayMintingAuthorityDeactivation,\n hashMintingGatewayRotateGlobalIssuanceCouncil,\n hashMintingGatewayRotateGlobalIssuanceCouncilApproval,\n iCanonicalTokenAbi,\n mintingGatewayAbi,\n proxyAdminAbi,\n transparentUpgradeableProxyAbi,\n};\n","{\n \"_format\": \"hh3-artifact-1\",\n \"contractName\": \"ArgonToken\",\n \"sourceName\": \"contracts/ArgonToken.sol\",\n \"abi\": [\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"gateway\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [],\n \"name\": \"ECDSAInvalidSignature\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"length\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ECDSAInvalidSignatureLength\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"s\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"ECDSAInvalidSignatureS\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"allowance\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"needed\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ERC20InsufficientAllowance\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"balance\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"needed\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ERC20InsufficientBalance\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"approver\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC20InvalidApprover\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC20InvalidReceiver\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC20InvalidSender\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC20InvalidSpender\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"deadline\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ERC2612ExpiredSignature\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"signer\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC2612InvalidSigner\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"currentNonce\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"InvalidAccountNonce\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"gateway\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"InvalidGateway\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidShortString\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"caller\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OnlyGateway\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"str\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"StringTooLong\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Approval\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [],\n \"name\": \"EIP712DomainChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Transfer\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"DOMAIN_SEPARATOR\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"allowance\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"approve\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"balanceOf\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"burnFrom\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"decimals\",\n \"outputs\": [\n {\n \"internalType\": \"uint8\",\n \"name\": \"\",\n \"type\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"eip712Domain\",\n \"outputs\": [\n {\n \"internalType\": \"bytes1\",\n \"name\": \"fields\",\n \"type\": \"bytes1\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"chainId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"verifyingContract\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"salt\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"extensions\",\n \"type\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"gateway\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"mint\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"name\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"nonces\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"deadline\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint8\",\n \"name\": \"v\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"r\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"s\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"permit\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"symbol\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"totalSupply\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"transfer\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"transferFrom\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x61018060405234801562000011575f80fd5b506040516200151d3803806200151d833981016040819052620000349162000246565b6040518060400160405280600581526020016420b933b7b760d91b8152506040518060400160405280600481526020016320a923a760e11b815250828280604051806040016040528060018152602001603160f81b815250858581600390816200009f919062000313565b506004620000ae828262000313565b50620000c091508390506005620001cc565b61012052620000d1816006620001cc565b61014052815160208084019190912060e052815190820120610100524660a0526200015e60e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506001600160a01b03811615806200018757506001600160a01b0381163b155b15620001b557604051628ecbc360e51b81526001600160a01b03821660048201526024015b60405180910390fd5b6001600160a01b0316610160525062000451915050565b5f602083511015620001eb57620001e38362000204565b9050620001fe565b81620001f8848262000313565b5060ff90505b92915050565b5f80829050601f8151111562000231578260405163305a27a960e01b8152600401620001ac9190620003df565b80516200023e826200042d565b179392505050565b5f6020828403121562000257575f80fd5b81516001600160a01b03811681146200026e575f80fd5b9392505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200029e57607f821691505b602082108103620002bd57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200030e57805f5260205f20601f840160051c81016020851015620002ea5750805b601f840160051c820191505b818110156200030b575f8155600101620002f6565b50505b505050565b81516001600160401b038111156200032f576200032f62000275565b620003478162000340845462000289565b84620002c3565b602080601f8311600181146200037d575f8415620003655750858301515b5f19600386901b1c1916600185901b178555620003d7565b5f85815260208120601f198616915b82811015620003ad578886015182559484019460019091019084016200038c565b5085821015620003cb57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f602080835283518060208501525f5b818110156200040d57858101830151858201604001528201620003ef565b505f604082860101526040601f19601f8301168501019250505092915050565b80516020808301519190811015620002bd575f1960209190910360031b1b16919050565b60805160a05160c05160e05161010051610120516101405161016051611062620004bb5f395f81816101450152818161038401526103e201525f61089801525f61086b01525f6107ac01525f61078401525f6106df01525f61070901525f61073301526110625ff3fe608060405234801561000f575f80fd5b50600436106100fb575f3560e01c806370a082311161009357806395d89b411161006357806395d89b4114610239578063a9059cbb14610241578063d505accf14610254578063dd62ed3e14610267575f80fd5b806370a08231146101d057806379cc6790146101f85780637ecebe001461020b57806384b0196e1461021e575f80fd5b806323b872dd116100ce57806323b872dd14610191578063313ce567146101a45780633644e515146101b357806340c10f19146101bb575f80fd5b806306fdde03146100ff578063095ea7b31461011d578063116191b61461014057806318160ddd1461017f575b5f80fd5b61010761029f565b6040516101149190610dde565b60405180910390f35b61013061012b366004610e12565b61032f565b6040519015158152602001610114565b6101677f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610114565b6002545b604051908152602001610114565b61013061019f366004610e3a565b610348565b60405160128152602001610114565b61018361036b565b6101ce6101c9366004610e12565b610379565b005b6101836101de366004610e73565b6001600160a01b03165f9081526020819052604090205490565b6101ce610206366004610e12565b6103d7565b610183610219366004610e73565b610437565b610226610454565b6040516101149796959493929190610e8c565b610107610496565b61013061024f366004610e12565b6104a5565b6101ce610262366004610f23565b6104b2565b610183610275366004610f90565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6060600380546102ae90610fc1565b80601f01602080910402602001604051908101604052809291908181526020018280546102da90610fc1565b80156103255780601f106102fc57610100808354040283529160200191610325565b820191905f5260205f20905b81548152906001019060200180831161030857829003601f168201915b5050505050905090565b5f3361033c8185856105e8565b60019150505b92915050565b5f336103558582856105fa565b610360858585610676565b506001949350505050565b5f6103746106d3565b905090565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146103c957604051634ca65edb60e11b81523360048201526024015b60405180910390fd5b6103d382826107fc565b5050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461042257604051634ca65edb60e11b81523360048201526024016103c0565b61042d8233836105fa565b6103d38282610830565b6001600160a01b0381165f90815260076020526040812054610342565b5f6060805f805f6060610465610864565b61046d610891565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6060600480546102ae90610fc1565b5f3361033c818585610676565b834211156104d65760405163313c898160e11b8152600481018590526024016103c0565b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886105218c6001600160a01b03165f90815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f61057b826108be565b90505f61058a828787876108ea565b9050896001600160a01b0316816001600160a01b0316146105d1576040516325c0072360e11b81526001600160a01b0380831660048301528b1660248201526044016103c0565b6105dc8a8a8a6105e8565b50505050505050505050565b6105f58383836001610916565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811015610670578181101561066257604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103c0565b61067084848484035f610916565b50505050565b6001600160a01b03831661069f57604051634b637e8f60e11b81525f60048201526024016103c0565b6001600160a01b0382166106c85760405163ec442f0560e01b81525f60048201526024016103c0565b6105f58383836109e8565b5f306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561072b57507f000000000000000000000000000000000000000000000000000000000000000046145b1561075557507f000000000000000000000000000000000000000000000000000000000000000090565b610374604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b6001600160a01b0382166108255760405163ec442f0560e01b81525f60048201526024016103c0565b6103d35f83836109e8565b6001600160a01b03821661085957604051634b637e8f60e11b81525f60048201526024016103c0565b6103d3825f836109e8565b60606103747f00000000000000000000000000000000000000000000000000000000000000006005610b0e565b60606103747f00000000000000000000000000000000000000000000000000000000000000006006610b0e565b5f6103426108ca6106d3565b8360405161190160f01b8152600281019290925260228201526042902090565b5f805f806108fa88888888610bb7565b92509250925061090a8282610c7f565b50909695505050505050565b6001600160a01b03841661093f5760405163e602df0560e01b81525f60048201526024016103c0565b6001600160a01b03831661096857604051634a1406b160e11b81525f60048201526024016103c0565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561067057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109da91815260200190565b60405180910390a350505050565b6001600160a01b038316610a12578060025f828254610a079190610ff9565b90915550610a829050565b6001600160a01b0383165f9081526020819052604090205481811015610a645760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103c0565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610a9e57600280548290039055610abc565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b0191815260200190565b60405180910390a3505050565b606060ff8314610b2857610b2183610d37565b9050610342565b818054610b3490610fc1565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6090610fc1565b8015610bab5780601f10610b8257610100808354040283529160200191610bab565b820191905f5260205f20905b815481529060010190602001808311610b8e57829003601f168201915b50505050509050610342565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610bf057505f91506003905082610c75565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610c41573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b038116610c6c57505f925060019150829050610c75565b92505f91508190505b9450945094915050565b5f826003811115610c9257610c92611018565b03610c9b575050565b6001826003811115610caf57610caf611018565b03610ccd5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610ce157610ce1611018565b03610d025760405163fce698f760e01b8152600481018290526024016103c0565b6003826003811115610d1657610d16611018565b036103d3576040516335e2f38360e21b8152600481018290526024016103c0565b60605f610d4383610d74565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f60ff8216601f81111561034257604051632cd44ac360e21b815260040160405180910390fd5b5f81518084525f5b81811015610dbf57602081850181015186830182015201610da3565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610df06020830184610d9b565b9392505050565b80356001600160a01b0381168114610e0d575f80fd5b919050565b5f8060408385031215610e23575f80fd5b610e2c83610df7565b946020939093013593505050565b5f805f60608486031215610e4c575f80fd5b610e5584610df7565b9250610e6360208501610df7565b9150604084013590509250925092565b5f60208284031215610e83575f80fd5b610df082610df7565b60ff60f81b881681525f602060e06020840152610eac60e084018a610d9b565b8381036040850152610ebe818a610d9b565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825260208088019350909101905f5b81811015610f1157835183529284019291840191600101610ef5565b50909c9b505050505050505050505050565b5f805f805f805f60e0888a031215610f39575f80fd5b610f4288610df7565b9650610f5060208901610df7565b95506040880135945060608801359350608088013560ff81168114610f73575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f8060408385031215610fa1575f80fd5b610faa83610df7565b9150610fb860208401610df7565b90509250929050565b600181811c90821680610fd557607f821691505b602082108103610ff357634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561034257634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52602160045260245ffdfea26469706673582212206e9d018754cb5d550223464c63359b0418ad130854c3f81a6691b076de1bcab964736f6c63430008180033\",\n \"deployedBytecode\": \"0x608060405234801561000f575f80fd5b50600436106100fb575f3560e01c806370a082311161009357806395d89b411161006357806395d89b4114610239578063a9059cbb14610241578063d505accf14610254578063dd62ed3e14610267575f80fd5b806370a08231146101d057806379cc6790146101f85780637ecebe001461020b57806384b0196e1461021e575f80fd5b806323b872dd116100ce57806323b872dd14610191578063313ce567146101a45780633644e515146101b357806340c10f19146101bb575f80fd5b806306fdde03146100ff578063095ea7b31461011d578063116191b61461014057806318160ddd1461017f575b5f80fd5b61010761029f565b6040516101149190610dde565b60405180910390f35b61013061012b366004610e12565b61032f565b6040519015158152602001610114565b6101677f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610114565b6002545b604051908152602001610114565b61013061019f366004610e3a565b610348565b60405160128152602001610114565b61018361036b565b6101ce6101c9366004610e12565b610379565b005b6101836101de366004610e73565b6001600160a01b03165f9081526020819052604090205490565b6101ce610206366004610e12565b6103d7565b610183610219366004610e73565b610437565b610226610454565b6040516101149796959493929190610e8c565b610107610496565b61013061024f366004610e12565b6104a5565b6101ce610262366004610f23565b6104b2565b610183610275366004610f90565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6060600380546102ae90610fc1565b80601f01602080910402602001604051908101604052809291908181526020018280546102da90610fc1565b80156103255780601f106102fc57610100808354040283529160200191610325565b820191905f5260205f20905b81548152906001019060200180831161030857829003601f168201915b5050505050905090565b5f3361033c8185856105e8565b60019150505b92915050565b5f336103558582856105fa565b610360858585610676565b506001949350505050565b5f6103746106d3565b905090565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146103c957604051634ca65edb60e11b81523360048201526024015b60405180910390fd5b6103d382826107fc565b5050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461042257604051634ca65edb60e11b81523360048201526024016103c0565b61042d8233836105fa565b6103d38282610830565b6001600160a01b0381165f90815260076020526040812054610342565b5f6060805f805f6060610465610864565b61046d610891565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6060600480546102ae90610fc1565b5f3361033c818585610676565b834211156104d65760405163313c898160e11b8152600481018590526024016103c0565b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886105218c6001600160a01b03165f90815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f61057b826108be565b90505f61058a828787876108ea565b9050896001600160a01b0316816001600160a01b0316146105d1576040516325c0072360e11b81526001600160a01b0380831660048301528b1660248201526044016103c0565b6105dc8a8a8a6105e8565b50505050505050505050565b6105f58383836001610916565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811015610670578181101561066257604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103c0565b61067084848484035f610916565b50505050565b6001600160a01b03831661069f57604051634b637e8f60e11b81525f60048201526024016103c0565b6001600160a01b0382166106c85760405163ec442f0560e01b81525f60048201526024016103c0565b6105f58383836109e8565b5f306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561072b57507f000000000000000000000000000000000000000000000000000000000000000046145b1561075557507f000000000000000000000000000000000000000000000000000000000000000090565b610374604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b6001600160a01b0382166108255760405163ec442f0560e01b81525f60048201526024016103c0565b6103d35f83836109e8565b6001600160a01b03821661085957604051634b637e8f60e11b81525f60048201526024016103c0565b6103d3825f836109e8565b60606103747f00000000000000000000000000000000000000000000000000000000000000006005610b0e565b60606103747f00000000000000000000000000000000000000000000000000000000000000006006610b0e565b5f6103426108ca6106d3565b8360405161190160f01b8152600281019290925260228201526042902090565b5f805f806108fa88888888610bb7565b92509250925061090a8282610c7f565b50909695505050505050565b6001600160a01b03841661093f5760405163e602df0560e01b81525f60048201526024016103c0565b6001600160a01b03831661096857604051634a1406b160e11b81525f60048201526024016103c0565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561067057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109da91815260200190565b60405180910390a350505050565b6001600160a01b038316610a12578060025f828254610a079190610ff9565b90915550610a829050565b6001600160a01b0383165f9081526020819052604090205481811015610a645760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103c0565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610a9e57600280548290039055610abc565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b0191815260200190565b60405180910390a3505050565b606060ff8314610b2857610b2183610d37565b9050610342565b818054610b3490610fc1565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6090610fc1565b8015610bab5780601f10610b8257610100808354040283529160200191610bab565b820191905f5260205f20905b815481529060010190602001808311610b8e57829003601f168201915b50505050509050610342565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610bf057505f91506003905082610c75565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610c41573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b038116610c6c57505f925060019150829050610c75565b92505f91508190505b9450945094915050565b5f826003811115610c9257610c92611018565b03610c9b575050565b6001826003811115610caf57610caf611018565b03610ccd5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610ce157610ce1611018565b03610d025760405163fce698f760e01b8152600481018290526024016103c0565b6003826003811115610d1657610d16611018565b036103d3576040516335e2f38360e21b8152600481018290526024016103c0565b60605f610d4383610d74565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f60ff8216601f81111561034257604051632cd44ac360e21b815260040160405180910390fd5b5f81518084525f5b81811015610dbf57602081850181015186830182015201610da3565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610df06020830184610d9b565b9392505050565b80356001600160a01b0381168114610e0d575f80fd5b919050565b5f8060408385031215610e23575f80fd5b610e2c83610df7565b946020939093013593505050565b5f805f60608486031215610e4c575f80fd5b610e5584610df7565b9250610e6360208501610df7565b9150604084013590509250925092565b5f60208284031215610e83575f80fd5b610df082610df7565b60ff60f81b881681525f602060e06020840152610eac60e084018a610d9b565b8381036040850152610ebe818a610d9b565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825260208088019350909101905f5b81811015610f1157835183529284019291840191600101610ef5565b50909c9b505050505050505050505050565b5f805f805f805f60e0888a031215610f39575f80fd5b610f4288610df7565b9650610f5060208901610df7565b95506040880135945060608801359350608088013560ff81168114610f73575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f8060408385031215610fa1575f80fd5b610faa83610df7565b9150610fb860208401610df7565b90509250929050565b600181811c90821680610fd557607f821691505b602082108103610ff357634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561034257634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52602160045260245ffdfea26469706673582212206e9d018754cb5d550223464c63359b0418ad130854c3f81a6691b076de1bcab964736f6c63430008180033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {},\n \"immutableReferences\": {\n \"6252\": [\n {\n \"length\": 32,\n \"start\": 1843\n }\n ],\n \"6254\": [\n {\n \"length\": 32,\n \"start\": 1801\n }\n ],\n \"6256\": [\n {\n \"length\": 32,\n \"start\": 1759\n }\n ],\n \"6258\": [\n {\n \"length\": 32,\n \"start\": 1924\n }\n ],\n \"6260\": [\n {\n \"length\": 32,\n \"start\": 1964\n }\n ],\n \"6263\": [\n {\n \"length\": 32,\n \"start\": 2155\n }\n ],\n \"6266\": [\n {\n \"length\": 32,\n \"start\": 2200\n }\n ],\n \"10253\": [\n {\n \"length\": 32,\n \"start\": 325\n },\n {\n \"length\": 32,\n \"start\": 900\n },\n {\n \"length\": 32,\n \"start\": 994\n }\n ]\n },\n \"inputSourceName\": \"project/contracts/ArgonToken.sol\",\n \"buildInfoId\": \"solc-0_8_24-0b1aeb87b938c690e17cb94e6c60ba6e2ad7e4c9\"\n}","{\n \"_format\": \"hh3-artifact-1\",\n \"contractName\": \"ArgonotToken\",\n \"sourceName\": \"contracts/ArgonotToken.sol\",\n \"abi\": [\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"gateway\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [],\n \"name\": \"ECDSAInvalidSignature\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"length\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ECDSAInvalidSignatureLength\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"s\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"ECDSAInvalidSignatureS\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"allowance\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"needed\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ERC20InsufficientAllowance\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"balance\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"needed\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ERC20InsufficientBalance\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"approver\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC20InvalidApprover\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC20InvalidReceiver\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC20InvalidSender\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC20InvalidSpender\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"deadline\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ERC2612ExpiredSignature\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"signer\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC2612InvalidSigner\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"currentNonce\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"InvalidAccountNonce\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"gateway\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"InvalidGateway\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidShortString\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"caller\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OnlyGateway\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"str\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"StringTooLong\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Approval\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [],\n \"name\": \"EIP712DomainChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Transfer\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"DOMAIN_SEPARATOR\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"allowance\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"approve\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"balanceOf\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"burnFrom\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"decimals\",\n \"outputs\": [\n {\n \"internalType\": \"uint8\",\n \"name\": \"\",\n \"type\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"eip712Domain\",\n \"outputs\": [\n {\n \"internalType\": \"bytes1\",\n \"name\": \"fields\",\n \"type\": \"bytes1\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"chainId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"verifyingContract\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"salt\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"extensions\",\n \"type\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"gateway\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"mint\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"name\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"nonces\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"deadline\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint8\",\n \"name\": \"v\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"r\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"s\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"permit\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"symbol\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"totalSupply\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"transfer\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"transferFrom\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x61018060405234801562000011575f80fd5b50604051620015213803806200152183398101604081905262000034916200024a565b60405180604001604052806007815260200166105c99dbdb9bdd60ca1b81525060405180604001604052806006815260200165105491d393d560d21b815250828280604051806040016040528060018152602001603160f81b81525085858160039081620000a3919062000317565b506004620000b2828262000317565b50620000c491508390506005620001d0565b61012052620000d5816006620001d0565b61014052815160208084019190912060e052815190820120610100524660a0526200016260e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506001600160a01b03811615806200018b57506001600160a01b0381163b155b15620001b957604051628ecbc360e51b81526001600160a01b03821660048201526024015b60405180910390fd5b6001600160a01b0316610160525062000455915050565b5f602083511015620001ef57620001e78362000208565b905062000202565b81620001fc848262000317565b5060ff90505b92915050565b5f80829050601f8151111562000235578260405163305a27a960e01b8152600401620001b09190620003e3565b8051620002428262000431565b179392505050565b5f602082840312156200025b575f80fd5b81516001600160a01b038116811462000272575f80fd5b9392505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620002a257607f821691505b602082108103620002c157634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200031257805f5260205f20601f840160051c81016020851015620002ee5750805b601f840160051c820191505b818110156200030f575f8155600101620002fa565b50505b505050565b81516001600160401b0381111562000333576200033362000279565b6200034b816200034484546200028d565b84620002c7565b602080601f83116001811462000381575f8415620003695750858301515b5f19600386901b1c1916600185901b178555620003db565b5f85815260208120601f198616915b82811015620003b15788860151825594840194600190910190840162000390565b5085821015620003cf57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f602080835283518060208501525f5b818110156200041157858101830151858201604001528201620003f3565b505f604082860101526040601f19601f8301168501019250505092915050565b80516020808301519190811015620002c1575f1960209190910360031b1b16919050565b60805160a05160c05160e05161010051610120516101405161016051611062620004bf5f395f81816101450152818161038401526103e201525f61089801525f61086b01525f6107ac01525f61078401525f6106df01525f61070901525f61073301526110625ff3fe608060405234801561000f575f80fd5b50600436106100fb575f3560e01c806370a082311161009357806395d89b411161006357806395d89b4114610239578063a9059cbb14610241578063d505accf14610254578063dd62ed3e14610267575f80fd5b806370a08231146101d057806379cc6790146101f85780637ecebe001461020b57806384b0196e1461021e575f80fd5b806323b872dd116100ce57806323b872dd14610191578063313ce567146101a45780633644e515146101b357806340c10f19146101bb575f80fd5b806306fdde03146100ff578063095ea7b31461011d578063116191b61461014057806318160ddd1461017f575b5f80fd5b61010761029f565b6040516101149190610dde565b60405180910390f35b61013061012b366004610e12565b61032f565b6040519015158152602001610114565b6101677f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610114565b6002545b604051908152602001610114565b61013061019f366004610e3a565b610348565b60405160128152602001610114565b61018361036b565b6101ce6101c9366004610e12565b610379565b005b6101836101de366004610e73565b6001600160a01b03165f9081526020819052604090205490565b6101ce610206366004610e12565b6103d7565b610183610219366004610e73565b610437565b610226610454565b6040516101149796959493929190610e8c565b610107610496565b61013061024f366004610e12565b6104a5565b6101ce610262366004610f23565b6104b2565b610183610275366004610f90565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6060600380546102ae90610fc1565b80601f01602080910402602001604051908101604052809291908181526020018280546102da90610fc1565b80156103255780601f106102fc57610100808354040283529160200191610325565b820191905f5260205f20905b81548152906001019060200180831161030857829003601f168201915b5050505050905090565b5f3361033c8185856105e8565b60019150505b92915050565b5f336103558582856105fa565b610360858585610676565b506001949350505050565b5f6103746106d3565b905090565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146103c957604051634ca65edb60e11b81523360048201526024015b60405180910390fd5b6103d382826107fc565b5050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461042257604051634ca65edb60e11b81523360048201526024016103c0565b61042d8233836105fa565b6103d38282610830565b6001600160a01b0381165f90815260076020526040812054610342565b5f6060805f805f6060610465610864565b61046d610891565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6060600480546102ae90610fc1565b5f3361033c818585610676565b834211156104d65760405163313c898160e11b8152600481018590526024016103c0565b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886105218c6001600160a01b03165f90815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f61057b826108be565b90505f61058a828787876108ea565b9050896001600160a01b0316816001600160a01b0316146105d1576040516325c0072360e11b81526001600160a01b0380831660048301528b1660248201526044016103c0565b6105dc8a8a8a6105e8565b50505050505050505050565b6105f58383836001610916565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811015610670578181101561066257604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103c0565b61067084848484035f610916565b50505050565b6001600160a01b03831661069f57604051634b637e8f60e11b81525f60048201526024016103c0565b6001600160a01b0382166106c85760405163ec442f0560e01b81525f60048201526024016103c0565b6105f58383836109e8565b5f306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561072b57507f000000000000000000000000000000000000000000000000000000000000000046145b1561075557507f000000000000000000000000000000000000000000000000000000000000000090565b610374604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b6001600160a01b0382166108255760405163ec442f0560e01b81525f60048201526024016103c0565b6103d35f83836109e8565b6001600160a01b03821661085957604051634b637e8f60e11b81525f60048201526024016103c0565b6103d3825f836109e8565b60606103747f00000000000000000000000000000000000000000000000000000000000000006005610b0e565b60606103747f00000000000000000000000000000000000000000000000000000000000000006006610b0e565b5f6103426108ca6106d3565b8360405161190160f01b8152600281019290925260228201526042902090565b5f805f806108fa88888888610bb7565b92509250925061090a8282610c7f565b50909695505050505050565b6001600160a01b03841661093f5760405163e602df0560e01b81525f60048201526024016103c0565b6001600160a01b03831661096857604051634a1406b160e11b81525f60048201526024016103c0565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561067057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109da91815260200190565b60405180910390a350505050565b6001600160a01b038316610a12578060025f828254610a079190610ff9565b90915550610a829050565b6001600160a01b0383165f9081526020819052604090205481811015610a645760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103c0565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610a9e57600280548290039055610abc565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b0191815260200190565b60405180910390a3505050565b606060ff8314610b2857610b2183610d37565b9050610342565b818054610b3490610fc1565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6090610fc1565b8015610bab5780601f10610b8257610100808354040283529160200191610bab565b820191905f5260205f20905b815481529060010190602001808311610b8e57829003601f168201915b50505050509050610342565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610bf057505f91506003905082610c75565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610c41573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b038116610c6c57505f925060019150829050610c75565b92505f91508190505b9450945094915050565b5f826003811115610c9257610c92611018565b03610c9b575050565b6001826003811115610caf57610caf611018565b03610ccd5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610ce157610ce1611018565b03610d025760405163fce698f760e01b8152600481018290526024016103c0565b6003826003811115610d1657610d16611018565b036103d3576040516335e2f38360e21b8152600481018290526024016103c0565b60605f610d4383610d74565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f60ff8216601f81111561034257604051632cd44ac360e21b815260040160405180910390fd5b5f81518084525f5b81811015610dbf57602081850181015186830182015201610da3565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610df06020830184610d9b565b9392505050565b80356001600160a01b0381168114610e0d575f80fd5b919050565b5f8060408385031215610e23575f80fd5b610e2c83610df7565b946020939093013593505050565b5f805f60608486031215610e4c575f80fd5b610e5584610df7565b9250610e6360208501610df7565b9150604084013590509250925092565b5f60208284031215610e83575f80fd5b610df082610df7565b60ff60f81b881681525f602060e06020840152610eac60e084018a610d9b565b8381036040850152610ebe818a610d9b565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825260208088019350909101905f5b81811015610f1157835183529284019291840191600101610ef5565b50909c9b505050505050505050505050565b5f805f805f805f60e0888a031215610f39575f80fd5b610f4288610df7565b9650610f5060208901610df7565b95506040880135945060608801359350608088013560ff81168114610f73575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f8060408385031215610fa1575f80fd5b610faa83610df7565b9150610fb860208401610df7565b90509250929050565b600181811c90821680610fd557607f821691505b602082108103610ff357634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561034257634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52602160045260245ffdfea2646970667358221220c62571b244292ccda84ab1b2953222061893d87e6d315e3029f315e76ebe035d64736f6c63430008180033\",\n \"deployedBytecode\": \"0x608060405234801561000f575f80fd5b50600436106100fb575f3560e01c806370a082311161009357806395d89b411161006357806395d89b4114610239578063a9059cbb14610241578063d505accf14610254578063dd62ed3e14610267575f80fd5b806370a08231146101d057806379cc6790146101f85780637ecebe001461020b57806384b0196e1461021e575f80fd5b806323b872dd116100ce57806323b872dd14610191578063313ce567146101a45780633644e515146101b357806340c10f19146101bb575f80fd5b806306fdde03146100ff578063095ea7b31461011d578063116191b61461014057806318160ddd1461017f575b5f80fd5b61010761029f565b6040516101149190610dde565b60405180910390f35b61013061012b366004610e12565b61032f565b6040519015158152602001610114565b6101677f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610114565b6002545b604051908152602001610114565b61013061019f366004610e3a565b610348565b60405160128152602001610114565b61018361036b565b6101ce6101c9366004610e12565b610379565b005b6101836101de366004610e73565b6001600160a01b03165f9081526020819052604090205490565b6101ce610206366004610e12565b6103d7565b610183610219366004610e73565b610437565b610226610454565b6040516101149796959493929190610e8c565b610107610496565b61013061024f366004610e12565b6104a5565b6101ce610262366004610f23565b6104b2565b610183610275366004610f90565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6060600380546102ae90610fc1565b80601f01602080910402602001604051908101604052809291908181526020018280546102da90610fc1565b80156103255780601f106102fc57610100808354040283529160200191610325565b820191905f5260205f20905b81548152906001019060200180831161030857829003601f168201915b5050505050905090565b5f3361033c8185856105e8565b60019150505b92915050565b5f336103558582856105fa565b610360858585610676565b506001949350505050565b5f6103746106d3565b905090565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146103c957604051634ca65edb60e11b81523360048201526024015b60405180910390fd5b6103d382826107fc565b5050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461042257604051634ca65edb60e11b81523360048201526024016103c0565b61042d8233836105fa565b6103d38282610830565b6001600160a01b0381165f90815260076020526040812054610342565b5f6060805f805f6060610465610864565b61046d610891565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6060600480546102ae90610fc1565b5f3361033c818585610676565b834211156104d65760405163313c898160e11b8152600481018590526024016103c0565b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886105218c6001600160a01b03165f90815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f61057b826108be565b90505f61058a828787876108ea565b9050896001600160a01b0316816001600160a01b0316146105d1576040516325c0072360e11b81526001600160a01b0380831660048301528b1660248201526044016103c0565b6105dc8a8a8a6105e8565b50505050505050505050565b6105f58383836001610916565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811015610670578181101561066257604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103c0565b61067084848484035f610916565b50505050565b6001600160a01b03831661069f57604051634b637e8f60e11b81525f60048201526024016103c0565b6001600160a01b0382166106c85760405163ec442f0560e01b81525f60048201526024016103c0565b6105f58383836109e8565b5f306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561072b57507f000000000000000000000000000000000000000000000000000000000000000046145b1561075557507f000000000000000000000000000000000000000000000000000000000000000090565b610374604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b6001600160a01b0382166108255760405163ec442f0560e01b81525f60048201526024016103c0565b6103d35f83836109e8565b6001600160a01b03821661085957604051634b637e8f60e11b81525f60048201526024016103c0565b6103d3825f836109e8565b60606103747f00000000000000000000000000000000000000000000000000000000000000006005610b0e565b60606103747f00000000000000000000000000000000000000000000000000000000000000006006610b0e565b5f6103426108ca6106d3565b8360405161190160f01b8152600281019290925260228201526042902090565b5f805f806108fa88888888610bb7565b92509250925061090a8282610c7f565b50909695505050505050565b6001600160a01b03841661093f5760405163e602df0560e01b81525f60048201526024016103c0565b6001600160a01b03831661096857604051634a1406b160e11b81525f60048201526024016103c0565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561067057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109da91815260200190565b60405180910390a350505050565b6001600160a01b038316610a12578060025f828254610a079190610ff9565b90915550610a829050565b6001600160a01b0383165f9081526020819052604090205481811015610a645760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103c0565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610a9e57600280548290039055610abc565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b0191815260200190565b60405180910390a3505050565b606060ff8314610b2857610b2183610d37565b9050610342565b818054610b3490610fc1565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6090610fc1565b8015610bab5780601f10610b8257610100808354040283529160200191610bab565b820191905f5260205f20905b815481529060010190602001808311610b8e57829003601f168201915b50505050509050610342565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610bf057505f91506003905082610c75565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610c41573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b038116610c6c57505f925060019150829050610c75565b92505f91508190505b9450945094915050565b5f826003811115610c9257610c92611018565b03610c9b575050565b6001826003811115610caf57610caf611018565b03610ccd5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610ce157610ce1611018565b03610d025760405163fce698f760e01b8152600481018290526024016103c0565b6003826003811115610d1657610d16611018565b036103d3576040516335e2f38360e21b8152600481018290526024016103c0565b60605f610d4383610d74565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f60ff8216601f81111561034257604051632cd44ac360e21b815260040160405180910390fd5b5f81518084525f5b81811015610dbf57602081850181015186830182015201610da3565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610df06020830184610d9b565b9392505050565b80356001600160a01b0381168114610e0d575f80fd5b919050565b5f8060408385031215610e23575f80fd5b610e2c83610df7565b946020939093013593505050565b5f805f60608486031215610e4c575f80fd5b610e5584610df7565b9250610e6360208501610df7565b9150604084013590509250925092565b5f60208284031215610e83575f80fd5b610df082610df7565b60ff60f81b881681525f602060e06020840152610eac60e084018a610d9b565b8381036040850152610ebe818a610d9b565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825260208088019350909101905f5b81811015610f1157835183529284019291840191600101610ef5565b50909c9b505050505050505050505050565b5f805f805f805f60e0888a031215610f39575f80fd5b610f4288610df7565b9650610f5060208901610df7565b95506040880135945060608801359350608088013560ff81168114610f73575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f8060408385031215610fa1575f80fd5b610faa83610df7565b9150610fb860208401610df7565b90509250929050565b600181811c90821680610fd557607f821691505b602082108103610ff357634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561034257634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52602160045260245ffdfea2646970667358221220c62571b244292ccda84ab1b2953222061893d87e6d315e3029f315e76ebe035d64736f6c63430008180033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {},\n \"immutableReferences\": {\n \"6252\": [\n {\n \"length\": 32,\n \"start\": 1843\n }\n ],\n \"6254\": [\n {\n \"length\": 32,\n \"start\": 1801\n }\n ],\n \"6256\": [\n {\n \"length\": 32,\n \"start\": 1759\n }\n ],\n \"6258\": [\n {\n \"length\": 32,\n \"start\": 1924\n }\n ],\n \"6260\": [\n {\n \"length\": 32,\n \"start\": 1964\n }\n ],\n \"6263\": [\n {\n \"length\": 32,\n \"start\": 2155\n }\n ],\n \"6266\": [\n {\n \"length\": 32,\n \"start\": 2200\n }\n ],\n \"10253\": [\n {\n \"length\": 32,\n \"start\": 325\n },\n {\n \"length\": 32,\n \"start\": 900\n },\n {\n \"length\": 32,\n \"start\": 994\n }\n ]\n },\n \"inputSourceName\": \"project/contracts/ArgonotToken.sol\",\n \"buildInfoId\": \"solc-0_8_24-0b1aeb87b938c690e17cb94e6c60ba6e2ad7e4c9\"\n}","{\n \"_format\": \"hh3-artifact-1\",\n \"contractName\": \"MintingGateway\",\n \"sourceName\": \"contracts/MintingGateway.sol\",\n \"abi\": [\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"argonTokenAddress\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"argonotTokenAddress\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [],\n \"name\": \"ArrayLengthMismatch\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ECDSAInvalidSignature\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"length\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ECDSAInvalidSignatureLength\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"s\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"ECDSAInvalidSignatureS\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"EnforcedPause\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ExpectedPause\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"GlobalIssuanceCouncilNotBootstrapped\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"GlobalIssuanceCouncilQuorumNotMet\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"authorized\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"required\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"InsufficientAuthorizedCollateral\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"expected\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"provided\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"InvalidChainId\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"expected\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"provided\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"InvalidCurrentCouncilSnapshot\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"index\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"InvalidGlobalIssuanceCouncilMember\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidInitialization\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidMicrogonCollateralForArgonotPayout\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"signingKey\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"InvalidMintingAuthority\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"expectedSigner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"recoveredSigner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"InvalidMintingAuthorityDeactivationSigner\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"expected\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"provided\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"InvalidQueueNonce\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"expected\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"provided\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"InvalidSignatureCount\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidSignatureOrder\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint128\",\n \"name\": \"maxRate\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"providedRate\",\n \"type\": \"uint128\"\n }\n ],\n \"name\": \"InvalidTransferOutRate\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint8\",\n \"name\": \"kind\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"InvalidUpdateKind\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"LatestGatewayUpdateCannotDeactivate\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"MigrationAlreadyCompleted\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"signingKey\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"MintingAuthorityAlreadyActive\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"signingKey\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"MintingAuthorityTransferCapacityExceeded\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"caller\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"NotGuardianOrOwner\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"NotInitializing\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableInvalidOwner\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableUnauthorizedAccount\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"RuntimeAmountOverflow\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"transferId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"TransferOutOfArgonAlreadyFinalized\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"currentBlock\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"validUntilBlock\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"TransferOutOfArgonExpired\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"currentBlock\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"validUntilBlock\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"TransferOutOfArgonNotExpired\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"UnsupportedToken\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ZeroAdminSafe\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ZeroAmount\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ZeroGuardian\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ZeroMicrogonsPerArgonot\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"index\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ZeroRecipient\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ZeroSigningKey\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"councilHash\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"GlobalIssuanceCouncilBootstrapped\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"previousCouncilHash\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"councilHash\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"GlobalIssuanceCouncilForceUpdated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"councilHash\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"relayerArgonAccountId\",\n \"type\": \"bytes32\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"gatewayActivityNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"argonApprovalsNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"argonCirculation\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"argonotCirculation\",\n \"type\": \"uint128\"\n }\n ],\n \"indexed\": false,\n \"internalType\": \"struct MintingGateway.GatewayActivityState\",\n \"name\": \"gatewayState\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"GlobalIssuanceCouncilRotated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"previousGuardian\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newGuardian\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"GuardianUpdated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint64\",\n \"name\": \"version\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"argonRecipientCount\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"argonTotalAmount\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"argonotRecipientCount\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"argonotTotalAmount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"MigrationCompleted\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"signingKey\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint128\",\n \"name\": \"microgonCollateral\",\n \"type\": \"uint128\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint128\",\n \"name\": \"micronotCollateral\",\n \"type\": \"uint128\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint32\",\n \"name\": \"coactivationCount\",\n \"type\": \"uint32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint32\",\n \"name\": \"sharedSignatureCount\",\n \"type\": \"uint32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"relayerArgonAccountId\",\n \"type\": \"bytes32\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"gatewayActivityNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"argonApprovalsNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"argonCirculation\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"argonotCirculation\",\n \"type\": \"uint128\"\n }\n ],\n \"indexed\": false,\n \"internalType\": \"struct MintingGateway.GatewayActivityState\",\n \"name\": \"gatewayState\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"MintingAuthorityActivated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"signingKey\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint128\",\n \"name\": \"microgonCollateral\",\n \"type\": \"uint128\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint128\",\n \"name\": \"micronotCollateral\",\n \"type\": \"uint128\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"relayerArgonAccountId\",\n \"type\": \"bytes32\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"gatewayActivityNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"argonApprovalsNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"argonCirculation\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"argonotCirculation\",\n \"type\": \"uint128\"\n }\n ],\n \"indexed\": false,\n \"internalType\": \"struct MintingGateway.GatewayActivityState\",\n \"name\": \"gatewayState\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"MintingAuthorityDeactivated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"previousOwner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnershipTransferred\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Paused\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"transferId\",\n \"type\": \"bytes32\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"gatewayActivityNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"argonApprovalsNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"argonCirculation\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"argonotCirculation\",\n \"type\": \"uint128\"\n }\n ],\n \"indexed\": false,\n \"internalType\": \"struct MintingGateway.GatewayActivityState\",\n \"name\": \"gatewayState\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"TransferOutOfArgonCanceled\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"transferId\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint128\",\n \"name\": \"amount\",\n \"type\": \"uint128\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"address\",\n \"name\": \"signingKey\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"microgonCollateral\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"micronotCollateral\",\n \"type\": \"uint128\"\n }\n ],\n \"indexed\": false,\n \"internalType\": \"struct MintingGateway.MintingAuthorityCollateral[]\",\n \"name\": \"mintingCollateral\",\n \"type\": \"tuple[]\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"gatewayActivityNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"argonApprovalsNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"argonCirculation\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"argonotCirculation\",\n \"type\": \"uint128\"\n }\n ],\n \"indexed\": false,\n \"internalType\": \"struct MintingGateway.GatewayActivityState\",\n \"name\": \"gatewayState\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"TransferOutOfArgonFinalized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint128\",\n \"name\": \"amount\",\n \"type\": \"uint128\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"argonAccountId\",\n \"type\": \"bytes32\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"gatewayActivityNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"argonApprovalsNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"argonCirculation\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"argonotCirculation\",\n \"type\": \"uint128\"\n }\n ],\n \"indexed\": false,\n \"internalType\": \"struct MintingGateway.GatewayActivityState\",\n \"name\": \"gatewayState\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"TransferToArgonStarted\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Unpaused\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"RUNTIME_DECIMALS\",\n \"outputs\": [\n {\n \"internalType\": \"uint8\",\n \"name\": \"\",\n \"type\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"RUNTIME_TO_ERC20_SCALE\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"TOKEN_DECIMALS\",\n \"outputs\": [\n {\n \"internalType\": \"uint8\",\n \"name\": \"\",\n \"type\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"locatorIndex\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"activityBlockLocators\",\n \"outputs\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"blockNumber\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"startGatewayActivityNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"endGatewayActivityNonce\",\n \"type\": \"uint64\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"address[]\",\n \"name\": \"signers\",\n \"type\": \"address[]\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"weights\",\n \"type\": \"uint256[]\"\n }\n ],\n \"internalType\": \"struct MintingGateway.CouncilSnapshot\",\n \"name\": \"currentCouncil\",\n \"type\": \"tuple\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"queueNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"enum MintingGateway.GatewayUpdateKind\",\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"payload\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes[]\",\n \"name\": \"signatures\",\n \"type\": \"bytes[]\"\n }\n ],\n \"internalType\": \"struct MintingGateway.GatewayUpdate[]\",\n \"name\": \"updates\",\n \"type\": \"tuple[]\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"relayerArgonAccountId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"applyGatewayUpdates\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"argonApprovalsHash\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"argonApprovalsNonce\",\n \"outputs\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"\",\n \"type\": \"uint64\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"argonCirculation\",\n \"outputs\": [\n {\n \"internalType\": \"uint128\",\n \"name\": \"\",\n \"type\": \"uint128\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"argonToken\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"argonotCirculation\",\n \"outputs\": [\n {\n \"internalType\": \"uint128\",\n \"name\": \"\",\n \"type\": \"uint128\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"argonotToken\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"argonAccountId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"argonTransferNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"chainId\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"microgonsPerArgonot\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"validUntilBlock\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"amount\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"mintingAuthorityTip\",\n \"type\": \"uint128\"\n }\n ],\n \"internalType\": \"struct MintingGateway.TransferOutOfArgonRequest\",\n \"name\": \"request\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"cancelTransferOutOfArgon\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"argonAccountId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"argonTransferNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"chainId\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"microgonsPerArgonot\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"validUntilBlock\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"amount\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"mintingAuthorityTip\",\n \"type\": \"uint128\"\n }\n ],\n \"internalType\": \"struct MintingGateway.TransferOutOfArgonRequest\",\n \"name\": \"request\",\n \"type\": \"tuple\"\n },\n {\n \"components\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint128\",\n \"name\": \"microgonCollateral\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"micronotCollateral\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"signature\",\n \"type\": \"bytes\"\n }\n ],\n \"internalType\": \"struct MintingGateway.MintingAuthorization[]\",\n \"name\": \"authorizations\",\n \"type\": \"tuple[]\"\n }\n ],\n \"internalType\": \"struct MintingGateway.TransferOutOfArgonProof\",\n \"name\": \"proof\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"finalizeTransferOutOfArgon\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"transferId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"finalizedTransferOutOfArgonIds\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"isFinalized\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"address[]\",\n \"name\": \"signers\",\n \"type\": \"address[]\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"weights\",\n \"type\": \"uint256[]\"\n }\n ],\n \"internalType\": \"struct MintingGateway.CouncilSnapshot\",\n \"name\": \"nextCouncil\",\n \"type\": \"tuple\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"nextMicrogonsPerArgonot\",\n \"type\": \"uint128\"\n }\n ],\n \"name\": \"forceUpdateActiveCouncil\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"gatewayActivityNonce\",\n \"outputs\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"\",\n \"type\": \"uint64\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"globalIssuanceCouncil\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"totalWeight\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"memberCount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"councilHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"epochMicrogonsPerArgonot\",\n \"type\": \"uint128\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"guardian\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"adminSafe\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"guardianAddress\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"councilHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"councilMemberCount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"councilTotalWeight\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"initialMicrogonsPerArgonot\",\n \"type\": \"uint128\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"latestActivityBlockLocatorIndex\",\n \"outputs\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"\",\n \"type\": \"uint64\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"maxTransferOutMicrogonsPerArgonot\",\n \"outputs\": [\n {\n \"internalType\": \"uint128\",\n \"name\": \"\",\n \"type\": \"uint128\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"address[]\",\n \"name\": \"recipients\",\n \"type\": \"address[]\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"amounts\",\n \"type\": \"uint256[]\"\n }\n ],\n \"internalType\": \"struct MintingGateway.MigrationAssetDistribution\",\n \"name\": \"argonMigration\",\n \"type\": \"tuple\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"address[]\",\n \"name\": \"recipients\",\n \"type\": \"address[]\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"amounts\",\n \"type\": \"uint256[]\"\n }\n ],\n \"internalType\": \"struct MintingGateway.MigrationAssetDistribution\",\n \"name\": \"argonotMigration\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"migrate\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"migrationCompleted\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"signingKey\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"mintingAuthorityCollateralRemaining\",\n \"outputs\": [\n {\n \"internalType\": \"uint128\",\n \"name\": \"microgonCollateral\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"micronotCollateral\",\n \"type\": \"uint128\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"owner\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"pause\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"paused\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"renounceOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"guardianAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setGuardian\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"amount\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"argonAccountId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"deadline\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint8\",\n \"name\": \"v\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"r\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"s\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"startTransferToArgon\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint128\",\n \"name\": \"amount\",\n \"type\": \"uint128\"\n }\n ],\n \"name\": \"toTokenAmount\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"transferOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"unpause\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x60c060405234801562000010575f80fd5b506040516200458638038062004586833981016040819052620000339162000128565b6001600160a01b03808316608052811660a0526200005062000058565b50506200015e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a95760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001095780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b80516001600160a01b038116811462000123575f80fd5b919050565b5f80604083850312156200013a575f80fd5b62000145836200010c565b915062000155602084016200010c565b90509250929050565b60805160a0516143c7620001bf5f395f81816102df015281816112520152818161131401528181611c9f0152611d3101525f818161042901528181610b6001528181610fad0152818161120f01528181611c6e0152611cf401526143c75ff3fe608060405234801561000f575f80fd5b50600436106101f2575f3560e01c80636e2c7769116101145780638da5cb5b116100a9578063c017c90211610079578063c017c902146104d2578063d68d6311146104e5578063e52580a6146104f8578063ecec10a414610560578063f2fde38b14610573575f80fd5b80638da5cb5b14610466578063905d031f1461046e578063a3eb8961146104c1578063beabb591146104ca575f80fd5b80637c9afa67116100e45780637c9afa671461040257806383a4d591146104245780638456cb591461044b5780638a0dac4a14610453575f80fd5b80636e2c7769146103cc5780636e888c46146103df578063715018a6146103f257806378d350e0146103fa575f80fd5b80632ef29f3b1161018a578063452a93201161015a578063452a93201461038157806359b23872146103935780635b7f415c1461039b5780635c975abb146103b5575f80fd5b80632ef29f3b1461032157806331677980146103425780633f4ba83a14610366578063422ad8f61461036e575f80fd5b80631a5d93fd116101c55780631a5d93fd146102615780631c1eeae1146102a95780631e07f89e146102da5780632ceeddf514610319575f80fd5b8063014c72f6146101f657806309af0e3c1461020b578063138f87811461023b57806318a8f1f01461024e575b5f80fd5b610209610204366004613745565b610586565b005b60085461021e906001600160801b031681565b6040516001600160801b0390911681526020015b60405180910390f35b6102096102493660046137a0565b6106bd565b61020961025c366004613809565b610e22565b600454600554600654600754610280939291906001600160801b031684565b604080519485526020850193909352918301526001600160801b03166060820152608001610232565b5f546102c290600160a01b90046001600160401b031681565b6040516001600160401b039091168152602001610232565b6103017f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610232565b61021e610fa7565b61033461032f366004613876565b611035565b604051908152602001610232565b60035461035690600160401b900460ff1681565b6040519015158152602001610232565b610209611066565b61020961037c36600461388f565b611078565b5f54610301906001600160a01b031681565b6103346111b4565b6103a3601281565b60405160ff9091168152602001610232565b5f805160206143728339815191525460ff16610356565b6001546102c2906001600160401b031681565b6102096103ed3660046138aa565b6111ce565b6102096112fd565b61021e61130e565b610356610410366004613909565b600a6020525f908152604090205460ff1681565b6103017f000000000000000000000000000000000000000000000000000000000000000081565b61020961136e565b610209610461366004613920565b6113c9565b610301611447565b6104a161047c366004613920565b60096020525f90815260409020546001600160801b0380821691600160801b90041682565b604080516001600160801b03938416815292909116602083015201610232565b61033460025481565b6103a3600681565b6102096104e0366004613939565b611475565b6003546102c2906001600160401b031681565b610536610506366004613994565b600b6020525f90815260409020546001600160401b0380821691600160401b8104821691600160801b9091041683565b604080516001600160401b0394851681529284166020840152921691810191909152606001610232565b61020961056e3660046139ba565b61168f565b610209610581366004613920565b6119c2565b61058e6119ff565b806001600160801b03165f036105b757604051632440a7dd60e01b815260040160405180910390fd5b5f808061063d6105c78680613a51565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250610605925050506020880188613a51565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250899250611a31915050565b6040805160808101825260045481526005546020820152600654918101919091526007546001600160801b03166060820152929550909350915061068384848488611b4f565b8381604001517f33e53e90d61fdc868629a6234670f92c4445196f3f98ebd71935bbc76c7d915360405160405180910390a3505050505050565b6106c5611ba0565b6106ce82611bd0565b6106e66106e160e0840160c08501613920565b611c3a565b6106f7610100830160e08401613876565b6001600160801b03165f0361071f57604051631f2a200560e01b815260040160405180910390fd5b61072f60c0830160a08401613994565b6001600160401b0316431115610780574361075060c0840160a08501613994565b604051635728c7dd60e11b815260048101929092526001600160401b031660248201526044015b60405180910390fd5b5f61078a83611d8f565b905061079581611e98565b6107a56080840160608501613876565b6001600160801b03165f036107cd57604051632440a7dd60e01b815260040160405180910390fd5b6008546001600160801b0316806107ea6080860160608701613876565b6001600160801b03161115610836578061080a6080860160608701613876565b6040516343082d3360e01b81526001600160801b03928316600482015291166024820152604401610777565b5f8080806108448780613a51565b90506001600160401b0381111561085d5761085d613a9d565b6040519080825280602002602001820160405280156108a657816020015b604080516060810182525f80825260208083018290529282015282525f1990920191018161087b5790505b5090505f5b6108b58880613a51565b9050811015610b5557366108c98980613a51565b838181106108d9576108d9613ab1565b90506020028101906108eb9190613ac5565b90505f61093161091f61091a8d6109056020870187613876565b6109156040880160208901613876565b611eca565b611f57565b61092c6040850185613ae3565b611f89565b9050846001600160a01b0316816001600160a01b031611610965576040516309cf9e4960e11b815260040160405180910390fd5b6001600160a01b0381165f9081526009602090815260409091209061098c90840184613876565b81546001600160801b03918216911610806109cc57506109b26040840160208501613876565b81546001600160801b03918216600160801b909104909116105b156109f5576040516364fc3cd160e11b81526001600160a01b0383166004820152602401610777565b610a026020840184613876565b815482905f90610a1c9084906001600160801b0316613b39565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550826020016020810190610a539190613876565b81548290601090610a75908490600160801b90046001600160801b0316613b39565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550825f016020810190610aab9190613876565b610ab59089613b60565b9750610ac76040840160208501613876565b610ad19088613b60565b96506040518060600160405280836001600160a01b03168152602001845f016020810190610aff9190613876565b6001600160801b03168152602001846020016020810190610b209190613876565b6001600160801b0316815250858581518110610b3e57610b3e613ab1565b6020908102919091010152509350506001016108ab565b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016610b9060e08a0160c08b01613920565b6001600160a01b031603610c5e575f610bab6006600a613c60565b610bbb60808b0160608c01613876565b6001600160801b0316856001600160801b0316610bd89190613c6e565b610be29190613c85565b90505f610bf8826001600160801b038816613ca4565b9050610c0b6101008b0160e08c01613876565b6001600160801b0316811015610c575780610c2d6101008c0160e08d01613876565b60405162f9825560e61b815260048101929092526001600160801b03166024820152604401610777565b5050610ced565b6001600160801b03841615610c8657604051630994a0f360e11b815260040160405180910390fd5b610c97610100890160e08a01613876565b6001600160801b0316836001600160801b03161015610ced5782610cc26101008a0160e08b01613876565b60405162f9825560e61b81526001600160801b03928316600482015291166024820152604401610777565b610d0b865f908152600a60205260409020805460ff19166001179055565b610d1b60e0890160c08a01613920565b6001600160a01b03166340c10f19610d3960a08b0160808c01613920565b610d4d61032f6101008d0160e08e01613876565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044015f604051808303815f87803b158015610d90575f80fd5b505af1158015610da2573d5f803e3d5ffd5b505050505f610daf611fb3565b90507f64d79900ed82270f744ae62db527f4e328e336d8b51e77bc72601391fe779d0687610de360e08c0160c08d01613920565b610df46101008d0160e08e01613876565b85610dfe86612003565b604051610e0f959493929190613cf9565b60405180910390a1505050505050505050565b610e2a611ba0565b610e3387611c3a565b856001600160801b03165f03610e5c57604051631f2a200560e01b815260040160405180910390fd5b5f610e6687611035565b60405163d505accf60e01b8152336004820152306024820152604481018290526064810187905260ff8616608482015260a4810185905260c481018490529091506001600160a01b0389169063d505accf9060e4015f604051808303815f87803b158015610ed2575f80fd5b505af1158015610ee4573d5f803e3d5ffd5b505060405163079cc67960e41b8152336004820152602481018490526001600160a01b038b1692506379cc679091506044015f604051808303815f87803b158015610f2d575f80fd5b505af1158015610f3f573d5f803e3d5ffd5b505050505f610f4c611fb3565b90506001600160a01b038916337f3ab970a848f33363427e47cfbd7a627af0c6e72757f150137e38cef3cee24d938a8a610f8586612003565b604051610f9493929190613d91565b60405180910390a3505050505050505050565b5f6110307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611007573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061102b9190613db5565b612078565b905090565b5f61104260066012613dcc565b61104d90600a613c60565b611060906001600160801b038416613c6e565b92915050565b61106e6119ff565b6110766120c8565b565b611080611ba0565b61108981611bd0565b61109c6106e160e0830160c08401613920565b6110ad610100820160e08301613876565b6001600160801b03165f036110d557604051631f2a200560e01b815260040160405180910390fd5b6110e560c0820160a08301613994565b6001600160401b03164311611130574361110560c0830160a08401613994565b6040516374276dcf60e11b815260048101929092526001600160401b03166024820152604401610777565b5f61113a82611d8f565b905061114581611e98565b611163815f908152600a60205260409020805460ff19166001179055565b5f61116c611fb3565b90507f3cb8789e9bf6f532eec2bc8ffee9b622fc0d6e6daefb7fb6bb2e2f7b2d62e4528261119983612003565b6040516111a7929190613de5565b60405180910390a1505050565b6111c060066012613dcc565b6111cb90600a613c60565b81565b6111d66119ff565b6111de611ba0565b600354600160401b900460ff161561120957604051633dbff3b560e01b815260040160405180910390fd5b5f61124a7f00000000000000000000000000000000000000000000000000000000000000006112388580613a51565b6112456020880188613a51565b612127565b90505f61127b7f00000000000000000000000000000000000000000000000000000000000000006112388580613a51565b6003805460ff60401b1916600160401b17905590507fc255ddc45163282f24909556f7475ab4ec8eb1d51763b25a4560cee9f43d06456112bb8580613a51565b9050836112c88680613a51565b6040516112ef94939250869093845260208401929092526040830152606082015260800190565b60405180910390a150505050565b6113056119ff565b6110765f612266565b5f6110307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611007573d5f803e3d5ffd5b5f546001600160a01b031633148015906113a1575061138b611447565b6001600160a01b0316336001600160a01b031614155b156113c15760405163354de03160e21b8152336004820152602401610777565b6110766122d6565b6113d16119ff565b6001600160a01b0381166113f85760405163a91f6a8960e01b815260040160405180910390fd5b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f064d28d3d3071c5cbc271a261c10c2f0f0d9e319390397101aa0eb23c6bad9099190a35050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b5f61147e61231e565b805490915060ff600160401b82041615906001600160401b03165f811580156114a45750825b90505f826001600160401b031660011480156114bf5750303b155b9050811580156114cd575080155b156114eb5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561151557845460ff60401b1916600160401b1785555b6001600160a01b038b1661153c576040516314030c0360e11b815260040160405180910390fd5b6001600160a01b038a166115635760405163a91f6a8960e01b815260040160405180910390fd5b88158061156e575087155b80611577575086155b156115975760405163665c282b60e01b81525f6004820152602401610777565b856001600160801b03165f036115c057604051632440a7dd60e01b815260040160405180910390fd5b6115c98b612346565b6115d1612357565b5f80546001600160a01b0319166001600160a01b038c161790556115f789888a89611b4f565b600880546001600160801b0319166001600160801b03881617905560405189907fac3566d46c25f65b48d269870da4b9349704c79de13ad49b115532834d7e7ed1905f90a2831561168257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050565b611697611ba0565b81158015906116f55750600283836116b0600182613e0d565b8181106116bf576116bf613ab1565b90506020028101906116d19190613e20565b6116e2906040810190602001613e34565b60028111156116f3576116f3613df9565b145b156117135760405163bf3d210b60e01b815260040160405180910390fd5b60065461173357604051632c1dfd4f60e11b815260040160405180910390fd5b5f61173d8561235f565b6002549091505f846001600160401b0381111561175c5761175c613a9d565b604051908082528060200260200182016040528015611785578160200160208202803683370190505b5090505f856001600160401b038111156117a1576117a1613a9d565b6040519080825280602002602001820160405280156117ca578160200160208202803683370190505b5090505f6117da88888585612524565b90505f5b878110156119b657368989838181106117f9576117f9613ab1565b905060200281019061180b9190613e20565b600180549192505f91611829916001600160401b0390911690613e52565b90506001600160401b0381166118426020840184613994565b6001600160401b03161461188a578061185e6020840184613994565b604051635efa452960e11b81526001600160401b03928316600482015291166024820152604401610777565b600261189c6040840160208501613e34565b60028111156118ad576118ad613df9565b036118c4576118bd82888b61278b565b96506119ac565b5f6118d56040840160208501613e34565b60028111156118e6576118e6613df9565b03611901576118f78289898c612974565b90985096506119ac565b60016119136040840160208501613e34565b600281111561192457611924613df9565b0361196c576118bd8289898787148a888151811061194457611944613ab1565b60200260200101518a898151811061195e5761195e613ab1565b60200260200101518f612b61565b61197c6040830160208401613e34565b600281111561198d5761198d613df9565b60405163b99607f960e01b815260ff9091166004820152602401610777565b50506001016117de565b50505050505050505050565b6119ca6119ff565b6001600160a01b0381166119f357604051631e4fbdf760e01b81525f6004820152602401610777565b6119fc81612266565b50565b33611a08611447565b6001600160a01b0316146110765760405163118cdaa760e01b8152336004820152602401610777565b5f805f85515f03611a575760405163665c282b60e01b81525f6004820152602401610777565b8451865114611a795760405163512509d360e11b815260040160405180910390fd5b5f805b8751811015611b33575f888281518110611a9857611a98613ab1565b602002602001015190505f888381518110611ab557611ab5613ab1565b602002602001015190505f6001600160a01b0316826001600160a01b03161480611add575080155b80611afa5750836001600160a01b0316826001600160a01b031611155b15611b1b5760405163665c282b60e01b815260048101849052602401610777565b611b258187613ca4565b955090925050600101611a7c565b5086519150611b43878787612df3565b93505093509350939050565b60408051608081018252848152602081018490529081018590526001600160801b039091166060909101819052600492909255600555600691909155600780546001600160801b0319169091179055565b5f805160206143728339815191525460ff16156110765760405163d93c066560e01b815260040160405180910390fd5b466001600160401b038116611beb6060840160408501613994565b6001600160401b031614611c365780611c0a6060840160408501613994565b6040516332e3634d60e21b81526001600160401b03928316600482015291166024820152604401610777565b5050565b6001600160a01b038116611c6c57604051635f8b555b60e11b81526001600160a01b0382166004820152602401610777565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161580611cc957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316155b15611cf257604051635f8b555b60e11b81526001600160a01b0382166004820152602401610777565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031614158015611d6657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031614155b156119fc57604051635f8b555b60e11b81526001600160a01b0382166004820152602401610777565b5f8135611da26040840160208501613994565b611db26060850160408601613994565b611dc26080860160608701613876565b611dd260a0870160808801613920565b611de260c0880160a08901613994565b611df260e0890160c08a01613920565b611e036101008a0160e08b01613876565b611e156101208b016101008c01613876565b60408051602081019a909a526001600160401b03988916908a015295871660608901526001600160801b0394851660808901526001600160a01b0393841660a08901529590911660c08701521660e08501529182166101008401521661012082015261014001604051602081830303815290604052805190602001209050919050565b5f818152600a602052604090205460ff16156119fc57604051632910aca360e01b815260048101829052602401610777565b5f7f28bf99522b0d2f26a76cdeda71578156383bbae91175ca503165cfdbbd1ff34a4630611ef787611d8f565b6040805160208101959095528401929092526001600160a01b0316606083015260808201526001600160801b0380851660a0830152831660c082015260e0015b6040516020818303038152906040528051906020012090505b9392505050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c91909152603c902090565b5f805f80611f98878787612e09565b925092509250611fa88282612e50565b509095945050505050565b5f8054611fd190600160a01b90046001600160401b03166001613e52565b5f805467ffffffffffffffff60a01b1916600160a01b6001600160401b03841602179055905061200081612f08565b90565b604080516080810182525f808252602082018190529181018290526060810191909152604080516080810182526001600160401b038085168252600154166020820152908101612051610fa7565b6001600160801b0316815260200161206761130e565b6001600160801b0316905292915050565b5f8061208660066012613dcc565b61209190600a613c60565b61209b9084613c85565b90506001600160801b0381111561106057604051639940a77560e01b815260048101829052602401610777565b6120d06130d1565b5f80516020614372833981519152805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b5f8382146121485760405163512509d360e11b815260040160405180910390fd5b5f5b8481101561225c575f86868381811061216557612165613ab1565b905060200201602081019061217a9190613920565b90505f85858481811061218f5761218f613ab1565b60200291909101359150506001600160a01b0382166121c457604051633bca2f5160e21b815260048101849052602401610777565b805f036121e457604051631f2a200560e01b815260040160405180910390fd5b6040516340c10f1960e01b81526001600160a01b038381166004830152602482018390528a16906340c10f19906044015f604051808303815f87803b15801561222b575f80fd5b505af115801561223d573d5f803e3d5ffd5b50505050808461224d9190613ca4565b9350505080600101905061214a565b5095945050505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6122de611ba0565b5f80516020614372833981519152805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612109565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00611060565b61234e613100565b6119fc81613125565b611076613100565b6123916040518060a0016040528060608152602001606081526020015f80191681526020015f81526020015f81525090565b5f80806124226123a18680613a51565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506123df925050506020880188613a51565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250506007546001600160801b03169150611a319050565b9250925092506004600201548314158061243e57506004548214155b8061244b57506005548114155b1561247757600654604051633b21437560e21b8152600481019190915260248101849052604401610777565b6040805160a081019091528061248d8780613a51565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152505050908252506020908101906124d290880188613a51565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152505050908252506020810194909452604084019290925260609092019190915292915050565b825f816001600160401b0381111561253e5761253e613a9d565b604051908082528060200260200182016040528015612567578160200160208202803683370190505b5090505f80865b80156125d95761257d81613e72565b9050600289898381811061259357612593613ab1565b90506020028101906125a59190613e20565b6125b6906040810190602001613e34565b60028111156125c7576125c7613df9565b146125d4578094506125d9565b61256e565b505f5b8781101561277f575f8989838181106125f7576125f7613ab1565b90506020028101906126099190613e20565b61261a906040810190602001613e34565b9050600181600281111561263057612630613df9565b0361266f5781858563ffffffff168151811061264e5761264e613ab1565b63ffffffff9092166020928302919091019091015261266c84613e87565b93505b5f81600281111561268257612682613df9565b148061268d57508582145b15612776578989838181106126a4576126a4613ab1565b90506020028101906126b69190613e20565b6126c4906060810190613a51565b6126cf915084613ea9565b925063ffffffff841615612776575f5b8463ffffffff1681101561276e575f86828151811061270057612700613ab1565b602002602001015163ffffffff169050858a828151811061272357612723613ab1565b602002602001019063ffffffff16908163ffffffff16815250508489828151811061275057612750613ab1565b63ffffffff90921660209283029190910190910152506001016126df565b505f93505f92505b506001016125dc565b50505050949350505050565b5f8061279a6040860186613ae3565b8101906127a79190613f1e565b90506127b66060860186613a51565b90506001146127f15760016127ce6060870187613a51565b604051636b01174760e11b81526004810193909352602483015250604401610777565b6128096128016020870187613994565b82518661312d565b91505f61284761281884611f57565b6128256060890189613a51565b5f81811061283557612835613ab1565b905060200281019061092c9190613ae3565b9050815f01516001600160a01b0316816001600160a01b031614612894578151604051630be4b0e160e01b81526001600160a01b0391821660048201529082166024820152604401610777565b81516001600160a01b039081165f9081526009602090815260408083208054875190951684529083209290925590916001600160801b0380821692600160801b90920416906128e5908a018a613994565b6001805467ffffffffffffffff19166001600160401b039290921691909117905560028690555f612914611fb3565b86519091506001600160a01b03167ff92f117a698345a1b681cf04280fb5da65a05a9ac88aaacad3e9ee273ce570fd84848b61294f86612003565b60405161295f9493929190613f65565b60405180910390a25050505050509392505050565b6129a66040518060a0016040528060608152602001606081526020015f80191681526020015f81526020015f81525090565b5f806129b56040880188613ae3565b8101906129c29190614028565b905080602001516001600160801b03165f036129f157604051632440a7dd60e01b815260040160405180910390fd5b5f805f612a10845f01515f0151855f0151602001518660200151611a31565b91945092509050612a43612a2760208c018c613994565b60408b015186518051602091820151918901519091908d613194565b9450612a7585612a5660608d018d613a51565b612a5f91614145565b8b5160208d015160608e015160808f01516131c9565b612a858383838760200151611b4f565b602084810151600880546001600160801b0319166001600160801b03909216919091179055612ab6908b018b613994565b6001805467ffffffffffffffff19166001600160401b039290921691909117905560028590555f612ae5611fb3565b90507fb3dbfeab9c5013403dc2f2300318b92643b1cb9323077d549b4f93bbddded9638489612b1384612003565b604051612b2293929190614204565b60405180910390a1506040805160a081018252855151815294516020908101519086015284019290925260608301526080820152915094509492505050565b5f80612b7060408a018a613ae3565b810190612b7d919061421f565b60408101519091506001600160a01b0316612bab5760405163611b32ab60e01b815260040160405180910390fd5b80516001600160801b0316158015612bce575060208101516001600160801b0316155b15612bfd576040808201519051632edcd91760e21b81526001600160a01b039091166004820152602401610777565b63ffffffff85161580612c14575063ffffffff8416155b15612c43576040808201519051632edcd91760e21b81526001600160a01b039091166004820152602401610777565b6040808201516001600160a01b03165f90815260096020522080546001600160801b0316151580612c8457508054600160801b90046001600160801b031615155b15612cb357604080830151905163cb96603760e01b81526001600160a01b039091166004820152602401610777565b612cdc612cc360208c018c613994565b8a60400151845f0151856020015186604001518d61320e565b92508615612cf557612cf583612a5660608d018d613a51565b60408051808201825283516001600160801b0390811682526020808601518216818401908152868501516001600160a01b03165f9081526009835294909420925193518216600160801b0293909116929092179055612d56908b018b613994565b6001805467ffffffffffffffff19166001600160401b039290921691909117905560028390555f612d85611fb3565b905082604001516001600160a01b03167fc0f81072946eba75f62302dad0fe56dd420d0b9d311e15b61bbe6e056c29908d845f015185602001518a8a8a612dcb88612003565b604051612ddd96959493929190614288565b60405180910390a2505050979650505050505050565b5f838383604051602001611f37939291906142c9565b5f80806041849003612e3d578435602086013560408701355f1a612e2f8982858561323c565b955095509550505050612e47565b505f915060029050825b93509350939050565b5f826003811115612e6357612e63613df9565b03612e6c575050565b6001826003811115612e8057612e80613df9565b03612e9e5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115612eb257612eb2613df9565b03612ed35760405163fce698f760e01b815260048101829052602401610777565b6003826003811115612ee757612ee7613df9565b03611c36576040516335e2f38360e21b815260048101829052602401610777565b60035443906001600160401b03165f03612fca576003805467ffffffffffffffff19166001908117909155604080516060810182526001600160401b03938416815293831660208086018281529286019182525f93909352600b90925292517f72c6bfb7988af3a1efa6568f02a999bc52252641c659d85961ca3d372b57d5cf8054945192518416600160801b0267ffffffffffffffff60801b19938516600160401b026001600160801b031990961692909416919091179390931716179055565b6003546001600160401b039081165f908152600b60205260409020805490918381169116036130205780546001600160401b03909316600160801b0267ffffffffffffffff60801b199093169290921790915550565b6003545f90613039906001600160401b03166001613e52565b600380546001600160401b0392831667ffffffffffffffff19909116811790915560408051606081018252958316865295821660208087018281528789019283525f938452600b9091529690912094518554965191518316600160801b0267ffffffffffffffff60801b19928416600160401b026001600160801b031990981691909316179590951794909416939093179091555050565b5f805160206143728339815191525460ff1661107657604051638dfc202b60e01b815260040160405180910390fd5b613108613304565b61107657604051631afcd79f60e31b815260040160405180910390fd5b6119ca613100565b604080517fad7e1df8fff16b907a93b4116c7590060dfa3b9c396a8b815e8290b0dff45cba602082015246918101919091523060608201526001600160401b03841660808201526001600160a01b03831660a082015260c081018290525f9060e001611f37565b5f806131a1868686612df3565b90506131bb88885f846131b58b8b8b61331d565b88613388565b9150505b9695505050505050565b5f806131d78888888861343a565b915091506131e7828286866135ad565b6132045760405163079842ab60e41b815260040160405180910390fd5b5050505050505050565b5f613231878760016001600160a01b03871661322b8a8a8a613611565b87613388565b979650505050505050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561327557505f915060039050826132fa565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156132c6573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b0381166132f157505f9250600191508290506132fa565b92505f91508190505b9450945094915050565b5f61330d61231e565b54600160401b900460ff16919050565b5f7f82ce6440aa5dde11f3613892819b630b62342bacf93e16a292d5c8783aafa4c3463061334c878787612df3565b6040805160208101959095528401929092526001600160a01b0316606083015260808201526001600160801b03831660a082015260c001611f37565b5f7f41936771719a172aa959076ca6aafb826eaf332dd0c9e7860901c398ef42da05463089898960028111156133c0576133c0613df9565b6040805160208101979097528601949094526001600160a01b0390921660608501526001600160401b0316608084015260a083015260ff1660c082015260e0810185905261010081018490526101208101839052610140016040516020818303038152906040528051906020012090509695505050505050565b5f805f8061344788611f57565b90505f805b88518110156135a0575f613479848b848151811061346c5761346c613ab1565b602002602001015161366d565b9050846001600160a01b0316816001600160a01b0316116134ad576040516309cf9e4960e11b815260040160405180910390fd5b8851831080156134e75750806001600160a01b03168984815181106134d4576134d4613ab1565b60200260200101516001600160a01b0316105b156134fc576134f583614359565b92506134ad565b88518314806135365750806001600160a01b031689848151811061352257613522613ab1565b60200260200101516001600160a01b031614155b156135575760405163665c282b60e01b815260048101839052602401610777565b61356087614359565b965087838151811061357457613574613ab1565b6020026020010151866135879190613ca4565b955093508361359583614359565b92505060010161344c565b5050505094509492505050565b5f806135b98684613e0d565b90506135c684605a613c6e565b6135d1866064613c6e565b106135e0576001915050613609565b6002811115801561360557506135f7846050613c6e565b613602866064613c6e565b10155b9150505b949350505050565b5f7f1cd7f89e34f6154d6f8387a08ffafc689e347b8d5809913b07c58a42995dff664630613640878787613695565b6040805160208101959095528401929092526001600160a01b03166060830152608082015260a001611f37565b5f805f8061367b86866136cb565b92509250925061368b8282612e50565b5090949350505050565b604080516001600160801b0380861660208301528416918101919091526001600160a01b03821660608201525f90608001611f37565b5f805f8351604103613702576020840151604085015160608601515f1a6136f48882858561323c565b95509550955050505061370d565b505081515f91506002905b9250925092565b5f60408284031215613724575f80fd5b50919050565b80356001600160801b0381168114613740575f80fd5b919050565b5f8060408385031215613756575f80fd5b82356001600160401b0381111561376b575f80fd5b61377785828601613714565b9250506137866020840161372a565b90509250929050565b5f6101208284031215613724575f80fd5b5f8061014083850312156137b2575f80fd5b6137bc848461378f565b91506101208301356001600160401b038111156137d7575f80fd5b8301602081860312156137e8575f80fd5b809150509250929050565b80356001600160a01b0381168114613740575f80fd5b5f805f805f805f60e0888a03121561381f575f80fd5b613828886137f3565b96506138366020890161372a565b95506040880135945060608801359350608088013560ff81168114613859575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f60208284031215613886575f80fd5b611f508261372a565b5f61012082840312156138a0575f80fd5b611f50838361378f565b5f80604083850312156138bb575f80fd5b82356001600160401b03808211156138d1575f80fd5b6138dd86838701613714565b935060208501359150808211156138f2575f80fd5b506138ff85828601613714565b9150509250929050565b5f60208284031215613919575f80fd5b5035919050565b5f60208284031215613930575f80fd5b611f50826137f3565b5f805f805f8060c0878903121561394e575f80fd5b613957876137f3565b9550613965602088016137f3565b945060408701359350606087013592506080870135915061398860a0880161372a565b90509295509295509295565b5f602082840312156139a4575f80fd5b81356001600160401b0381168114611f50575f80fd5b5f805f80606085870312156139cd575f80fd5b84356001600160401b03808211156139e3575f80fd5b6139ef88838901613714565b95506020870135915080821115613a04575f80fd5b818701915087601f830112613a17575f80fd5b813581811115613a25575f80fd5b8860208260051b8501011115613a39575f80fd5b95986020929092019750949560400135945092505050565b5f808335601e19843603018112613a66575f80fd5b8301803591506001600160401b03821115613a7f575f80fd5b6020019150600581901b3603821315613a96575f80fd5b9250929050565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112613ad9575f80fd5b9190910192915050565b5f808335601e19843603018112613af8575f80fd5b8301803591506001600160401b03821115613b11575f80fd5b602001915036819003821315613a96575f80fd5b634e487b7160e01b5f52601160045260245ffd5b6001600160801b03828116828216039080821115613b5957613b59613b25565b5092915050565b6001600160801b03818116838216019080821115613b5957613b59613b25565b600181815b80851115613bba57815f1904821115613ba057613ba0613b25565b80851615613bad57918102915b93841c9390800290613b85565b509250929050565b5f82613bd057506001611060565b81613bdc57505f611060565b8160018114613bf25760028114613bfc57613c18565b6001915050611060565b60ff841115613c0d57613c0d613b25565b50506001821b611060565b5060208310610133831016604e8410600b8410161715613c3b575081810a611060565b613c458383613b80565b805f1904821115613c5857613c58613b25565b029392505050565b5f611f5060ff841683613bc2565b808202811582820484141761106057611060613b25565b5f82613c9f57634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561106057611060613b25565b6001600160401b038082511683528060208301511660208401525060408101516001600160801b03808216604085015280606084015116606085015250505050565b5f610100808301888452602060018060a01b03808a16602087015260406001600160801b03808b16604089015260608660608a01528596508a518087526101208a01975060208c0196505f5b81811015613d78578751805187168a52878101518516888b01528501518416858a01529782019796860196600101613d45565b5050505050505050809150506131bf6080830184613cb7565b6001600160801b03841681526020810183905260c081016136096040830184613cb7565b5f60208284031215613dc5575f80fd5b5051919050565b60ff828116828216039081111561106057611060613b25565b82815260a08101611f506020830184613cb7565b634e487b7160e01b5f52602160045260245ffd5b8181038181111561106057611060613b25565b5f8235607e19833603018112613ad9575f80fd5b5f60208284031215613e44575f80fd5b813560038110611f50575f80fd5b6001600160401b03818116838216019080821115613b5957613b59613b25565b5f81613e8057613e80613b25565b505f190190565b5f63ffffffff808316818103613e9f57613e9f613b25565b6001019392505050565b63ffffffff818116838216019080821115613b5957613b59613b25565b604080519081016001600160401b0381118282101715613ee857613ee8613a9d565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613f1657613f16613a9d565b604052919050565b5f60208284031215613f2e575f80fd5b604051602081018181106001600160401b0382111715613f5057613f50613a9d565b604052613f5c836137f3565b81529392505050565b6001600160801b038581168252841660208201526040810183905260e08101613f916060830184613cb7565b95945050505050565b5f6001600160401b03821115613fb257613fb2613a9d565b5060051b60200190565b5f82601f830112613fcb575f80fd5b81356020613fe0613fdb83613f9a565b613eee565b8083825260208201915060208460051b870101935086841115614001575f80fd5b602086015b8481101561401d5780358352918301918301614006565b509695505050505050565b5f6020808385031215614039575f80fd5b82356001600160401b038082111561404f575f80fd5b9084019060408287031215614062575f80fd5b61406a613ec6565b823582811115614078575f80fd5b830160408189031215614089575f80fd5b614091613ec6565b81358481111561409f575f80fd5b8201601f81018a136140af575f80fd5b80356140bd613fdb82613f9a565b81815260059190911b8201880190888101908c8311156140db575f80fd5b928901925b82841015614100576140f1846137f3565b825292890192908901906140e0565b84525050508186013584811115614115575f80fd5b6141218a828501613fbc565b828801525082525061413483850161372a565b848201528094505050505092915050565b5f614152613fdb84613f9a565b80848252602080830192508560051b85013681111561416f575f80fd5b855b818110156141f85780356001600160401b038082111561418f575f80fd5b90880190601f36818401126141a2575f80fd5b8235828111156141b4576141b4613a9d565b6141c5818301601f19168801613eee565b925080835236878286010111156141da575f80fd5b80878501888501375f90830187015250865250938201938201614171565b50919695505050505050565b8381526020810183905260c081016136096040830184613cb7565b5f6060828403121561422f575f80fd5b604051606081018181106001600160401b038211171561425157614251613a9d565b60405261425d8361372a565b815261426b6020840161372a565b602082015261427c604084016137f3565b60408201529392505050565b6001600160801b0387811682528616602082015263ffffffff85811660408301528416606082015260808101839052610120810161323160a0830184613cb7565b606080825284519082018190525f906020906080840190828801845b8281101561430a5781516001600160a01b0316845292840192908401906001016142e5565b505050838103828501528551808252868301918301905f5b8181101561433e57835183529284019291840191600101614322565b50506001600160801b03861660408601529250613609915050565b5f6001820161436a5761436a613b25565b506001019056fecd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300a26469706673582212203a214c965eb3956ff07c645a3f97f11e09a50d6ac5d1cd5276785c6492dc75a964736f6c63430008180033\",\n \"deployedBytecode\": \"0x608060405234801561000f575f80fd5b50600436106101f2575f3560e01c80636e2c7769116101145780638da5cb5b116100a9578063c017c90211610079578063c017c902146104d2578063d68d6311146104e5578063e52580a6146104f8578063ecec10a414610560578063f2fde38b14610573575f80fd5b80638da5cb5b14610466578063905d031f1461046e578063a3eb8961146104c1578063beabb591146104ca575f80fd5b80637c9afa67116100e45780637c9afa671461040257806383a4d591146104245780638456cb591461044b5780638a0dac4a14610453575f80fd5b80636e2c7769146103cc5780636e888c46146103df578063715018a6146103f257806378d350e0146103fa575f80fd5b80632ef29f3b1161018a578063452a93201161015a578063452a93201461038157806359b23872146103935780635b7f415c1461039b5780635c975abb146103b5575f80fd5b80632ef29f3b1461032157806331677980146103425780633f4ba83a14610366578063422ad8f61461036e575f80fd5b80631a5d93fd116101c55780631a5d93fd146102615780631c1eeae1146102a95780631e07f89e146102da5780632ceeddf514610319575f80fd5b8063014c72f6146101f657806309af0e3c1461020b578063138f87811461023b57806318a8f1f01461024e575b5f80fd5b610209610204366004613745565b610586565b005b60085461021e906001600160801b031681565b6040516001600160801b0390911681526020015b60405180910390f35b6102096102493660046137a0565b6106bd565b61020961025c366004613809565b610e22565b600454600554600654600754610280939291906001600160801b031684565b604080519485526020850193909352918301526001600160801b03166060820152608001610232565b5f546102c290600160a01b90046001600160401b031681565b6040516001600160401b039091168152602001610232565b6103017f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610232565b61021e610fa7565b61033461032f366004613876565b611035565b604051908152602001610232565b60035461035690600160401b900460ff1681565b6040519015158152602001610232565b610209611066565b61020961037c36600461388f565b611078565b5f54610301906001600160a01b031681565b6103346111b4565b6103a3601281565b60405160ff9091168152602001610232565b5f805160206143728339815191525460ff16610356565b6001546102c2906001600160401b031681565b6102096103ed3660046138aa565b6111ce565b6102096112fd565b61021e61130e565b610356610410366004613909565b600a6020525f908152604090205460ff1681565b6103017f000000000000000000000000000000000000000000000000000000000000000081565b61020961136e565b610209610461366004613920565b6113c9565b610301611447565b6104a161047c366004613920565b60096020525f90815260409020546001600160801b0380821691600160801b90041682565b604080516001600160801b03938416815292909116602083015201610232565b61033460025481565b6103a3600681565b6102096104e0366004613939565b611475565b6003546102c2906001600160401b031681565b610536610506366004613994565b600b6020525f90815260409020546001600160401b0380821691600160401b8104821691600160801b9091041683565b604080516001600160401b0394851681529284166020840152921691810191909152606001610232565b61020961056e3660046139ba565b61168f565b610209610581366004613920565b6119c2565b61058e6119ff565b806001600160801b03165f036105b757604051632440a7dd60e01b815260040160405180910390fd5b5f808061063d6105c78680613a51565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250610605925050506020880188613a51565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250899250611a31915050565b6040805160808101825260045481526005546020820152600654918101919091526007546001600160801b03166060820152929550909350915061068384848488611b4f565b8381604001517f33e53e90d61fdc868629a6234670f92c4445196f3f98ebd71935bbc76c7d915360405160405180910390a3505050505050565b6106c5611ba0565b6106ce82611bd0565b6106e66106e160e0840160c08501613920565b611c3a565b6106f7610100830160e08401613876565b6001600160801b03165f0361071f57604051631f2a200560e01b815260040160405180910390fd5b61072f60c0830160a08401613994565b6001600160401b0316431115610780574361075060c0840160a08501613994565b604051635728c7dd60e11b815260048101929092526001600160401b031660248201526044015b60405180910390fd5b5f61078a83611d8f565b905061079581611e98565b6107a56080840160608501613876565b6001600160801b03165f036107cd57604051632440a7dd60e01b815260040160405180910390fd5b6008546001600160801b0316806107ea6080860160608701613876565b6001600160801b03161115610836578061080a6080860160608701613876565b6040516343082d3360e01b81526001600160801b03928316600482015291166024820152604401610777565b5f8080806108448780613a51565b90506001600160401b0381111561085d5761085d613a9d565b6040519080825280602002602001820160405280156108a657816020015b604080516060810182525f80825260208083018290529282015282525f1990920191018161087b5790505b5090505f5b6108b58880613a51565b9050811015610b5557366108c98980613a51565b838181106108d9576108d9613ab1565b90506020028101906108eb9190613ac5565b90505f61093161091f61091a8d6109056020870187613876565b6109156040880160208901613876565b611eca565b611f57565b61092c6040850185613ae3565b611f89565b9050846001600160a01b0316816001600160a01b031611610965576040516309cf9e4960e11b815260040160405180910390fd5b6001600160a01b0381165f9081526009602090815260409091209061098c90840184613876565b81546001600160801b03918216911610806109cc57506109b26040840160208501613876565b81546001600160801b03918216600160801b909104909116105b156109f5576040516364fc3cd160e11b81526001600160a01b0383166004820152602401610777565b610a026020840184613876565b815482905f90610a1c9084906001600160801b0316613b39565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550826020016020810190610a539190613876565b81548290601090610a75908490600160801b90046001600160801b0316613b39565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550825f016020810190610aab9190613876565b610ab59089613b60565b9750610ac76040840160208501613876565b610ad19088613b60565b96506040518060600160405280836001600160a01b03168152602001845f016020810190610aff9190613876565b6001600160801b03168152602001846020016020810190610b209190613876565b6001600160801b0316815250858581518110610b3e57610b3e613ab1565b6020908102919091010152509350506001016108ab565b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016610b9060e08a0160c08b01613920565b6001600160a01b031603610c5e575f610bab6006600a613c60565b610bbb60808b0160608c01613876565b6001600160801b0316856001600160801b0316610bd89190613c6e565b610be29190613c85565b90505f610bf8826001600160801b038816613ca4565b9050610c0b6101008b0160e08c01613876565b6001600160801b0316811015610c575780610c2d6101008c0160e08d01613876565b60405162f9825560e61b815260048101929092526001600160801b03166024820152604401610777565b5050610ced565b6001600160801b03841615610c8657604051630994a0f360e11b815260040160405180910390fd5b610c97610100890160e08a01613876565b6001600160801b0316836001600160801b03161015610ced5782610cc26101008a0160e08b01613876565b60405162f9825560e61b81526001600160801b03928316600482015291166024820152604401610777565b610d0b865f908152600a60205260409020805460ff19166001179055565b610d1b60e0890160c08a01613920565b6001600160a01b03166340c10f19610d3960a08b0160808c01613920565b610d4d61032f6101008d0160e08e01613876565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044015f604051808303815f87803b158015610d90575f80fd5b505af1158015610da2573d5f803e3d5ffd5b505050505f610daf611fb3565b90507f64d79900ed82270f744ae62db527f4e328e336d8b51e77bc72601391fe779d0687610de360e08c0160c08d01613920565b610df46101008d0160e08e01613876565b85610dfe86612003565b604051610e0f959493929190613cf9565b60405180910390a1505050505050505050565b610e2a611ba0565b610e3387611c3a565b856001600160801b03165f03610e5c57604051631f2a200560e01b815260040160405180910390fd5b5f610e6687611035565b60405163d505accf60e01b8152336004820152306024820152604481018290526064810187905260ff8616608482015260a4810185905260c481018490529091506001600160a01b0389169063d505accf9060e4015f604051808303815f87803b158015610ed2575f80fd5b505af1158015610ee4573d5f803e3d5ffd5b505060405163079cc67960e41b8152336004820152602481018490526001600160a01b038b1692506379cc679091506044015f604051808303815f87803b158015610f2d575f80fd5b505af1158015610f3f573d5f803e3d5ffd5b505050505f610f4c611fb3565b90506001600160a01b038916337f3ab970a848f33363427e47cfbd7a627af0c6e72757f150137e38cef3cee24d938a8a610f8586612003565b604051610f9493929190613d91565b60405180910390a3505050505050505050565b5f6110307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611007573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061102b9190613db5565b612078565b905090565b5f61104260066012613dcc565b61104d90600a613c60565b611060906001600160801b038416613c6e565b92915050565b61106e6119ff565b6110766120c8565b565b611080611ba0565b61108981611bd0565b61109c6106e160e0830160c08401613920565b6110ad610100820160e08301613876565b6001600160801b03165f036110d557604051631f2a200560e01b815260040160405180910390fd5b6110e560c0820160a08301613994565b6001600160401b03164311611130574361110560c0830160a08401613994565b6040516374276dcf60e11b815260048101929092526001600160401b03166024820152604401610777565b5f61113a82611d8f565b905061114581611e98565b611163815f908152600a60205260409020805460ff19166001179055565b5f61116c611fb3565b90507f3cb8789e9bf6f532eec2bc8ffee9b622fc0d6e6daefb7fb6bb2e2f7b2d62e4528261119983612003565b6040516111a7929190613de5565b60405180910390a1505050565b6111c060066012613dcc565b6111cb90600a613c60565b81565b6111d66119ff565b6111de611ba0565b600354600160401b900460ff161561120957604051633dbff3b560e01b815260040160405180910390fd5b5f61124a7f00000000000000000000000000000000000000000000000000000000000000006112388580613a51565b6112456020880188613a51565b612127565b90505f61127b7f00000000000000000000000000000000000000000000000000000000000000006112388580613a51565b6003805460ff60401b1916600160401b17905590507fc255ddc45163282f24909556f7475ab4ec8eb1d51763b25a4560cee9f43d06456112bb8580613a51565b9050836112c88680613a51565b6040516112ef94939250869093845260208401929092526040830152606082015260800190565b60405180910390a150505050565b6113056119ff565b6110765f612266565b5f6110307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611007573d5f803e3d5ffd5b5f546001600160a01b031633148015906113a1575061138b611447565b6001600160a01b0316336001600160a01b031614155b156113c15760405163354de03160e21b8152336004820152602401610777565b6110766122d6565b6113d16119ff565b6001600160a01b0381166113f85760405163a91f6a8960e01b815260040160405180910390fd5b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f064d28d3d3071c5cbc271a261c10c2f0f0d9e319390397101aa0eb23c6bad9099190a35050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b5f61147e61231e565b805490915060ff600160401b82041615906001600160401b03165f811580156114a45750825b90505f826001600160401b031660011480156114bf5750303b155b9050811580156114cd575080155b156114eb5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561151557845460ff60401b1916600160401b1785555b6001600160a01b038b1661153c576040516314030c0360e11b815260040160405180910390fd5b6001600160a01b038a166115635760405163a91f6a8960e01b815260040160405180910390fd5b88158061156e575087155b80611577575086155b156115975760405163665c282b60e01b81525f6004820152602401610777565b856001600160801b03165f036115c057604051632440a7dd60e01b815260040160405180910390fd5b6115c98b612346565b6115d1612357565b5f80546001600160a01b0319166001600160a01b038c161790556115f789888a89611b4f565b600880546001600160801b0319166001600160801b03881617905560405189907fac3566d46c25f65b48d269870da4b9349704c79de13ad49b115532834d7e7ed1905f90a2831561168257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050565b611697611ba0565b81158015906116f55750600283836116b0600182613e0d565b8181106116bf576116bf613ab1565b90506020028101906116d19190613e20565b6116e2906040810190602001613e34565b60028111156116f3576116f3613df9565b145b156117135760405163bf3d210b60e01b815260040160405180910390fd5b60065461173357604051632c1dfd4f60e11b815260040160405180910390fd5b5f61173d8561235f565b6002549091505f846001600160401b0381111561175c5761175c613a9d565b604051908082528060200260200182016040528015611785578160200160208202803683370190505b5090505f856001600160401b038111156117a1576117a1613a9d565b6040519080825280602002602001820160405280156117ca578160200160208202803683370190505b5090505f6117da88888585612524565b90505f5b878110156119b657368989838181106117f9576117f9613ab1565b905060200281019061180b9190613e20565b600180549192505f91611829916001600160401b0390911690613e52565b90506001600160401b0381166118426020840184613994565b6001600160401b03161461188a578061185e6020840184613994565b604051635efa452960e11b81526001600160401b03928316600482015291166024820152604401610777565b600261189c6040840160208501613e34565b60028111156118ad576118ad613df9565b036118c4576118bd82888b61278b565b96506119ac565b5f6118d56040840160208501613e34565b60028111156118e6576118e6613df9565b03611901576118f78289898c612974565b90985096506119ac565b60016119136040840160208501613e34565b600281111561192457611924613df9565b0361196c576118bd8289898787148a888151811061194457611944613ab1565b60200260200101518a898151811061195e5761195e613ab1565b60200260200101518f612b61565b61197c6040830160208401613e34565b600281111561198d5761198d613df9565b60405163b99607f960e01b815260ff9091166004820152602401610777565b50506001016117de565b50505050505050505050565b6119ca6119ff565b6001600160a01b0381166119f357604051631e4fbdf760e01b81525f6004820152602401610777565b6119fc81612266565b50565b33611a08611447565b6001600160a01b0316146110765760405163118cdaa760e01b8152336004820152602401610777565b5f805f85515f03611a575760405163665c282b60e01b81525f6004820152602401610777565b8451865114611a795760405163512509d360e11b815260040160405180910390fd5b5f805b8751811015611b33575f888281518110611a9857611a98613ab1565b602002602001015190505f888381518110611ab557611ab5613ab1565b602002602001015190505f6001600160a01b0316826001600160a01b03161480611add575080155b80611afa5750836001600160a01b0316826001600160a01b031611155b15611b1b5760405163665c282b60e01b815260048101849052602401610777565b611b258187613ca4565b955090925050600101611a7c565b5086519150611b43878787612df3565b93505093509350939050565b60408051608081018252848152602081018490529081018590526001600160801b039091166060909101819052600492909255600555600691909155600780546001600160801b0319169091179055565b5f805160206143728339815191525460ff16156110765760405163d93c066560e01b815260040160405180910390fd5b466001600160401b038116611beb6060840160408501613994565b6001600160401b031614611c365780611c0a6060840160408501613994565b6040516332e3634d60e21b81526001600160401b03928316600482015291166024820152604401610777565b5050565b6001600160a01b038116611c6c57604051635f8b555b60e11b81526001600160a01b0382166004820152602401610777565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161580611cc957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316155b15611cf257604051635f8b555b60e11b81526001600160a01b0382166004820152602401610777565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031614158015611d6657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031614155b156119fc57604051635f8b555b60e11b81526001600160a01b0382166004820152602401610777565b5f8135611da26040840160208501613994565b611db26060850160408601613994565b611dc26080860160608701613876565b611dd260a0870160808801613920565b611de260c0880160a08901613994565b611df260e0890160c08a01613920565b611e036101008a0160e08b01613876565b611e156101208b016101008c01613876565b60408051602081019a909a526001600160401b03988916908a015295871660608901526001600160801b0394851660808901526001600160a01b0393841660a08901529590911660c08701521660e08501529182166101008401521661012082015261014001604051602081830303815290604052805190602001209050919050565b5f818152600a602052604090205460ff16156119fc57604051632910aca360e01b815260048101829052602401610777565b5f7f28bf99522b0d2f26a76cdeda71578156383bbae91175ca503165cfdbbd1ff34a4630611ef787611d8f565b6040805160208101959095528401929092526001600160a01b0316606083015260808201526001600160801b0380851660a0830152831660c082015260e0015b6040516020818303038152906040528051906020012090505b9392505050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c91909152603c902090565b5f805f80611f98878787612e09565b925092509250611fa88282612e50565b509095945050505050565b5f8054611fd190600160a01b90046001600160401b03166001613e52565b5f805467ffffffffffffffff60a01b1916600160a01b6001600160401b03841602179055905061200081612f08565b90565b604080516080810182525f808252602082018190529181018290526060810191909152604080516080810182526001600160401b038085168252600154166020820152908101612051610fa7565b6001600160801b0316815260200161206761130e565b6001600160801b0316905292915050565b5f8061208660066012613dcc565b61209190600a613c60565b61209b9084613c85565b90506001600160801b0381111561106057604051639940a77560e01b815260048101829052602401610777565b6120d06130d1565b5f80516020614372833981519152805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b5f8382146121485760405163512509d360e11b815260040160405180910390fd5b5f5b8481101561225c575f86868381811061216557612165613ab1565b905060200201602081019061217a9190613920565b90505f85858481811061218f5761218f613ab1565b60200291909101359150506001600160a01b0382166121c457604051633bca2f5160e21b815260048101849052602401610777565b805f036121e457604051631f2a200560e01b815260040160405180910390fd5b6040516340c10f1960e01b81526001600160a01b038381166004830152602482018390528a16906340c10f19906044015f604051808303815f87803b15801561222b575f80fd5b505af115801561223d573d5f803e3d5ffd5b50505050808461224d9190613ca4565b9350505080600101905061214a565b5095945050505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6122de611ba0565b5f80516020614372833981519152805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612109565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00611060565b61234e613100565b6119fc81613125565b611076613100565b6123916040518060a0016040528060608152602001606081526020015f80191681526020015f81526020015f81525090565b5f80806124226123a18680613a51565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506123df925050506020880188613a51565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250506007546001600160801b03169150611a319050565b9250925092506004600201548314158061243e57506004548214155b8061244b57506005548114155b1561247757600654604051633b21437560e21b8152600481019190915260248101849052604401610777565b6040805160a081019091528061248d8780613a51565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152505050908252506020908101906124d290880188613a51565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152505050908252506020810194909452604084019290925260609092019190915292915050565b825f816001600160401b0381111561253e5761253e613a9d565b604051908082528060200260200182016040528015612567578160200160208202803683370190505b5090505f80865b80156125d95761257d81613e72565b9050600289898381811061259357612593613ab1565b90506020028101906125a59190613e20565b6125b6906040810190602001613e34565b60028111156125c7576125c7613df9565b146125d4578094506125d9565b61256e565b505f5b8781101561277f575f8989838181106125f7576125f7613ab1565b90506020028101906126099190613e20565b61261a906040810190602001613e34565b9050600181600281111561263057612630613df9565b0361266f5781858563ffffffff168151811061264e5761264e613ab1565b63ffffffff9092166020928302919091019091015261266c84613e87565b93505b5f81600281111561268257612682613df9565b148061268d57508582145b15612776578989838181106126a4576126a4613ab1565b90506020028101906126b69190613e20565b6126c4906060810190613a51565b6126cf915084613ea9565b925063ffffffff841615612776575f5b8463ffffffff1681101561276e575f86828151811061270057612700613ab1565b602002602001015163ffffffff169050858a828151811061272357612723613ab1565b602002602001019063ffffffff16908163ffffffff16815250508489828151811061275057612750613ab1565b63ffffffff90921660209283029190910190910152506001016126df565b505f93505f92505b506001016125dc565b50505050949350505050565b5f8061279a6040860186613ae3565b8101906127a79190613f1e565b90506127b66060860186613a51565b90506001146127f15760016127ce6060870187613a51565b604051636b01174760e11b81526004810193909352602483015250604401610777565b6128096128016020870187613994565b82518661312d565b91505f61284761281884611f57565b6128256060890189613a51565b5f81811061283557612835613ab1565b905060200281019061092c9190613ae3565b9050815f01516001600160a01b0316816001600160a01b031614612894578151604051630be4b0e160e01b81526001600160a01b0391821660048201529082166024820152604401610777565b81516001600160a01b039081165f9081526009602090815260408083208054875190951684529083209290925590916001600160801b0380821692600160801b90920416906128e5908a018a613994565b6001805467ffffffffffffffff19166001600160401b039290921691909117905560028690555f612914611fb3565b86519091506001600160a01b03167ff92f117a698345a1b681cf04280fb5da65a05a9ac88aaacad3e9ee273ce570fd84848b61294f86612003565b60405161295f9493929190613f65565b60405180910390a25050505050509392505050565b6129a66040518060a0016040528060608152602001606081526020015f80191681526020015f81526020015f81525090565b5f806129b56040880188613ae3565b8101906129c29190614028565b905080602001516001600160801b03165f036129f157604051632440a7dd60e01b815260040160405180910390fd5b5f805f612a10845f01515f0151855f0151602001518660200151611a31565b91945092509050612a43612a2760208c018c613994565b60408b015186518051602091820151918901519091908d613194565b9450612a7585612a5660608d018d613a51565b612a5f91614145565b8b5160208d015160608e015160808f01516131c9565b612a858383838760200151611b4f565b602084810151600880546001600160801b0319166001600160801b03909216919091179055612ab6908b018b613994565b6001805467ffffffffffffffff19166001600160401b039290921691909117905560028590555f612ae5611fb3565b90507fb3dbfeab9c5013403dc2f2300318b92643b1cb9323077d549b4f93bbddded9638489612b1384612003565b604051612b2293929190614204565b60405180910390a1506040805160a081018252855151815294516020908101519086015284019290925260608301526080820152915094509492505050565b5f80612b7060408a018a613ae3565b810190612b7d919061421f565b60408101519091506001600160a01b0316612bab5760405163611b32ab60e01b815260040160405180910390fd5b80516001600160801b0316158015612bce575060208101516001600160801b0316155b15612bfd576040808201519051632edcd91760e21b81526001600160a01b039091166004820152602401610777565b63ffffffff85161580612c14575063ffffffff8416155b15612c43576040808201519051632edcd91760e21b81526001600160a01b039091166004820152602401610777565b6040808201516001600160a01b03165f90815260096020522080546001600160801b0316151580612c8457508054600160801b90046001600160801b031615155b15612cb357604080830151905163cb96603760e01b81526001600160a01b039091166004820152602401610777565b612cdc612cc360208c018c613994565b8a60400151845f0151856020015186604001518d61320e565b92508615612cf557612cf583612a5660608d018d613a51565b60408051808201825283516001600160801b0390811682526020808601518216818401908152868501516001600160a01b03165f9081526009835294909420925193518216600160801b0293909116929092179055612d56908b018b613994565b6001805467ffffffffffffffff19166001600160401b039290921691909117905560028390555f612d85611fb3565b905082604001516001600160a01b03167fc0f81072946eba75f62302dad0fe56dd420d0b9d311e15b61bbe6e056c29908d845f015185602001518a8a8a612dcb88612003565b604051612ddd96959493929190614288565b60405180910390a2505050979650505050505050565b5f838383604051602001611f37939291906142c9565b5f80806041849003612e3d578435602086013560408701355f1a612e2f8982858561323c565b955095509550505050612e47565b505f915060029050825b93509350939050565b5f826003811115612e6357612e63613df9565b03612e6c575050565b6001826003811115612e8057612e80613df9565b03612e9e5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115612eb257612eb2613df9565b03612ed35760405163fce698f760e01b815260048101829052602401610777565b6003826003811115612ee757612ee7613df9565b03611c36576040516335e2f38360e21b815260048101829052602401610777565b60035443906001600160401b03165f03612fca576003805467ffffffffffffffff19166001908117909155604080516060810182526001600160401b03938416815293831660208086018281529286019182525f93909352600b90925292517f72c6bfb7988af3a1efa6568f02a999bc52252641c659d85961ca3d372b57d5cf8054945192518416600160801b0267ffffffffffffffff60801b19938516600160401b026001600160801b031990961692909416919091179390931716179055565b6003546001600160401b039081165f908152600b60205260409020805490918381169116036130205780546001600160401b03909316600160801b0267ffffffffffffffff60801b199093169290921790915550565b6003545f90613039906001600160401b03166001613e52565b600380546001600160401b0392831667ffffffffffffffff19909116811790915560408051606081018252958316865295821660208087018281528789019283525f938452600b9091529690912094518554965191518316600160801b0267ffffffffffffffff60801b19928416600160401b026001600160801b031990981691909316179590951794909416939093179091555050565b5f805160206143728339815191525460ff1661107657604051638dfc202b60e01b815260040160405180910390fd5b613108613304565b61107657604051631afcd79f60e31b815260040160405180910390fd5b6119ca613100565b604080517fad7e1df8fff16b907a93b4116c7590060dfa3b9c396a8b815e8290b0dff45cba602082015246918101919091523060608201526001600160401b03841660808201526001600160a01b03831660a082015260c081018290525f9060e001611f37565b5f806131a1868686612df3565b90506131bb88885f846131b58b8b8b61331d565b88613388565b9150505b9695505050505050565b5f806131d78888888861343a565b915091506131e7828286866135ad565b6132045760405163079842ab60e41b815260040160405180910390fd5b5050505050505050565b5f613231878760016001600160a01b03871661322b8a8a8a613611565b87613388565b979650505050505050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561327557505f915060039050826132fa565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156132c6573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b0381166132f157505f9250600191508290506132fa565b92505f91508190505b9450945094915050565b5f61330d61231e565b54600160401b900460ff16919050565b5f7f82ce6440aa5dde11f3613892819b630b62342bacf93e16a292d5c8783aafa4c3463061334c878787612df3565b6040805160208101959095528401929092526001600160a01b0316606083015260808201526001600160801b03831660a082015260c001611f37565b5f7f41936771719a172aa959076ca6aafb826eaf332dd0c9e7860901c398ef42da05463089898960028111156133c0576133c0613df9565b6040805160208101979097528601949094526001600160a01b0390921660608501526001600160401b0316608084015260a083015260ff1660c082015260e0810185905261010081018490526101208101839052610140016040516020818303038152906040528051906020012090509695505050505050565b5f805f8061344788611f57565b90505f805b88518110156135a0575f613479848b848151811061346c5761346c613ab1565b602002602001015161366d565b9050846001600160a01b0316816001600160a01b0316116134ad576040516309cf9e4960e11b815260040160405180910390fd5b8851831080156134e75750806001600160a01b03168984815181106134d4576134d4613ab1565b60200260200101516001600160a01b0316105b156134fc576134f583614359565b92506134ad565b88518314806135365750806001600160a01b031689848151811061352257613522613ab1565b60200260200101516001600160a01b031614155b156135575760405163665c282b60e01b815260048101839052602401610777565b61356087614359565b965087838151811061357457613574613ab1565b6020026020010151866135879190613ca4565b955093508361359583614359565b92505060010161344c565b5050505094509492505050565b5f806135b98684613e0d565b90506135c684605a613c6e565b6135d1866064613c6e565b106135e0576001915050613609565b6002811115801561360557506135f7846050613c6e565b613602866064613c6e565b10155b9150505b949350505050565b5f7f1cd7f89e34f6154d6f8387a08ffafc689e347b8d5809913b07c58a42995dff664630613640878787613695565b6040805160208101959095528401929092526001600160a01b03166060830152608082015260a001611f37565b5f805f8061367b86866136cb565b92509250925061368b8282612e50565b5090949350505050565b604080516001600160801b0380861660208301528416918101919091526001600160a01b03821660608201525f90608001611f37565b5f805f8351604103613702576020840151604085015160608601515f1a6136f48882858561323c565b95509550955050505061370d565b505081515f91506002905b9250925092565b5f60408284031215613724575f80fd5b50919050565b80356001600160801b0381168114613740575f80fd5b919050565b5f8060408385031215613756575f80fd5b82356001600160401b0381111561376b575f80fd5b61377785828601613714565b9250506137866020840161372a565b90509250929050565b5f6101208284031215613724575f80fd5b5f8061014083850312156137b2575f80fd5b6137bc848461378f565b91506101208301356001600160401b038111156137d7575f80fd5b8301602081860312156137e8575f80fd5b809150509250929050565b80356001600160a01b0381168114613740575f80fd5b5f805f805f805f60e0888a03121561381f575f80fd5b613828886137f3565b96506138366020890161372a565b95506040880135945060608801359350608088013560ff81168114613859575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f60208284031215613886575f80fd5b611f508261372a565b5f61012082840312156138a0575f80fd5b611f50838361378f565b5f80604083850312156138bb575f80fd5b82356001600160401b03808211156138d1575f80fd5b6138dd86838701613714565b935060208501359150808211156138f2575f80fd5b506138ff85828601613714565b9150509250929050565b5f60208284031215613919575f80fd5b5035919050565b5f60208284031215613930575f80fd5b611f50826137f3565b5f805f805f8060c0878903121561394e575f80fd5b613957876137f3565b9550613965602088016137f3565b945060408701359350606087013592506080870135915061398860a0880161372a565b90509295509295509295565b5f602082840312156139a4575f80fd5b81356001600160401b0381168114611f50575f80fd5b5f805f80606085870312156139cd575f80fd5b84356001600160401b03808211156139e3575f80fd5b6139ef88838901613714565b95506020870135915080821115613a04575f80fd5b818701915087601f830112613a17575f80fd5b813581811115613a25575f80fd5b8860208260051b8501011115613a39575f80fd5b95986020929092019750949560400135945092505050565b5f808335601e19843603018112613a66575f80fd5b8301803591506001600160401b03821115613a7f575f80fd5b6020019150600581901b3603821315613a96575f80fd5b9250929050565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112613ad9575f80fd5b9190910192915050565b5f808335601e19843603018112613af8575f80fd5b8301803591506001600160401b03821115613b11575f80fd5b602001915036819003821315613a96575f80fd5b634e487b7160e01b5f52601160045260245ffd5b6001600160801b03828116828216039080821115613b5957613b59613b25565b5092915050565b6001600160801b03818116838216019080821115613b5957613b59613b25565b600181815b80851115613bba57815f1904821115613ba057613ba0613b25565b80851615613bad57918102915b93841c9390800290613b85565b509250929050565b5f82613bd057506001611060565b81613bdc57505f611060565b8160018114613bf25760028114613bfc57613c18565b6001915050611060565b60ff841115613c0d57613c0d613b25565b50506001821b611060565b5060208310610133831016604e8410600b8410161715613c3b575081810a611060565b613c458383613b80565b805f1904821115613c5857613c58613b25565b029392505050565b5f611f5060ff841683613bc2565b808202811582820484141761106057611060613b25565b5f82613c9f57634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561106057611060613b25565b6001600160401b038082511683528060208301511660208401525060408101516001600160801b03808216604085015280606084015116606085015250505050565b5f610100808301888452602060018060a01b03808a16602087015260406001600160801b03808b16604089015260608660608a01528596508a518087526101208a01975060208c0196505f5b81811015613d78578751805187168a52878101518516888b01528501518416858a01529782019796860196600101613d45565b5050505050505050809150506131bf6080830184613cb7565b6001600160801b03841681526020810183905260c081016136096040830184613cb7565b5f60208284031215613dc5575f80fd5b5051919050565b60ff828116828216039081111561106057611060613b25565b82815260a08101611f506020830184613cb7565b634e487b7160e01b5f52602160045260245ffd5b8181038181111561106057611060613b25565b5f8235607e19833603018112613ad9575f80fd5b5f60208284031215613e44575f80fd5b813560038110611f50575f80fd5b6001600160401b03818116838216019080821115613b5957613b59613b25565b5f81613e8057613e80613b25565b505f190190565b5f63ffffffff808316818103613e9f57613e9f613b25565b6001019392505050565b63ffffffff818116838216019080821115613b5957613b59613b25565b604080519081016001600160401b0381118282101715613ee857613ee8613a9d565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613f1657613f16613a9d565b604052919050565b5f60208284031215613f2e575f80fd5b604051602081018181106001600160401b0382111715613f5057613f50613a9d565b604052613f5c836137f3565b81529392505050565b6001600160801b038581168252841660208201526040810183905260e08101613f916060830184613cb7565b95945050505050565b5f6001600160401b03821115613fb257613fb2613a9d565b5060051b60200190565b5f82601f830112613fcb575f80fd5b81356020613fe0613fdb83613f9a565b613eee565b8083825260208201915060208460051b870101935086841115614001575f80fd5b602086015b8481101561401d5780358352918301918301614006565b509695505050505050565b5f6020808385031215614039575f80fd5b82356001600160401b038082111561404f575f80fd5b9084019060408287031215614062575f80fd5b61406a613ec6565b823582811115614078575f80fd5b830160408189031215614089575f80fd5b614091613ec6565b81358481111561409f575f80fd5b8201601f81018a136140af575f80fd5b80356140bd613fdb82613f9a565b81815260059190911b8201880190888101908c8311156140db575f80fd5b928901925b82841015614100576140f1846137f3565b825292890192908901906140e0565b84525050508186013584811115614115575f80fd5b6141218a828501613fbc565b828801525082525061413483850161372a565b848201528094505050505092915050565b5f614152613fdb84613f9a565b80848252602080830192508560051b85013681111561416f575f80fd5b855b818110156141f85780356001600160401b038082111561418f575f80fd5b90880190601f36818401126141a2575f80fd5b8235828111156141b4576141b4613a9d565b6141c5818301601f19168801613eee565b925080835236878286010111156141da575f80fd5b80878501888501375f90830187015250865250938201938201614171565b50919695505050505050565b8381526020810183905260c081016136096040830184613cb7565b5f6060828403121561422f575f80fd5b604051606081018181106001600160401b038211171561425157614251613a9d565b60405261425d8361372a565b815261426b6020840161372a565b602082015261427c604084016137f3565b60408201529392505050565b6001600160801b0387811682528616602082015263ffffffff85811660408301528416606082015260808101839052610120810161323160a0830184613cb7565b606080825284519082018190525f906020906080840190828801845b8281101561430a5781516001600160a01b0316845292840192908401906001016142e5565b505050838103828501528551808252868301918301905f5b8181101561433e57835183529284019291840191600101614322565b50506001600160801b03861660408601529250613609915050565b5f6001820161436a5761436a613b25565b506001019056fecd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300a26469706673582212203a214c965eb3956ff07c645a3f97f11e09a50d6ac5d1cd5276785c6492dc75a964736f6c63430008180033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {},\n \"immutableReferences\": {\n \"10415\": [\n {\n \"length\": 32,\n \"start\": 1065\n },\n {\n \"length\": 32,\n \"start\": 2912\n },\n {\n \"length\": 32,\n \"start\": 4013\n },\n {\n \"length\": 32,\n \"start\": 4623\n },\n {\n \"length\": 32,\n \"start\": 7278\n },\n {\n \"length\": 32,\n \"start\": 7412\n }\n ],\n \"10418\": [\n {\n \"length\": 32,\n \"start\": 735\n },\n {\n \"length\": 32,\n \"start\": 4690\n },\n {\n \"length\": 32,\n \"start\": 4884\n },\n {\n \"length\": 32,\n \"start\": 7327\n },\n {\n \"length\": 32,\n \"start\": 7473\n }\n ]\n },\n \"inputSourceName\": \"project/contracts/MintingGateway.sol\",\n \"buildInfoId\": \"solc-0_8_24-0b1aeb87b938c690e17cb94e6c60ba6e2ad7e4c9\"\n}","{\n \"_format\": \"hh3-artifact-1\",\n \"contractName\": \"ProxyAdmin\",\n \"sourceName\": \"contracts/ProxyArtifacts.sol\",\n \"abi\": [\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"initialOwner\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableInvalidOwner\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableUnauthorizedAccount\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"previousOwner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnershipTransferred\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"UPGRADE_INTERFACE_VERSION\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"owner\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"renounceOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"transferOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract ITransparentUpgradeableProxy\",\n \"name\": \"proxy\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"upgradeAndCall\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x608060405234801561000f575f80fd5b506040516104fe3803806104fe83398101604081905261002e916100bd565b80806001600160a01b03811661005d57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100668161006e565b5050506100ea565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cd575f80fd5b81516001600160a01b03811681146100e3575f80fd5b9392505050565b610407806100f75f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610372565b3480156100e9575f80fd5b506100616100f836600461038b565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061014890869086906004016103a6565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff808211156102a9575f80fd5b818601915086601f8301126102bc575f80fd5b8135818111156102ce576102ce61024c565b604051601f8201601f19908116603f011681019083821181831017156102f6576102f661024c565b8160405282815289602084870101111561030e575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f81518084525f5b8181101561035357602081850181015186830182015201610337565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610384602083018461032f565b9392505050565b5f6020828403121561039b575f80fd5b813561038481610238565b6001600160a01b03831681526040602082018190525f906103c99083018461032f565b94935050505056fea2646970667358221220a77b010ffc05154c8ed3b21e0cdf2179e335e6d013ff360980053dbb46437bf164736f6c63430008180033\",\n \"deployedBytecode\": \"0x608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610372565b3480156100e9575f80fd5b506100616100f836600461038b565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061014890869086906004016103a6565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff808211156102a9575f80fd5b818601915086601f8301126102bc575f80fd5b8135818111156102ce576102ce61024c565b604051601f8201601f19908116603f011681019083821181831017156102f6576102f661024c565b8160405282815289602084870101111561030e575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f81518084525f5b8181101561035357602081850181015186830182015201610337565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610384602083018461032f565b9392505050565b5f6020828403121561039b575f80fd5b813561038481610238565b6001600160a01b03831681526040602082018190525f906103c99083018461032f565b94935050505056fea2646970667358221220a77b010ffc05154c8ed3b21e0cdf2179e335e6d013ff360980053dbb46437bf164736f6c63430008180033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {},\n \"immutableReferences\": {},\n \"inputSourceName\": \"project/contracts/ProxyArtifacts.sol\",\n \"buildInfoId\": \"solc-0_8_24-0b1aeb87b938c690e17cb94e6c60ba6e2ad7e4c9\"\n}","{\n \"_format\": \"hh3-artifact-1\",\n \"contractName\": \"TransparentUpgradeableProxy\",\n \"sourceName\": \"contracts/ProxyArtifacts.sol\",\n \"abi\": [\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"logic\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"initialOwner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"payable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"target\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AddressEmptyCode\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"admin\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC1967InvalidAdmin\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC1967InvalidImplementation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ERC1967NonPayable\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ERC1967ProxyUninitialized\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"FailedCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ProxyDeniedAdminAccess\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"previousAdmin\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"newAdmin\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AdminChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Upgraded\",\n \"type\": \"event\"\n },\n {\n \"stateMutability\": \"payable\",\n \"type\": \"fallback\"\n }\n ],\n \"bytecode\": \"0x60a0604052604051610d9c380380610d9c8339810160408190526100229161036c565b82828282818051610046576040516330a289cf60e21b815260040160405180910390fd5b61005082826100b1565b50508160405161005f90610330565b6001600160a01b039091168152602001604051809103905ff080158015610088573d5f803e3d5ffd5b506001600160a01b03166080526100a66100a160805190565b61010f565b50505050505061044e565b6100ba8261017c565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115610103576100fe82826101fa565b505050565b61010b61029b565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61014e5f80516020610d7c833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a1610179816102bc565b50565b806001600160a01b03163b5f036101b657604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b60605f61020784846102f9565b905080801561022857505f3d118061022857505f846001600160a01b03163b115b1561023d5761023561030c565b915050610295565b801561026757604051639996b31560e01b81526001600160a01b03851660048201526024016101ad565b3d1561027a57610275610325565b610293565b60405163d6bda27560e01b815260040160405180910390fd5b505b92915050565b34156102ba5760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b0381166102e557604051633173bdd160e11b81525f60048201526024016101ad565b805f80516020610d7c8339815191526101d9565b5f805f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b6104fc8061088083390190565b80516001600160a01b0381168114610353575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f805f6060848603121561037e575f80fd5b6103878461033d565b9250602061039681860161033d565b60408601519093506001600160401b03808211156103b2575f80fd5b818701915087601f8301126103c5575f80fd5b8151818111156103d7576103d7610358565b604051601f8201601f19908116603f011681019083821181831017156103ff576103ff610358565b816040528281528a86848701011115610416575f80fd5b5f93505b82841015610437578484018601518185018701529285019261041a565b5f8684830101528096505050505050509250925092565b60805161041b6104655f395f6010015261041b5ff3fe608060405261000c61000e565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361007a575f356001600160e01b03191663278f794360e11b14610070576040516334ad5dbb60e21b815260040160405180910390fd5b610078610082565b565b6100786100b0565b5f8061009136600481846102e1565b81019061009e919061031c565b915091506100ac82826100c0565b5050565b6100786100bb61011a565b610151565b6100c98261016f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156101125761010d82826101ea565b505050565b6100ac61028b565b5f61014c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e80801561016b573d5ff35b3d5ffd5b806001600160a01b03163b5f036101a957604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f6101f784846102aa565b905080801561021857505f3d118061021857505f846001600160a01b03163b115b1561022d576102256102bd565b915050610285565b801561025757604051639996b31560e01b81526001600160a01b03851660048201526024016101a0565b3d1561026a576102656102d6565b610283565b60405163d6bda27560e01b815260040160405180910390fd5b505b92915050565b34156100785760405163b398979f60e01b815260040160405180910390fd5b5f805f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b5f80858511156102ef575f80fd5b838611156102fb575f80fd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f806040838503121561032d575f80fd5b82356001600160a01b0381168114610343575f80fd5b9150602083013567ffffffffffffffff8082111561035f575f80fd5b818501915085601f830112610372575f80fd5b81358181111561038457610384610308565b604051601f8201601f19908116603f011681019083821181831017156103ac576103ac610308565b816040528281528860208487010111156103c4575f80fd5b826020860160208301375f602084830101528095505050505050925092905056fea264697066735822122003fe3380608f83dc64b6ab04abfdbeb77e575c0db025da8987b304f5b8a53c8d64736f6c63430008180033608060405234801561000f575f80fd5b506040516104fc3803806104fc83398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b610407806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610372565b3480156100e9575f80fd5b506100616100f836600461038b565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061014890869086906004016103a6565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff808211156102a9575f80fd5b818601915086601f8301126102bc575f80fd5b8135818111156102ce576102ce61024c565b604051601f8201601f19908116603f011681019083821181831017156102f6576102f661024c565b8160405282815289602084870101111561030e575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f81518084525f5b8181101561035357602081850181015186830182015201610337565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610384602083018461032f565b9392505050565b5f6020828403121561039b575f80fd5b813561038481610238565b6001600160a01b03831681526040602082018190525f906103c99083018461032f565b94935050505056fea26469706673582212208a952449a6513ce6e7c752fad582ca8ddfcf06eb769c229368d768903cc14def64736f6c63430008180033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103\",\n \"deployedBytecode\": \"0x608060405261000c61000e565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361007a575f356001600160e01b03191663278f794360e11b14610070576040516334ad5dbb60e21b815260040160405180910390fd5b610078610082565b565b6100786100b0565b5f8061009136600481846102e1565b81019061009e919061031c565b915091506100ac82826100c0565b5050565b6100786100bb61011a565b610151565b6100c98261016f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156101125761010d82826101ea565b505050565b6100ac61028b565b5f61014c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e80801561016b573d5ff35b3d5ffd5b806001600160a01b03163b5f036101a957604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f6101f784846102aa565b905080801561021857505f3d118061021857505f846001600160a01b03163b115b1561022d576102256102bd565b915050610285565b801561025757604051639996b31560e01b81526001600160a01b03851660048201526024016101a0565b3d1561026a576102656102d6565b610283565b60405163d6bda27560e01b815260040160405180910390fd5b505b92915050565b34156100785760405163b398979f60e01b815260040160405180910390fd5b5f805f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b5f80858511156102ef575f80fd5b838611156102fb575f80fd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f806040838503121561032d575f80fd5b82356001600160a01b0381168114610343575f80fd5b9150602083013567ffffffffffffffff8082111561035f575f80fd5b818501915085601f830112610372575f80fd5b81358181111561038457610384610308565b604051601f8201601f19908116603f011681019083821181831017156103ac576103ac610308565b816040528281528860208487010111156103c4575f80fd5b826020860160208301375f602084830101528095505050505050925092905056fea264697066735822122003fe3380608f83dc64b6ab04abfdbeb77e575c0db025da8987b304f5b8a53c8d64736f6c63430008180033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {},\n \"immutableReferences\": {\n \"1213\": [\n {\n \"length\": 32,\n \"start\": 16\n }\n ]\n },\n \"inputSourceName\": \"project/contracts/ProxyArtifacts.sol\",\n \"buildInfoId\": \"solc-0_8_24-0b1aeb87b938c690e17cb94e6c60ba6e2ad7e4c9\"\n}","//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ArgonToken\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const argonTokenAbi = [\n {\n type: 'constructor',\n inputs: [{ name: 'gateway', internalType: 'address', type: 'address' }],\n stateMutability: 'nonpayable',\n },\n { type: 'error', inputs: [], name: 'ECDSAInvalidSignature' },\n {\n type: 'error',\n inputs: [{ name: 'length', internalType: 'uint256', type: 'uint256' }],\n name: 'ECDSAInvalidSignatureLength',\n },\n {\n type: 'error',\n inputs: [{ name: 's', internalType: 'bytes32', type: 'bytes32' }],\n name: 'ECDSAInvalidSignatureS',\n },\n {\n type: 'error',\n inputs: [\n { name: 'spender', internalType: 'address', type: 'address' },\n { name: 'allowance', internalType: 'uint256', type: 'uint256' },\n { name: 'needed', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'ERC20InsufficientAllowance',\n },\n {\n type: 'error',\n inputs: [\n { name: 'sender', internalType: 'address', type: 'address' },\n { name: 'balance', internalType: 'uint256', type: 'uint256' },\n { name: 'needed', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'ERC20InsufficientBalance',\n },\n {\n type: 'error',\n inputs: [{ name: 'approver', internalType: 'address', type: 'address' }],\n name: 'ERC20InvalidApprover',\n },\n {\n type: 'error',\n inputs: [{ name: 'receiver', internalType: 'address', type: 'address' }],\n name: 'ERC20InvalidReceiver',\n },\n {\n type: 'error',\n inputs: [{ name: 'sender', internalType: 'address', type: 'address' }],\n name: 'ERC20InvalidSender',\n },\n {\n type: 'error',\n inputs: [{ name: 'spender', internalType: 'address', type: 'address' }],\n name: 'ERC20InvalidSpender',\n },\n {\n type: 'error',\n inputs: [{ name: 'deadline', internalType: 'uint256', type: 'uint256' }],\n name: 'ERC2612ExpiredSignature',\n },\n {\n type: 'error',\n inputs: [\n { name: 'signer', internalType: 'address', type: 'address' },\n { name: 'owner', internalType: 'address', type: 'address' },\n ],\n name: 'ERC2612InvalidSigner',\n },\n {\n type: 'error',\n inputs: [\n { name: 'account', internalType: 'address', type: 'address' },\n { name: 'currentNonce', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'InvalidAccountNonce',\n },\n {\n type: 'error',\n inputs: [{ name: 'gateway', internalType: 'address', type: 'address' }],\n name: 'InvalidGateway',\n },\n { type: 'error', inputs: [], name: 'InvalidShortString' },\n {\n type: 'error',\n inputs: [{ name: 'caller', internalType: 'address', type: 'address' }],\n name: 'OnlyGateway',\n },\n {\n type: 'error',\n inputs: [{ name: 'str', internalType: 'string', type: 'string' }],\n name: 'StringTooLong',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n { name: 'spender', internalType: 'address', type: 'address', indexed: true },\n { name: 'value', internalType: 'uint256', type: 'uint256', indexed: false },\n ],\n name: 'Approval',\n },\n { type: 'event', anonymous: false, inputs: [], name: 'EIP712DomainChanged' },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'from', internalType: 'address', type: 'address', indexed: true },\n { name: 'to', internalType: 'address', type: 'address', indexed: true },\n { name: 'value', internalType: 'uint256', type: 'uint256', indexed: false },\n ],\n name: 'Transfer',\n },\n {\n type: 'function',\n inputs: [],\n name: 'DOMAIN_SEPARATOR',\n outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address' },\n { name: 'spender', internalType: 'address', type: 'address' },\n ],\n name: 'allowance',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'spender', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'approve',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'account', internalType: 'address', type: 'address' }],\n name: 'balanceOf',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'account', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'burnFrom',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'decimals',\n outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'eip712Domain',\n outputs: [\n { name: 'fields', internalType: 'bytes1', type: 'bytes1' },\n { name: 'name', internalType: 'string', type: 'string' },\n { name: 'version', internalType: 'string', type: 'string' },\n { name: 'chainId', internalType: 'uint256', type: 'uint256' },\n { name: 'verifyingContract', internalType: 'address', type: 'address' },\n { name: 'salt', internalType: 'bytes32', type: 'bytes32' },\n { name: 'extensions', internalType: 'uint256[]', type: 'uint256[]' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'gateway',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'mint',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'name',\n outputs: [{ name: '', internalType: 'string', type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n name: 'nonces',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address' },\n { name: 'spender', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n { name: 'deadline', internalType: 'uint256', type: 'uint256' },\n { name: 'v', internalType: 'uint8', type: 'uint8' },\n { name: 'r', internalType: 'bytes32', type: 'bytes32' },\n { name: 's', internalType: 'bytes32', type: 'bytes32' },\n ],\n name: 'permit',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'symbol',\n outputs: [{ name: '', internalType: 'string', type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'totalSupply',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'transfer',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'from', internalType: 'address', type: 'address' },\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'transferFrom',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ArgonotToken\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const argonotTokenAbi = [\n {\n type: 'constructor',\n inputs: [{ name: 'gateway', internalType: 'address', type: 'address' }],\n stateMutability: 'nonpayable',\n },\n { type: 'error', inputs: [], name: 'ECDSAInvalidSignature' },\n {\n type: 'error',\n inputs: [{ name: 'length', internalType: 'uint256', type: 'uint256' }],\n name: 'ECDSAInvalidSignatureLength',\n },\n {\n type: 'error',\n inputs: [{ name: 's', internalType: 'bytes32', type: 'bytes32' }],\n name: 'ECDSAInvalidSignatureS',\n },\n {\n type: 'error',\n inputs: [\n { name: 'spender', internalType: 'address', type: 'address' },\n { name: 'allowance', internalType: 'uint256', type: 'uint256' },\n { name: 'needed', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'ERC20InsufficientAllowance',\n },\n {\n type: 'error',\n inputs: [\n { name: 'sender', internalType: 'address', type: 'address' },\n { name: 'balance', internalType: 'uint256', type: 'uint256' },\n { name: 'needed', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'ERC20InsufficientBalance',\n },\n {\n type: 'error',\n inputs: [{ name: 'approver', internalType: 'address', type: 'address' }],\n name: 'ERC20InvalidApprover',\n },\n {\n type: 'error',\n inputs: [{ name: 'receiver', internalType: 'address', type: 'address' }],\n name: 'ERC20InvalidReceiver',\n },\n {\n type: 'error',\n inputs: [{ name: 'sender', internalType: 'address', type: 'address' }],\n name: 'ERC20InvalidSender',\n },\n {\n type: 'error',\n inputs: [{ name: 'spender', internalType: 'address', type: 'address' }],\n name: 'ERC20InvalidSpender',\n },\n {\n type: 'error',\n inputs: [{ name: 'deadline', internalType: 'uint256', type: 'uint256' }],\n name: 'ERC2612ExpiredSignature',\n },\n {\n type: 'error',\n inputs: [\n { name: 'signer', internalType: 'address', type: 'address' },\n { name: 'owner', internalType: 'address', type: 'address' },\n ],\n name: 'ERC2612InvalidSigner',\n },\n {\n type: 'error',\n inputs: [\n { name: 'account', internalType: 'address', type: 'address' },\n { name: 'currentNonce', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'InvalidAccountNonce',\n },\n {\n type: 'error',\n inputs: [{ name: 'gateway', internalType: 'address', type: 'address' }],\n name: 'InvalidGateway',\n },\n { type: 'error', inputs: [], name: 'InvalidShortString' },\n {\n type: 'error',\n inputs: [{ name: 'caller', internalType: 'address', type: 'address' }],\n name: 'OnlyGateway',\n },\n {\n type: 'error',\n inputs: [{ name: 'str', internalType: 'string', type: 'string' }],\n name: 'StringTooLong',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n { name: 'spender', internalType: 'address', type: 'address', indexed: true },\n { name: 'value', internalType: 'uint256', type: 'uint256', indexed: false },\n ],\n name: 'Approval',\n },\n { type: 'event', anonymous: false, inputs: [], name: 'EIP712DomainChanged' },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'from', internalType: 'address', type: 'address', indexed: true },\n { name: 'to', internalType: 'address', type: 'address', indexed: true },\n { name: 'value', internalType: 'uint256', type: 'uint256', indexed: false },\n ],\n name: 'Transfer',\n },\n {\n type: 'function',\n inputs: [],\n name: 'DOMAIN_SEPARATOR',\n outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address' },\n { name: 'spender', internalType: 'address', type: 'address' },\n ],\n name: 'allowance',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'spender', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'approve',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'account', internalType: 'address', type: 'address' }],\n name: 'balanceOf',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'account', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'burnFrom',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'decimals',\n outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'eip712Domain',\n outputs: [\n { name: 'fields', internalType: 'bytes1', type: 'bytes1' },\n { name: 'name', internalType: 'string', type: 'string' },\n { name: 'version', internalType: 'string', type: 'string' },\n { name: 'chainId', internalType: 'uint256', type: 'uint256' },\n { name: 'verifyingContract', internalType: 'address', type: 'address' },\n { name: 'salt', internalType: 'bytes32', type: 'bytes32' },\n { name: 'extensions', internalType: 'uint256[]', type: 'uint256[]' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'gateway',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'mint',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'name',\n outputs: [{ name: '', internalType: 'string', type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n name: 'nonces',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address' },\n { name: 'spender', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n { name: 'deadline', internalType: 'uint256', type: 'uint256' },\n { name: 'v', internalType: 'uint8', type: 'uint8' },\n { name: 'r', internalType: 'bytes32', type: 'bytes32' },\n { name: 's', internalType: 'bytes32', type: 'bytes32' },\n ],\n name: 'permit',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'symbol',\n outputs: [{ name: '', internalType: 'string', type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'totalSupply',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'transfer',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'from', internalType: 'address', type: 'address' },\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'transferFrom',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// CanonicalMintableBurnableERC20\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const canonicalMintableBurnableErc20Abi = [\n { type: 'error', inputs: [], name: 'ECDSAInvalidSignature' },\n {\n type: 'error',\n inputs: [{ name: 'length', internalType: 'uint256', type: 'uint256' }],\n name: 'ECDSAInvalidSignatureLength',\n },\n {\n type: 'error',\n inputs: [{ name: 's', internalType: 'bytes32', type: 'bytes32' }],\n name: 'ECDSAInvalidSignatureS',\n },\n {\n type: 'error',\n inputs: [\n { name: 'spender', internalType: 'address', type: 'address' },\n { name: 'allowance', internalType: 'uint256', type: 'uint256' },\n { name: 'needed', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'ERC20InsufficientAllowance',\n },\n {\n type: 'error',\n inputs: [\n { name: 'sender', internalType: 'address', type: 'address' },\n { name: 'balance', internalType: 'uint256', type: 'uint256' },\n { name: 'needed', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'ERC20InsufficientBalance',\n },\n {\n type: 'error',\n inputs: [{ name: 'approver', internalType: 'address', type: 'address' }],\n name: 'ERC20InvalidApprover',\n },\n {\n type: 'error',\n inputs: [{ name: 'receiver', internalType: 'address', type: 'address' }],\n name: 'ERC20InvalidReceiver',\n },\n {\n type: 'error',\n inputs: [{ name: 'sender', internalType: 'address', type: 'address' }],\n name: 'ERC20InvalidSender',\n },\n {\n type: 'error',\n inputs: [{ name: 'spender', internalType: 'address', type: 'address' }],\n name: 'ERC20InvalidSpender',\n },\n {\n type: 'error',\n inputs: [{ name: 'deadline', internalType: 'uint256', type: 'uint256' }],\n name: 'ERC2612ExpiredSignature',\n },\n {\n type: 'error',\n inputs: [\n { name: 'signer', internalType: 'address', type: 'address' },\n { name: 'owner', internalType: 'address', type: 'address' },\n ],\n name: 'ERC2612InvalidSigner',\n },\n {\n type: 'error',\n inputs: [\n { name: 'account', internalType: 'address', type: 'address' },\n { name: 'currentNonce', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'InvalidAccountNonce',\n },\n {\n type: 'error',\n inputs: [{ name: 'gateway', internalType: 'address', type: 'address' }],\n name: 'InvalidGateway',\n },\n { type: 'error', inputs: [], name: 'InvalidShortString' },\n {\n type: 'error',\n inputs: [{ name: 'caller', internalType: 'address', type: 'address' }],\n name: 'OnlyGateway',\n },\n {\n type: 'error',\n inputs: [{ name: 'str', internalType: 'string', type: 'string' }],\n name: 'StringTooLong',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n { name: 'spender', internalType: 'address', type: 'address', indexed: true },\n { name: 'value', internalType: 'uint256', type: 'uint256', indexed: false },\n ],\n name: 'Approval',\n },\n { type: 'event', anonymous: false, inputs: [], name: 'EIP712DomainChanged' },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'from', internalType: 'address', type: 'address', indexed: true },\n { name: 'to', internalType: 'address', type: 'address', indexed: true },\n { name: 'value', internalType: 'uint256', type: 'uint256', indexed: false },\n ],\n name: 'Transfer',\n },\n {\n type: 'function',\n inputs: [],\n name: 'DOMAIN_SEPARATOR',\n outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address' },\n { name: 'spender', internalType: 'address', type: 'address' },\n ],\n name: 'allowance',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'spender', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'approve',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'account', internalType: 'address', type: 'address' }],\n name: 'balanceOf',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'account', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'burnFrom',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'decimals',\n outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'eip712Domain',\n outputs: [\n { name: 'fields', internalType: 'bytes1', type: 'bytes1' },\n { name: 'name', internalType: 'string', type: 'string' },\n { name: 'version', internalType: 'string', type: 'string' },\n { name: 'chainId', internalType: 'uint256', type: 'uint256' },\n { name: 'verifyingContract', internalType: 'address', type: 'address' },\n { name: 'salt', internalType: 'bytes32', type: 'bytes32' },\n { name: 'extensions', internalType: 'uint256[]', type: 'uint256[]' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'gateway',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'mint',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'name',\n outputs: [{ name: '', internalType: 'string', type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n name: 'nonces',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address' },\n { name: 'spender', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n { name: 'deadline', internalType: 'uint256', type: 'uint256' },\n { name: 'v', internalType: 'uint8', type: 'uint8' },\n { name: 'r', internalType: 'bytes32', type: 'bytes32' },\n { name: 's', internalType: 'bytes32', type: 'bytes32' },\n ],\n name: 'permit',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'symbol',\n outputs: [{ name: '', internalType: 'string', type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'totalSupply',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'transfer',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'from', internalType: 'address', type: 'address' },\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'transferFrom',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ICanonicalToken\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iCanonicalTokenAbi = [\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n { name: 'spender', internalType: 'address', type: 'address', indexed: true },\n { name: 'value', internalType: 'uint256', type: 'uint256', indexed: false },\n ],\n name: 'Approval',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'from', internalType: 'address', type: 'address', indexed: true },\n { name: 'to', internalType: 'address', type: 'address', indexed: true },\n { name: 'value', internalType: 'uint256', type: 'uint256', indexed: false },\n ],\n name: 'Transfer',\n },\n {\n type: 'function',\n inputs: [],\n name: 'DOMAIN_SEPARATOR',\n outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address' },\n { name: 'spender', internalType: 'address', type: 'address' },\n ],\n name: 'allowance',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'spender', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'approve',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'account', internalType: 'address', type: 'address' }],\n name: 'balanceOf',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'account', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'burnFrom',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'decimals',\n outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'mint',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n name: 'nonces',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address' },\n { name: 'spender', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n { name: 'deadline', internalType: 'uint256', type: 'uint256' },\n { name: 'v', internalType: 'uint8', type: 'uint8' },\n { name: 'r', internalType: 'bytes32', type: 'bytes32' },\n { name: 's', internalType: 'bytes32', type: 'bytes32' },\n ],\n name: 'permit',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'totalSupply',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'transfer',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'from', internalType: 'address', type: 'address' },\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'transferFrom',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// MintingGateway\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const mintingGatewayAbi = [\n {\n type: 'constructor',\n inputs: [\n { name: 'argonTokenAddress', internalType: 'address', type: 'address' },\n { name: 'argonotTokenAddress', internalType: 'address', type: 'address' },\n ],\n stateMutability: 'nonpayable',\n },\n { type: 'error', inputs: [], name: 'ArrayLengthMismatch' },\n { type: 'error', inputs: [], name: 'ECDSAInvalidSignature' },\n {\n type: 'error',\n inputs: [{ name: 'length', internalType: 'uint256', type: 'uint256' }],\n name: 'ECDSAInvalidSignatureLength',\n },\n {\n type: 'error',\n inputs: [{ name: 's', internalType: 'bytes32', type: 'bytes32' }],\n name: 'ECDSAInvalidSignatureS',\n },\n { type: 'error', inputs: [], name: 'EnforcedPause' },\n { type: 'error', inputs: [], name: 'ExpectedPause' },\n { type: 'error', inputs: [], name: 'GlobalIssuanceCouncilNotBootstrapped' },\n { type: 'error', inputs: [], name: 'GlobalIssuanceCouncilQuorumNotMet' },\n {\n type: 'error',\n inputs: [\n { name: 'authorized', internalType: 'uint256', type: 'uint256' },\n { name: 'required', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'InsufficientAuthorizedCollateral',\n },\n {\n type: 'error',\n inputs: [\n { name: 'expected', internalType: 'uint64', type: 'uint64' },\n { name: 'provided', internalType: 'uint64', type: 'uint64' },\n ],\n name: 'InvalidChainId',\n },\n {\n type: 'error',\n inputs: [\n { name: 'expected', internalType: 'bytes32', type: 'bytes32' },\n { name: 'provided', internalType: 'bytes32', type: 'bytes32' },\n ],\n name: 'InvalidCurrentCouncilSnapshot',\n },\n {\n type: 'error',\n inputs: [{ name: 'index', internalType: 'uint256', type: 'uint256' }],\n name: 'InvalidGlobalIssuanceCouncilMember',\n },\n { type: 'error', inputs: [], name: 'InvalidInitialization' },\n { type: 'error', inputs: [], name: 'InvalidMicrogonCollateralForArgonotPayout' },\n {\n type: 'error',\n inputs: [{ name: 'signingKey', internalType: 'address', type: 'address' }],\n name: 'InvalidMintingAuthority',\n },\n {\n type: 'error',\n inputs: [\n { name: 'expectedSigner', internalType: 'address', type: 'address' },\n { name: 'recoveredSigner', internalType: 'address', type: 'address' },\n ],\n name: 'InvalidMintingAuthorityDeactivationSigner',\n },\n {\n type: 'error',\n inputs: [\n { name: 'expected', internalType: 'uint64', type: 'uint64' },\n { name: 'provided', internalType: 'uint64', type: 'uint64' },\n ],\n name: 'InvalidQueueNonce',\n },\n {\n type: 'error',\n inputs: [\n { name: 'expected', internalType: 'uint256', type: 'uint256' },\n { name: 'provided', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'InvalidSignatureCount',\n },\n { type: 'error', inputs: [], name: 'InvalidSignatureOrder' },\n {\n type: 'error',\n inputs: [\n { name: 'maxRate', internalType: 'uint128', type: 'uint128' },\n { name: 'providedRate', internalType: 'uint128', type: 'uint128' },\n ],\n name: 'InvalidTransferOutRate',\n },\n {\n type: 'error',\n inputs: [{ name: 'kind', internalType: 'uint8', type: 'uint8' }],\n name: 'InvalidUpdateKind',\n },\n { type: 'error', inputs: [], name: 'LatestGatewayUpdateCannotDeactivate' },\n { type: 'error', inputs: [], name: 'MigrationAlreadyCompleted' },\n {\n type: 'error',\n inputs: [{ name: 'signingKey', internalType: 'address', type: 'address' }],\n name: 'MintingAuthorityAlreadyActive',\n },\n {\n type: 'error',\n inputs: [{ name: 'signingKey', internalType: 'address', type: 'address' }],\n name: 'MintingAuthorityTransferCapacityExceeded',\n },\n {\n type: 'error',\n inputs: [{ name: 'caller', internalType: 'address', type: 'address' }],\n name: 'NotGuardianOrOwner',\n },\n { type: 'error', inputs: [], name: 'NotInitializing' },\n {\n type: 'error',\n inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n name: 'OwnableInvalidOwner',\n },\n {\n type: 'error',\n inputs: [{ name: 'account', internalType: 'address', type: 'address' }],\n name: 'OwnableUnauthorizedAccount',\n },\n {\n type: 'error',\n inputs: [{ name: 'amount', internalType: 'uint256', type: 'uint256' }],\n name: 'RuntimeAmountOverflow',\n },\n {\n type: 'error',\n inputs: [{ name: 'transferId', internalType: 'bytes32', type: 'bytes32' }],\n name: 'TransferOutOfArgonAlreadyFinalized',\n },\n {\n type: 'error',\n inputs: [\n { name: 'currentBlock', internalType: 'uint256', type: 'uint256' },\n { name: 'validUntilBlock', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'TransferOutOfArgonExpired',\n },\n {\n type: 'error',\n inputs: [\n { name: 'currentBlock', internalType: 'uint256', type: 'uint256' },\n { name: 'validUntilBlock', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'TransferOutOfArgonNotExpired',\n },\n {\n type: 'error',\n inputs: [{ name: 'token', internalType: 'address', type: 'address' }],\n name: 'UnsupportedToken',\n },\n { type: 'error', inputs: [], name: 'ZeroAdminSafe' },\n { type: 'error', inputs: [], name: 'ZeroAmount' },\n { type: 'error', inputs: [], name: 'ZeroGuardian' },\n { type: 'error', inputs: [], name: 'ZeroMicrogonsPerArgonot' },\n {\n type: 'error',\n inputs: [{ name: 'index', internalType: 'uint256', type: 'uint256' }],\n name: 'ZeroRecipient',\n },\n { type: 'error', inputs: [], name: 'ZeroSigningKey' },\n {\n type: 'event',\n anonymous: false,\n inputs: [{ name: 'councilHash', internalType: 'bytes32', type: 'bytes32', indexed: true }],\n name: 'GlobalIssuanceCouncilBootstrapped',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'previousCouncilHash', internalType: 'bytes32', type: 'bytes32', indexed: true },\n { name: 'councilHash', internalType: 'bytes32', type: 'bytes32', indexed: true },\n ],\n name: 'GlobalIssuanceCouncilForceUpdated',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'councilHash', internalType: 'bytes32', type: 'bytes32', indexed: false },\n { name: 'relayerArgonAccountId', internalType: 'bytes32', type: 'bytes32', indexed: false },\n {\n name: 'gatewayState',\n internalType: 'struct MintingGateway.GatewayActivityState',\n type: 'tuple',\n components: [\n { name: 'gatewayActivityNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'argonApprovalsNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'argonCirculation', internalType: 'uint128', type: 'uint128' },\n { name: 'argonotCirculation', internalType: 'uint128', type: 'uint128' },\n ],\n indexed: false,\n },\n ],\n name: 'GlobalIssuanceCouncilRotated',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'previousGuardian', internalType: 'address', type: 'address', indexed: true },\n { name: 'newGuardian', internalType: 'address', type: 'address', indexed: true },\n ],\n name: 'GuardianUpdated',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [{ name: 'version', internalType: 'uint64', type: 'uint64', indexed: false }],\n name: 'Initialized',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'argonRecipientCount', internalType: 'uint256', type: 'uint256', indexed: false },\n { name: 'argonTotalAmount', internalType: 'uint256', type: 'uint256', indexed: false },\n { name: 'argonotRecipientCount', internalType: 'uint256', type: 'uint256', indexed: false },\n { name: 'argonotTotalAmount', internalType: 'uint256', type: 'uint256', indexed: false },\n ],\n name: 'MigrationCompleted',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'signingKey', internalType: 'address', type: 'address', indexed: true },\n { name: 'microgonCollateral', internalType: 'uint128', type: 'uint128', indexed: false },\n { name: 'micronotCollateral', internalType: 'uint128', type: 'uint128', indexed: false },\n { name: 'coactivationCount', internalType: 'uint32', type: 'uint32', indexed: false },\n { name: 'sharedSignatureCount', internalType: 'uint32', type: 'uint32', indexed: false },\n { name: 'relayerArgonAccountId', internalType: 'bytes32', type: 'bytes32', indexed: false },\n {\n name: 'gatewayState',\n internalType: 'struct MintingGateway.GatewayActivityState',\n type: 'tuple',\n components: [\n { name: 'gatewayActivityNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'argonApprovalsNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'argonCirculation', internalType: 'uint128', type: 'uint128' },\n { name: 'argonotCirculation', internalType: 'uint128', type: 'uint128' },\n ],\n indexed: false,\n },\n ],\n name: 'MintingAuthorityActivated',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'signingKey', internalType: 'address', type: 'address', indexed: true },\n { name: 'microgonCollateral', internalType: 'uint128', type: 'uint128', indexed: false },\n { name: 'micronotCollateral', internalType: 'uint128', type: 'uint128', indexed: false },\n { name: 'relayerArgonAccountId', internalType: 'bytes32', type: 'bytes32', indexed: false },\n {\n name: 'gatewayState',\n internalType: 'struct MintingGateway.GatewayActivityState',\n type: 'tuple',\n components: [\n { name: 'gatewayActivityNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'argonApprovalsNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'argonCirculation', internalType: 'uint128', type: 'uint128' },\n { name: 'argonotCirculation', internalType: 'uint128', type: 'uint128' },\n ],\n indexed: false,\n },\n ],\n name: 'MintingAuthorityDeactivated',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'previousOwner', internalType: 'address', type: 'address', indexed: true },\n { name: 'newOwner', internalType: 'address', type: 'address', indexed: true },\n ],\n name: 'OwnershipTransferred',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [{ name: 'account', internalType: 'address', type: 'address', indexed: false }],\n name: 'Paused',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'transferId', internalType: 'bytes32', type: 'bytes32', indexed: false },\n {\n name: 'gatewayState',\n internalType: 'struct MintingGateway.GatewayActivityState',\n type: 'tuple',\n components: [\n { name: 'gatewayActivityNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'argonApprovalsNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'argonCirculation', internalType: 'uint128', type: 'uint128' },\n { name: 'argonotCirculation', internalType: 'uint128', type: 'uint128' },\n ],\n indexed: false,\n },\n ],\n name: 'TransferOutOfArgonCanceled',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'transferId', internalType: 'bytes32', type: 'bytes32', indexed: false },\n { name: 'token', internalType: 'address', type: 'address', indexed: false },\n { name: 'amount', internalType: 'uint128', type: 'uint128', indexed: false },\n {\n name: 'mintingCollateral',\n internalType: 'struct MintingGateway.MintingAuthorityCollateral[]',\n type: 'tuple[]',\n components: [\n { name: 'signingKey', internalType: 'address', type: 'address' },\n { name: 'microgonCollateral', internalType: 'uint128', type: 'uint128' },\n { name: 'micronotCollateral', internalType: 'uint128', type: 'uint128' },\n ],\n indexed: false,\n },\n {\n name: 'gatewayState',\n internalType: 'struct MintingGateway.GatewayActivityState',\n type: 'tuple',\n components: [\n { name: 'gatewayActivityNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'argonApprovalsNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'argonCirculation', internalType: 'uint128', type: 'uint128' },\n { name: 'argonotCirculation', internalType: 'uint128', type: 'uint128' },\n ],\n indexed: false,\n },\n ],\n name: 'TransferOutOfArgonFinalized',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'from', internalType: 'address', type: 'address', indexed: true },\n { name: 'token', internalType: 'address', type: 'address', indexed: true },\n { name: 'amount', internalType: 'uint128', type: 'uint128', indexed: false },\n { name: 'argonAccountId', internalType: 'bytes32', type: 'bytes32', indexed: false },\n {\n name: 'gatewayState',\n internalType: 'struct MintingGateway.GatewayActivityState',\n type: 'tuple',\n components: [\n { name: 'gatewayActivityNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'argonApprovalsNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'argonCirculation', internalType: 'uint128', type: 'uint128' },\n { name: 'argonotCirculation', internalType: 'uint128', type: 'uint128' },\n ],\n indexed: false,\n },\n ],\n name: 'TransferToArgonStarted',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [{ name: 'account', internalType: 'address', type: 'address', indexed: false }],\n name: 'Unpaused',\n },\n {\n type: 'function',\n inputs: [],\n name: 'RUNTIME_DECIMALS',\n outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'RUNTIME_TO_ERC20_SCALE',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'TOKEN_DECIMALS',\n outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'locatorIndex', internalType: 'uint64', type: 'uint64' }],\n name: 'activityBlockLocators',\n outputs: [\n { name: 'blockNumber', internalType: 'uint64', type: 'uint64' },\n { name: 'startGatewayActivityNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'endGatewayActivityNonce', internalType: 'uint64', type: 'uint64' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n {\n name: 'currentCouncil',\n internalType: 'struct MintingGateway.CouncilSnapshot',\n type: 'tuple',\n components: [\n { name: 'signers', internalType: 'address[]', type: 'address[]' },\n { name: 'weights', internalType: 'uint256[]', type: 'uint256[]' },\n ],\n },\n {\n name: 'updates',\n internalType: 'struct MintingGateway.GatewayUpdate[]',\n type: 'tuple[]',\n components: [\n { name: 'queueNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'kind', internalType: 'enum MintingGateway.GatewayUpdateKind', type: 'uint8' },\n { name: 'payload', internalType: 'bytes', type: 'bytes' },\n { name: 'signatures', internalType: 'bytes[]', type: 'bytes[]' },\n ],\n },\n { name: 'relayerArgonAccountId', internalType: 'bytes32', type: 'bytes32' },\n ],\n name: 'applyGatewayUpdates',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'argonApprovalsHash',\n outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'argonApprovalsNonce',\n outputs: [{ name: '', internalType: 'uint64', type: 'uint64' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'argonCirculation',\n outputs: [{ name: '', internalType: 'uint128', type: 'uint128' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'argonToken',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'argonotCirculation',\n outputs: [{ name: '', internalType: 'uint128', type: 'uint128' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'argonotToken',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n {\n name: 'request',\n internalType: 'struct MintingGateway.TransferOutOfArgonRequest',\n type: 'tuple',\n components: [\n { name: 'argonAccountId', internalType: 'bytes32', type: 'bytes32' },\n { name: 'argonTransferNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'chainId', internalType: 'uint64', type: 'uint64' },\n { name: 'microgonsPerArgonot', internalType: 'uint128', type: 'uint128' },\n { name: 'recipient', internalType: 'address', type: 'address' },\n { name: 'validUntilBlock', internalType: 'uint64', type: 'uint64' },\n { name: 'token', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint128', type: 'uint128' },\n { name: 'mintingAuthorityTip', internalType: 'uint128', type: 'uint128' },\n ],\n },\n ],\n name: 'cancelTransferOutOfArgon',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n {\n name: 'request',\n internalType: 'struct MintingGateway.TransferOutOfArgonRequest',\n type: 'tuple',\n components: [\n { name: 'argonAccountId', internalType: 'bytes32', type: 'bytes32' },\n { name: 'argonTransferNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'chainId', internalType: 'uint64', type: 'uint64' },\n { name: 'microgonsPerArgonot', internalType: 'uint128', type: 'uint128' },\n { name: 'recipient', internalType: 'address', type: 'address' },\n { name: 'validUntilBlock', internalType: 'uint64', type: 'uint64' },\n { name: 'token', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint128', type: 'uint128' },\n { name: 'mintingAuthorityTip', internalType: 'uint128', type: 'uint128' },\n ],\n },\n {\n name: 'proof',\n internalType: 'struct MintingGateway.TransferOutOfArgonProof',\n type: 'tuple',\n components: [\n {\n name: 'authorizations',\n internalType: 'struct MintingGateway.MintingAuthorization[]',\n type: 'tuple[]',\n components: [\n { name: 'microgonCollateral', internalType: 'uint128', type: 'uint128' },\n { name: 'micronotCollateral', internalType: 'uint128', type: 'uint128' },\n { name: 'signature', internalType: 'bytes', type: 'bytes' },\n ],\n },\n ],\n },\n ],\n name: 'finalizeTransferOutOfArgon',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'transferId', internalType: 'bytes32', type: 'bytes32' }],\n name: 'finalizedTransferOutOfArgonIds',\n outputs: [{ name: 'isFinalized', internalType: 'bool', type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n {\n name: 'nextCouncil',\n internalType: 'struct MintingGateway.CouncilSnapshot',\n type: 'tuple',\n components: [\n { name: 'signers', internalType: 'address[]', type: 'address[]' },\n { name: 'weights', internalType: 'uint256[]', type: 'uint256[]' },\n ],\n },\n { name: 'nextMicrogonsPerArgonot', internalType: 'uint128', type: 'uint128' },\n ],\n name: 'forceUpdateActiveCouncil',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'gatewayActivityNonce',\n outputs: [{ name: '', internalType: 'uint64', type: 'uint64' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'globalIssuanceCouncil',\n outputs: [\n { name: 'totalWeight', internalType: 'uint256', type: 'uint256' },\n { name: 'memberCount', internalType: 'uint256', type: 'uint256' },\n { name: 'councilHash', internalType: 'bytes32', type: 'bytes32' },\n { name: 'epochMicrogonsPerArgonot', internalType: 'uint128', type: 'uint128' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'guardian',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'adminSafe', internalType: 'address', type: 'address' },\n { name: 'guardianAddress', internalType: 'address', type: 'address' },\n { name: 'councilHash', internalType: 'bytes32', type: 'bytes32' },\n { name: 'councilMemberCount', internalType: 'uint256', type: 'uint256' },\n { name: 'councilTotalWeight', internalType: 'uint256', type: 'uint256' },\n { name: 'initialMicrogonsPerArgonot', internalType: 'uint128', type: 'uint128' },\n ],\n name: 'initialize',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'latestActivityBlockLocatorIndex',\n outputs: [{ name: '', internalType: 'uint64', type: 'uint64' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'maxTransferOutMicrogonsPerArgonot',\n outputs: [{ name: '', internalType: 'uint128', type: 'uint128' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n {\n name: 'argonMigration',\n internalType: 'struct MintingGateway.MigrationAssetDistribution',\n type: 'tuple',\n components: [\n { name: 'recipients', internalType: 'address[]', type: 'address[]' },\n { name: 'amounts', internalType: 'uint256[]', type: 'uint256[]' },\n ],\n },\n {\n name: 'argonotMigration',\n internalType: 'struct MintingGateway.MigrationAssetDistribution',\n type: 'tuple',\n components: [\n { name: 'recipients', internalType: 'address[]', type: 'address[]' },\n { name: 'amounts', internalType: 'uint256[]', type: 'uint256[]' },\n ],\n },\n ],\n name: 'migrate',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'migrationCompleted',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'signingKey', internalType: 'address', type: 'address' }],\n name: 'mintingAuthorityCollateralRemaining',\n outputs: [\n { name: 'microgonCollateral', internalType: 'uint128', type: 'uint128' },\n { name: 'micronotCollateral', internalType: 'uint128', type: 'uint128' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'owner',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n { type: 'function', inputs: [], name: 'pause', outputs: [], stateMutability: 'nonpayable' },\n {\n type: 'function',\n inputs: [],\n name: 'paused',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'renounceOwnership',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'guardianAddress', internalType: 'address', type: 'address' }],\n name: 'setGuardian',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'token', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint128', type: 'uint128' },\n { name: 'argonAccountId', internalType: 'bytes32', type: 'bytes32' },\n { name: 'deadline', internalType: 'uint256', type: 'uint256' },\n { name: 'v', internalType: 'uint8', type: 'uint8' },\n { name: 'r', internalType: 'bytes32', type: 'bytes32' },\n { name: 's', internalType: 'bytes32', type: 'bytes32' },\n ],\n name: 'startTransferToArgon',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'amount', internalType: 'uint128', type: 'uint128' }],\n name: 'toTokenAmount',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],\n name: 'transferOwnership',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n { type: 'function', inputs: [], name: 'unpause', outputs: [], stateMutability: 'nonpayable' },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ProxyAdmin\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const proxyAdminAbi = [\n {\n type: 'constructor',\n inputs: [{ name: 'initialOwner', internalType: 'address', type: 'address' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'error',\n inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n name: 'OwnableInvalidOwner',\n },\n {\n type: 'error',\n inputs: [{ name: 'account', internalType: 'address', type: 'address' }],\n name: 'OwnableUnauthorizedAccount',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'previousOwner', internalType: 'address', type: 'address', indexed: true },\n { name: 'newOwner', internalType: 'address', type: 'address', indexed: true },\n ],\n name: 'OwnershipTransferred',\n },\n {\n type: 'function',\n inputs: [],\n name: 'UPGRADE_INTERFACE_VERSION',\n outputs: [{ name: '', internalType: 'string', type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'owner',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'renounceOwnership',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],\n name: 'transferOwnership',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'proxy', internalType: 'contract ITransparentUpgradeableProxy', type: 'address' },\n { name: 'implementation', internalType: 'address', type: 'address' },\n { name: 'data', internalType: 'bytes', type: 'bytes' },\n ],\n name: 'upgradeAndCall',\n outputs: [],\n stateMutability: 'payable',\n },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// TransparentUpgradeableProxy\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const transparentUpgradeableProxyAbi = [\n {\n type: 'constructor',\n inputs: [\n { name: 'logic', internalType: 'address', type: 'address' },\n { name: 'initialOwner', internalType: 'address', type: 'address' },\n { name: 'data', internalType: 'bytes', type: 'bytes' },\n ],\n stateMutability: 'payable',\n },\n {\n type: 'error',\n inputs: [{ name: 'target', internalType: 'address', type: 'address' }],\n name: 'AddressEmptyCode',\n },\n {\n type: 'error',\n inputs: [{ name: 'admin', internalType: 'address', type: 'address' }],\n name: 'ERC1967InvalidAdmin',\n },\n {\n type: 'error',\n inputs: [{ name: 'implementation', internalType: 'address', type: 'address' }],\n name: 'ERC1967InvalidImplementation',\n },\n { type: 'error', inputs: [], name: 'ERC1967NonPayable' },\n { type: 'error', inputs: [], name: 'ERC1967ProxyUninitialized' },\n { type: 'error', inputs: [], name: 'FailedCall' },\n { type: 'error', inputs: [], name: 'ProxyDeniedAdminAccess' },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'previousAdmin', internalType: 'address', type: 'address', indexed: false },\n { name: 'newAdmin', internalType: 'address', type: 'address', indexed: false },\n ],\n name: 'AdminChanged',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [{ name: 'implementation', internalType: 'address', type: 'address', indexed: true }],\n name: 'Upgraded',\n },\n { type: 'fallback', stateMutability: 'payable' },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// EventMetadataConstants\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nimport type { Hex } from 'viem';\n\nexport type ArgonTokenApproval = {\n owner: Hex;\n spender: Hex;\n value: bigint;\n};\n\nexport type ArgonTokenEIP712DomainChanged = {};\n\nexport type ArgonTokenTransfer = {\n from: Hex;\n to: Hex;\n value: bigint;\n};\n\nexport type ArgonotTokenApproval = {\n owner: Hex;\n spender: Hex;\n value: bigint;\n};\n\nexport type ArgonotTokenEIP712DomainChanged = {};\n\nexport type ArgonotTokenTransfer = {\n from: Hex;\n to: Hex;\n value: bigint;\n};\n\nexport type CanonicalMintableBurnableERC20Approval = {\n owner: Hex;\n spender: Hex;\n value: bigint;\n};\n\nexport type CanonicalMintableBurnableERC20EIP712DomainChanged = {};\n\nexport type CanonicalMintableBurnableERC20Transfer = {\n from: Hex;\n to: Hex;\n value: bigint;\n};\n\nexport type ICanonicalTokenApproval = {\n owner: Hex;\n spender: Hex;\n value: bigint;\n};\n\nexport type ICanonicalTokenTransfer = {\n from: Hex;\n to: Hex;\n value: bigint;\n};\n\nexport type MintingGatewayGlobalIssuanceCouncilBootstrapped = {\n councilHash: Hex;\n};\n\nexport type MintingGatewayGlobalIssuanceCouncilForceUpdated = {\n previousCouncilHash: Hex;\n councilHash: Hex;\n};\n\nexport type MintingGatewayActivityState = {\n gatewayActivityNonce: bigint;\n argonApprovalsNonce: bigint;\n argonCirculation: bigint;\n argonotCirculation: bigint;\n};\n\nexport type MintingGatewayGlobalIssuanceCouncilRotated = {\n councilHash: Hex;\n relayerArgonAccountId: Hex;\n gatewayState: MintingGatewayActivityState;\n};\n\nexport type MintingGatewayGuardianUpdated = {\n previousGuardian: Hex;\n newGuardian: Hex;\n};\n\nexport type MintingGatewayInitialized = {\n version: bigint;\n};\n\nexport type MintingGatewayMigrationCompleted = {\n argonRecipientCount: bigint;\n argonTotalAmount: bigint;\n argonotRecipientCount: bigint;\n argonotTotalAmount: bigint;\n};\n\nexport type MintingGatewayMintingAuthorityActivated = {\n signingKey: Hex;\n microgonCollateral: bigint;\n micronotCollateral: bigint;\n coactivationCount: bigint;\n sharedSignatureCount: bigint;\n relayerArgonAccountId: Hex;\n gatewayState: MintingGatewayActivityState;\n};\n\nexport type MintingGatewayMintingAuthorityDeactivated = {\n signingKey: Hex;\n microgonCollateral: bigint;\n micronotCollateral: bigint;\n relayerArgonAccountId: Hex;\n gatewayState: MintingGatewayActivityState;\n};\n\nexport type MintingGatewayOwnershipTransferred = {\n previousOwner: Hex;\n newOwner: Hex;\n};\n\nexport type MintingGatewayPaused = {\n account: Hex;\n};\n\nexport type MintingGatewayTransferOutOfArgonCanceled = {\n transferId: Hex;\n gatewayState: MintingGatewayActivityState;\n};\n\nexport type MintingGatewayMintingAuthorityCollateral = {\n signingKey: Hex;\n microgonCollateral: bigint;\n micronotCollateral: bigint;\n};\n\nexport type MintingGatewayTransferOutOfArgonFinalized = {\n transferId: Hex;\n token: Hex;\n amount: bigint;\n mintingCollateral: readonly MintingGatewayMintingAuthorityCollateral[];\n gatewayState: MintingGatewayActivityState;\n};\n\nexport type MintingGatewayTransferToArgonStarted = {\n from: Hex;\n token: Hex;\n amount: bigint;\n argonAccountId: Hex;\n gatewayState: MintingGatewayActivityState;\n};\n\nexport type MintingGatewayUnpaused = {\n account: Hex;\n};\n\nexport type ProxyAdminOwnershipTransferred = {\n previousOwner: Hex;\n newOwner: Hex;\n};\n\nexport type TransparentUpgradeableProxyAdminChanged = {\n previousAdmin: Hex;\n newAdmin: Hex;\n};\n\nexport type TransparentUpgradeableProxyUpgraded = {\n implementation: Hex;\n};\n\nexport const ArgonTokenEvents = {\n Approval: {\n name: 'Approval',\n topic: '0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925',\n },\n EIP712DomainChanged: {\n name: 'EIP712DomainChanged',\n topic: '0x0a6387c9ea3628b88a633bb4f3b151770f70085117a15f9bf3787cda53f13d31',\n },\n Transfer: {\n name: 'Transfer',\n topic: '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef',\n },\n} as const;\n\nexport const ArgonotTokenEvents = {\n Approval: {\n name: 'Approval',\n topic: '0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925',\n },\n EIP712DomainChanged: {\n name: 'EIP712DomainChanged',\n topic: '0x0a6387c9ea3628b88a633bb4f3b151770f70085117a15f9bf3787cda53f13d31',\n },\n Transfer: {\n name: 'Transfer',\n topic: '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef',\n },\n} as const;\n\nexport const CanonicalMintableBurnableERC20Events = {\n Approval: {\n name: 'Approval',\n topic: '0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925',\n },\n EIP712DomainChanged: {\n name: 'EIP712DomainChanged',\n topic: '0x0a6387c9ea3628b88a633bb4f3b151770f70085117a15f9bf3787cda53f13d31',\n },\n Transfer: {\n name: 'Transfer',\n topic: '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef',\n },\n} as const;\n\nexport const ICanonicalTokenEvents = {\n Approval: {\n name: 'Approval',\n topic: '0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925',\n },\n Transfer: {\n name: 'Transfer',\n topic: '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef',\n },\n} as const;\n\nexport const MintingGatewayEvents = {\n GlobalIssuanceCouncilBootstrapped: {\n name: 'GlobalIssuanceCouncilBootstrapped',\n topic: '0xac3566d46c25f65b48d269870da4b9349704c79de13ad49b115532834d7e7ed1',\n },\n GlobalIssuanceCouncilForceUpdated: {\n name: 'GlobalIssuanceCouncilForceUpdated',\n topic: '0x33e53e90d61fdc868629a6234670f92c4445196f3f98ebd71935bbc76c7d9153',\n },\n GlobalIssuanceCouncilRotated: {\n name: 'GlobalIssuanceCouncilRotated',\n topic: '0xb3dbfeab9c5013403dc2f2300318b92643b1cb9323077d549b4f93bbddded963',\n },\n GuardianUpdated: {\n name: 'GuardianUpdated',\n topic: '0x064d28d3d3071c5cbc271a261c10c2f0f0d9e319390397101aa0eb23c6bad909',\n },\n Initialized: {\n name: 'Initialized',\n topic: '0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2',\n },\n MigrationCompleted: {\n name: 'MigrationCompleted',\n topic: '0xc255ddc45163282f24909556f7475ab4ec8eb1d51763b25a4560cee9f43d0645',\n },\n MintingAuthorityActivated: {\n name: 'MintingAuthorityActivated',\n topic: '0xc0f81072946eba75f62302dad0fe56dd420d0b9d311e15b61bbe6e056c29908d',\n },\n MintingAuthorityDeactivated: {\n name: 'MintingAuthorityDeactivated',\n topic: '0xf92f117a698345a1b681cf04280fb5da65a05a9ac88aaacad3e9ee273ce570fd',\n },\n OwnershipTransferred: {\n name: 'OwnershipTransferred',\n topic: '0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0',\n },\n Paused: {\n name: 'Paused',\n topic: '0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258',\n },\n TransferOutOfArgonCanceled: {\n name: 'TransferOutOfArgonCanceled',\n topic: '0x3cb8789e9bf6f532eec2bc8ffee9b622fc0d6e6daefb7fb6bb2e2f7b2d62e452',\n },\n TransferOutOfArgonFinalized: {\n name: 'TransferOutOfArgonFinalized',\n topic: '0x64d79900ed82270f744ae62db527f4e328e336d8b51e77bc72601391fe779d06',\n },\n TransferToArgonStarted: {\n name: 'TransferToArgonStarted',\n topic: '0x3ab970a848f33363427e47cfbd7a627af0c6e72757f150137e38cef3cee24d93',\n },\n Unpaused: {\n name: 'Unpaused',\n topic: '0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa',\n },\n} as const;\n\nexport const ProxyAdminEvents = {\n OwnershipTransferred: {\n name: 'OwnershipTransferred',\n topic: '0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0',\n },\n} as const;\n\nexport const TransparentUpgradeableProxyEvents = {\n AdminChanged: {\n name: 'AdminChanged',\n topic: '0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f',\n },\n Upgraded: {\n name: 'Upgraded',\n topic: '0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b',\n },\n} as const;\n","import type { Address, ContractFunctionArgs, Hex } from 'viem';\nimport { encodeAbiParameters, keccak256, stringToHex } from 'viem';\nimport { mintingGatewayAbi } from './generated.js';\n\nexport const MINTING_GATEWAY_UPDATE_KINDS = {\n globalIssuanceCouncilRotate: 0,\n mintingAuthorityActivate: 1,\n mintingAuthorityDeactivate: 2,\n} as const;\n\nexport type MintingGatewayHashContext = {\n chainId: bigint;\n gatewayAddress: Address;\n};\n\ntype ApplyGatewayUpdatesArgs = ContractFunctionArgs<\n typeof mintingGatewayAbi,\n 'nonpayable',\n 'applyGatewayUpdates'\n>;\ntype FinalizeTransferOutOfArgonArgs = ContractFunctionArgs<\n typeof mintingGatewayAbi,\n 'nonpayable',\n 'finalizeTransferOutOfArgon'\n>;\ntype MigrateArgs = ContractFunctionArgs<typeof mintingGatewayAbi, 'nonpayable', 'migrate'>;\nexport type MintingGatewayCouncilSnapshot = ApplyGatewayUpdatesArgs[0];\nexport type MintingGatewayGatewayUpdate = ApplyGatewayUpdatesArgs[1][number];\nexport type MintingGatewayTransferOutOfArgonRequest = FinalizeTransferOutOfArgonArgs[0];\nexport type MintingGatewayTransferOutOfArgonProof = FinalizeTransferOutOfArgonArgs[1];\nexport type MintingGatewayMintingAuthorization =\n MintingGatewayTransferOutOfArgonProof['authorizations'][number];\nexport type MintingGatewayMigrationAssetDistribution = MigrateArgs[0];\nexport type MintingGatewayGlobalIssuanceCouncilRotateTarget = {\n council: MintingGatewayCouncilSnapshot;\n epochMicrogonsPerArgonot: bigint;\n};\nexport type MintingGatewayGlobalIssuanceCouncilHashArgs = MintingGatewayCouncilSnapshot & {\n epochMicrogonsPerArgonot: bigint;\n};\n\nexport type MintingGatewayMintingAuthorityActivationTarget = {\n microgonCollateral: bigint;\n micronotCollateral: bigint;\n signingKey: Address;\n};\n\nexport type MintingGatewayMintingAuthorityDeactivateTarget = {\n signingKey: Address;\n};\n\ntype ActivateMintingAuthorityApprovalArgs = {\n queueNonce: bigint;\n approvingCouncilHash: Hex;\n previousUpdateHash: Hex;\n target: MintingGatewayMintingAuthorityActivationTarget;\n};\n\ntype RotateGlobalIssuanceCouncilApprovalArgs = {\n queueNonce: bigint;\n approvingCouncilHash: Hex;\n previousUpdateHash: Hex;\n target: MintingGatewayGlobalIssuanceCouncilRotateTarget;\n};\n\ntype MintingAuthorizationHashArgs = {\n request: MintingGatewayTransferOutOfArgonRequest;\n microgonCollateral: MintingGatewayMintingAuthorization['microgonCollateral'];\n micronotCollateral: MintingGatewayMintingAuthorization['micronotCollateral'];\n};\n\ntype MintingAuthorityDeactivationHashArgs = {\n queueNonce: bigint;\n target: MintingGatewayMintingAuthorityDeactivateTarget;\n previousUpdateHash: Hex;\n};\n\ntype GatewayUpdateApprovalArgs = {\n queueNonce: bigint;\n approvingCouncilHash: Hex;\n kind: (typeof MINTING_GATEWAY_UPDATE_KINDS)[keyof typeof MINTING_GATEWAY_UPDATE_KINDS];\n targetId: Hex;\n targetPayloadHash: Hex;\n previousUpdateHash: Hex;\n};\n\nconst COUNCIL_SNAPSHOT_PARAMETERS = [\n { name: 'signers', type: 'address[]' },\n { name: 'weights', type: 'uint256[]' },\n] as const;\n\nconst GLOBAL_ISSUANCE_COUNCIL_ROTATE_TARGET_PARAMETERS = [\n {\n type: 'tuple',\n components: [\n {\n name: 'council',\n type: 'tuple',\n components: COUNCIL_SNAPSHOT_PARAMETERS,\n },\n { name: 'epochMicrogonsPerArgonot', type: 'uint128' },\n ],\n },\n] as const;\n\nconst ACTIVATION_TARGET_PARAMETERS = [\n {\n type: 'tuple',\n components: [\n { name: 'microgonCollateral', type: 'uint128' },\n { name: 'micronotCollateral', type: 'uint128' },\n { name: 'signingKey', type: 'address' },\n ],\n },\n] as const;\n\nconst DEACTIVATION_TARGET_PARAMETERS = [\n {\n type: 'tuple',\n components: [{ name: 'signingKey', type: 'address' }],\n },\n] as const;\n\nconst GATEWAY_UPDATE_APPROVAL_PARAMETERS = [\n { type: 'bytes32' },\n { type: 'uint256' },\n { type: 'address' },\n { type: 'uint64' },\n { type: 'bytes32' },\n { type: 'uint8' },\n { type: 'bytes32' },\n { type: 'bytes32' },\n { type: 'bytes32' },\n] as const;\n\nconst MINTING_AUTHORITY_HASH_PARAMETERS = [\n { type: 'uint128' },\n { type: 'uint128' },\n { type: 'address' },\n] as const;\n\nconst MINTING_AUTHORITY_ACTIVATION_PARAMETERS = [\n { type: 'bytes32' },\n { type: 'uint256' },\n { type: 'address' },\n { type: 'bytes32' },\n] as const;\n\nconst GLOBAL_ISSUANCE_COUNCIL_ROTATION_PARAMETERS = [\n { type: 'bytes32' },\n { type: 'uint256' },\n { type: 'address' },\n { type: 'bytes32' },\n { type: 'uint128' },\n] as const;\n\nconst MINTING_AUTHORITY_DEACTIVATION_PARAMETERS = [\n { type: 'bytes32' },\n { type: 'uint256' },\n { type: 'address' },\n { type: 'uint64' },\n { type: 'address' },\n { type: 'bytes32' },\n] as const;\n\nfunction signingKeyTargetId(signingKey: Address): Hex {\n return `0x${signingKey.slice(2).padStart(64, '0').toLowerCase()}`;\n}\n\nconst TRANSFER_OUT_OF_ARGON_REQUEST_PARAMETERS = [\n { type: 'bytes32' },\n { type: 'uint64' },\n { type: 'uint64' },\n { type: 'uint128' },\n { type: 'address' },\n { type: 'uint64' },\n { type: 'address' },\n { type: 'uint128' },\n { type: 'uint128' },\n] as const;\n\nconst MINTING_AUTHORIZATION_PARAMETERS = [\n { type: 'bytes32' },\n { type: 'uint256' },\n { type: 'address' },\n { type: 'bytes32' },\n { type: 'uint128' },\n { type: 'uint128' },\n] as const;\n\nconst GLOBAL_ISSUANCE_COUNCIL_ROTATION_TAG = keccak256(\n stringToHex('ARGON_GLOBAL_ISSUANCE_COUNCIL_ROTATION'),\n);\nconst MINTING_AUTHORITY_ACTIVATION_TAG = keccak256(\n stringToHex('ARGON_MINTING_AUTHORITY_ACTIVATION'),\n);\nconst MINTING_AUTHORITY_DEACTIVATION_TAG = keccak256(\n stringToHex('ARGON_MINTING_AUTHORITY_DEACTIVATION'),\n);\nconst GATEWAY_UPDATE_APPROVAL_TAG = keccak256(stringToHex('ARGON_GATEWAY_UPDATE_APPROVAL'));\nconst TRANSFER_OUT_OF_ARGON_AUTHORIZATION_TAG = keccak256(\n stringToHex('ARGON_TRANSFER_OUT_OF_ARGON_AUTHORIZATION'),\n);\n\nexport function encodeMintingGatewayCouncilSnapshot(snapshot: MintingGatewayCouncilSnapshot): Hex {\n return encodeAbiParameters(\n [{ type: 'tuple', components: COUNCIL_SNAPSHOT_PARAMETERS }],\n [snapshot],\n );\n}\n\nexport function encodeMintingGatewayGlobalIssuanceCouncilRotateTarget(\n target: MintingGatewayGlobalIssuanceCouncilRotateTarget,\n): Hex {\n return encodeAbiParameters(GLOBAL_ISSUANCE_COUNCIL_ROTATE_TARGET_PARAMETERS, [target]);\n}\n\nexport function encodeMintingGatewayMintingAuthorityActivationTarget(\n target: MintingGatewayMintingAuthorityActivationTarget,\n): Hex {\n return encodeAbiParameters(ACTIVATION_TARGET_PARAMETERS, [target]);\n}\n\nexport function encodeMintingGatewayMintingAuthorityDeactivateTarget(\n target: MintingGatewayMintingAuthorityDeactivateTarget,\n): Hex {\n return encodeAbiParameters(DEACTIVATION_TARGET_PARAMETERS, [target]);\n}\n\nexport function hashMintingGatewayGlobalIssuanceCouncil(\n council: MintingGatewayGlobalIssuanceCouncilHashArgs,\n): Hex {\n return keccak256(\n encodeAbiParameters(\n [{ type: 'address[]' }, { type: 'uint256[]' }, { type: 'uint128' }],\n [council.signers, council.weights, council.epochMicrogonsPerArgonot],\n ),\n );\n}\n\nexport function hashMintingGatewayMintingAuthority(\n target: MintingGatewayMintingAuthorityActivationTarget,\n): Hex {\n return keccak256(\n encodeAbiParameters(MINTING_AUTHORITY_HASH_PARAMETERS, [\n target.microgonCollateral,\n target.micronotCollateral,\n target.signingKey,\n ]),\n );\n}\n\nexport function hashMintingGatewayActivateMintingAuthorityApproval(\n context: MintingGatewayHashContext,\n args: ActivateMintingAuthorityApprovalArgs,\n): Hex {\n return hashMintingGatewayGatewayUpdateApproval(context, {\n queueNonce: args.queueNonce,\n approvingCouncilHash: args.approvingCouncilHash,\n kind: MINTING_GATEWAY_UPDATE_KINDS.mintingAuthorityActivate,\n targetId: signingKeyTargetId(args.target.signingKey),\n targetPayloadHash: hashMintingGatewayActivateMintingAuthority(context, args.target),\n previousUpdateHash: args.previousUpdateHash,\n });\n}\n\nexport function hashMintingGatewayRotateGlobalIssuanceCouncilApproval(\n context: MintingGatewayHashContext,\n args: RotateGlobalIssuanceCouncilApprovalArgs,\n): Hex {\n const nextCouncilHash = hashMintingGatewayGlobalIssuanceCouncil({\n ...args.target.council,\n epochMicrogonsPerArgonot: args.target.epochMicrogonsPerArgonot,\n });\n\n return hashMintingGatewayGatewayUpdateApproval(context, {\n queueNonce: args.queueNonce,\n approvingCouncilHash: args.approvingCouncilHash,\n kind: MINTING_GATEWAY_UPDATE_KINDS.globalIssuanceCouncilRotate,\n targetId: nextCouncilHash,\n targetPayloadHash: hashMintingGatewayRotateGlobalIssuanceCouncil(context, args.target),\n previousUpdateHash: args.previousUpdateHash,\n });\n}\n\nexport function hashMintingGatewayActivateMintingAuthority(\n context: MintingGatewayHashContext,\n target: MintingGatewayMintingAuthorityActivationTarget,\n): Hex {\n return keccak256(\n encodeAbiParameters(MINTING_AUTHORITY_ACTIVATION_PARAMETERS, [\n MINTING_AUTHORITY_ACTIVATION_TAG,\n context.chainId,\n context.gatewayAddress,\n hashMintingGatewayMintingAuthority(target),\n ]),\n );\n}\n\nexport function hashMintingGatewayRotateGlobalIssuanceCouncil(\n context: MintingGatewayHashContext,\n target: MintingGatewayGlobalIssuanceCouncilRotateTarget,\n): Hex {\n return keccak256(\n encodeAbiParameters(GLOBAL_ISSUANCE_COUNCIL_ROTATION_PARAMETERS, [\n GLOBAL_ISSUANCE_COUNCIL_ROTATION_TAG,\n context.chainId,\n context.gatewayAddress,\n hashMintingGatewayGlobalIssuanceCouncil({\n ...target.council,\n epochMicrogonsPerArgonot: target.epochMicrogonsPerArgonot,\n }),\n target.epochMicrogonsPerArgonot,\n ]),\n );\n}\n\nexport function hashMintingGatewayGatewayUpdateApproval(\n context: MintingGatewayHashContext,\n args: GatewayUpdateApprovalArgs,\n): Hex {\n return keccak256(\n encodeAbiParameters(GATEWAY_UPDATE_APPROVAL_PARAMETERS, [\n GATEWAY_UPDATE_APPROVAL_TAG,\n context.chainId,\n context.gatewayAddress,\n args.queueNonce,\n args.approvingCouncilHash,\n args.kind,\n args.targetId,\n args.targetPayloadHash,\n args.previousUpdateHash,\n ]),\n );\n}\n\nexport function hashMintingGatewayMintingAuthorityDeactivation(\n context: MintingGatewayHashContext,\n args: MintingAuthorityDeactivationHashArgs,\n): Hex {\n return keccak256(\n encodeAbiParameters(MINTING_AUTHORITY_DEACTIVATION_PARAMETERS, [\n MINTING_AUTHORITY_DEACTIVATION_TAG,\n context.chainId,\n context.gatewayAddress,\n args.queueNonce,\n args.target.signingKey,\n args.previousUpdateHash,\n ]),\n );\n}\n\nexport function hashMintingGatewayTransferOutOfArgonRequest(\n request: MintingGatewayTransferOutOfArgonRequest,\n): Hex {\n return keccak256(\n encodeAbiParameters(TRANSFER_OUT_OF_ARGON_REQUEST_PARAMETERS, [\n request.argonAccountId,\n request.argonTransferNonce,\n request.chainId,\n request.microgonsPerArgonot,\n request.recipient,\n request.validUntilBlock,\n request.token,\n request.amount,\n request.mintingAuthorityTip,\n ]),\n );\n}\n\nexport function hashMintingGatewayMintingAuthorization(\n context: MintingGatewayHashContext,\n args: MintingAuthorizationHashArgs,\n): Hex {\n return keccak256(\n encodeAbiParameters(MINTING_AUTHORIZATION_PARAMETERS, [\n TRANSFER_OUT_OF_ARGON_AUTHORIZATION_TAG,\n context.chainId,\n context.gatewayAddress,\n hashMintingGatewayTransferOutOfArgonRequest(args.request),\n args.microgonCollateral,\n args.micronotCollateral,\n ]),\n );\n}\n","import argonTokenArtifact from './artifacts/contracts/ArgonToken.sol/ArgonToken.json' with { type: 'json' };\nimport argonotTokenArtifact from './artifacts/contracts/ArgonotToken.sol/ArgonotToken.json' with { type: 'json' };\nimport mintingGatewayArtifact from './artifacts/contracts/MintingGateway.sol/MintingGateway.json' with { type: 'json' };\nimport proxyAdminArtifact from './artifacts/contracts/ProxyArtifacts.sol/ProxyAdmin.json' with { type: 'json' };\nimport transparentUpgradeableProxyArtifact from './artifacts/contracts/ProxyArtifacts.sol/TransparentUpgradeableProxy.json' with { type: 'json' };\n\nexport const MINTING_GATEWAY_RUNTIME_DECIMALS = 6;\nexport const MINTING_GATEWAY_TOKEN_DECIMALS = 18;\nexport const MINTING_GATEWAY_RUNTIME_TO_ERC20_SCALE =\n 10n ** BigInt(MINTING_GATEWAY_TOKEN_DECIMALS - MINTING_GATEWAY_RUNTIME_DECIMALS);\n\nexport type MintingGatewayActivityBlockLocator = {\n blockNumber: bigint;\n startGatewayActivityNonce: bigint;\n endGatewayActivityNonce: bigint;\n};\n\nexport * from './generated.js';\nexport * from './hashing.js';\n\nexport {\n argonTokenArtifact,\n argonotTokenArtifact,\n mintingGatewayArtifact,\n proxyAdminArtifact,\n transparentUpgradeableProxyArtifact,\n};\n","import { createPublicClient, http } from 'viem';\n\nexport type EthereumReceipt = Awaited<\n ReturnType<ReturnType<typeof createPublicClient>['getTransactionReceipt']>\n>;\nexport type EthereumExecutionClient = ReturnType<typeof createPublicClient>;\n\nexport type EthereumExecutionSource = {\n executionRpcUrl?: string;\n executionClient?: EthereumExecutionClient;\n};\n\nconst executionClientsByUrl = new Map<string, EthereumExecutionClient>();\n\nexport function getExecutionClient(source: EthereumExecutionSource): EthereumExecutionClient {\n if (source.executionClient) {\n return source.executionClient;\n }\n if (source.executionRpcUrl) {\n const cached = executionClientsByUrl.get(source.executionRpcUrl);\n if (cached) {\n return cached;\n }\n\n const client = createPublicClient({ transport: http(source.executionRpcUrl) });\n executionClientsByUrl.set(source.executionRpcUrl, client);\n return client;\n }\n\n throw new Error('Ethereum event proof requires an execution client or execution RPC URL');\n}\n\nfunction getExecutionRpcErrorText(error: unknown): string {\n if (error instanceof Error) {\n return [\n error.message,\n 'details' in error && typeof error.details === 'string' ? error.details : undefined,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n return String(error);\n}\n\n// Dev/test execution RPCs can expose a fresh block before their receipt/log indexes catch up.\n// When that happens, recent reads may fail transiently with \"indexing is in progress\".\nexport async function retryWhileExecutionRpcIndexing<TResult>(\n request: () => Promise<TResult>,\n): Promise<TResult> {\n const startedAt = Date.now();\n let lastError: Error | undefined;\n\n while (Date.now() - startedAt < 30_000) {\n try {\n return await request();\n } catch (error) {\n const errorText = getExecutionRpcErrorText(error);\n if (!errorText.includes('indexing is in progress')) {\n throw error;\n }\n\n lastError = error instanceof Error ? error : new Error(errorText);\n await new Promise(resolve => setTimeout(resolve, 500));\n }\n }\n\n throw lastError ?? new Error('Timed out waiting for execution RPC indexing');\n}\n","import { BlockHeader, createBlockHeaderFromRPC, type JSONRPCBlock } from '@ethereumjs/block';\nimport { createMerkleProof, createMPT, verifyMPTWithMerkleProof } from '@ethereumjs/mpt';\nimport type { IArgonQueryable } from './index';\nimport { bytesToHex, type Hex, hexToBytes, toHex, toRlp } from 'viem';\nimport {\n type EthereumExecutionClient,\n type EthereumExecutionSource,\n type EthereumReceipt,\n getExecutionClient,\n retryWhileExecutionRpcIndexing,\n} from './EthereumExecution';\n\ntype EthGetBlockByHashRpc = {\n Method: 'eth_getBlockByHash';\n Parameters: [Hex, true];\n ReturnType: JSONRPCBlock;\n};\ntype EthGetBlockByNumberRpc = {\n Method: 'eth_getBlockByNumber';\n Parameters: [Hex, true];\n ReturnType: JSONRPCBlock;\n};\n\nexport type ArgonFinalizedExecutionHeader = {\n blockHash: Hex;\n blockNumber: bigint;\n};\n\nexport class ArgonFinalizedExecutionHeaderPathError extends Error {}\n\nexport type EthereumEventLocator = {\n txHash: Hex;\n logIndexes?: number[];\n receipt?: EthereumReceipt;\n};\n\nexport type EthereumEventLocatorBlock = EthereumEventLocator[];\n\nexport type EthereumEventLog = Pick<EthereumReceipt['logs'][number], 'address' | 'data'> & {\n topics: Hex[];\n};\n\ntype LoadedEthereumEventLocator = {\n receipt: EthereumReceipt;\n requestedLogIndexes: number[];\n};\n\nexport type EthereumEventProof = {\n executionBlockProof: {\n anchorBlockHash: Hex;\n targetToAnchorHeaderChain: { rlp: Hex }[];\n };\n blocks: {\n targetBlockNumber: number;\n receiptLogs: {\n transactionIndex: number;\n eventLog: EthereumEventLog;\n }[];\n receiptProof: {\n nodes: Hex[];\n receipts: {\n transactionIndex: number;\n nodeIndexes: number[];\n }[];\n };\n }[];\n};\n\ntype EthereumEventProofBlock = EthereumEventProof['blocks'][number];\ntype EthereumReceiptProof = EthereumEventProofBlock['receiptProof'];\ntype EthereumReceiptLog = EthereumEventProofBlock['receiptLogs'][number];\ntype EthereumCombinedReceiptProofReceipt = EthereumReceiptProof['receipts'][number];\n\nexport function encodeReceiptTrieKey(transactionIndex: number): Uint8Array {\n return transactionIndex === 0 ? Uint8Array.from([0x80]) : toRlp(toHex(transactionIndex), 'bytes');\n}\n\nexport function encodeEthereumReceiptForProof(receipt: EthereumReceipt): Uint8Array {\n const payload = toRlp(\n [\n receipt.root ?? (receipt.status === 'success' ? '0x1' : '0x0'),\n toHex(receipt.cumulativeGasUsed),\n receipt.logsBloom,\n receipt.logs.map(log => [log.address, [...log.topics], log.data]),\n ],\n 'bytes',\n );\n\n switch (receipt.type) {\n case 'legacy':\n return payload;\n case 'eip2930':\n return Uint8Array.from([...hexToBytes('0x01'), ...payload]);\n case 'eip1559':\n return Uint8Array.from([...hexToBytes('0x02'), ...payload]);\n case 'eip4844':\n return Uint8Array.from([...hexToBytes('0x03'), ...payload]);\n case 'eip7702':\n return Uint8Array.from([...hexToBytes('0x04'), ...payload]);\n default:\n throw new Error(`Unsupported Ethereum receipt type ${String(receipt.type)}`);\n }\n}\n\nexport async function buildEthereumEventProof(\n executionSource: EthereumExecutionSource,\n argonFinalizedExecutionHeader: ArgonFinalizedExecutionHeader,\n locatorBlocks: EthereumEventLocatorBlock[],\n): Promise<EthereumEventProof> {\n if (locatorBlocks.length === 0) {\n throw new Error('At least one Ethereum event locator is required');\n }\n\n const executionClient = getExecutionClient(executionSource);\n const blocksWithHeaders = await Promise.all(\n locatorBlocks.map(async (locatorBlock, index) => {\n if (locatorBlock.length === 0) {\n throw new Error(`Ethereum event locator block ${index} is empty`);\n }\n\n const loadedLocators = await loadEthereumEventLocators(executionClient, locatorBlock);\n const firstLocator = loadedLocators[0];\n const blockHash = firstLocator.receipt.blockHash;\n\n for (const locator of loadedLocators.slice(1)) {\n if (locator.receipt.blockHash.toLowerCase() !== blockHash.toLowerCase()) {\n throw new Error(`Ethereum event locator block ${index} spans multiple execution blocks`);\n }\n }\n\n const targetHeader = await loadExecutionHeader(executionClient, blockHash);\n if (argonFinalizedExecutionHeader.blockNumber < targetHeader.number) {\n throw new Error(\n `Argon finalized execution header ${argonFinalizedExecutionHeader.blockHash} is behind target block ${blockHash}; wait for relayer sync`,\n );\n }\n return {\n blockHash,\n locators: loadedLocators,\n targetHeader,\n };\n }),\n );\n\n if (blocksWithHeaders.length === 0) {\n throw new Error('At least one Ethereum event locator is required');\n }\n\n blocksWithHeaders.sort((a, b) => Number(a.targetHeader.number - b.targetHeader.number));\n const furthestTargetBlock = blocksWithHeaders[0];\n\n const targetToArgonFinalizedHeaderChain = await buildExecutionHeaderChain(\n executionClient,\n furthestTargetBlock.targetHeader,\n argonFinalizedExecutionHeader,\n );\n\n const blocks: EthereumEventProof['blocks'] = [];\n for (const { blockHash, locators, targetHeader } of blocksWithHeaders) {\n if (targetHeader.number === argonFinalizedExecutionHeader.blockNumber) {\n if (blockHash.toLowerCase() !== argonFinalizedExecutionHeader.blockHash.toLowerCase()) {\n throw new ArgonFinalizedExecutionHeaderPathError(\n `Target block ${blockHash} is not the Argon finalized execution header ${argonFinalizedExecutionHeader.blockHash}`,\n );\n }\n } else {\n const sharedTargetHeaderOnArgonFinalizedChain =\n targetToArgonFinalizedHeaderChain[\n Number(targetHeader.number - furthestTargetBlock.targetHeader.number)\n ];\n if (\n !sharedTargetHeaderOnArgonFinalizedChain ||\n sharedTargetHeaderOnArgonFinalizedChain.blockHash.toLowerCase() !== blockHash.toLowerCase()\n ) {\n throw new ArgonFinalizedExecutionHeaderPathError(\n `Target block ${blockHash} is not on the shared execution header chain to Argon finalized execution header ${argonFinalizedExecutionHeader.blockHash}`,\n );\n }\n }\n\n const receiptLogs: EthereumReceiptLog[] = [];\n const transactionIndexes: number[] = [];\n const seenTransactionIndexes = new Set<number>();\n\n for (const { receipt, requestedLogIndexes } of locators) {\n if (!seenTransactionIndexes.has(receipt.transactionIndex)) {\n seenTransactionIndexes.add(receipt.transactionIndex);\n transactionIndexes.push(receipt.transactionIndex);\n }\n\n for (const index of requestedLogIndexes) {\n const log = receipt.logs[index];\n if (!log) {\n throw new Error(`Missing log ${index} in receipt ${receipt.transactionHash}`);\n }\n\n receiptLogs.push({\n transactionIndex: receipt.transactionIndex,\n eventLog: {\n address: log.address,\n topics: [...log.topics],\n data: log.data,\n },\n });\n }\n }\n\n const receiptProof = await buildCombinedReceiptProof(\n executionClient,\n blockHash,\n transactionIndexes,\n bytesToHex(targetHeader.receiptTrie),\n );\n\n blocks.push({\n targetBlockNumber: Number(targetHeader.number),\n receiptProof,\n receiptLogs,\n });\n }\n\n return {\n executionBlockProof: {\n anchorBlockHash: argonFinalizedExecutionHeader.blockHash,\n targetToAnchorHeaderChain: targetToArgonFinalizedHeaderChain.map(({ rlp }) => ({ rlp })),\n },\n blocks,\n };\n}\n\nexport async function getLatestArgonFinalizedExecutionHeader(\n client: IArgonQueryable,\n): Promise<ArgonFinalizedExecutionHeader> {\n const verifierQuery = client.query.ethereumVerifier;\n const latestArgonFinalizedExecutionHeaderHash =\n await verifierQuery.latestExecutionHeaderAnchorBlockHash();\n\n if (latestArgonFinalizedExecutionHeaderHash.isNone) {\n throw new Error('No Argon finalized execution header is available yet; wait for relayer sync');\n }\n\n const blockHash = latestArgonFinalizedExecutionHeaderHash.unwrap().toHex();\n const argonFinalizedExecutionHeaderEntry = await verifierQuery.executionHeaderAnchors(blockHash);\n\n if (argonFinalizedExecutionHeaderEntry.isNone) {\n throw new Error(`Argon finalized execution header ${blockHash} is missing`);\n }\n\n return {\n blockHash,\n blockNumber: argonFinalizedExecutionHeaderEntry.unwrap().blockNumber.toBigInt(),\n };\n}\n\nexport async function waitForArgonFinalizedExecutionHeader(\n client: IArgonQueryable,\n targetBlockNumber: bigint,\n options: { pollMs?: number; timeoutMs?: number } = {},\n): Promise<ArgonFinalizedExecutionHeader> {\n const pollMs = options.pollMs ?? 3_000;\n const timeoutMs = options.timeoutMs ?? 5 * 60_000;\n const startedAt = Date.now();\n let lastError: Error | undefined;\n\n while (Date.now() - startedAt < timeoutMs) {\n try {\n const argonFinalizedExecutionHeader = await getLatestArgonFinalizedExecutionHeader(client);\n if (argonFinalizedExecutionHeader.blockNumber >= targetBlockNumber) {\n return argonFinalizedExecutionHeader;\n }\n } catch (error) {\n if (!(error instanceof Error)) {\n throw error;\n }\n lastError = error;\n }\n\n await new Promise(resolve => setTimeout(resolve, pollMs));\n }\n\n throw (\n lastError ??\n new Error(\n `Argon finalized execution header did not reach block ${targetBlockNumber} within ${Math.floor(timeoutMs / 1000)}s`,\n )\n );\n}\n\nasync function loadEthereumEventLocators(\n executionClient: EthereumExecutionClient,\n locators: EthereumEventLocator[],\n) {\n return await retryWhileExecutionRpcIndexing(() => {\n return Promise.all(\n locators.map(async ({ txHash, logIndexes, receipt }) => {\n receipt ??= await executionClient.getTransactionReceipt({ hash: txHash });\n const requestedLogIndexes = logIndexes ?? [0];\n if (requestedLogIndexes.length === 0) {\n throw new Error(`At least one log index is required for receipt ${txHash}`);\n }\n\n return {\n receipt,\n requestedLogIndexes,\n } satisfies LoadedEthereumEventLocator;\n }),\n );\n });\n}\n\nexport async function loadExecutionHeader(\n executionClient: EthereumExecutionClient,\n blockTag: Hex | bigint,\n) {\n const blockData = await retryWhileExecutionRpcIndexing(() =>\n typeof blockTag === 'string'\n ? executionClient.request<EthGetBlockByHashRpc>({\n method: 'eth_getBlockByHash',\n params: [blockTag, true],\n })\n : executionClient.request<EthGetBlockByNumberRpc>({\n method: 'eth_getBlockByNumber',\n params: [toHex(blockTag), true],\n }),\n );\n const header = createBlockHeaderFromRPC(blockData);\n\n if (\n typeof blockTag === 'string' &&\n bytesToHex(header.hash()).toLowerCase() !== blockTag.toLowerCase()\n ) {\n throw new Error(`Execution header hash mismatch for block ${blockTag}`);\n }\n\n return header;\n}\n\nexport async function buildExecutionHeaderChain(\n executionClient: EthereumExecutionClient,\n targetHeader: BlockHeader,\n argonFinalizedExecutionHeader: ArgonFinalizedExecutionHeader,\n): Promise<{ blockHash: Hex; rlp: Hex }[]> {\n const targetBlockHash = bytesToHex(targetHeader.hash());\n\n if (targetHeader.number === argonFinalizedExecutionHeader.blockNumber) {\n if (targetBlockHash.toLowerCase() !== argonFinalizedExecutionHeader.blockHash.toLowerCase()) {\n throw new ArgonFinalizedExecutionHeaderPathError(\n `Target block ${targetBlockHash} is not the Argon finalized execution header ${argonFinalizedExecutionHeader.blockHash}`,\n );\n }\n\n return [];\n }\n\n const headers: { blockHash: Hex; rlp: Hex }[] = [];\n let header = await loadExecutionHeader(executionClient, argonFinalizedExecutionHeader.blockHash);\n\n if (header.number !== argonFinalizedExecutionHeader.blockNumber) {\n throw new Error(\n `Execution header ${argonFinalizedExecutionHeader.blockHash} is not block ${argonFinalizedExecutionHeader.blockNumber}`,\n );\n }\n\n while (header.number > targetHeader.number) {\n header = await loadExecutionHeader(executionClient, bytesToHex(header.parentHash));\n headers.push({\n blockHash: bytesToHex(header.hash()),\n rlp: bytesToHex(header.serialize()),\n });\n }\n\n if (\n header.number !== targetHeader.number ||\n bytesToHex(header.hash()).toLowerCase() !== targetBlockHash.toLowerCase()\n ) {\n throw new ArgonFinalizedExecutionHeaderPathError(\n `Target block ${targetBlockHash} is not on the shared execution header chain to Argon finalized execution header ${argonFinalizedExecutionHeader.blockHash}`,\n );\n }\n\n return headers.reverse();\n}\n\nasync function buildCombinedReceiptProof(\n executionClient: EthereumExecutionClient,\n blockHash: Hex,\n transactionIndexes: number[],\n receiptsRoot: Hex,\n): Promise<EthereumReceiptProof> {\n const { receipts } = await retryWhileExecutionRpcIndexing(async () => {\n const block = await executionClient.getBlock({ blockHash });\n const receipts = await Promise.all(\n block.transactions.map(hash => executionClient.getTransactionReceipt({ hash })),\n );\n\n return { receipts };\n });\n\n const trie = await createMPT();\n\n for (const receipt of receipts) {\n await trie.put(\n encodeReceiptTrieKey(receipt.transactionIndex),\n encodeEthereumReceiptForProof(receipt),\n );\n }\n\n if (bytesToHex(trie.root()).toLowerCase() !== receiptsRoot.toLowerCase()) {\n throw new Error(`Receipt trie root mismatch for block ${blockHash}`);\n }\n\n const nodeIndexesByHex = new Map<Hex, number>();\n const sharedNodes: Hex[] = [];\n const proofReceipts = await Promise.all(\n transactionIndexes.map(async transactionIndex => {\n const key = encodeReceiptTrieKey(transactionIndex);\n const proof = await createMerkleProof(trie, key);\n const verifiedReceipt = await verifyMPTWithMerkleProof(trie, trie.root(), key, proof);\n\n if (!verifiedReceipt) {\n throw new Error(\n `Receipt proof verification failed for transaction index ${transactionIndex}`,\n );\n }\n\n return {\n transactionIndex,\n nodeIndexes: proof.map(node => {\n const hexNode = bytesToHex(node);\n const existingIndex = nodeIndexesByHex.get(hexNode);\n if (existingIndex !== undefined) {\n return existingIndex;\n }\n\n const nextIndex = sharedNodes.length;\n sharedNodes.push(hexNode);\n nodeIndexesByHex.set(hexNode, nextIndex);\n return nextIndex;\n }),\n } satisfies EthereumCombinedReceiptProofReceipt;\n }),\n );\n\n return {\n nodes: sharedNodes,\n receipts: proofReceipts,\n };\n}\n","import {\n mintingGatewayAbi,\n MintingGatewayEvents,\n type MintingGatewayGlobalIssuanceCouncilRotated,\n type MintingGatewayMintingAuthorityActivated,\n type MintingGatewayMintingAuthorityDeactivated,\n type MintingGatewayTransferOutOfArgonCanceled,\n type MintingGatewayTransferOutOfArgonFinalized,\n type MintingGatewayTransferToArgonStarted,\n} from './EvmContracts';\nimport { decodeEventLog, getAddress, type Hex } from 'viem';\nimport type { EthereumEventLog } from './EthereumProof';\n\ntype DecodedEthereumGatewayActivity =\n | ({\n kind: typeof MintingGatewayEvents.GlobalIssuanceCouncilRotated.name;\n } & MintingGatewayGlobalIssuanceCouncilRotated)\n | ({\n kind: typeof MintingGatewayEvents.MintingAuthorityActivated.name;\n } & MintingGatewayMintingAuthorityActivated)\n | ({\n kind: typeof MintingGatewayEvents.MintingAuthorityDeactivated.name;\n } & MintingGatewayMintingAuthorityDeactivated)\n | ({\n kind: typeof MintingGatewayEvents.TransferOutOfArgonCanceled.name;\n } & MintingGatewayTransferOutOfArgonCanceled)\n | ({\n kind: typeof MintingGatewayEvents.TransferOutOfArgonFinalized.name;\n } & MintingGatewayTransferOutOfArgonFinalized)\n | ({\n kind: typeof MintingGatewayEvents.TransferToArgonStarted.name;\n } & MintingGatewayTransferToArgonStarted);\n\nexport type EthereumGatewayActivity = DecodedEthereumGatewayActivity & {\n txHash: Hex;\n transactionIndex: number;\n logIndex: number;\n blockHash: Hex;\n blockNumber: bigint;\n};\n\nconst gatewayActivityEvents = [\n MintingGatewayEvents.GlobalIssuanceCouncilRotated,\n MintingGatewayEvents.MintingAuthorityActivated,\n MintingGatewayEvents.MintingAuthorityDeactivated,\n MintingGatewayEvents.TransferOutOfArgonCanceled,\n MintingGatewayEvents.TransferOutOfArgonFinalized,\n MintingGatewayEvents.TransferToArgonStarted,\n] as const;\n\nexport function findEthereumTransferToArgonStartedLogIndexes(\n receipt: { transactionHash: Hex; logs: { address: Hex; topics: Hex[] }[] },\n gatewayAddress: Hex,\n): number[] {\n const normalizedGatewayAddress = getAddress(gatewayAddress).toLowerCase();\n const indexes = receipt.logs.flatMap((log, index) =>\n log.address.toLowerCase() === normalizedGatewayAddress &&\n log.topics[0]?.toLowerCase() === MintingGatewayEvents.TransferToArgonStarted.topic\n ? [index]\n : [],\n );\n\n if (indexes.length === 0) {\n throw new Error(\n `Ethereum receipt ${receipt.transactionHash} did not emit TransferToArgonStarted from gateway ${gatewayAddress}`,\n );\n }\n\n return indexes;\n}\n\nexport function decodeEthereumTransferToArgonStartedLog(\n log: Pick<EthereumEventLog, 'topics' | 'data'>,\n): MintingGatewayTransferToArgonStarted {\n const decoded = decodeEthereumGatewayActivityLog(log);\n if (decoded.kind !== MintingGatewayEvents.TransferToArgonStarted.name) {\n throw new Error(\n `Expected ${MintingGatewayEvents.TransferToArgonStarted.name} gateway activity log`,\n );\n }\n\n const { kind: _kind, ...transfer } = decoded;\n return transfer;\n}\n\nexport function decodeEthereumGatewayActivityLog(\n log: Pick<EthereumEventLog, 'topics' | 'data'>,\n): DecodedEthereumGatewayActivity {\n const topic = log.topics[0]?.toLowerCase();\n if (!topic) {\n throw new Error('Gateway activity log is missing an event signature topic');\n }\n\n const event = gatewayActivityEvents.find(candidate => candidate.topic === topic);\n if (!event) {\n throw new Error(`Unsupported gateway activity event topic ${topic}`);\n }\n\n const { args } = decodeEventLog({\n abi: mintingGatewayAbi,\n eventName: event.name,\n topics: log.topics as [Hex, ...Hex[]],\n data: log.data,\n strict: true,\n });\n\n return {\n kind: event.name,\n ...args,\n } as DecodedEthereumGatewayActivity;\n}\n","import { mintingGatewayAbi, type MintingGatewayActivityBlockLocator } from './EvmContracts';\nimport type { ArgonClient, IArgonQueryable } from './index';\nimport { getAddress, type Hex, toHex } from 'viem';\nimport {\n decodeEthereumGatewayActivityLog,\n type EthereumGatewayActivity,\n} from './EthereumGatewayActivity';\nimport {\n ArgonFinalizedExecutionHeaderPathError,\n buildExecutionHeaderChain,\n buildEthereumEventProof,\n type ArgonFinalizedExecutionHeader,\n type EthereumEventLocator,\n type EthereumEventLocatorBlock,\n type EthereumEventProof,\n getLatestArgonFinalizedExecutionHeader,\n loadExecutionHeader,\n} from './EthereumProof';\nimport {\n getExecutionClient,\n type EthereumExecutionClient,\n type EthereumExecutionSource,\n retryWhileExecutionRpcIndexing,\n} from './EthereumExecution';\n\nexport type EthereumGatewayActivityProofPayload = {\n previousGatewayActivityNonce: bigint;\n proof: EthereumEventProof;\n gatewayActivityNonceRange: {\n start: bigint;\n end: bigint;\n };\n executionBlockNumberRange: {\n start: bigint;\n end: bigint;\n };\n activities: EthereumGatewayActivity[];\n};\n\ntype DiscoveredGatewayActivities = Pick<\n EthereumGatewayActivityProofPayload,\n 'previousGatewayActivityNonce' | 'activities'\n>;\n\ntype GatewayActivityProofChunk = {\n activities: EthereumGatewayActivity[];\n locatorBlock: EthereumEventLocatorBlock;\n};\n\ntype GatewayProofBounds = {\n activitiesPerReceiptProof: number;\n receiptProofsPerExtrinsic: number;\n sharedHeaderDepth: number;\n};\n\ntype ArgonFinalizedExecutionHeaderPlan = {\n argonFinalizedExecutionHeader: ArgonFinalizedExecutionHeader;\n earliestTargetHeader: Awaited<ReturnType<typeof loadExecutionHeader>>;\n targetToArgonFinalizedHeaderChain: Awaited<ReturnType<typeof buildExecutionHeaderChain>>;\n};\n\ntype EthereumBlockLog = Awaited<ReturnType<EthereumExecutionClient['getLogs']>>[number];\n\nexport async function buildGatewayActivityProofPayload(\n client: IArgonQueryable & Pick<ArgonClient, 'consts'>,\n options: EthereumExecutionSource & {\n gatewayAddress: Hex;\n throughExecutionBlockNumber?: bigint;\n },\n): Promise<EthereumGatewayActivityProofPayload | null> {\n const bounds = getGatewayProofBounds(client);\n const discovered = await discoverGatewayActivities(client, options);\n if (!discovered) {\n return null;\n }\n\n const executionClient = getExecutionClient(options);\n const proofChunks = chunkGatewayActivitiesForProof(\n discovered.activities,\n bounds.activitiesPerReceiptProof,\n );\n const argonFinalizedExecutionHeaderPlan = await selectArgonFinalizedExecutionHeader(\n client,\n executionClient,\n proofChunks[0],\n bounds.sharedHeaderDepth,\n );\n if (!argonFinalizedExecutionHeaderPlan) {\n return null;\n }\n\n const acceptedProofChunks = await collectProofChunksForArgonFinalizedExecutionHeader(\n executionClient,\n proofChunks,\n argonFinalizedExecutionHeaderPlan,\n bounds.receiptProofsPerExtrinsic,\n );\n if (acceptedProofChunks.length === 0) {\n return null;\n }\n\n const acceptedActivities = acceptedProofChunks.flatMap(({ activities }) => activities);\n const proof = await buildEthereumEventProof(\n options,\n argonFinalizedExecutionHeaderPlan.argonFinalizedExecutionHeader,\n acceptedProofChunks.map(({ locatorBlock }) => locatorBlock),\n );\n\n return {\n previousGatewayActivityNonce: discovered.previousGatewayActivityNonce,\n proof,\n gatewayActivityNonceRange: {\n start: acceptedActivities[0].gatewayState.gatewayActivityNonce,\n end: acceptedActivities.at(-1)!.gatewayState.gatewayActivityNonce,\n },\n executionBlockNumberRange: {\n start: acceptedActivities[0].blockNumber,\n end: acceptedActivities.at(-1)!.blockNumber,\n },\n activities: acceptedActivities,\n };\n}\n\nasync function loadActivityBlockLocator(\n executionClient: EthereumExecutionClient,\n gatewayAddress: Hex,\n locatorIndex: bigint,\n cache: Map<bigint, MintingGatewayActivityBlockLocator>,\n): Promise<MintingGatewayActivityBlockLocator> {\n const cached = cache.get(locatorIndex);\n if (cached) {\n return cached;\n }\n\n const locator = await executionClient.readContract({\n abi: mintingGatewayAbi,\n address: gatewayAddress,\n functionName: 'activityBlockLocators',\n args: [locatorIndex],\n });\n const [blockNumber, startGatewayActivityNonce, endGatewayActivityNonce] = locator;\n const loaded: MintingGatewayActivityBlockLocator = {\n blockNumber,\n startGatewayActivityNonce,\n endGatewayActivityNonce,\n };\n cache.set(locatorIndex, loaded);\n return loaded;\n}\n\nasync function findFirstUncoveredActivityBlockLocatorIndex(\n executionClient: EthereumExecutionClient,\n gatewayAddress: Hex,\n latestLocatorIndex: bigint,\n previousGatewayActivityNonce: bigint,\n cache: Map<bigint, MintingGatewayActivityBlockLocator>,\n): Promise<bigint | null> {\n let low = 1n;\n let high = latestLocatorIndex;\n let firstUncoveredIndex: bigint | null = null;\n\n while (low <= high) {\n const middle = (low + high) / 2n;\n const locator = await loadActivityBlockLocator(executionClient, gatewayAddress, middle, cache);\n\n if (locator.endGatewayActivityNonce > previousGatewayActivityNonce) {\n firstUncoveredIndex = middle;\n high = middle - 1n;\n continue;\n }\n\n low = middle + 1n;\n }\n\n return firstUncoveredIndex;\n}\n\nasync function discoverGatewayActivities(\n client: IArgonQueryable,\n options: EthereumExecutionSource & {\n gatewayAddress: Hex;\n throughExecutionBlockNumber?: bigint;\n },\n): Promise<DiscoveredGatewayActivities | null> {\n const executionClient = getExecutionClient(options);\n const gatewayAddress = getAddress(options.gatewayAddress);\n const latestLocatorIndex = await executionClient.readContract({\n abi: mintingGatewayAbi,\n address: gatewayAddress,\n functionName: 'latestActivityBlockLocatorIndex',\n });\n if (latestLocatorIndex === 0n) {\n return null;\n }\n\n const currentGatewayState =\n await client.query.crosschainTransfer.gatewayStateBySourceChain('Ethereum');\n const previousGatewayActivityNonce = currentGatewayState.isSome\n ? currentGatewayState.unwrap().gatewayActivityNonce.toBigInt()\n : 0n;\n const locatorCache = new Map<bigint, MintingGatewayActivityBlockLocator>();\n const firstLocatorIndex = await findFirstUncoveredActivityBlockLocatorIndex(\n executionClient,\n gatewayAddress,\n latestLocatorIndex,\n previousGatewayActivityNonce,\n locatorCache,\n );\n if (!firstLocatorIndex) {\n return null;\n }\n\n const activities: EthereumGatewayActivity[] = [];\n let expectedGatewayActivityNonce = previousGatewayActivityNonce + 1n;\n\n for (\n let locatorIndex = firstLocatorIndex;\n locatorIndex <= latestLocatorIndex;\n locatorIndex += 1n\n ) {\n const locator = await loadActivityBlockLocator(\n executionClient,\n gatewayAddress,\n locatorIndex,\n locatorCache,\n );\n if (\n options.throughExecutionBlockNumber !== undefined &&\n locator.blockNumber > options.throughExecutionBlockNumber\n ) {\n break;\n }\n if (locator.endGatewayActivityNonce < expectedGatewayActivityNonce) {\n continue;\n }\n\n const blockActivities = await loadGatewayActivitiesForLocator(\n executionClient,\n gatewayAddress,\n locator,\n expectedGatewayActivityNonce,\n );\n activities.push(...blockActivities);\n expectedGatewayActivityNonce = locator.endGatewayActivityNonce + 1n;\n }\n\n if (activities.length === 0) {\n return null;\n }\n\n return {\n previousGatewayActivityNonce,\n activities,\n };\n}\n\nasync function loadGatewayActivitiesForLocator(\n executionClient: EthereumExecutionClient,\n gatewayAddress: Hex,\n locator: MintingGatewayActivityBlockLocator,\n expectedGatewayActivityNonce: bigint,\n): Promise<EthereumGatewayActivity[]> {\n const blockLogs = await retryWhileExecutionRpcIndexing(() =>\n executionClient.getLogs({\n address: gatewayAddress,\n fromBlock: locator.blockNumber,\n toBlock: locator.blockNumber,\n }),\n );\n const activities = blockLogs\n .flatMap(log => {\n try {\n return [toEthereumGatewayActivity(log)];\n } catch {\n return [];\n }\n })\n .sort((left, right) =>\n left.gatewayState.gatewayActivityNonce < right.gatewayState.gatewayActivityNonce ? -1 : 1,\n );\n const remainingActivities = activities.filter(\n activity =>\n activity.gatewayState.gatewayActivityNonce >= expectedGatewayActivityNonce &&\n activity.gatewayState.gatewayActivityNonce <= locator.endGatewayActivityNonce,\n );\n if (\n remainingActivities.length === 0 ||\n remainingActivities[0].gatewayState.gatewayActivityNonce !== expectedGatewayActivityNonce\n ) {\n throw new Error(`Gateway block ${locator.blockNumber} contains uncovered gateway activity`);\n }\n\n let previousNonce = expectedGatewayActivityNonce - 1n;\n for (const activity of remainingActivities) {\n if (activity.gatewayState.gatewayActivityNonce !== previousNonce + 1n) {\n throw new Error(\n `Gateway block ${locator.blockNumber} contains a gap in gateway activity coverage`,\n );\n }\n previousNonce = activity.gatewayState.gatewayActivityNonce;\n }\n\n if (previousNonce !== locator.endGatewayActivityNonce) {\n throw new Error(`Gateway block ${locator.blockNumber} contains uncovered gateway activity`);\n }\n\n return remainingActivities;\n}\n\nfunction toEthereumGatewayActivity(log: EthereumBlockLog): EthereumGatewayActivity {\n if (\n !log.transactionHash ||\n log.transactionIndex == null ||\n log.logIndex == null ||\n !log.blockHash ||\n log.blockNumber == null\n ) {\n throw new Error('Execution log is missing indexed receipt metadata');\n }\n\n return {\n txHash: log.transactionHash,\n transactionIndex: Number(log.transactionIndex),\n logIndex: Number(log.logIndex),\n blockHash: log.blockHash,\n blockNumber: log.blockNumber,\n ...decodeEthereumGatewayActivityLog(log),\n };\n}\n\nfunction chunkGatewayActivitiesForProof(\n activities: EthereumGatewayActivity[],\n maxActivitiesPerReceiptProof: number,\n): GatewayActivityProofChunk[] {\n const chunks: GatewayActivityProofChunk[] = [];\n let currentBlockHash: Hex | undefined;\n let currentBlockActivities: EthereumGatewayActivity[] = [];\n\n const flushBlock = () => {\n if (!currentBlockHash || currentBlockActivities.length === 0) {\n return;\n }\n\n for (\n let start = 0;\n start < currentBlockActivities.length;\n start += maxActivitiesPerReceiptProof\n ) {\n const chunkActivities = currentBlockActivities.slice(\n start,\n start + maxActivitiesPerReceiptProof,\n );\n const locatorsByReceipt = new Map<Hex, EthereumEventLocator>();\n\n for (const activity of chunkActivities) {\n const existing = locatorsByReceipt.get(activity.txHash);\n if (existing) {\n existing.logIndexes!.push(activity.logIndex);\n continue;\n }\n\n locatorsByReceipt.set(activity.txHash, {\n txHash: activity.txHash,\n logIndexes: [activity.logIndex],\n });\n }\n\n chunks.push({\n activities: chunkActivities,\n locatorBlock: [...locatorsByReceipt.values()],\n });\n }\n };\n\n for (const activity of activities) {\n if (currentBlockHash && activity.blockHash.toLowerCase() !== currentBlockHash.toLowerCase()) {\n flushBlock();\n currentBlockActivities = [];\n }\n\n currentBlockHash = activity.blockHash;\n currentBlockActivities.push(activity);\n }\n\n flushBlock();\n return chunks;\n}\n\nfunction getGatewayProofBounds(client: Pick<ArgonClient, 'consts'>): GatewayProofBounds {\n const activitiesPerReceiptProof =\n client.consts.crosschainTransfer.maxActivitiesPerReceiptProof.toNumber();\n if (!Number.isInteger(activitiesPerReceiptProof) || activitiesPerReceiptProof < 1) {\n throw new Error('Gateway proof requires maxActivitiesPerReceiptProof to be a positive integer');\n }\n\n const receiptProofsPerExtrinsic =\n client.consts.crosschainTransfer.maxReceiptProofsPerExtrinsic.toNumber();\n if (!Number.isInteger(receiptProofsPerExtrinsic) || receiptProofsPerExtrinsic < 1) {\n throw new Error('Gateway proof requires maxReceiptProofsPerExtrinsic to be a positive integer');\n }\n\n return {\n activitiesPerReceiptProof,\n receiptProofsPerExtrinsic,\n sharedHeaderDepth: client.consts.crosschainTransfer.maxProofExecutionHeaderDepth.toNumber(),\n };\n}\n\nasync function selectArgonFinalizedExecutionHeader(\n client: IArgonQueryable,\n executionClient: EthereumExecutionClient,\n earliestProofChunk: GatewayActivityProofChunk,\n sharedHeaderDepth: number,\n): Promise<ArgonFinalizedExecutionHeaderPlan | null> {\n const earliestBlockHash = earliestProofChunk.activities[0].blockHash;\n const earliestBlockNumber = earliestProofChunk.activities[0].blockNumber;\n const earliestTargetHeader = await loadExecutionHeader(executionClient, earliestBlockHash);\n const latestArgonFinalizedExecutionHeader = await getLatestArgonFinalizedExecutionHeader(client);\n\n if (earliestBlockNumber > latestArgonFinalizedExecutionHeader.blockNumber) {\n return null;\n }\n\n const maxArgonFinalizedExecutionHeaderBlockNumber =\n earliestBlockNumber + BigInt(sharedHeaderDepth);\n\n if (\n latestArgonFinalizedExecutionHeader.blockNumber <= maxArgonFinalizedExecutionHeaderBlockNumber\n ) {\n try {\n return {\n argonFinalizedExecutionHeader: latestArgonFinalizedExecutionHeader,\n earliestTargetHeader,\n targetToArgonFinalizedHeaderChain: await buildExecutionHeaderChain(\n executionClient,\n earliestTargetHeader,\n latestArgonFinalizedExecutionHeader,\n ),\n };\n } catch (error) {\n if (!(error instanceof ArgonFinalizedExecutionHeaderPathError)) {\n throw error;\n }\n }\n }\n\n const scannedArgonFinalizedExecutionHeader =\n await loadRetainedExecutionHeaderAnchorAtOrAfterBlock(client, earliestBlockNumber);\n if (\n scannedArgonFinalizedExecutionHeader &&\n scannedArgonFinalizedExecutionHeader.blockNumber <= maxArgonFinalizedExecutionHeaderBlockNumber\n ) {\n return {\n argonFinalizedExecutionHeader: scannedArgonFinalizedExecutionHeader,\n earliestTargetHeader,\n targetToArgonFinalizedHeaderChain: await buildExecutionHeaderChain(\n executionClient,\n earliestTargetHeader,\n scannedArgonFinalizedExecutionHeader,\n ),\n };\n }\n\n throw new Error(\n 'Oldest uncovered gateway activity exceeds the Argon finalized execution-header window',\n );\n}\n\nasync function loadRetainedExecutionHeaderAnchorAtOrAfterBlock(\n client: IArgonQueryable,\n earliestBlockNumber: bigint,\n): Promise<ArgonFinalizedExecutionHeader | null> {\n // The runtime stores this index under `block_number.to_be_bytes()`, so a fixed-width hex key\n // preserves the same big-endian ordering here. We first try the exact block number, then seek\n // to the first later retained key when that exact anchor is not present.\n const scanBlockNumberKey = toHex(earliestBlockNumber, { size: 8 });\n const executionHeaderAnchorsByBlockNumber =\n client.query.ethereumVerifier.executionHeaderAnchorsByBlockNumber;\n const exactAnchor = await executionHeaderAnchorsByBlockNumber(scanBlockNumberKey);\n const matchingEntry = exactAnchor.isSome\n ? exactAnchor\n : (\n await executionHeaderAnchorsByBlockNumber.entriesPaged({\n args: [],\n pageSize: 1,\n startKey: executionHeaderAnchorsByBlockNumber.key(scanBlockNumberKey),\n })\n )[0]?.[1];\n const scannedAnchor = matchingEntry?.isSome ? matchingEntry.unwrap() : null;\n\n if (!scannedAnchor) {\n return null;\n }\n\n return {\n blockHash: scannedAnchor.blockHash.toHex(),\n blockNumber: scannedAnchor.blockNumber.toBigInt(),\n };\n}\n\nasync function collectProofChunksForArgonFinalizedExecutionHeader(\n executionClient: EthereumExecutionClient,\n proofChunks: GatewayActivityProofChunk[],\n plan: ArgonFinalizedExecutionHeaderPlan,\n receiptProofsPerExtrinsic: number,\n): Promise<GatewayActivityProofChunk[]> {\n const acceptedProofChunks: GatewayActivityProofChunk[] = [];\n const loadedTargetHeaders = [\n {\n blockHash: proofChunks[0].activities[0].blockHash,\n targetHeader: plan.earliestTargetHeader,\n },\n ];\n\n for (const proofChunk of proofChunks) {\n if (acceptedProofChunks.length === receiptProofsPerExtrinsic) {\n break;\n }\n\n const blockHash = proofChunk.activities[0].blockHash;\n const blockNumber = proofChunk.activities[0].blockNumber;\n\n if (blockNumber > plan.argonFinalizedExecutionHeader.blockNumber) {\n break;\n }\n\n let targetHeader = loadedTargetHeaders.find(\n loadedHeader => loadedHeader.blockHash.toLowerCase() === blockHash.toLowerCase(),\n )?.targetHeader;\n if (!targetHeader) {\n targetHeader = await loadExecutionHeader(executionClient, blockHash);\n loadedTargetHeaders.push({ blockHash, targetHeader });\n }\n\n if (targetHeader.number === plan.argonFinalizedExecutionHeader.blockNumber) {\n if (blockHash.toLowerCase() !== plan.argonFinalizedExecutionHeader.blockHash.toLowerCase()) {\n break;\n }\n } else {\n const expectedTargetHeaderOnArgonFinalizedChain =\n plan.targetToArgonFinalizedHeaderChain[\n Number(targetHeader.number - plan.earliestTargetHeader.number)\n ];\n if (\n !expectedTargetHeaderOnArgonFinalizedChain ||\n expectedTargetHeaderOnArgonFinalizedChain.blockHash.toLowerCase() !==\n blockHash.toLowerCase()\n ) {\n break;\n }\n }\n\n acceptedProofChunks.push(proofChunk);\n }\n\n return acceptedProofChunks;\n}\n","import camelcaseKeys from 'camelcase-keys';\nimport type { SubmittableExtrinsic } from '@polkadot/api/promise/types';\nimport type {\n EthereumBeaconConfigSpecResponse,\n EthereumBeaconGenesisResponse,\n EthereumBeaconHeaderDetailsResponse,\n EthereumLightClientBootstrapResponse,\n EthereumLightClientHeader,\n EthereumLightClientUpdate,\n EthereumLightClientUpdatesResponse,\n} from './EthereumBeaconTypes';\nimport type { ArgonClient } from './index';\nimport { type Hex, hexToBytes } from 'viem';\n\ntype BeaconPreset = 'mainnet' | 'minimal';\ntype BeaconNetworkParams = {\n epochsPerSyncCommitteePeriod: bigint;\n preset: BeaconPreset;\n slotsPerEpoch: bigint;\n};\ntype EthereumBeaconSyncState =\n | {\n isBootstrapped: false;\n hasNextSyncCommittee: boolean;\n latestFinalizedBlockRoot: string;\n latestSyncCommitteeUpdatePeriod: bigint;\n headerInterval: bigint;\n }\n | {\n isBootstrapped: true;\n hasNextSyncCommittee: boolean;\n latestFinalizedBlockRoot: string;\n latestFinalizedSlot: bigint;\n nextRecommendedFinalizedSlot: bigint;\n latestSyncCommitteeUpdatePeriod: bigint;\n headerInterval: bigint;\n };\n\nconst lightClientUpdateRetryIntervalMs = 500;\nconst lightClientUpdateRetryTimeoutMs = 30_000;\nconst expectedBeaconPresetPromises = new WeakMap<ArgonClient, Promise<BeaconPreset | undefined>>();\nconst beaconNetworkParamsPromises = new Map<string, Promise<BeaconNetworkParams>>();\n\nexport async function getEthereumBeaconSyncBootstrapTx(\n client: ArgonClient,\n beaconApiUrl: string,\n): Promise<SubmittableExtrinsic> {\n const expectedPreset = await getExpectedBeaconPreset(client);\n const [genesis, spec] = await Promise.all([\n getBeaconJson<EthereumBeaconGenesisResponse>(beaconApiUrl, '/eth/v1/beacon/genesis'),\n getBeaconJson<EthereumBeaconConfigSpecResponse>(beaconApiUrl, '/eth/v1/config/spec'),\n ]);\n const specData = spec.data;\n parseBeaconNetworkParams(specData, expectedPreset);\n const startedAt = Date.now();\n let lastError: Error | undefined;\n let bootstrap: EthereumLightClientBootstrapResponse | undefined;\n\n while (Date.now() - startedAt < lightClientUpdateRetryTimeoutMs) {\n try {\n const finalizedHeader = await getBeaconJson<EthereumBeaconHeaderDetailsResponse>(\n beaconApiUrl,\n '/eth/v1/beacon/headers/finalized',\n );\n bootstrap = await getBeaconJson<EthereumLightClientBootstrapResponse>(\n beaconApiUrl,\n `/eth/v1/beacon/light_client/bootstrap/${finalizedHeader.data.root}`,\n );\n lastError = undefined;\n break;\n } catch (error) {\n if (!(error instanceof Error)) {\n throw error;\n }\n lastError = error;\n await new Promise(resolve => setTimeout(resolve, lightClientUpdateRetryIntervalMs));\n }\n }\n\n if (!bootstrap) {\n throw (\n lastError ??\n new Error('Unable to fetch ethereum beacon bootstrap before the retry timeout elapsed')\n );\n }\n\n return client.tx.ethereumVerifier.forceCheckpoint(\n {\n header: camelcaseKeys(bootstrap.data.header.beacon),\n currentSyncCommittee: camelcaseKeys(bootstrap.data.current_sync_committee),\n currentSyncCommitteeBranch: bootstrap.data.current_sync_committee_branch,\n validatorsRoot: genesis.data.genesis_validators_root,\n executionHeaderProof: buildExecutionHeaderProof(bootstrap.data.header),\n },\n {\n genesis: {\n version: genesis.data.genesis_fork_version,\n epoch: 0n,\n },\n altair: buildFork(specData, 'ALTAIR'),\n bellatrix: buildFork(specData, 'BELLATRIX'),\n capella: buildFork(specData, 'CAPELLA'),\n deneb: buildFork(specData, 'DENEB'),\n electra: buildFork(specData, 'ELECTRA'),\n fulu: buildFork(specData, 'FULU'),\n },\n );\n}\n\nexport async function getNextEthereumBeaconSyncTxs(\n client: ArgonClient,\n beaconApiUrl: string,\n): Promise<SubmittableExtrinsic[]> {\n const state = await getEthereumBeaconSyncState(client);\n\n if (!state.isBootstrapped) {\n return [];\n }\n\n const expectedPreset = await getExpectedBeaconPreset(client);\n const beaconNetworkParams = await getBeaconNetworkParams(beaconApiUrl, expectedPreset);\n const storedPeriod = computePeriod(state.latestFinalizedSlot, beaconNetworkParams);\n const txs: SubmittableExtrinsic[] = [];\n const startedAt = Date.now();\n\n while (Date.now() - startedAt < lightClientUpdateRetryTimeoutMs) {\n let finalityUpdate: EthereumLightClientUpdate;\n\n try {\n finalityUpdate = (\n await getBeaconJson<{ data: EthereumLightClientUpdate }>(\n beaconApiUrl,\n '/eth/v1/beacon/light_client/finality_update',\n )\n ).data;\n } catch (error) {\n if (!isRetryableBeaconLightClientError(error)) {\n throw error;\n }\n\n await new Promise(resolve => setTimeout(resolve, lightClientUpdateRetryIntervalMs));\n continue;\n }\n\n const missingNextSyncCommittee = !state.hasNextSyncCommittee;\n const finalityFinalizedPeriod = computePeriod(\n BigInt(finalityUpdate.finalized_header.beacon.slot),\n beaconNetworkParams,\n );\n const requiredCommitteePeriod = getRequiredCommitteePeriod({\n storedPeriod,\n missingNextSyncCommittee,\n latestSyncCommitteeUpdatePeriod: state.latestSyncCommitteeUpdatePeriod,\n finalityFinalizedPeriod,\n });\n const needsCommitteeData = requiredCommitteePeriod !== undefined;\n const finalityCarriesRequiredCommittee = updateCarriesCommitteeForPeriod(\n finalityUpdate,\n requiredCommitteePeriod,\n beaconNetworkParams,\n );\n const needsCurrentPeriodUpdate =\n requiredCommitteePeriod !== undefined &&\n (missingNextSyncCommittee || !finalityCarriesRequiredCommittee);\n let submitUpdate: EthereumLightClientUpdate | undefined = finalityUpdate;\n\n if (needsCommitteeData && needsCurrentPeriodUpdate) {\n let periodUpdates: EthereumLightClientUpdatesResponse;\n\n try {\n periodUpdates = await getBeaconJson<EthereumLightClientUpdatesResponse>(\n beaconApiUrl,\n `/eth/v1/beacon/light_client/updates?count=1&start_period=${requiredCommitteePeriod}`,\n );\n } catch (error) {\n if (!isRetryableBeaconLightClientError(error)) {\n throw error;\n }\n\n await new Promise(resolve => setTimeout(resolve, lightClientUpdateRetryIntervalMs));\n continue;\n }\n\n const currentPeriodUpdate = periodUpdates[0]?.data;\n if (\n updateCarriesCommitteeForPeriod(\n currentPeriodUpdate,\n requiredCommitteePeriod,\n beaconNetworkParams,\n )\n ) {\n submitUpdate = currentPeriodUpdate;\n } else {\n submitUpdate = undefined;\n }\n }\n\n if (needsCommitteeData && needsCurrentPeriodUpdate && !submitUpdate) {\n return [];\n }\n\n // make sure the update we choose has a supermajority of sync committee participants\n if (\n submitUpdate &&\n !hasSyncCommitteeSupermajority(submitUpdate.sync_aggregate.sync_committee_bits)\n ) {\n await new Promise(resolve => setTimeout(resolve, lightClientUpdateRetryIntervalMs));\n continue;\n }\n\n if (submitUpdate) {\n const finalizedSlot = BigInt(submitUpdate.finalized_header.beacon.slot);\n const attestedSlot = BigInt(submitUpdate.attested_header.beacon.slot);\n\n const finalizedPeriod = computePeriod(finalizedSlot, beaconNetworkParams);\n const attestedPeriod = computePeriod(attestedSlot, beaconNetworkParams);\n\n const isNewerThanStoredFinalized = finalizedSlot > state.latestFinalizedSlot;\n const hasReachedNextFinalizedWindow = finalizedSlot >= state.nextRecommendedFinalizedSlot;\n const canAdvanceFinalized = isNewerThanStoredFinalized && hasReachedNextFinalizedWindow;\n const advancesSyncCommitteePeriod = finalizedPeriod > state.latestSyncCommitteeUpdatePeriod;\n const canUseNextSyncCommittee = missingNextSyncCommittee || advancesSyncCommitteePeriod;\n const includesNextSyncCommittee =\n hasNextSyncCommitteeUpdate(submitUpdate) && canUseNextSyncCommittee;\n const fillsMissingNextSyncCommittee =\n missingNextSyncCommittee && includesNextSyncCommittee && attestedPeriod === storedPeriod;\n const advancesKnownSyncCommitteePeriod =\n !missingNextSyncCommittee && includesNextSyncCommittee;\n\n if (\n canAdvanceFinalized ||\n fillsMissingNextSyncCommittee ||\n advancesKnownSyncCommitteePeriod\n ) {\n const nextSyncCommitteeUpdate = includesNextSyncCommittee\n ? {\n nextSyncCommitteeUpdate: {\n nextSyncCommittee: camelcaseKeys(submitUpdate.next_sync_committee!),\n nextSyncCommitteeBranch: submitUpdate.next_sync_committee_branch!,\n },\n }\n : {};\n txs.push(\n client.tx.ethereumVerifier.submit({\n attestedHeader: camelcaseKeys(submitUpdate.attested_header.beacon),\n syncAggregate: camelcaseKeys(submitUpdate.sync_aggregate),\n signatureSlot: submitUpdate.signature_slot,\n ...nextSyncCommitteeUpdate,\n finalizedHeader: camelcaseKeys(submitUpdate.finalized_header.beacon),\n finalityBranch: submitUpdate.finality_branch,\n executionHeaderProof: buildExecutionHeaderProof(submitUpdate.finalized_header),\n }),\n );\n }\n }\n\n break;\n }\n\n return txs;\n}\n\nexport async function getEthereumBeaconSyncState(\n client: ArgonClient,\n): Promise<EthereumBeaconSyncState> {\n const latestFinalizedBlockRoot = (await client.query.ethereumVerifier.latestFinalizedBlockRoot())\n .toHex()\n .toLowerCase();\n const finalizedState =\n await client.query.ethereumVerifier.finalizedBeaconState(latestFinalizedBlockRoot);\n const latestSyncCommitteeUpdatePeriod = (\n await client.query.ethereumVerifier.latestSyncCommitteeUpdatePeriod()\n ).toBigInt();\n const headerInterval = client.consts.ethereumVerifier.freeHeadersInterval.toBigInt();\n const hasNextSyncCommittee = !(\n await client.query.ethereumVerifier.nextSyncCommittee.size()\n ).isZero();\n\n if (finalizedState.isNone) {\n return {\n isBootstrapped: false,\n hasNextSyncCommittee,\n latestFinalizedBlockRoot,\n latestSyncCommitteeUpdatePeriod,\n headerInterval,\n };\n }\n\n const latestFinalizedSlot = finalizedState.unwrap().slot.toBigInt();\n\n return {\n isBootstrapped: true,\n hasNextSyncCommittee,\n latestFinalizedBlockRoot,\n latestFinalizedSlot,\n nextRecommendedFinalizedSlot: latestFinalizedSlot + headerInterval,\n latestSyncCommitteeUpdatePeriod,\n headerInterval,\n };\n}\n\nfunction buildExecutionHeaderProof(finalizedHeader: EthereumLightClientHeader) {\n return {\n executionHeader: buildExecutionPayloadHeader(finalizedHeader.execution),\n executionBranch: finalizedHeader.execution_branch.map(witness => witness.toLowerCase() as Hex),\n };\n}\n\nfunction buildFork(spec: Record<string, string>, name: string) {\n const version = spec[`${name}_FORK_VERSION`];\n const epoch = spec[`${name}_FORK_EPOCH`];\n\n if (!version) throw new Error(`Missing beacon spec value for ${name}_FORK_VERSION`);\n if (!epoch) throw new Error(`Missing beacon spec value for ${name}_FORK_EPOCH`);\n\n return {\n version,\n epoch: BigInt(epoch),\n };\n}\n\nfunction hasNextSyncCommitteeUpdate(\n update?: Pick<EthereumLightClientUpdate, 'next_sync_committee' | 'next_sync_committee_branch'>,\n): boolean {\n return !!update?.next_sync_committee && !!update?.next_sync_committee_branch;\n}\n\nfunction getRequiredCommitteePeriod({\n storedPeriod,\n missingNextSyncCommittee,\n latestSyncCommitteeUpdatePeriod,\n finalityFinalizedPeriod,\n}: {\n storedPeriod: bigint;\n missingNextSyncCommittee: boolean;\n latestSyncCommitteeUpdatePeriod: bigint;\n finalityFinalizedPeriod: bigint;\n}): bigint | undefined {\n if (missingNextSyncCommittee) {\n return storedPeriod;\n }\n\n if (finalityFinalizedPeriod > latestSyncCommitteeUpdatePeriod) {\n return latestSyncCommitteeUpdatePeriod + 1n;\n }\n\n return undefined;\n}\n\nfunction updateCarriesCommitteeForPeriod(\n update: EthereumLightClientUpdate | undefined,\n requiredCommitteePeriod: bigint | undefined,\n beaconNetworkParams: BeaconNetworkParams,\n): boolean {\n if (!update || requiredCommitteePeriod === undefined || !hasNextSyncCommitteeUpdate(update)) {\n return false;\n }\n\n const attestedPeriod = computePeriod(\n BigInt(update.attested_header.beacon.slot),\n beaconNetworkParams,\n );\n const finalizedPeriod = computePeriod(\n BigInt(update.finalized_header.beacon.slot),\n beaconNetworkParams,\n );\n\n return attestedPeriod === requiredCommitteePeriod && finalizedPeriod === requiredCommitteePeriod;\n}\n\nfunction buildExecutionPayloadHeader(header: EthereumLightClientHeader['execution']) {\n const executionHeader = {\n parentHash: header.parent_hash,\n feeRecipient: header.fee_recipient,\n stateRoot: header.state_root,\n receiptsRoot: header.receipts_root,\n logsBloom: header.logs_bloom,\n prevRandao: header.prev_randao,\n blockNumber: header.block_number,\n gasLimit: header.gas_limit,\n gasUsed: header.gas_used,\n timestamp: header.timestamp,\n extraData: header.extra_data,\n baseFeePerGas: header.base_fee_per_gas,\n blockHash: header.block_hash,\n transactionsRoot: header.transactions_root,\n withdrawalsRoot: header.withdrawals_root,\n };\n\n if (header.blob_gas_used && header.excess_blob_gas) {\n return {\n Deneb: {\n ...executionHeader,\n blobGasUsed: header.blob_gas_used,\n excessBlobGas: header.excess_blob_gas,\n },\n };\n }\n\n return { Capella: executionHeader };\n}\n\nfunction detectBeaconPreset(spec: Record<string, string>): BeaconPreset {\n return spec.SLOTS_PER_HISTORICAL_ROOT === '64' ? 'minimal' : 'mainnet';\n}\n\nasync function getBeaconNetworkParams(\n beaconApiUrl: string,\n expectedPreset?: BeaconPreset,\n): Promise<BeaconNetworkParams> {\n let paramsPromise = beaconNetworkParamsPromises.get(beaconApiUrl);\n\n if (!paramsPromise) {\n paramsPromise = getBeaconJson<EthereumBeaconConfigSpecResponse>(\n beaconApiUrl,\n '/eth/v1/config/spec',\n ).then(({ data }) => parseBeaconNetworkParams(data));\n beaconNetworkParamsPromises.set(beaconApiUrl, paramsPromise);\n }\n\n const beaconNetworkParams = await paramsPromise;\n\n if (beaconNetworkParams.preset !== expectedPreset) {\n throw new Error(\n `Beacon preset mismatch: chain expects ${expectedPreset}, but endpoint reports ${beaconNetworkParams.preset}`,\n );\n }\n\n return beaconNetworkParams;\n}\n\nfunction parseBeaconNetworkParams(\n spec: Record<string, string>,\n expectedPreset?: BeaconPreset,\n): BeaconNetworkParams {\n const slotsPerEpoch = spec.SLOTS_PER_EPOCH;\n const epochsPerSyncCommitteePeriod = spec.EPOCHS_PER_SYNC_COMMITTEE_PERIOD;\n\n if (!slotsPerEpoch) {\n throw new Error('Missing beacon spec value for SLOTS_PER_EPOCH');\n }\n if (!epochsPerSyncCommitteePeriod) {\n throw new Error('Missing beacon spec value for EPOCHS_PER_SYNC_COMMITTEE_PERIOD');\n }\n\n const preset = detectBeaconPreset(spec);\n\n if (expectedPreset && preset !== expectedPreset) {\n throw new Error(\n `Beacon preset mismatch: chain expects ${expectedPreset}, but endpoint reports ${preset}`,\n );\n }\n\n return {\n preset,\n slotsPerEpoch: BigInt(slotsPerEpoch),\n epochsPerSyncCommitteePeriod: BigInt(epochsPerSyncCommitteePeriod),\n };\n}\n\nasync function getExpectedBeaconPreset(client: ArgonClient): Promise<BeaconPreset | undefined> {\n let presetPromise = expectedBeaconPresetPromises.get(client);\n\n if (!presetPromise) {\n const beaconPresetQuery = (\n client.query.ethereumVerifier as {\n beaconPreset?: () => Promise<{\n isMainnet: boolean;\n isMinimal: boolean;\n toString(): string;\n }>;\n }\n ).beaconPreset;\n\n if (!beaconPresetQuery) {\n return;\n }\n\n presetPromise = beaconPresetQuery.call(client.query.ethereumVerifier).then(preset => {\n if (preset.isMainnet) {\n return 'mainnet';\n }\n if (preset.isMinimal) {\n return 'minimal';\n }\n\n throw new Error(`Unknown ethereum verifier beacon preset: ${preset.toString()}`);\n });\n expectedBeaconPresetPromises.set(client, presetPromise);\n }\n\n try {\n return await presetPromise;\n } catch (error) {\n expectedBeaconPresetPromises.delete(client);\n throw error;\n }\n}\n\nfunction computePeriod(slot: bigint, beaconNetworkParams: BeaconNetworkParams) {\n return (\n slot / beaconNetworkParams.slotsPerEpoch / beaconNetworkParams.epochsPerSyncCommitteePeriod\n );\n}\n\nfunction hasSyncCommitteeSupermajority(syncCommitteeBits: string) {\n const bytes = hexToBytes(syncCommitteeBits as Hex);\n const totalBits = bytes.length * 8;\n const participants = bytes.reduce((total, byte) => {\n let count = 0;\n\n for (let value = byte; value > 0; value >>= 1) {\n count += value & 1;\n }\n\n return total + count;\n }, 0);\n\n return participants * 3 >= totalBits * 2;\n}\n\nasync function getBeaconJson<T>(beaconApiUrl: string, path: string): Promise<T> {\n const response = await fetch(\n new URL(path, beaconApiUrl.endsWith('/') ? beaconApiUrl : `${beaconApiUrl}/`),\n );\n\n if (!response.ok) {\n throw new Error(\n `Beacon API request failed for ${path}: ${response.status} ${response.statusText}`,\n );\n }\n\n return (await response.json()) as T;\n}\n\nfunction isRetryableBeaconLightClientError(error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n\n return (\n message.includes('/eth/v1/beacon/light_client/') &&\n (message.includes(': 404') || message.includes(': 500'))\n );\n}\n","import './interfaces/augment-api';\nimport './interfaces/augment-types';\nimport './interfaces/types-lookup';\nimport type { KeyringPair, KeyringPair$Json } from '@polkadot/keyring/types';\nimport { ApiPromise, HttpProvider, Keyring, WsProvider } from '@polkadot/api';\nimport {\n cryptoWaitReady,\n decodeAddress,\n encodeAddress,\n isAddress,\n mnemonicGenerate,\n} from '@polkadot/util-crypto';\nimport type { InterfaceTypes } from '@polkadot/types/types/registry';\nimport type { KeypairType } from '@polkadot/util-crypto/types';\nimport type { ProviderInterface } from '@polkadot/rpc-provider/types';\nimport type { ApiDecoration, ApiOptions } from '@polkadot/api/types';\nimport { Metadata, TypeRegistry } from '@polkadot/types';\nimport { result as metadataBytes } from '../metadata.json';\nimport { specVersion } from '../runtime_version.json';\nimport Genesis from '../genesis.json';\nimport { HexString } from '@polkadot/util/types';\n\nexport type { SubmittableExtrinsic } from '@polkadot/api/promise/types';\nexport { ApiDecoration };\nexport { WageProtector } from './WageProtector';\nexport { TxSubmitter, type ISubmittableOptions, type TxSigningAccount } from './TxSubmitter';\nexport { TxResult, type ITxProgressCallback } from './TxResult';\nexport * from './utils';\nexport * from './keyringUtils';\nexport * from './header';\nexport * from './Vault';\nexport * from './convert';\nexport * from './BitcoinLock';\nexport * from './PriceIndex';\nexport * as EvmContracts from './EvmContracts';\nexport * from './EthereumProof';\nexport type {\n EthereumBeaconBlockResponse,\n EthereumBeaconConfigSpecResponse,\n EthereumBeaconGenesisResponse,\n EthereumBeaconHeaderDetailsResponse,\n EthereumLightClientBootstrapResponse,\n EthereumLightClientHeader,\n EthereumLightClientUpdate,\n EthereumVersionedLightClientUpdate,\n} from './EthereumBeaconTypes';\nexport {\n decodeEthereumGatewayActivityLog,\n decodeEthereumTransferToArgonStartedLog,\n findEthereumTransferToArgonStartedLogIndexes,\n type EthereumGatewayActivity,\n} from './EthereumGatewayActivity';\nexport {\n buildGatewayActivityProofPayload,\n type EthereumGatewayActivityProofPayload,\n} from './EthereumGatewayActivityProof';\nexport * from './EthereumBeaconSync';\nexport type {\n EthereumExecutionClient,\n EthereumExecutionSource,\n EthereumReceipt,\n} from './EthereumExecution';\nexport {\n Keyring,\n KeyringPair,\n KeyringPair$Json,\n KeypairType,\n mnemonicGenerate,\n decodeAddress,\n isAddress,\n encodeAddress,\n};\n\nexport { u8aToHex, hexToU8a, u8aEq } from '@polkadot/util';\n\nexport * from '@polkadot/types/lookup';\nexport { GenericEvent, GenericBlock, GenericAddress } from '@polkadot/types/generic';\nexport {\n BTreeMap,\n Bytes,\n Compact,\n Enum,\n Null,\n Option,\n Result,\n Bool,\n Tuple,\n Range,\n Struct,\n Text,\n U256,\n U8aFixed,\n Vec,\n bool,\n i128,\n u128,\n u16,\n u32,\n u64,\n u8,\n} from '@polkadot/types-codec';\nexport type {\n ISubmittableResult,\n IExtrinsic,\n SignerResult,\n Signer,\n ISignerPayload,\n} from '@polkadot/types/types/extrinsic';\nexport { type ITuple, type Codec } from '@polkadot/types-codec/types';\nexport {\n type AccountId32,\n type Call,\n type H160,\n type H256,\n type MultiAddress,\n type Permill,\n type AccountId,\n type Header,\n type Block,\n type SignedBlock,\n} from '@polkadot/types/interfaces/runtime';\nexport type { ExtrinsicOrHash, ExtrinsicStatus } from '@polkadot/types/interfaces/author';\nexport { type BlockHash } from '@polkadot/types/interfaces/chain';\nexport { InterfaceTypes as interfaces };\n\nexport type ArgonClient = ApiPromise;\nexport type IArgonQueryable = ArgonClient | ApiDecoration<'promise'>;\n\n/**\n * Wait for the crypto library to be ready (requires wasm, which needs async loading in commonjs)\n */\nexport async function waitForLoad(): Promise<void> {\n await cryptoWaitReady();\n}\n\n/**\n * Get a client for the given host\n * @param host The host to connect to\n * @param options Additional options for the API\n * @returns The client\n */\nexport async function getClient(host: string, options?: ApiOptions): Promise<ArgonClient> {\n let provider: ProviderInterface;\n if (host.startsWith('http')) {\n provider = new HttpProvider(host);\n } else {\n provider = new WsProvider(host);\n }\n\n options ??= {};\n options.metadata ??= {};\n\n for (const genesisHash of Object.values(Genesis)) {\n options.metadata[`${genesisHash}-${specVersion}`] = metadataBytes as HexString;\n }\n return await ApiPromise.create({ provider, noInitWarn: true, ...options });\n}\n\nconst registry = new TypeRegistry();\nregistry.setMetadata(\n new Metadata(registry, metadataBytes as HexString),\n undefined,\n undefined,\n true,\n);\n\nexport function getOfflineRegistry() {\n return registry;\n}\n"]}