@layerzerolabs/lz-evm-sdk-v2 2.0.17 → 2.0.18

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 (95) hide show
  1. package/artifacts/contracts/Executor.sol/Executor.json +2 -2
  2. package/artifacts/contracts/ExecutorFeeLib.sol/ExecutorFeeLib.json +18 -2
  3. package/artifacts/contracts/interfaces/IExecutorFeeLib.sol/IExecutorFeeLib.json +16 -0
  4. package/artifacts/contracts/uln/dvn/DVN.sol/DVN.json +2 -2
  5. package/artifacts/contracts/uln/dvn/DVNFeeLib.sol/DVNFeeLib.json +13 -2
  6. package/artifacts/contracts/uln/dvn/adapters/CCIP/CCIPDVNAdapter.sol/CCIPDVNAdapter.json +2 -2
  7. package/artifacts/contracts/uln/dvn/adapters/CCIP/CCIPDVNAdapterFeeLib.sol/CCIPDVNAdapterFeeLib.json +14 -3
  8. package/artifacts/contracts/uln/dvn/adapters/axelar/AxelarDVNAdapter.sol/AxelarDVNAdapter.json +2 -2
  9. package/artifacts/contracts/uln/dvn/adapters/axelar/AxelarDVNAdapterFeeLib.sol/AxelarDVNAdapterFeeLib.json +13 -2
  10. package/artifacts/contracts/uln/interfaces/IDVNFeeLib.sol/IDVNFeeLib.json +11 -0
  11. package/artifacts/contracts/uln/interfaces/adapters/IAxelarDVNAdapterFeeLib.sol/IAxelarDVNAdapterFeeLib.json +11 -0
  12. package/artifacts/contracts/uln/interfaces/adapters/ICCIPDVNAdapterFeeLib.sol/ICCIPDVNAdapterFeeLib.json +12 -1
  13. package/deployments/avalanche-testnet/AxelarDVNAdapterFeeLib.json +10 -10
  14. package/deployments/avalanche-testnet/AxelarDVNAdapterFeeLib_Implementation.json +40 -40
  15. package/deployments/ethereum-sandbox-local/DVN.json +76 -76
  16. package/deployments/ethereum-sandbox-local/DVNFeeLib.json +23 -23
  17. package/deployments/ethereum-sandbox-local/DefaultProxyAdmin.json +258 -0
  18. package/deployments/ethereum-sandbox-local/EndpointV2.json +141 -150
  19. package/deployments/ethereum-sandbox-local/EndpointV2View.json +435 -0
  20. package/deployments/ethereum-sandbox-local/EndpointV2View_Implementation.json +313 -0
  21. package/deployments/ethereum-sandbox-local/EndpointV2View_Proxy.json +230 -0
  22. package/deployments/ethereum-sandbox-local/Executor.json +86 -86
  23. package/deployments/ethereum-sandbox-local/ExecutorFeeLib.json +38 -33
  24. package/deployments/ethereum-sandbox-local/ExecutorProxyAdmin.json +17 -17
  25. package/deployments/ethereum-sandbox-local/Executor_Implementation.json +61 -61
  26. package/deployments/ethereum-sandbox-local/Executor_Proxy.json +66 -66
  27. package/deployments/ethereum-sandbox-local/LzExecutor.json +757 -0
  28. package/deployments/ethereum-sandbox-local/LzExecutor_Implementation.json +703 -0
  29. package/deployments/ethereum-sandbox-local/LzExecutor_Proxy.json +244 -0
  30. package/deployments/ethereum-sandbox-local/NonceContractMock.json +6 -6
  31. package/deployments/ethereum-sandbox-local/PriceFeed.json +18 -18
  32. package/deployments/ethereum-sandbox-local/PriceFeedProxyAdmin.json +5 -5
  33. package/deployments/ethereum-sandbox-local/PriceFeed_Implementation.json +44 -44
  34. package/deployments/ethereum-sandbox-local/PriceFeed_Proxy.json +5 -5
  35. package/deployments/ethereum-sandbox-local/ReceiveUln301.json +126 -98
  36. package/deployments/ethereum-sandbox-local/ReceiveUln301View.json +354 -0
  37. package/deployments/ethereum-sandbox-local/ReceiveUln301View_Implementation.json +231 -0
  38. package/deployments/ethereum-sandbox-local/ReceiveUln301View_Proxy.json +230 -0
  39. package/deployments/ethereum-sandbox-local/ReceiveUln302.json +114 -62
  40. package/deployments/ethereum-sandbox-local/ReceiveUln302View.json +478 -0
  41. package/deployments/ethereum-sandbox-local/ReceiveUln302View_Implementation.json +384 -0
  42. package/deployments/ethereum-sandbox-local/ReceiveUln302View_Proxy.json +230 -0
  43. package/deployments/ethereum-sandbox-local/SendUln301.json +112 -112
  44. package/deployments/ethereum-sandbox-local/SendUln302.json +109 -109
  45. package/deployments/ethereum-sandbox-local/SimpleMessageLib.json +23 -23
  46. package/deployments/ethereum-sandbox-local/Treasury.json +21 -21
  47. package/deployments/ethereum-sandbox-local/TreasuryFeeHandler.json +12 -12
  48. package/deployments/polygon-sandbox-local/DVN.json +76 -76
  49. package/deployments/polygon-sandbox-local/DVNFeeLib.json +23 -23
  50. package/deployments/polygon-sandbox-local/DefaultProxyAdmin.json +258 -0
  51. package/deployments/polygon-sandbox-local/EndpointV2.json +141 -150
  52. package/deployments/polygon-sandbox-local/EndpointV2View.json +435 -0
  53. package/deployments/polygon-sandbox-local/EndpointV2View_Implementation.json +313 -0
  54. package/deployments/polygon-sandbox-local/EndpointV2View_Proxy.json +230 -0
  55. package/deployments/polygon-sandbox-local/Executor.json +86 -86
  56. package/deployments/polygon-sandbox-local/ExecutorFeeLib.json +38 -33
  57. package/deployments/polygon-sandbox-local/ExecutorProxyAdmin.json +17 -17
  58. package/deployments/polygon-sandbox-local/Executor_Implementation.json +61 -61
  59. package/deployments/polygon-sandbox-local/Executor_Proxy.json +66 -66
  60. package/deployments/polygon-sandbox-local/LzExecutor.json +757 -0
  61. package/deployments/polygon-sandbox-local/LzExecutor_Implementation.json +703 -0
  62. package/deployments/polygon-sandbox-local/LzExecutor_Proxy.json +244 -0
  63. package/deployments/polygon-sandbox-local/NonceContractMock.json +6 -6
  64. package/deployments/polygon-sandbox-local/PriceFeed.json +18 -18
  65. package/deployments/polygon-sandbox-local/PriceFeedProxyAdmin.json +5 -5
  66. package/deployments/polygon-sandbox-local/PriceFeed_Implementation.json +44 -44
  67. package/deployments/polygon-sandbox-local/PriceFeed_Proxy.json +5 -5
  68. package/deployments/polygon-sandbox-local/ReceiveUln301.json +126 -98
  69. package/deployments/polygon-sandbox-local/ReceiveUln301View.json +354 -0
  70. package/deployments/polygon-sandbox-local/ReceiveUln301View_Implementation.json +231 -0
  71. package/deployments/polygon-sandbox-local/ReceiveUln301View_Proxy.json +230 -0
  72. package/deployments/polygon-sandbox-local/ReceiveUln302.json +114 -62
  73. package/deployments/polygon-sandbox-local/ReceiveUln302View.json +478 -0
  74. package/deployments/polygon-sandbox-local/ReceiveUln302View_Implementation.json +384 -0
  75. package/deployments/polygon-sandbox-local/ReceiveUln302View_Proxy.json +230 -0
  76. package/deployments/polygon-sandbox-local/SendUln301.json +112 -112
  77. package/deployments/polygon-sandbox-local/SendUln302.json +109 -109
  78. package/deployments/polygon-sandbox-local/SimpleMessageLib.json +23 -23
  79. package/deployments/polygon-sandbox-local/Treasury.json +21 -21
  80. package/deployments/polygon-sandbox-local/TreasuryFeeHandler.json +12 -12
  81. package/dist/{index-htDjTX1I.d.mts → index-839VW31F.d.mts} +82 -10
  82. package/dist/{index-htDjTX1I.d.ts → index-839VW31F.d.ts} +82 -10
  83. package/dist/index.browser.cjs +108 -10
  84. package/dist/index.browser.cjs.map +1 -1
  85. package/dist/index.browser.d.mts +1 -1
  86. package/dist/index.browser.d.ts +1 -1
  87. package/dist/index.browser.mjs +108 -10
  88. package/dist/index.browser.mjs.map +1 -1
  89. package/dist/index.cjs +108 -10
  90. package/dist/index.cjs.map +1 -1
  91. package/dist/index.d.mts +1 -1
  92. package/dist/index.d.ts +1 -1
  93. package/dist/index.mjs +108 -10
  94. package/dist/index.mjs.map +1 -1
  95. package/package.json +8 -8
@@ -14,7 +14,12 @@
14
14
  },
15
15
  {
16
16
  "inputs": [],
17
- "name": "AtLeastOneDVN",
17
+ "name": "LZ_MessageLib_OnlyEndpoint",
18
+ "type": "error"
19
+ },
20
+ {
21
+ "inputs": [],
22
+ "name": "LZ_ULN_AtLeastOneDVN",
18
23
  "type": "error"
19
24
  },
20
25
  {
@@ -25,52 +30,47 @@
25
30
  "type": "uint32"
26
31
  }
27
32
  ],
28
- "name": "InvalidConfigType",
33
+ "name": "LZ_ULN_InvalidConfigType",
29
34
  "type": "error"
30
35
  },
31
36
  {
32
37
  "inputs": [],
33
- "name": "InvalidConfirmations",
38
+ "name": "LZ_ULN_InvalidConfirmations",
34
39
  "type": "error"
35
40
  },
36
41
  {
37
42
  "inputs": [],
38
- "name": "InvalidEid",
43
+ "name": "LZ_ULN_InvalidEid",
39
44
  "type": "error"
40
45
  },
41
46
  {
42
47
  "inputs": [],
43
- "name": "InvalidOptionalDVNCount",
48
+ "name": "LZ_ULN_InvalidOptionalDVNCount",
44
49
  "type": "error"
45
50
  },
46
51
  {
47
52
  "inputs": [],
48
- "name": "InvalidOptionalDVNThreshold",
53
+ "name": "LZ_ULN_InvalidOptionalDVNThreshold",
49
54
  "type": "error"
50
55
  },
51
56
  {
52
57
  "inputs": [],
53
- "name": "InvalidPacketHeader",
58
+ "name": "LZ_ULN_InvalidPacketHeader",
54
59
  "type": "error"
55
60
  },
56
61
  {
57
62
  "inputs": [],
58
- "name": "InvalidPacketVersion",
63
+ "name": "LZ_ULN_InvalidPacketVersion",
59
64
  "type": "error"
60
65
  },
61
66
  {
62
67
  "inputs": [],
63
- "name": "InvalidRequiredDVNCount",
68
+ "name": "LZ_ULN_InvalidRequiredDVNCount",
64
69
  "type": "error"
65
70
  },
66
71
  {
67
72
  "inputs": [],
68
- "name": "OnlyEndpoint",
69
- "type": "error"
70
- },
71
- {
72
- "inputs": [],
73
- "name": "Unsorted",
73
+ "name": "LZ_ULN_Unsorted",
74
74
  "type": "error"
75
75
  },
76
76
  {
@@ -81,12 +81,12 @@
81
81
  "type": "uint32"
82
82
  }
83
83
  ],
84
- "name": "UnsupportedEid",
84
+ "name": "LZ_ULN_UnsupportedEid",
85
85
  "type": "error"
86
86
  },
87
87
  {
88
88
  "inputs": [],
89
- "name": "Verifying",
89
+ "name": "LZ_ULN_Verifying",
90
90
  "type": "error"
91
91
  },
92
92
  {
@@ -253,6 +253,24 @@
253
253
  "name": "UlnConfigSet",
254
254
  "type": "event"
255
255
  },
256
+ {
257
+ "inputs": [
258
+ {
259
+ "internalType": "bytes",
260
+ "name": "_packetHeader",
261
+ "type": "bytes"
262
+ },
263
+ {
264
+ "internalType": "uint32",
265
+ "name": "_localEid",
266
+ "type": "uint32"
267
+ }
268
+ ],
269
+ "name": "assertHeader",
270
+ "outputs": [],
271
+ "stateMutability": "pure",
272
+ "type": "function"
273
+ },
256
274
  {
257
275
  "inputs": [
258
276
  {
@@ -625,9 +643,46 @@
625
643
  {
626
644
  "inputs": [
627
645
  {
628
- "internalType": "bytes",
629
- "name": "_packetHeader",
630
- "type": "bytes"
646
+ "components": [
647
+ {
648
+ "internalType": "uint64",
649
+ "name": "confirmations",
650
+ "type": "uint64"
651
+ },
652
+ {
653
+ "internalType": "uint8",
654
+ "name": "requiredDVNCount",
655
+ "type": "uint8"
656
+ },
657
+ {
658
+ "internalType": "uint8",
659
+ "name": "optionalDVNCount",
660
+ "type": "uint8"
661
+ },
662
+ {
663
+ "internalType": "uint8",
664
+ "name": "optionalDVNThreshold",
665
+ "type": "uint8"
666
+ },
667
+ {
668
+ "internalType": "address[]",
669
+ "name": "requiredDVNs",
670
+ "type": "address[]"
671
+ },
672
+ {
673
+ "internalType": "address[]",
674
+ "name": "optionalDVNs",
675
+ "type": "address[]"
676
+ }
677
+ ],
678
+ "internalType": "struct UlnConfig",
679
+ "name": "_config",
680
+ "type": "tuple"
681
+ },
682
+ {
683
+ "internalType": "bytes32",
684
+ "name": "_headerHash",
685
+ "type": "bytes32"
631
686
  },
632
687
  {
633
688
  "internalType": "bytes32",
@@ -638,9 +693,9 @@
638
693
  "name": "verifiable",
639
694
  "outputs": [
640
695
  {
641
- "internalType": "enum VerificationState",
696
+ "internalType": "bool",
642
697
  "name": "",
643
- "type": "uint8"
698
+ "type": "bool"
644
699
  }
645
700
  ],
646
701
  "stateMutability": "view",
@@ -693,21 +748,21 @@
693
748
  "type": "function"
694
749
  }
695
750
  ],
696
- "transactionHash": "0xc6b2dc716df47d5aea2c871882af90c2a990b3fae2f9de34279c430d3da041f7",
751
+ "transactionHash": "0xa52e7a46cb5fe109e186411e92a4dd2472e12a5cf1af18b1e1951fe99fbd1311",
697
752
  "receipt": {
698
753
  "to": null,
699
754
  "from": "0x70997970C51812dc3A010C7d01b50e0d17dc79C8",
700
755
  "contractAddress": "0x5C7c905B505f0Cf40Ab6600d05e677F717916F6B",
701
756
  "transactionIndex": 0,
702
- "gasUsed": "2570310",
757
+ "gasUsed": "2448542",
703
758
  "logsBloom": "0x00000000000000000002000000000000000000000000000080800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011000000000000000000000000000000000800020000000000000000000800000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000001400000000000000000000000000000",
704
- "blockHash": "0xbf162054083a87be0602effb82e22780be58db621826d828e10b17d1933142ac",
705
- "transactionHash": "0xc6b2dc716df47d5aea2c871882af90c2a990b3fae2f9de34279c430d3da041f7",
759
+ "blockHash": "0x3df5f9b61967b289b2920bef9c075bbcc34200c68117dfb447bbc43b96a470d1",
760
+ "transactionHash": "0xa52e7a46cb5fe109e186411e92a4dd2472e12a5cf1af18b1e1951fe99fbd1311",
706
761
  "logs": [
707
762
  {
708
763
  "transactionIndex": 0,
709
- "blockNumber": 45,
710
- "transactionHash": "0xc6b2dc716df47d5aea2c871882af90c2a990b3fae2f9de34279c430d3da041f7",
764
+ "blockNumber": 51,
765
+ "transactionHash": "0xa52e7a46cb5fe109e186411e92a4dd2472e12a5cf1af18b1e1951fe99fbd1311",
711
766
  "address": "0x5C7c905B505f0Cf40Ab6600d05e677F717916F6B",
712
767
  "topics": [
713
768
  "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0",
@@ -716,11 +771,11 @@
716
771
  ],
717
772
  "data": "0x",
718
773
  "logIndex": 0,
719
- "blockHash": "0xbf162054083a87be0602effb82e22780be58db621826d828e10b17d1933142ac"
774
+ "blockHash": "0x3df5f9b61967b289b2920bef9c075bbcc34200c68117dfb447bbc43b96a470d1"
720
775
  }
721
776
  ],
722
- "blockNumber": 45,
723
- "cumulativeGasUsed": "2570310",
777
+ "blockNumber": 51,
778
+ "cumulativeGasUsed": "2448542",
724
779
  "status": 1,
725
780
  "byzantium": true
726
781
  },
@@ -728,9 +783,9 @@
728
783
  "0x0b48aF34f4c854F5ae1A3D587da471FeA45bAD52"
729
784
  ],
730
785
  "numDeployments": 1,
731
- "solcInputHash": "9a77f541806fd95ff35b8613e526dae5",
732
- "bytecode": "0x60c06040523480156200001157600080fd5b5060405162002eee38038062002eee833981016040819052620000349162000116565b8080816001600160a01b031663416ecebf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000075573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009b919062000148565b620000a633620000c6565b6001600160a01b0390911660805263ffffffff1660a05250620001709050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200012957600080fd5b81516001600160a01b03811681146200014157600080fd5b9392505050565b6000602082840312156200015b57600080fd5b815163ffffffff811681146200014157600080fd5b60805160a051612d3c620001b2600039600081816103410152610636015260008181610465015281816104ce0152818161158001526116720152612d3c6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80633c782a5211610097578063715018a611610066578063715018a6146102695780638da5cb5b146102715780639c33abf714610299578063f2fde38b146102b957600080fd5b80633c782a52146101be57806343ea4fa91461022357806354fd4d50146102365780636750cd4c1461025657600080fd5b806320efd722116100d357806320efd7221461016557806327d12cd91461017857806329460b0b1461018b57806339e3f9381461019e57600080fd5b806301ffc9a7146101055780630223536e1461012d5780630894edf1146101425780631881d94d14610155575b600080fd5b610118610113366004611f50565b6102cc565b60405190151581526020015b60405180910390f35b61014061013b366004611ff8565b610328565b005b610140610150366004612055565b61033a565b60015b60405161012491906120d8565b610140610173366004612154565b6104cc565b610158610186366004612055565b61062d565b6101406101993660046121a7565b6106db565b6101b16101ac3660046121fd565b6108c0565b60405161012491906122eb565b6102036101cc3660046122fe565b600260209081526000938452604080852082529284528284209052825290205460ff811690610100900467ffffffffffffffff1682565b60408051921515835267ffffffffffffffff909116602083015201610124565b6101b16102313660046121fd565b610a61565b604080516003815260006020820152600291810191909152606001610124565b610118610264366004612333565b610e1b565b610140610e26565b60005460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b6102ac6102a736600461234e565b610e3a565b6040516101249190612388565b6101406102c73660046123f5565b610ed3565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f2d669246000000000000000000000000000000000000000000000000000000001480610322575061032282610f8a565b92915050565b61033484848484611021565b50505050565b61036583837f0000000000000000000000000000000000000000000000000000000000000000611135565b60006103718484611208565b9050600061037f858561121a565b9050600061038d8383610a61565b90506103b18187876040516103a3929190612410565b60405180910390208661123d565b600060405180606001604052808463ffffffff1681526020016103d489896113ec565b81526020016103e38989611405565b67ffffffffffffffff908116909152604080517fa825d747000000000000000000000000000000000000000000000000000000008152835163ffffffff1660048201526020840151602482015290830151909116604482015273ffffffffffffffffffffffffffffffffffffffff8681166064830152608482018890529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a825d7479060a401600060405180830381600087803b1580156104ab57600080fd5b505af11580156104bf573d6000803e3d6000fd5b5050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16331461053b576040517f7eb966c800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610334573683838381811061055957610559612420565b905060200281019061056b919061244f565b905061058261057d6020830183612333565b611428565b60026105946040830160208401612333565b63ffffffff16036105d4576105cf6105af6020830183612333565b866105bd604085018561248d565b8101906105ca91906126d1565b61146f565b610624565b6105e46040820160208301612333565b6040517f3018cc2b00000000000000000000000000000000000000000000000000000000815263ffffffff90911660048201526024015b60405180910390fd5b5060010161053e565b600061065a84847f0000000000000000000000000000000000000000000000000000000000000000611135565b60006106668585611208565b90506000610674868661121a565b905061068381838888886114c5565b610692576002925050506106d4565b6106bd61069f8383610a61565b87876040516106af929190612410565b6040518091039020866116fb565b156106cd576001925050506106d4565b6000925050505b9392505050565b6106e3611804565b60005b81811015610882573683838381811061070157610701612420565b9050602002810190610713919061270e565b905060ff6107246020830183612742565b610735906040810190602001612776565b60ff160361076f576040517f1b66804100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ff61077e6020830183612742565b61078f906060810190604001612776565b60ff16036107c9576040517f05f7ab6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff6107df6020830183612742565b6107ed906020810190612791565b67ffffffffffffffff160361082e576040517f8f6ae8f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61084c61083e6020830183612742565b610847906127ac565b611885565b610879600061085e6020840184612333565b61086b6020850185612742565b610874906127ac565b6118d6565b506001016106e6565b507faaf3aaa0c11056e86ac56eb653e25b005ca1a7d4dcd21ba24647f7ab63f3b56082826040516108b4929190612868565b60405180910390a15050565b6040805160c0810182526000808252602082018190529181018290526060808201929092526080810182905260a081019190915273ffffffffffffffffffffffffffffffffffffffff8316600090815260016020818152604080842063ffffffff87168552825292839020835160c081018552815467ffffffffffffffff8116825260ff680100000000000000008204811683860152690100000000000000000082048116838801526a010000000000000000000090910416606082015292810180548551818502810185019096528086529394919360808601938301828280156109e157602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116109b6575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020018280548015610a5057602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610a25575b505050505081525050905092915050565b6040805160c0810182526000808252602080830182905282840182905260608084018390526080840181905260a084015263ffffffff85168083527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49825284832073ffffffffffffffffffffffffffffffffffffffff88168452600183528584209184529152929020805491929167ffffffffffffffff1680610b1157825467ffffffffffffffff168452610b30565b67ffffffffffffffff81811614610b305767ffffffffffffffff811684525b815468010000000000000000900460ff16610be657825468010000000000000000900460ff1615610be15782600101805480602002602001604051908101604052809291908181526020018280548015610bc057602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610b95575b50505050506080850152825468010000000000000000900460ff1660208501525b610c84565b815468010000000000000000900460ff90811614610c845781600101805480602002602001604051908101604052809291908181526020018280548015610c6357602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610c38575b50505050506080850152815468010000000000000000900460ff1660208501525b81546901000000000000000000900460ff16610d535782546901000000000000000000900460ff1615610d4e5782600201805480602002602001604051908101604052809291908181526020018280548015610d1657602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610ceb575b505050505060a0850152825460ff69010000000000000000008204811660408701526a01000000000000000000009091041660608501525b610e09565b81546901000000000000000000900460ff90811614610e095781600201805480602002602001604051908101604052809291908181526020018280548015610dd157602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610da6575b505050505060a0850152815460ff69010000000000000000008204811660408701526a01000000000000000000009091041660608501525b610e1284611885565b50505092915050565b600061032282611c6a565b610e2e611804565b610e386000611cd1565b565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe63ffffffff831601610e9957610e738385610a61565b604051602001610e8391906122eb565b60405160208183030381529060405290506106d4565b6040517f3018cc2b00000000000000000000000000000000000000000000000000000000815263ffffffff8316600482015260240161061b565b610edb611804565b73ffffffffffffffffffffffffffffffffffffffff8116610f7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161061b565b610f8781611cd1565b50565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f97f0258400000000000000000000000000000000000000000000000000000000148061032257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610322565b6040805180820182526001815267ffffffffffffffff8316602082015290516002906000906110539088908890612410565b6040805191829003909120825260208083019390935290810160009081208682528352818120338083529084529082902084518154959094015167ffffffffffffffff16610100027fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff941515949094167fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000909516949094179290921790925590517f2cb0eed7538baeae4c6fde038c0fd0384d27de0dd55a228c65847bda6aa1ab5691611127918790879086908890612a05565b60405180910390a150505050565b6051821461116f576040517f0666bafd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600161117b8484611d46565b60ff16146111b5576040517f28fac06600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8063ffffffff166111c68484611d68565b63ffffffff1614611203576040517f9a61cd2600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b60006106d46112178484611d78565b90565b600061122a600d60098486612a8a565b61123391612ab4565b60e01c9392505050565b6112488383836116fb565b61127e576040517f692c93cb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602083015160ff16156113365760005b836020015160ff168160ff16101561133457600083815260026020908152604080832085845290915281206080860151805191929160ff85169081106112d6576112d6612420565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff16825281019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000016905560010161128e565b505b604083015160ff16156112035760005b836040015160ff168160ff161015610334576000838152600260209081526040808320858452909152812060a0860151805191929160ff851690811061138e5761138e612420565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff16825281019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000169055600101611346565b60006113fc602d600d8486612a8a565b6106d491612afc565b6000611415600960018486612a8a565b61141e91612b38565b60c01c9392505050565b61143181611c6a565b610f87576040517f2146a07a00000000000000000000000000000000000000000000000000000000815263ffffffff8216600482015260240161061b565b61147a8284836118d6565b6114848284610a61565b507f82118522aa536ac0e96cc5c689407ae42b89d592aa133890a01f1509842f50818284836040516114b893929190612b7e565b60405180910390a1505050565b60008060405180606001604052808863ffffffff1681526020016114e987876113ec565b81526020016114f88787611405565b67ffffffffffffffff908116909152604080517fe1e3a7df000000000000000000000000000000000000000000000000000000008152835163ffffffff1660048201526020840151602482015290830151909116604482015273ffffffffffffffffffffffffffffffffffffffff888116606483015230608483015260a482018690529192507f00000000000000000000000000000000000000000000000000000000000000009091169063e1e3a7df9060c401602060405180830381865afa1580156115c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ed9190612bb9565b6115fb5760009150506116f2565b8051602082015160408084015190517fc9fc7bcd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a8116600483015263ffffffff9094166024820152604481019290925267ffffffffffffffff16606482015284917f0000000000000000000000000000000000000000000000000000000000000000169063c9fc7bcd90608401602060405180830381865afa1580156116b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116dd9190612bdb565b036116ec5760009150506116f2565b60019150505b95945050505050565b602083015160009060ff161561177e5760005b846020015160ff168160ff1610156117665761175085608001518260ff168151811061173c5761173c612420565b602002602001015185858860000151611d88565b61175e5760009150506106d4565b60010161170e565b50836040015160ff1660000361177e575060016106d4565b606084015160005b856040015160ff168160ff1610156117f8576117c88660a001518260ff16815181106117b4576117b4612420565b602002602001015186868960000151611d88565b156117f057816117d781612c23565b9250508160ff166000036117f0576001925050506106d4565b600101611786565b50600095945050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e38576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161061b565b602081015160ff1615801561189f5750606081015160ff16155b15610f87576040517f7e36c28400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081015160ff90811614806118f15750602081015160ff16155b156119385760808101515115611933576040517f1b66804100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119b7565b806020015160ff168160800151511415806119735750600261195c600160ff612c5e565b6119669190612c77565b60ff16816020015160ff16115b156119aa576040517f1b66804100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119b78160800151611e17565b604081015160ff90811614806119d25750604081015160ff16155b15611a585760a08101515115611a14576040517f05f7ab6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081015160ff1615611a53576040517f81da67ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b2f565b806040015160ff168160a0015151141580611a9357506002611a7c600160ff612c5e565b611a869190612c77565b60ff16816040015160ff16115b15611aca576040517f05f7ab6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081015160ff161580611aeb5750806040015160ff16816060015160ff16115b15611b22576040517f81da67ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b2f8160a00151611e17565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020818152604080842063ffffffff87168552825292839020845181548684015195870151606088015167ffffffffffffffff9093167fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000909216919091176801000000000000000060ff97881602177fffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff166901000000000000000000918716919091027fffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff16176a0100000000000000000000959091169490940293909317835560808401518051859493611c4693908501920190611eb1565b5060a08201518051611c62916002840191602090910190611eb1565b505050505050565b63ffffffff811660009081527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb4960205260408120805468010000000000000000900460ff161515806106d45750546a0100000000000000000000900460ff16151592915050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000611d556001828486612a8a565b611d5e91612cc0565b60f81c9392505050565b600061122a6031602d8486612a8a565b60006113fc605160318486612a8a565b6000838152600260209081526040808320858452825280832073ffffffffffffffffffffffffffffffffffffffff88168452825280832081518083019092525460ff811615801580845261010090920467ffffffffffffffff16938301939093529091611e0d57508267ffffffffffffffff16816020015167ffffffffffffffff1610155b9695505050505050565b6000805b8251811015611203576000838281518110611e3857611e38612420565b602002602001015190508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1611611ea7576040517fa228a30b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150600101611e1b565b828054828255906000526020600020908101928215611f2b579160200282015b82811115611f2b57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190611ed1565b50611f37929150611f3b565b5090565b5b80821115611f375760008155600101611f3c565b600060208284031215611f6257600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146106d457600080fd5b60008083601f840112611fa457600080fd5b50813567ffffffffffffffff811115611fbc57600080fd5b602083019150836020828501011115611fd457600080fd5b9250929050565b803567ffffffffffffffff81168114611ff357600080fd5b919050565b6000806000806060858703121561200e57600080fd5b843567ffffffffffffffff81111561202557600080fd5b61203187828801611f92565b9095509350506020850135915061204a60408601611fdb565b905092959194509250565b60008060006040848603121561206a57600080fd5b833567ffffffffffffffff81111561208157600080fd5b61208d86828701611f92565b909790965060209590950135949350505050565b60038110610f87577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b602081016120e5836120a1565b91905290565b803573ffffffffffffffffffffffffffffffffffffffff81168114611ff357600080fd5b60008083601f84011261212157600080fd5b50813567ffffffffffffffff81111561213957600080fd5b6020830191508360208260051b8501011115611fd457600080fd5b60008060006040848603121561216957600080fd5b612172846120eb565b9250602084013567ffffffffffffffff81111561218e57600080fd5b61219a8682870161210f565b9497909650939450505050565b600080602083850312156121ba57600080fd5b823567ffffffffffffffff8111156121d157600080fd5b6121dd8582860161210f565b90969095509350505050565b803563ffffffff81168114611ff357600080fd5b6000806040838503121561221057600080fd5b612219836120eb565b9150612227602084016121e9565b90509250929050565b60008151808452602080850194506020840160005b8381101561227757815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101612245565b509495945050505050565b67ffffffffffffffff815116825260ff602082015116602083015260ff604082015116604083015260ff60608201511660608301526000608082015160c060808501526122d260c0850182612230565b905060a083015184820360a08601526116f28282612230565b6020815260006106d46020830184612282565b60008060006060848603121561231357600080fd5b833592506020840135915061232a604085016120eb565b90509250925092565b60006020828403121561234557600080fd5b6106d4826121e9565b60008060006060848603121561236357600080fd5b61236c846121e9565b925061237a602085016120eb565b915061232a604085016121e9565b60006020808352835180602085015260005b818110156123b65785810183015185820160400152820161239a565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b60006020828403121561240757600080fd5b6106d4826120eb565b8183823760009101908152919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261248357600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126124c257600080fd5b83018035915067ffffffffffffffff8211156124dd57600080fd5b602001915036819003821315611fd457600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff81118282101715612544576125446124f2565b60405290565b803560ff81168114611ff357600080fd5b600082601f83011261256c57600080fd5b8135602067ffffffffffffffff80831115612589576125896124f2565b8260051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811084821117156125cc576125cc6124f2565b60405293845260208187018101949081019250878511156125ec57600080fd5b6020870191505b8482101561261357612604826120eb565b835291830191908301906125f3565b979650505050505050565b600060c0828403121561263057600080fd5b612638612521565b905061264382611fdb565b81526126516020830161254a565b60208201526126626040830161254a565b60408201526126736060830161254a565b6060820152608082013567ffffffffffffffff8082111561269357600080fd5b61269f8583860161255b565b608084015260a08401359150808211156126b857600080fd5b506126c58482850161255b565b60a08301525092915050565b6000602082840312156126e357600080fd5b813567ffffffffffffffff8111156126fa57600080fd5b6127068482850161261e565b949350505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261248357600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4183360301811261248357600080fd5b60006020828403121561278857600080fd5b6106d48261254a565b6000602082840312156127a357600080fd5b6106d482611fdb565b6000610322368361261e565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126127ed57600080fd5b830160208101925035905067ffffffffffffffff81111561280d57600080fd5b8060051b3603821315611fd457600080fd5b8183526000602080850194508260005b858110156122775773ffffffffffffffffffffffffffffffffffffffff612855836120eb565b168752958201959082019060010161282f565b60208082528181018390526000906040808401600586901b8501820187855b888110156129f7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08089850301855282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18c36030181126128e957600080fd5b8b0163ffffffff6128f9826121e9565b168552878101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4182360301811261293057600080fd5b8589018890520167ffffffffffffffff61294982611fdb565b168786015261295988820161254a565b606060ff8083168289015261296f8a850161254a565b92506080818416818a015261298583860161254a565b935060a09250818416838a015261299e818601866127b8565b60c08b810152945091506129b990506101008901848361281f565b9250506129c8818401846127b8565b93509050838783030160e08801526129e182848361281f565b978a019796505050928701925050600101612887565b509098975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8616815260806020820152836080820152838560a0830137600060a08583010152600060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f870116830101905067ffffffffffffffff841660408301528260608301529695505050505050565b60008085851115612a9a57600080fd5b83861115612aa757600080fd5b5050820193919092039150565b7fffffffff000000000000000000000000000000000000000000000000000000008135818116916004851015612af45780818660040360031b1b83161692505b505092915050565b80356020831015610322577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b7fffffffffffffffff0000000000000000000000000000000000000000000000008135818116916008851015612af45760089490940360031b84901b1690921692915050565b73ffffffffffffffffffffffffffffffffffffffff8416815263ffffffff831660208201526060604082015260006116f26060830184612282565b600060208284031215612bcb57600080fd5b815180151581146106d457600080fd5b600060208284031215612bed57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821680612c3657612c36612bf4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b60ff828116828216039081111561032257610322612bf4565b600060ff831680612cb1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b8060ff84160491505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008135818116916001851015612af45760019490940360031b84901b169092169291505056fea2646970667358221220dcdb51660ad9bd93dabc11f7e183db062e9dd72fac3b88153105a615db4c82d664736f6c63430008160033",
733
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101005760003560e01c80633c782a5211610097578063715018a611610066578063715018a6146102695780638da5cb5b146102715780639c33abf714610299578063f2fde38b146102b957600080fd5b80633c782a52146101be57806343ea4fa91461022357806354fd4d50146102365780636750cd4c1461025657600080fd5b806320efd722116100d357806320efd7221461016557806327d12cd91461017857806329460b0b1461018b57806339e3f9381461019e57600080fd5b806301ffc9a7146101055780630223536e1461012d5780630894edf1146101425780631881d94d14610155575b600080fd5b610118610113366004611f50565b6102cc565b60405190151581526020015b60405180910390f35b61014061013b366004611ff8565b610328565b005b610140610150366004612055565b61033a565b60015b60405161012491906120d8565b610140610173366004612154565b6104cc565b610158610186366004612055565b61062d565b6101406101993660046121a7565b6106db565b6101b16101ac3660046121fd565b6108c0565b60405161012491906122eb565b6102036101cc3660046122fe565b600260209081526000938452604080852082529284528284209052825290205460ff811690610100900467ffffffffffffffff1682565b60408051921515835267ffffffffffffffff909116602083015201610124565b6101b16102313660046121fd565b610a61565b604080516003815260006020820152600291810191909152606001610124565b610118610264366004612333565b610e1b565b610140610e26565b60005460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b6102ac6102a736600461234e565b610e3a565b6040516101249190612388565b6101406102c73660046123f5565b610ed3565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f2d669246000000000000000000000000000000000000000000000000000000001480610322575061032282610f8a565b92915050565b61033484848484611021565b50505050565b61036583837f0000000000000000000000000000000000000000000000000000000000000000611135565b60006103718484611208565b9050600061037f858561121a565b9050600061038d8383610a61565b90506103b18187876040516103a3929190612410565b60405180910390208661123d565b600060405180606001604052808463ffffffff1681526020016103d489896113ec565b81526020016103e38989611405565b67ffffffffffffffff908116909152604080517fa825d747000000000000000000000000000000000000000000000000000000008152835163ffffffff1660048201526020840151602482015290830151909116604482015273ffffffffffffffffffffffffffffffffffffffff8681166064830152608482018890529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a825d7479060a401600060405180830381600087803b1580156104ab57600080fd5b505af11580156104bf573d6000803e3d6000fd5b5050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16331461053b576040517f7eb966c800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610334573683838381811061055957610559612420565b905060200281019061056b919061244f565b905061058261057d6020830183612333565b611428565b60026105946040830160208401612333565b63ffffffff16036105d4576105cf6105af6020830183612333565b866105bd604085018561248d565b8101906105ca91906126d1565b61146f565b610624565b6105e46040820160208301612333565b6040517f3018cc2b00000000000000000000000000000000000000000000000000000000815263ffffffff90911660048201526024015b60405180910390fd5b5060010161053e565b600061065a84847f0000000000000000000000000000000000000000000000000000000000000000611135565b60006106668585611208565b90506000610674868661121a565b905061068381838888886114c5565b610692576002925050506106d4565b6106bd61069f8383610a61565b87876040516106af929190612410565b6040518091039020866116fb565b156106cd576001925050506106d4565b6000925050505b9392505050565b6106e3611804565b60005b81811015610882573683838381811061070157610701612420565b9050602002810190610713919061270e565b905060ff6107246020830183612742565b610735906040810190602001612776565b60ff160361076f576040517f1b66804100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ff61077e6020830183612742565b61078f906060810190604001612776565b60ff16036107c9576040517f05f7ab6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff6107df6020830183612742565b6107ed906020810190612791565b67ffffffffffffffff160361082e576040517f8f6ae8f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61084c61083e6020830183612742565b610847906127ac565b611885565b610879600061085e6020840184612333565b61086b6020850185612742565b610874906127ac565b6118d6565b506001016106e6565b507faaf3aaa0c11056e86ac56eb653e25b005ca1a7d4dcd21ba24647f7ab63f3b56082826040516108b4929190612868565b60405180910390a15050565b6040805160c0810182526000808252602082018190529181018290526060808201929092526080810182905260a081019190915273ffffffffffffffffffffffffffffffffffffffff8316600090815260016020818152604080842063ffffffff87168552825292839020835160c081018552815467ffffffffffffffff8116825260ff680100000000000000008204811683860152690100000000000000000082048116838801526a010000000000000000000090910416606082015292810180548551818502810185019096528086529394919360808601938301828280156109e157602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116109b6575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020018280548015610a5057602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610a25575b505050505081525050905092915050565b6040805160c0810182526000808252602080830182905282840182905260608084018390526080840181905260a084015263ffffffff85168083527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49825284832073ffffffffffffffffffffffffffffffffffffffff88168452600183528584209184529152929020805491929167ffffffffffffffff1680610b1157825467ffffffffffffffff168452610b30565b67ffffffffffffffff81811614610b305767ffffffffffffffff811684525b815468010000000000000000900460ff16610be657825468010000000000000000900460ff1615610be15782600101805480602002602001604051908101604052809291908181526020018280548015610bc057602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610b95575b50505050506080850152825468010000000000000000900460ff1660208501525b610c84565b815468010000000000000000900460ff90811614610c845781600101805480602002602001604051908101604052809291908181526020018280548015610c6357602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610c38575b50505050506080850152815468010000000000000000900460ff1660208501525b81546901000000000000000000900460ff16610d535782546901000000000000000000900460ff1615610d4e5782600201805480602002602001604051908101604052809291908181526020018280548015610d1657602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610ceb575b505050505060a0850152825460ff69010000000000000000008204811660408701526a01000000000000000000009091041660608501525b610e09565b81546901000000000000000000900460ff90811614610e095781600201805480602002602001604051908101604052809291908181526020018280548015610dd157602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610da6575b505050505060a0850152815460ff69010000000000000000008204811660408701526a01000000000000000000009091041660608501525b610e1284611885565b50505092915050565b600061032282611c6a565b610e2e611804565b610e386000611cd1565b565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe63ffffffff831601610e9957610e738385610a61565b604051602001610e8391906122eb565b60405160208183030381529060405290506106d4565b6040517f3018cc2b00000000000000000000000000000000000000000000000000000000815263ffffffff8316600482015260240161061b565b610edb611804565b73ffffffffffffffffffffffffffffffffffffffff8116610f7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161061b565b610f8781611cd1565b50565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f97f0258400000000000000000000000000000000000000000000000000000000148061032257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610322565b6040805180820182526001815267ffffffffffffffff8316602082015290516002906000906110539088908890612410565b6040805191829003909120825260208083019390935290810160009081208682528352818120338083529084529082902084518154959094015167ffffffffffffffff16610100027fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff941515949094167fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000909516949094179290921790925590517f2cb0eed7538baeae4c6fde038c0fd0384d27de0dd55a228c65847bda6aa1ab5691611127918790879086908890612a05565b60405180910390a150505050565b6051821461116f576040517f0666bafd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600161117b8484611d46565b60ff16146111b5576040517f28fac06600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8063ffffffff166111c68484611d68565b63ffffffff1614611203576040517f9a61cd2600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b60006106d46112178484611d78565b90565b600061122a600d60098486612a8a565b61123391612ab4565b60e01c9392505050565b6112488383836116fb565b61127e576040517f692c93cb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602083015160ff16156113365760005b836020015160ff168160ff16101561133457600083815260026020908152604080832085845290915281206080860151805191929160ff85169081106112d6576112d6612420565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff16825281019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000016905560010161128e565b505b604083015160ff16156112035760005b836040015160ff168160ff161015610334576000838152600260209081526040808320858452909152812060a0860151805191929160ff851690811061138e5761138e612420565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff16825281019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000169055600101611346565b60006113fc602d600d8486612a8a565b6106d491612afc565b6000611415600960018486612a8a565b61141e91612b38565b60c01c9392505050565b61143181611c6a565b610f87576040517f2146a07a00000000000000000000000000000000000000000000000000000000815263ffffffff8216600482015260240161061b565b61147a8284836118d6565b6114848284610a61565b507f82118522aa536ac0e96cc5c689407ae42b89d592aa133890a01f1509842f50818284836040516114b893929190612b7e565b60405180910390a1505050565b60008060405180606001604052808863ffffffff1681526020016114e987876113ec565b81526020016114f88787611405565b67ffffffffffffffff908116909152604080517fe1e3a7df000000000000000000000000000000000000000000000000000000008152835163ffffffff1660048201526020840151602482015290830151909116604482015273ffffffffffffffffffffffffffffffffffffffff888116606483015230608483015260a482018690529192507f00000000000000000000000000000000000000000000000000000000000000009091169063e1e3a7df9060c401602060405180830381865afa1580156115c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ed9190612bb9565b6115fb5760009150506116f2565b8051602082015160408084015190517fc9fc7bcd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a8116600483015263ffffffff9094166024820152604481019290925267ffffffffffffffff16606482015284917f0000000000000000000000000000000000000000000000000000000000000000169063c9fc7bcd90608401602060405180830381865afa1580156116b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116dd9190612bdb565b036116ec5760009150506116f2565b60019150505b95945050505050565b602083015160009060ff161561177e5760005b846020015160ff168160ff1610156117665761175085608001518260ff168151811061173c5761173c612420565b602002602001015185858860000151611d88565b61175e5760009150506106d4565b60010161170e565b50836040015160ff1660000361177e575060016106d4565b606084015160005b856040015160ff168160ff1610156117f8576117c88660a001518260ff16815181106117b4576117b4612420565b602002602001015186868960000151611d88565b156117f057816117d781612c23565b9250508160ff166000036117f0576001925050506106d4565b600101611786565b50600095945050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e38576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161061b565b602081015160ff1615801561189f5750606081015160ff16155b15610f87576040517f7e36c28400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081015160ff90811614806118f15750602081015160ff16155b156119385760808101515115611933576040517f1b66804100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119b7565b806020015160ff168160800151511415806119735750600261195c600160ff612c5e565b6119669190612c77565b60ff16816020015160ff16115b156119aa576040517f1b66804100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119b78160800151611e17565b604081015160ff90811614806119d25750604081015160ff16155b15611a585760a08101515115611a14576040517f05f7ab6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081015160ff1615611a53576040517f81da67ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b2f565b806040015160ff168160a0015151141580611a9357506002611a7c600160ff612c5e565b611a869190612c77565b60ff16816040015160ff16115b15611aca576040517f05f7ab6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081015160ff161580611aeb5750806040015160ff16816060015160ff16115b15611b22576040517f81da67ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b2f8160a00151611e17565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020818152604080842063ffffffff87168552825292839020845181548684015195870151606088015167ffffffffffffffff9093167fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000909216919091176801000000000000000060ff97881602177fffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff166901000000000000000000918716919091027fffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff16176a0100000000000000000000959091169490940293909317835560808401518051859493611c4693908501920190611eb1565b5060a08201518051611c62916002840191602090910190611eb1565b505050505050565b63ffffffff811660009081527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb4960205260408120805468010000000000000000900460ff161515806106d45750546a0100000000000000000000900460ff16151592915050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000611d556001828486612a8a565b611d5e91612cc0565b60f81c9392505050565b600061122a6031602d8486612a8a565b60006113fc605160318486612a8a565b6000838152600260209081526040808320858452825280832073ffffffffffffffffffffffffffffffffffffffff88168452825280832081518083019092525460ff811615801580845261010090920467ffffffffffffffff16938301939093529091611e0d57508267ffffffffffffffff16816020015167ffffffffffffffff1610155b9695505050505050565b6000805b8251811015611203576000838281518110611e3857611e38612420565b602002602001015190508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1611611ea7576040517fa228a30b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150600101611e1b565b828054828255906000526020600020908101928215611f2b579160200282015b82811115611f2b57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190611ed1565b50611f37929150611f3b565b5090565b5b80821115611f375760008155600101611f3c565b600060208284031215611f6257600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146106d457600080fd5b60008083601f840112611fa457600080fd5b50813567ffffffffffffffff811115611fbc57600080fd5b602083019150836020828501011115611fd457600080fd5b9250929050565b803567ffffffffffffffff81168114611ff357600080fd5b919050565b6000806000806060858703121561200e57600080fd5b843567ffffffffffffffff81111561202557600080fd5b61203187828801611f92565b9095509350506020850135915061204a60408601611fdb565b905092959194509250565b60008060006040848603121561206a57600080fd5b833567ffffffffffffffff81111561208157600080fd5b61208d86828701611f92565b909790965060209590950135949350505050565b60038110610f87577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b602081016120e5836120a1565b91905290565b803573ffffffffffffffffffffffffffffffffffffffff81168114611ff357600080fd5b60008083601f84011261212157600080fd5b50813567ffffffffffffffff81111561213957600080fd5b6020830191508360208260051b8501011115611fd457600080fd5b60008060006040848603121561216957600080fd5b612172846120eb565b9250602084013567ffffffffffffffff81111561218e57600080fd5b61219a8682870161210f565b9497909650939450505050565b600080602083850312156121ba57600080fd5b823567ffffffffffffffff8111156121d157600080fd5b6121dd8582860161210f565b90969095509350505050565b803563ffffffff81168114611ff357600080fd5b6000806040838503121561221057600080fd5b612219836120eb565b9150612227602084016121e9565b90509250929050565b60008151808452602080850194506020840160005b8381101561227757815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101612245565b509495945050505050565b67ffffffffffffffff815116825260ff602082015116602083015260ff604082015116604083015260ff60608201511660608301526000608082015160c060808501526122d260c0850182612230565b905060a083015184820360a08601526116f28282612230565b6020815260006106d46020830184612282565b60008060006060848603121561231357600080fd5b833592506020840135915061232a604085016120eb565b90509250925092565b60006020828403121561234557600080fd5b6106d4826121e9565b60008060006060848603121561236357600080fd5b61236c846121e9565b925061237a602085016120eb565b915061232a604085016121e9565b60006020808352835180602085015260005b818110156123b65785810183015185820160400152820161239a565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b60006020828403121561240757600080fd5b6106d4826120eb565b8183823760009101908152919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261248357600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126124c257600080fd5b83018035915067ffffffffffffffff8211156124dd57600080fd5b602001915036819003821315611fd457600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff81118282101715612544576125446124f2565b60405290565b803560ff81168114611ff357600080fd5b600082601f83011261256c57600080fd5b8135602067ffffffffffffffff80831115612589576125896124f2565b8260051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811084821117156125cc576125cc6124f2565b60405293845260208187018101949081019250878511156125ec57600080fd5b6020870191505b8482101561261357612604826120eb565b835291830191908301906125f3565b979650505050505050565b600060c0828403121561263057600080fd5b612638612521565b905061264382611fdb565b81526126516020830161254a565b60208201526126626040830161254a565b60408201526126736060830161254a565b6060820152608082013567ffffffffffffffff8082111561269357600080fd5b61269f8583860161255b565b608084015260a08401359150808211156126b857600080fd5b506126c58482850161255b565b60a08301525092915050565b6000602082840312156126e357600080fd5b813567ffffffffffffffff8111156126fa57600080fd5b6127068482850161261e565b949350505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261248357600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4183360301811261248357600080fd5b60006020828403121561278857600080fd5b6106d48261254a565b6000602082840312156127a357600080fd5b6106d482611fdb565b6000610322368361261e565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126127ed57600080fd5b830160208101925035905067ffffffffffffffff81111561280d57600080fd5b8060051b3603821315611fd457600080fd5b8183526000602080850194508260005b858110156122775773ffffffffffffffffffffffffffffffffffffffff612855836120eb565b168752958201959082019060010161282f565b60208082528181018390526000906040808401600586901b8501820187855b888110156129f7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08089850301855282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18c36030181126128e957600080fd5b8b0163ffffffff6128f9826121e9565b168552878101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4182360301811261293057600080fd5b8589018890520167ffffffffffffffff61294982611fdb565b168786015261295988820161254a565b606060ff8083168289015261296f8a850161254a565b92506080818416818a015261298583860161254a565b935060a09250818416838a015261299e818601866127b8565b60c08b810152945091506129b990506101008901848361281f565b9250506129c8818401846127b8565b93509050838783030160e08801526129e182848361281f565b978a019796505050928701925050600101612887565b509098975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8616815260806020820152836080820152838560a0830137600060a08583010152600060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f870116830101905067ffffffffffffffff841660408301528260608301529695505050505050565b60008085851115612a9a57600080fd5b83861115612aa757600080fd5b5050820193919092039150565b7fffffffff000000000000000000000000000000000000000000000000000000008135818116916004851015612af45780818660040360031b1b83161692505b505092915050565b80356020831015610322577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b7fffffffffffffffff0000000000000000000000000000000000000000000000008135818116916008851015612af45760089490940360031b84901b1690921692915050565b73ffffffffffffffffffffffffffffffffffffffff8416815263ffffffff831660208201526060604082015260006116f26060830184612282565b600060208284031215612bcb57600080fd5b815180151581146106d457600080fd5b600060208284031215612bed57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821680612c3657612c36612bf4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b60ff828116828216039081111561032257610322612bf4565b600060ff831680612cb1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b8060ff84160491505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008135818116916001851015612af45760019490940360031b84901b169092169291505056fea2646970667358221220dcdb51660ad9bd93dabc11f7e183db062e9dd72fac3b88153105a615db4c82d664736f6c63430008160033",
786
+ "solcInputHash": "206c0dde26401fe2fb94e875b1b843ad",
787
+ "bytecode": "0x60c06040523480156200001157600080fd5b5060405162002c9f38038062002c9f833981016040819052620000349162000116565b8080816001600160a01b031663416ecebf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000075573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009b919062000148565b620000a633620000c6565b6001600160a01b0390911660805263ffffffff1660a05250620001709050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200012957600080fd5b81516001600160a01b03811681146200014157600080fd5b9392505050565b6000602082840312156200015b57600080fd5b815163ffffffff811681146200014157600080fd5b60805160a051612b026200019d600039600061036e01526000818161049201526104fb0152612b026000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806343ea4fa9116100b25780638da5cb5b11610081578063c40ff83511610066578063c40ff835146102c0578063e084d952146102d3578063f2fde38b146102e657600080fd5b80638da5cb5b146102785780639c33abf7146102a057600080fd5b806343ea4fa91461022a57806354fd4d501461023d5780636750cd4c1461025d578063715018a61461027057600080fd5b806320efd722116100ee57806320efd7221461017f57806329460b0b1461019257806339e3f938146101a55780633c782a52146101c557600080fd5b806301ffc9a7146101205780630223536e146101485780630894edf11461015d5780631881d94d14610170575b600080fd5b61013361012e366004611cc0565b6102f9565b60405190151581526020015b60405180910390f35b61015b610156366004611d68565b610355565b005b61015b61016b366004611dc5565b610367565b600160405161013f9190611e11565b61015b61018d366004611ebb565b6104f9565b61015b6101a0366004611f0e565b61065a565b6101b86101b3366004611f64565b61083f565b60405161013f919061205b565b61020a6101d336600461206e565b600260209081526000938452604080852082529284528284209052825290205460ff811690610100900467ffffffffffffffff1682565b60408051921515835267ffffffffffffffff90911660208301520161013f565b6101b8610238366004611f64565b6109e0565b60408051600381526000602082015260029181019190915260600161013f565b61013361026b3660046120a3565b610d9a565b61015b610da5565b60005460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013f565b6102b36102ae3660046120be565b610db9565b60405161013f91906120f8565b61015b6102ce366004612165565b610e59565b6101336102e136600461238f565b610e69565b61015b6102f43660046123dd565b610e7e565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f0ab7be9f00000000000000000000000000000000000000000000000000000000148061034f575061034f82610f35565b92915050565b61036184848484610fcc565b50505050565b61039283837f00000000000000000000000000000000000000000000000000000000000000006110e0565b600061039e84846111ae565b905060006103ac85856111c0565b905060006103ba83836109e0565b90506103de8187876040516103d09291906123f8565b6040518091039020866111e3565b600060405180606001604052808463ffffffff1681526020016104018989611392565b815260200161041089896113ab565b67ffffffffffffffff908116909152604080517fa825d747000000000000000000000000000000000000000000000000000000008152835163ffffffff1660048201526020840151602482015290830151909116604482015273ffffffffffffffffffffffffffffffffffffffff8681166064830152608482018890529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a825d7479060a401600060405180830381600087803b1580156104d857600080fd5b505af11580156104ec573d6000803e3d6000fd5b5050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314610568576040517f467409c300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610361573683838381811061058657610586612408565b90506020028101906105989190612437565b90506105af6105aa60208301836120a3565b6113ce565b60026105c160408301602084016120a3565b63ffffffff1603610601576105fc6105dc60208301836120a3565b866105ea6040850185612475565b8101906105f791906124da565b611415565b610651565b61061160408201602083016120a3565b6040517fba97c1fa00000000000000000000000000000000000000000000000000000000815263ffffffff90911660048201526024015b60405180910390fd5b5060010161056b565b61066261146b565b60005b81811015610801573683838381811061068057610680612408565b9050602002810190610692919061250f565b905060ff6106a36020830183612543565b6106b4906040810190602001612577565b60ff16036106ee576040517f83aa17da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ff6106fd6020830183612543565b61070e906060810190604001612577565b60ff1603610748576040517f4221136600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff61075e6020830183612543565b61076c906020810190612592565b67ffffffffffffffff16036107ad576040517f503667ae00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107cb6107bd6020830183612543565b6107c6906125ad565b6114ec565b6107f860006107dd60208401846120a3565b6107ea6020850185612543565b6107f3906125ad565b61153d565b50600101610665565b507faaf3aaa0c11056e86ac56eb653e25b005ca1a7d4dcd21ba24647f7ab63f3b5608282604051610833929190612669565b60405180910390a15050565b6040805160c0810182526000808252602082018190529181018290526060808201929092526080810182905260a081019190915273ffffffffffffffffffffffffffffffffffffffff8316600090815260016020818152604080842063ffffffff87168552825292839020835160c081018552815467ffffffffffffffff8116825260ff680100000000000000008204811683860152690100000000000000000082048116838801526a0100000000000000000000909104166060820152928101805485518185028101850190965280865293949193608086019383018282801561096057602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610935575b50505050508152602001600282018054806020026020016040519081016040528092919081815260200182805480156109cf57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116109a4575b505050505081525050905092915050565b6040805160c0810182526000808252602080830182905282840182905260608084018390526080840181905260a084015263ffffffff85168083527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49825284832073ffffffffffffffffffffffffffffffffffffffff88168452600183528584209184529152929020805491929167ffffffffffffffff1680610a9057825467ffffffffffffffff168452610aaf565b67ffffffffffffffff81811614610aaf5767ffffffffffffffff811684525b815468010000000000000000900460ff16610b6557825468010000000000000000900460ff1615610b605782600101805480602002602001604051908101604052809291908181526020018280548015610b3f57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610b14575b50505050506080850152825468010000000000000000900460ff1660208501525b610c03565b815468010000000000000000900460ff90811614610c035781600101805480602002602001604051908101604052809291908181526020018280548015610be257602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610bb7575b50505050506080850152815468010000000000000000900460ff1660208501525b81546901000000000000000000900460ff16610cd25782546901000000000000000000900460ff1615610ccd5782600201805480602002602001604051908101604052809291908181526020018280548015610c9557602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610c6a575b505050505060a0850152825460ff69010000000000000000008204811660408701526a01000000000000000000009091041660608501525b610d88565b81546901000000000000000000900460ff90811614610d885781600201805480602002602001604051908101604052809291908181526020018280548015610d5057602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610d25575b505050505060a0850152815460ff69010000000000000000008204811660408701526a01000000000000000000009091041660608501525b610d91846114ec565b50505092915050565b600061034f826118d1565b610dad61146b565b610db76000611938565b565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe63ffffffff831601610e1857610df283856109e0565b604051602001610e02919061205b565b6040516020818303038152906040529050610e52565b6040517fba97c1fa00000000000000000000000000000000000000000000000000000000815263ffffffff83166004820152602401610648565b9392505050565b610e648383836110e0565b505050565b6000610e768484846119ad565b949350505050565b610e8661146b565b73ffffffffffffffffffffffffffffffffffffffff8116610f29576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610648565b610f3281611938565b50565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f97f0258400000000000000000000000000000000000000000000000000000000148061034f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461034f565b6040805180820182526001815267ffffffffffffffff831660208201529051600290600090610ffe90889088906123f8565b6040805191829003909120825260208083019390935290810160009081208682528352818120338083529084529082902084518154959094015167ffffffffffffffff16610100027fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff941515949094167fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000909516949094179290921790925590517f2cb0eed7538baeae4c6fde038c0fd0384d27de0dd55a228c65847bda6aa1ab56916110d2918790879086908890612806565b60405180910390a150505050565b6051821461111a576040517fc9bf37b700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016111268484611ab6565b60ff1614611160576040517f3a9ae7b900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8063ffffffff166111718484611ad8565b63ffffffff1614610e64576040517f42d2c97e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e526111bd8484611ae8565b90565b60006111d0600d6009848661288b565b6111d9916128b5565b60e01c9392505050565b6111ee8383836119ad565b611224576040517f4c3118d400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602083015160ff16156112dc5760005b836020015160ff168160ff1610156112da57600083815260026020908152604080832085845290915281206080860151805191929160ff851690811061127c5761127c612408565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff16825281019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000169055600101611234565b505b604083015160ff1615610e645760005b836040015160ff168160ff161015610361576000838152600260209081526040808320858452909152812060a0860151805191929160ff851690811061133457611334612408565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff16825281019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000001690556001016112ec565b60006113a2602d600d848661288b565b610e52916128fd565b60006113bb60096001848661288b565b6113c491612939565b60c01c9392505050565b6113d7816118d1565b610f32576040517ff0c10d0400000000000000000000000000000000000000000000000000000000815263ffffffff82166004820152602401610648565b61142082848361153d565b61142a82846109e0565b507f82118522aa536ac0e96cc5c689407ae42b89d592aa133890a01f1509842f508182848360405161145e9392919061297f565b60405180910390a1505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610db7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610648565b602081015160ff161580156115065750606081015160ff16155b15610f32576040517fce2c375100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081015160ff90811614806115585750602081015160ff16155b1561159f576080810151511561159a576040517f83aa17da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61161e565b806020015160ff168160800151511415806115da575060026115c3600160ff6129e9565b6115cd9190612a02565b60ff16816020015160ff16115b15611611576040517f83aa17da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61161e8160800151611af8565b604081015160ff90811614806116395750604081015160ff16155b156116bf5760a0810151511561167b576040517f4221136600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081015160ff16156116ba576040517f38682fa900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611796565b806040015160ff168160a00151511415806116fa575060026116e3600160ff6129e9565b6116ed9190612a02565b60ff16816040015160ff16115b15611731576040517f4221136600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081015160ff1615806117525750806040015160ff16816060015160ff16115b15611789576040517f38682fa900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117968160a00151611af8565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020818152604080842063ffffffff87168552825292839020845181548684015195870151606088015167ffffffffffffffff9093167fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000909216919091176801000000000000000060ff97881602177fffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff166901000000000000000000918716919091027fffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff16176a01000000000000000000009590911694909402939093178355608084015180518594936118ad93908501920190611c21565b5060a082015180516118c9916002840191602090910190611c21565b505050505050565b63ffffffff811660009081527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb4960205260408120805468010000000000000000900460ff16151580610e525750546a0100000000000000000000900460ff16151592915050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b602083015160009060ff1615611a305760005b846020015160ff168160ff161015611a1857611a0285608001518260ff16815181106119ee576119ee612408565b602002602001015185858860000151611b92565b611a10576000915050610e52565b6001016119c0565b50836040015160ff16600003611a3057506001610e52565b606084015160005b856040015160ff168160ff161015611aaa57611a7a8660a001518260ff1681518110611a6657611a66612408565b602002602001015186868960000151611b92565b15611aa25781611a8981612a4b565b9250508160ff16600003611aa257600192505050610e52565b600101611a38565b50600095945050505050565b6000611ac5600182848661288b565b611ace91612a86565b60f81c9392505050565b60006111d06031602d848661288b565b60006113a260516031848661288b565b6000805b8251811015610e64576000838281518110611b1957611b19612408565b602002602001015190508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1611611b88576040517f447516e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150600101611afc565b6000838152600260209081526040808320858452825280832073ffffffffffffffffffffffffffffffffffffffff88168452825280832081518083019092525460ff811615801580845261010090920467ffffffffffffffff16938301939093529091611c1757508267ffffffffffffffff16816020015167ffffffffffffffff1610155b9695505050505050565b828054828255906000526020600020908101928215611c9b579160200282015b82811115611c9b57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190611c41565b50611ca7929150611cab565b5090565b5b80821115611ca75760008155600101611cac565b600060208284031215611cd257600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610e5257600080fd5b60008083601f840112611d1457600080fd5b50813567ffffffffffffffff811115611d2c57600080fd5b602083019150836020828501011115611d4457600080fd5b9250929050565b803567ffffffffffffffff81168114611d6357600080fd5b919050565b60008060008060608587031215611d7e57600080fd5b843567ffffffffffffffff811115611d9557600080fd5b611da187828801611d02565b90955093505060208501359150611dba60408601611d4b565b905092959194509250565b600080600060408486031215611dda57600080fd5b833567ffffffffffffffff811115611df157600080fd5b611dfd86828701611d02565b909790965060209590950135949350505050565b6020810160038310611e4c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b803573ffffffffffffffffffffffffffffffffffffffff81168114611d6357600080fd5b60008083601f840112611e8857600080fd5b50813567ffffffffffffffff811115611ea057600080fd5b6020830191508360208260051b8501011115611d4457600080fd5b600080600060408486031215611ed057600080fd5b611ed984611e52565b9250602084013567ffffffffffffffff811115611ef557600080fd5b611f0186828701611e76565b9497909650939450505050565b60008060208385031215611f2157600080fd5b823567ffffffffffffffff811115611f3857600080fd5b611f4485828601611e76565b90969095509350505050565b803563ffffffff81168114611d6357600080fd5b60008060408385031215611f7757600080fd5b611f8083611e52565b9150611f8e60208401611f50565b90509250929050565b60008151808452602080850194506020840160005b83811015611fde57815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101611fac565b509495945050505050565b67ffffffffffffffff815116825260ff602082015116602083015260ff604082015116604083015260ff60608201511660608301526000608082015160c0608085015261203960c0850182611f97565b905060a083015184820360a08601526120528282611f97565b95945050505050565b602081526000610e526020830184611fe9565b60008060006060848603121561208357600080fd5b833592506020840135915061209a60408501611e52565b90509250925092565b6000602082840312156120b557600080fd5b610e5282611f50565b6000806000606084860312156120d357600080fd5b6120dc84611f50565b92506120ea60208501611e52565b915061209a60408501611f50565b60006020808352835180602085015260005b818110156121265785810183015185820160400152820161210a565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b60008060006040848603121561217a57600080fd5b833567ffffffffffffffff81111561219157600080fd5b61219d86828701611d02565b909450925061209a905060208501611f50565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff81118282101715612202576122026121b0565b60405290565b803560ff81168114611d6357600080fd5b600082601f83011261222a57600080fd5b8135602067ffffffffffffffff80831115612247576122476121b0565b8260051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f8301168101818110848211171561228a5761228a6121b0565b60405293845260208187018101949081019250878511156122aa57600080fd5b6020870191505b848210156122d1576122c282611e52565b835291830191908301906122b1565b979650505050505050565b600060c082840312156122ee57600080fd5b6122f66121df565b905061230182611d4b565b815261230f60208301612208565b602082015261232060408301612208565b604082015261233160608301612208565b6060820152608082013567ffffffffffffffff8082111561235157600080fd5b61235d85838601612219565b608084015260a084013591508082111561237657600080fd5b5061238384828501612219565b60a08301525092915050565b6000806000606084860312156123a457600080fd5b833567ffffffffffffffff8111156123bb57600080fd5b6123c7868287016122dc565b9660208601359650604090950135949350505050565b6000602082840312156123ef57600080fd5b610e5282611e52565b8183823760009101908152919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261246b57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126124aa57600080fd5b83018035915067ffffffffffffffff8211156124c557600080fd5b602001915036819003821315611d4457600080fd5b6000602082840312156124ec57600080fd5b813567ffffffffffffffff81111561250357600080fd5b610e76848285016122dc565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261246b57600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4183360301811261246b57600080fd5b60006020828403121561258957600080fd5b610e5282612208565b6000602082840312156125a457600080fd5b610e5282611d4b565b600061034f36836122dc565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126125ee57600080fd5b830160208101925035905067ffffffffffffffff81111561260e57600080fd5b8060051b3603821315611d4457600080fd5b8183526000602080850194508260005b85811015611fde5773ffffffffffffffffffffffffffffffffffffffff61265683611e52565b1687529582019590820190600101612630565b60208082528181018390526000906040808401600586901b8501820187855b888110156127f8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08089850301855282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18c36030181126126ea57600080fd5b8b0163ffffffff6126fa82611f50565b168552878101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4182360301811261273157600080fd5b8589018890520167ffffffffffffffff61274a82611d4b565b168786015261275a888201612208565b606060ff808316828901526127708a8501612208565b92506080818416818a0152612786838601612208565b935060a09250818416838a015261279f818601866125b9565b60c08b810152945091506127ba905061010089018483612620565b9250506127c9818401846125b9565b93509050838783030160e08801526127e2828483612620565b978a019796505050928701925050600101612688565b509098975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8616815260806020820152836080820152838560a0830137600060a08583010152600060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f870116830101905067ffffffffffffffff841660408301528260608301529695505050505050565b6000808585111561289b57600080fd5b838611156128a857600080fd5b5050820193919092039150565b7fffffffff0000000000000000000000000000000000000000000000000000000081358181169160048510156128f55780818660040360031b1b83161692505b505092915050565b8035602083101561034f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b7fffffffffffffffff00000000000000000000000000000000000000000000000081358181169160088510156128f55760089490940360031b84901b1690921692915050565b73ffffffffffffffffffffffffffffffffffffffff8416815263ffffffff831660208201526060604082015260006120526060830184611fe9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60ff828116828216039081111561034f5761034f6129ba565b600060ff831680612a3c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b8060ff84160491505092915050565b600060ff821680612a5e57612a5e6129ba565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b7fff0000000000000000000000000000000000000000000000000000000000000081358181169160018510156128f55760019490940360031b84901b169092169291505056fea2646970667358221220941c7705913512169d9d3ac1bbd42adaf2f50b153395cc6c500efc210d412f0164736f6c63430008160033",
788
+ "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061011b5760003560e01c806343ea4fa9116100b25780638da5cb5b11610081578063c40ff83511610066578063c40ff835146102c0578063e084d952146102d3578063f2fde38b146102e657600080fd5b80638da5cb5b146102785780639c33abf7146102a057600080fd5b806343ea4fa91461022a57806354fd4d501461023d5780636750cd4c1461025d578063715018a61461027057600080fd5b806320efd722116100ee57806320efd7221461017f57806329460b0b1461019257806339e3f938146101a55780633c782a52146101c557600080fd5b806301ffc9a7146101205780630223536e146101485780630894edf11461015d5780631881d94d14610170575b600080fd5b61013361012e366004611cc0565b6102f9565b60405190151581526020015b60405180910390f35b61015b610156366004611d68565b610355565b005b61015b61016b366004611dc5565b610367565b600160405161013f9190611e11565b61015b61018d366004611ebb565b6104f9565b61015b6101a0366004611f0e565b61065a565b6101b86101b3366004611f64565b61083f565b60405161013f919061205b565b61020a6101d336600461206e565b600260209081526000938452604080852082529284528284209052825290205460ff811690610100900467ffffffffffffffff1682565b60408051921515835267ffffffffffffffff90911660208301520161013f565b6101b8610238366004611f64565b6109e0565b60408051600381526000602082015260029181019190915260600161013f565b61013361026b3660046120a3565b610d9a565b61015b610da5565b60005460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013f565b6102b36102ae3660046120be565b610db9565b60405161013f91906120f8565b61015b6102ce366004612165565b610e59565b6101336102e136600461238f565b610e69565b61015b6102f43660046123dd565b610e7e565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f0ab7be9f00000000000000000000000000000000000000000000000000000000148061034f575061034f82610f35565b92915050565b61036184848484610fcc565b50505050565b61039283837f00000000000000000000000000000000000000000000000000000000000000006110e0565b600061039e84846111ae565b905060006103ac85856111c0565b905060006103ba83836109e0565b90506103de8187876040516103d09291906123f8565b6040518091039020866111e3565b600060405180606001604052808463ffffffff1681526020016104018989611392565b815260200161041089896113ab565b67ffffffffffffffff908116909152604080517fa825d747000000000000000000000000000000000000000000000000000000008152835163ffffffff1660048201526020840151602482015290830151909116604482015273ffffffffffffffffffffffffffffffffffffffff8681166064830152608482018890529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a825d7479060a401600060405180830381600087803b1580156104d857600080fd5b505af11580156104ec573d6000803e3d6000fd5b5050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314610568576040517f467409c300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610361573683838381811061058657610586612408565b90506020028101906105989190612437565b90506105af6105aa60208301836120a3565b6113ce565b60026105c160408301602084016120a3565b63ffffffff1603610601576105fc6105dc60208301836120a3565b866105ea6040850185612475565b8101906105f791906124da565b611415565b610651565b61061160408201602083016120a3565b6040517fba97c1fa00000000000000000000000000000000000000000000000000000000815263ffffffff90911660048201526024015b60405180910390fd5b5060010161056b565b61066261146b565b60005b81811015610801573683838381811061068057610680612408565b9050602002810190610692919061250f565b905060ff6106a36020830183612543565b6106b4906040810190602001612577565b60ff16036106ee576040517f83aa17da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ff6106fd6020830183612543565b61070e906060810190604001612577565b60ff1603610748576040517f4221136600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff61075e6020830183612543565b61076c906020810190612592565b67ffffffffffffffff16036107ad576040517f503667ae00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107cb6107bd6020830183612543565b6107c6906125ad565b6114ec565b6107f860006107dd60208401846120a3565b6107ea6020850185612543565b6107f3906125ad565b61153d565b50600101610665565b507faaf3aaa0c11056e86ac56eb653e25b005ca1a7d4dcd21ba24647f7ab63f3b5608282604051610833929190612669565b60405180910390a15050565b6040805160c0810182526000808252602082018190529181018290526060808201929092526080810182905260a081019190915273ffffffffffffffffffffffffffffffffffffffff8316600090815260016020818152604080842063ffffffff87168552825292839020835160c081018552815467ffffffffffffffff8116825260ff680100000000000000008204811683860152690100000000000000000082048116838801526a0100000000000000000000909104166060820152928101805485518185028101850190965280865293949193608086019383018282801561096057602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610935575b50505050508152602001600282018054806020026020016040519081016040528092919081815260200182805480156109cf57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116109a4575b505050505081525050905092915050565b6040805160c0810182526000808252602080830182905282840182905260608084018390526080840181905260a084015263ffffffff85168083527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49825284832073ffffffffffffffffffffffffffffffffffffffff88168452600183528584209184529152929020805491929167ffffffffffffffff1680610a9057825467ffffffffffffffff168452610aaf565b67ffffffffffffffff81811614610aaf5767ffffffffffffffff811684525b815468010000000000000000900460ff16610b6557825468010000000000000000900460ff1615610b605782600101805480602002602001604051908101604052809291908181526020018280548015610b3f57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610b14575b50505050506080850152825468010000000000000000900460ff1660208501525b610c03565b815468010000000000000000900460ff90811614610c035781600101805480602002602001604051908101604052809291908181526020018280548015610be257602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610bb7575b50505050506080850152815468010000000000000000900460ff1660208501525b81546901000000000000000000900460ff16610cd25782546901000000000000000000900460ff1615610ccd5782600201805480602002602001604051908101604052809291908181526020018280548015610c9557602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610c6a575b505050505060a0850152825460ff69010000000000000000008204811660408701526a01000000000000000000009091041660608501525b610d88565b81546901000000000000000000900460ff90811614610d885781600201805480602002602001604051908101604052809291908181526020018280548015610d5057602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610d25575b505050505060a0850152815460ff69010000000000000000008204811660408701526a01000000000000000000009091041660608501525b610d91846114ec565b50505092915050565b600061034f826118d1565b610dad61146b565b610db76000611938565b565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe63ffffffff831601610e1857610df283856109e0565b604051602001610e02919061205b565b6040516020818303038152906040529050610e52565b6040517fba97c1fa00000000000000000000000000000000000000000000000000000000815263ffffffff83166004820152602401610648565b9392505050565b610e648383836110e0565b505050565b6000610e768484846119ad565b949350505050565b610e8661146b565b73ffffffffffffffffffffffffffffffffffffffff8116610f29576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610648565b610f3281611938565b50565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f97f0258400000000000000000000000000000000000000000000000000000000148061034f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461034f565b6040805180820182526001815267ffffffffffffffff831660208201529051600290600090610ffe90889088906123f8565b6040805191829003909120825260208083019390935290810160009081208682528352818120338083529084529082902084518154959094015167ffffffffffffffff16610100027fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff941515949094167fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000909516949094179290921790925590517f2cb0eed7538baeae4c6fde038c0fd0384d27de0dd55a228c65847bda6aa1ab56916110d2918790879086908890612806565b60405180910390a150505050565b6051821461111a576040517fc9bf37b700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016111268484611ab6565b60ff1614611160576040517f3a9ae7b900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8063ffffffff166111718484611ad8565b63ffffffff1614610e64576040517f42d2c97e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e526111bd8484611ae8565b90565b60006111d0600d6009848661288b565b6111d9916128b5565b60e01c9392505050565b6111ee8383836119ad565b611224576040517f4c3118d400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602083015160ff16156112dc5760005b836020015160ff168160ff1610156112da57600083815260026020908152604080832085845290915281206080860151805191929160ff851690811061127c5761127c612408565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff16825281019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000169055600101611234565b505b604083015160ff1615610e645760005b836040015160ff168160ff161015610361576000838152600260209081526040808320858452909152812060a0860151805191929160ff851690811061133457611334612408565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff16825281019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000001690556001016112ec565b60006113a2602d600d848661288b565b610e52916128fd565b60006113bb60096001848661288b565b6113c491612939565b60c01c9392505050565b6113d7816118d1565b610f32576040517ff0c10d0400000000000000000000000000000000000000000000000000000000815263ffffffff82166004820152602401610648565b61142082848361153d565b61142a82846109e0565b507f82118522aa536ac0e96cc5c689407ae42b89d592aa133890a01f1509842f508182848360405161145e9392919061297f565b60405180910390a1505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610db7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610648565b602081015160ff161580156115065750606081015160ff16155b15610f32576040517fce2c375100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081015160ff90811614806115585750602081015160ff16155b1561159f576080810151511561159a576040517f83aa17da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61161e565b806020015160ff168160800151511415806115da575060026115c3600160ff6129e9565b6115cd9190612a02565b60ff16816020015160ff16115b15611611576040517f83aa17da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61161e8160800151611af8565b604081015160ff90811614806116395750604081015160ff16155b156116bf5760a0810151511561167b576040517f4221136600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081015160ff16156116ba576040517f38682fa900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611796565b806040015160ff168160a00151511415806116fa575060026116e3600160ff6129e9565b6116ed9190612a02565b60ff16816040015160ff16115b15611731576040517f4221136600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081015160ff1615806117525750806040015160ff16816060015160ff16115b15611789576040517f38682fa900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117968160a00151611af8565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020818152604080842063ffffffff87168552825292839020845181548684015195870151606088015167ffffffffffffffff9093167fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000909216919091176801000000000000000060ff97881602177fffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff166901000000000000000000918716919091027fffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff16176a01000000000000000000009590911694909402939093178355608084015180518594936118ad93908501920190611c21565b5060a082015180516118c9916002840191602090910190611c21565b505050505050565b63ffffffff811660009081527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb4960205260408120805468010000000000000000900460ff16151580610e525750546a0100000000000000000000900460ff16151592915050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b602083015160009060ff1615611a305760005b846020015160ff168160ff161015611a1857611a0285608001518260ff16815181106119ee576119ee612408565b602002602001015185858860000151611b92565b611a10576000915050610e52565b6001016119c0565b50836040015160ff16600003611a3057506001610e52565b606084015160005b856040015160ff168160ff161015611aaa57611a7a8660a001518260ff1681518110611a6657611a66612408565b602002602001015186868960000151611b92565b15611aa25781611a8981612a4b565b9250508160ff16600003611aa257600192505050610e52565b600101611a38565b50600095945050505050565b6000611ac5600182848661288b565b611ace91612a86565b60f81c9392505050565b60006111d06031602d848661288b565b60006113a260516031848661288b565b6000805b8251811015610e64576000838281518110611b1957611b19612408565b602002602001015190508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1611611b88576040517f447516e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150600101611afc565b6000838152600260209081526040808320858452825280832073ffffffffffffffffffffffffffffffffffffffff88168452825280832081518083019092525460ff811615801580845261010090920467ffffffffffffffff16938301939093529091611c1757508267ffffffffffffffff16816020015167ffffffffffffffff1610155b9695505050505050565b828054828255906000526020600020908101928215611c9b579160200282015b82811115611c9b57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190611c41565b50611ca7929150611cab565b5090565b5b80821115611ca75760008155600101611cac565b600060208284031215611cd257600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610e5257600080fd5b60008083601f840112611d1457600080fd5b50813567ffffffffffffffff811115611d2c57600080fd5b602083019150836020828501011115611d4457600080fd5b9250929050565b803567ffffffffffffffff81168114611d6357600080fd5b919050565b60008060008060608587031215611d7e57600080fd5b843567ffffffffffffffff811115611d9557600080fd5b611da187828801611d02565b90955093505060208501359150611dba60408601611d4b565b905092959194509250565b600080600060408486031215611dda57600080fd5b833567ffffffffffffffff811115611df157600080fd5b611dfd86828701611d02565b909790965060209590950135949350505050565b6020810160038310611e4c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b803573ffffffffffffffffffffffffffffffffffffffff81168114611d6357600080fd5b60008083601f840112611e8857600080fd5b50813567ffffffffffffffff811115611ea057600080fd5b6020830191508360208260051b8501011115611d4457600080fd5b600080600060408486031215611ed057600080fd5b611ed984611e52565b9250602084013567ffffffffffffffff811115611ef557600080fd5b611f0186828701611e76565b9497909650939450505050565b60008060208385031215611f2157600080fd5b823567ffffffffffffffff811115611f3857600080fd5b611f4485828601611e76565b90969095509350505050565b803563ffffffff81168114611d6357600080fd5b60008060408385031215611f7757600080fd5b611f8083611e52565b9150611f8e60208401611f50565b90509250929050565b60008151808452602080850194506020840160005b83811015611fde57815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101611fac565b509495945050505050565b67ffffffffffffffff815116825260ff602082015116602083015260ff604082015116604083015260ff60608201511660608301526000608082015160c0608085015261203960c0850182611f97565b905060a083015184820360a08601526120528282611f97565b95945050505050565b602081526000610e526020830184611fe9565b60008060006060848603121561208357600080fd5b833592506020840135915061209a60408501611e52565b90509250925092565b6000602082840312156120b557600080fd5b610e5282611f50565b6000806000606084860312156120d357600080fd5b6120dc84611f50565b92506120ea60208501611e52565b915061209a60408501611f50565b60006020808352835180602085015260005b818110156121265785810183015185820160400152820161210a565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b60008060006040848603121561217a57600080fd5b833567ffffffffffffffff81111561219157600080fd5b61219d86828701611d02565b909450925061209a905060208501611f50565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff81118282101715612202576122026121b0565b60405290565b803560ff81168114611d6357600080fd5b600082601f83011261222a57600080fd5b8135602067ffffffffffffffff80831115612247576122476121b0565b8260051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f8301168101818110848211171561228a5761228a6121b0565b60405293845260208187018101949081019250878511156122aa57600080fd5b6020870191505b848210156122d1576122c282611e52565b835291830191908301906122b1565b979650505050505050565b600060c082840312156122ee57600080fd5b6122f66121df565b905061230182611d4b565b815261230f60208301612208565b602082015261232060408301612208565b604082015261233160608301612208565b6060820152608082013567ffffffffffffffff8082111561235157600080fd5b61235d85838601612219565b608084015260a084013591508082111561237657600080fd5b5061238384828501612219565b60a08301525092915050565b6000806000606084860312156123a457600080fd5b833567ffffffffffffffff8111156123bb57600080fd5b6123c7868287016122dc565b9660208601359650604090950135949350505050565b6000602082840312156123ef57600080fd5b610e5282611e52565b8183823760009101908152919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261246b57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126124aa57600080fd5b83018035915067ffffffffffffffff8211156124c557600080fd5b602001915036819003821315611d4457600080fd5b6000602082840312156124ec57600080fd5b813567ffffffffffffffff81111561250357600080fd5b610e76848285016122dc565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261246b57600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4183360301811261246b57600080fd5b60006020828403121561258957600080fd5b610e5282612208565b6000602082840312156125a457600080fd5b610e5282611d4b565b600061034f36836122dc565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126125ee57600080fd5b830160208101925035905067ffffffffffffffff81111561260e57600080fd5b8060051b3603821315611d4457600080fd5b8183526000602080850194508260005b85811015611fde5773ffffffffffffffffffffffffffffffffffffffff61265683611e52565b1687529582019590820190600101612630565b60208082528181018390526000906040808401600586901b8501820187855b888110156127f8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08089850301855282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18c36030181126126ea57600080fd5b8b0163ffffffff6126fa82611f50565b168552878101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4182360301811261273157600080fd5b8589018890520167ffffffffffffffff61274a82611d4b565b168786015261275a888201612208565b606060ff808316828901526127708a8501612208565b92506080818416818a0152612786838601612208565b935060a09250818416838a015261279f818601866125b9565b60c08b810152945091506127ba905061010089018483612620565b9250506127c9818401846125b9565b93509050838783030160e08801526127e2828483612620565b978a019796505050928701925050600101612688565b509098975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8616815260806020820152836080820152838560a0830137600060a08583010152600060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f870116830101905067ffffffffffffffff841660408301528260608301529695505050505050565b6000808585111561289b57600080fd5b838611156128a857600080fd5b5050820193919092039150565b7fffffffff0000000000000000000000000000000000000000000000000000000081358181169160048510156128f55780818660040360031b1b83161692505b505092915050565b8035602083101561034f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b7fffffffffffffffff00000000000000000000000000000000000000000000000081358181169160088510156128f55760089490940360031b84901b1690921692915050565b73ffffffffffffffffffffffffffffffffffffffff8416815263ffffffff831660208201526060604082015260006120526060830184611fe9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60ff828116828216039081111561034f5761034f6129ba565b600060ff831680612a3c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b8060ff84160491505092915050565b600060ff821680612a5e57612a5e6129ba565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b7fff0000000000000000000000000000000000000000000000000000000000000081358181169160018510156128f55760019490940360031b84901b169092169291505056fea2646970667358221220941c7705913512169d9d3ac1bbd42adaf2f50b153395cc6c500efc210d412f0164736f6c63430008160033",
734
789
  "devdoc": {
735
790
  "details": "This is a gluing contract. It simply parses the requests and forward to the super.impl() accordingly.In this case, it combines the logic of ReceiveUlnBase and ReceiveLibBaseE2",
736
791
  "kind": "dev",
@@ -753,9 +808,6 @@
753
808
  "transferOwnership(address)": {
754
809
  "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
755
810
  },
756
- "verifiable(bytes,bytes32)": {
757
- "details": "a ULN verifiable requires it to be endpoint verifiable and committable"
758
- },
759
811
  "verify(bytes,bytes32,uint64)": {
760
812
  "details": "for dvn to verify the payload"
761
813
  }
@@ -775,7 +827,7 @@
775
827
  "storageLayout": {
776
828
  "storage": [
777
829
  {
778
- "astId": 6813,
830
+ "astId": 7779,
779
831
  "contract": "contracts/uln/uln302/ReceiveUln302.sol:ReceiveUln302",
780
832
  "label": "_owner",
781
833
  "offset": 0,
@@ -783,20 +835,20 @@
783
835
  "type": "t_address"
784
836
  },
785
837
  {
786
- "astId": 16927,
838
+ "astId": 17969,
787
839
  "contract": "contracts/uln/uln302/ReceiveUln302.sol:ReceiveUln302",
788
840
  "label": "ulnConfigs",
789
841
  "offset": 0,
790
842
  "slot": "1",
791
- "type": "t_mapping(t_address,t_mapping(t_uint32,t_struct(UlnConfig)16876_storage))"
843
+ "type": "t_mapping(t_address,t_mapping(t_uint32,t_struct(UlnConfig)17918_storage))"
792
844
  },
793
845
  {
794
- "astId": 16033,
846
+ "astId": 17043,
795
847
  "contract": "contracts/uln/uln302/ReceiveUln302.sol:ReceiveUln302",
796
848
  "label": "hashLookup",
797
849
  "offset": 0,
798
850
  "slot": "2",
799
- "type": "t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_address,t_struct(Verification)16018_storage)))"
851
+ "type": "t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_address,t_struct(Verification)17028_storage)))"
800
852
  }
801
853
  ],
802
854
  "types": {
@@ -821,47 +873,47 @@
821
873
  "label": "bytes32",
822
874
  "numberOfBytes": "32"
823
875
  },
824
- "t_mapping(t_address,t_mapping(t_uint32,t_struct(UlnConfig)16876_storage))": {
876
+ "t_mapping(t_address,t_mapping(t_uint32,t_struct(UlnConfig)17918_storage))": {
825
877
  "encoding": "mapping",
826
878
  "key": "t_address",
827
879
  "label": "mapping(address => mapping(uint32 => struct UlnConfig))",
828
880
  "numberOfBytes": "32",
829
- "value": "t_mapping(t_uint32,t_struct(UlnConfig)16876_storage)"
881
+ "value": "t_mapping(t_uint32,t_struct(UlnConfig)17918_storage)"
830
882
  },
831
- "t_mapping(t_address,t_struct(Verification)16018_storage)": {
883
+ "t_mapping(t_address,t_struct(Verification)17028_storage)": {
832
884
  "encoding": "mapping",
833
885
  "key": "t_address",
834
886
  "label": "mapping(address => struct Verification)",
835
887
  "numberOfBytes": "32",
836
- "value": "t_struct(Verification)16018_storage"
888
+ "value": "t_struct(Verification)17028_storage"
837
889
  },
838
- "t_mapping(t_bytes32,t_mapping(t_address,t_struct(Verification)16018_storage))": {
890
+ "t_mapping(t_bytes32,t_mapping(t_address,t_struct(Verification)17028_storage))": {
839
891
  "encoding": "mapping",
840
892
  "key": "t_bytes32",
841
893
  "label": "mapping(bytes32 => mapping(address => struct Verification))",
842
894
  "numberOfBytes": "32",
843
- "value": "t_mapping(t_address,t_struct(Verification)16018_storage)"
895
+ "value": "t_mapping(t_address,t_struct(Verification)17028_storage)"
844
896
  },
845
- "t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_address,t_struct(Verification)16018_storage)))": {
897
+ "t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_address,t_struct(Verification)17028_storage)))": {
846
898
  "encoding": "mapping",
847
899
  "key": "t_bytes32",
848
900
  "label": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Verification)))",
849
901
  "numberOfBytes": "32",
850
- "value": "t_mapping(t_bytes32,t_mapping(t_address,t_struct(Verification)16018_storage))"
902
+ "value": "t_mapping(t_bytes32,t_mapping(t_address,t_struct(Verification)17028_storage))"
851
903
  },
852
- "t_mapping(t_uint32,t_struct(UlnConfig)16876_storage)": {
904
+ "t_mapping(t_uint32,t_struct(UlnConfig)17918_storage)": {
853
905
  "encoding": "mapping",
854
906
  "key": "t_uint32",
855
907
  "label": "mapping(uint32 => struct UlnConfig)",
856
908
  "numberOfBytes": "32",
857
- "value": "t_struct(UlnConfig)16876_storage"
909
+ "value": "t_struct(UlnConfig)17918_storage"
858
910
  },
859
- "t_struct(UlnConfig)16876_storage": {
911
+ "t_struct(UlnConfig)17918_storage": {
860
912
  "encoding": "inplace",
861
913
  "label": "struct UlnConfig",
862
914
  "members": [
863
915
  {
864
- "astId": 16863,
916
+ "astId": 17905,
865
917
  "contract": "contracts/uln/uln302/ReceiveUln302.sol:ReceiveUln302",
866
918
  "label": "confirmations",
867
919
  "offset": 0,
@@ -869,7 +921,7 @@
869
921
  "type": "t_uint64"
870
922
  },
871
923
  {
872
- "astId": 16865,
924
+ "astId": 17907,
873
925
  "contract": "contracts/uln/uln302/ReceiveUln302.sol:ReceiveUln302",
874
926
  "label": "requiredDVNCount",
875
927
  "offset": 8,
@@ -877,7 +929,7 @@
877
929
  "type": "t_uint8"
878
930
  },
879
931
  {
880
- "astId": 16867,
932
+ "astId": 17909,
881
933
  "contract": "contracts/uln/uln302/ReceiveUln302.sol:ReceiveUln302",
882
934
  "label": "optionalDVNCount",
883
935
  "offset": 9,
@@ -885,7 +937,7 @@
885
937
  "type": "t_uint8"
886
938
  },
887
939
  {
888
- "astId": 16869,
940
+ "astId": 17911,
889
941
  "contract": "contracts/uln/uln302/ReceiveUln302.sol:ReceiveUln302",
890
942
  "label": "optionalDVNThreshold",
891
943
  "offset": 10,
@@ -893,7 +945,7 @@
893
945
  "type": "t_uint8"
894
946
  },
895
947
  {
896
- "astId": 16872,
948
+ "astId": 17914,
897
949
  "contract": "contracts/uln/uln302/ReceiveUln302.sol:ReceiveUln302",
898
950
  "label": "requiredDVNs",
899
951
  "offset": 0,
@@ -901,7 +953,7 @@
901
953
  "type": "t_array(t_address)dyn_storage"
902
954
  },
903
955
  {
904
- "astId": 16875,
956
+ "astId": 17917,
905
957
  "contract": "contracts/uln/uln302/ReceiveUln302.sol:ReceiveUln302",
906
958
  "label": "optionalDVNs",
907
959
  "offset": 0,
@@ -911,12 +963,12 @@
911
963
  ],
912
964
  "numberOfBytes": "96"
913
965
  },
914
- "t_struct(Verification)16018_storage": {
966
+ "t_struct(Verification)17028_storage": {
915
967
  "encoding": "inplace",
916
968
  "label": "struct Verification",
917
969
  "members": [
918
970
  {
919
- "astId": 16015,
971
+ "astId": 17025,
920
972
  "contract": "contracts/uln/uln302/ReceiveUln302.sol:ReceiveUln302",
921
973
  "label": "submitted",
922
974
  "offset": 0,
@@ -924,7 +976,7 @@
924
976
  "type": "t_bool"
925
977
  },
926
978
  {
927
- "astId": 16017,
979
+ "astId": 17027,
928
980
  "contract": "contracts/uln/uln302/ReceiveUln302.sol:ReceiveUln302",
929
981
  "label": "confirmations",
930
982
  "offset": 1,