@pendle/core-v2 6.6.1 → 6.7.1

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 (180) hide show
  1. package/build/artifacts/contracts/LiquidityMining/PendleMerkleDistributor.sol/PendleMerkleDistributor.dbg.json +1 -1
  2. package/build/artifacts/contracts/LiquidityMining/PendleMerkleDistributor.sol/PendleMerkleDistributor.json +2 -88
  3. package/build/artifacts/contracts/LiquidityMining/PendleMultiTokenMerkleDistributor.sol/PendleMultiTokenMerkleDistributor.dbg.json +1 -1
  4. package/build/artifacts/contracts/LiquidityMining/PendleMultiTokenMerkleDistributor.sol/PendleMultiTokenMerkleDistributor.json +2 -122
  5. package/build/artifacts/contracts/cross-chain/OFTPTSwapper.sol/OFTPTSwapper.dbg.json +4 -0
  6. package/build/artifacts/contracts/cross-chain/OFTPTSwapper.sol/OFTPTSwapper.json +99 -0
  7. package/build/artifacts/contracts/cross-chain/factory/PendleBridgePTFactory.sol/PendleBridgePTFactory.dbg.json +4 -0
  8. package/build/artifacts/contracts/cross-chain/factory/PendleBridgePTFactory.sol/PendleBridgePTFactory.json +1388 -0
  9. package/build/artifacts/contracts/cross-chain/funder/BridgeFunder.sol/BridgeFunder.dbg.json +1 -1
  10. package/build/artifacts/contracts/cross-chain/oftImpl/hub/OFTAdapterAltImpl.sol/OFTAdapterAltImpl.dbg.json +1 -1
  11. package/build/artifacts/contracts/cross-chain/oftImpl/hub/OFTAdapterAltImpl.sol/OFTAdapterAltImpl.json +46 -14
  12. package/build/artifacts/contracts/cross-chain/oftImpl/hub/OFTAdapterImpl.sol/OFTAdapterImpl.dbg.json +1 -1
  13. package/build/artifacts/contracts/cross-chain/oftImpl/hub/OFTAdapterImpl.sol/OFTAdapterImpl.json +46 -14
  14. package/build/artifacts/contracts/cross-chain/oftImpl/pendleOft/PendleOFT.sol/PendleOFT.dbg.json +4 -0
  15. package/build/artifacts/contracts/cross-chain/oftImpl/pendleOft/PendleOFT.sol/PendleOFT.json +1541 -0
  16. package/build/artifacts/contracts/cross-chain/oftImpl/pendleOft/PendleOFTAlt.sol/PendleOFTAlt.dbg.json +4 -0
  17. package/build/artifacts/contracts/cross-chain/oftImpl/pendleOft/PendleOFTAlt.sol/PendleOFTAlt.json +1570 -0
  18. package/build/artifacts/contracts/cross-chain/oftImpl/spoke/PendleBridgedPrincipalToken.sol/PendleBridgedPrincipalToken.dbg.json +1 -1
  19. package/build/artifacts/contracts/cross-chain/oftImpl/spoke/PendleBridgedPrincipalToken.sol/PendleBridgedPrincipalToken.json +57 -35
  20. package/build/artifacts/contracts/cross-chain/oftImpl/spoke/PendleBridgedPrincipalTokenAlt.sol/PendleBridgedPrincipalTokenAlt.dbg.json +1 -1
  21. package/build/artifacts/contracts/cross-chain/oftImpl/spoke/PendleBridgedPrincipalTokenAlt.sol/PendleBridgedPrincipalTokenAlt.json +57 -35
  22. package/build/artifacts/contracts/interfaces/IMarketSweed.sol/IMarketSweed.dbg.json +1 -1
  23. package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiqV3.sol/IPActionAddRemoveLiqV3.dbg.json +1 -1
  24. package/build/artifacts/contracts/interfaces/IPActionCallbackV3.sol/IPActionCallbackV3.dbg.json +1 -1
  25. package/build/artifacts/contracts/interfaces/IPActionMarketAuxStatic.sol/IPActionMarketAuxStatic.dbg.json +1 -1
  26. package/build/artifacts/contracts/interfaces/IPActionMiscV3.sol/IPActionMiscV3.dbg.json +1 -1
  27. package/build/artifacts/contracts/interfaces/IPActionSimple.sol/IPActionSimple.dbg.json +1 -1
  28. package/build/artifacts/contracts/interfaces/IPActionStorageStatic.sol/IPActionStorageStatic.dbg.json +1 -1
  29. package/build/artifacts/contracts/interfaces/IPActionStorageV4.sol/IPActionStorageV4.dbg.json +1 -1
  30. package/build/artifacts/contracts/interfaces/IPActionSwapPTV3.sol/IPActionSwapPTV3.dbg.json +1 -1
  31. package/build/artifacts/contracts/interfaces/IPActionSwapYTV3.sol/IPActionSwapYTV3.dbg.json +1 -1
  32. package/build/artifacts/contracts/interfaces/IPAllActionV3.sol/IPAllActionV3.dbg.json +1 -1
  33. package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPActionAddRemoveLiqV3Events.dbg.json +1 -1
  34. package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPActionMiscV3Events.dbg.json +1 -1
  35. package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPActionStorageEvents.dbg.json +1 -1
  36. package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPActionSwapPTV3Events.dbg.json +1 -1
  37. package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPActionSwapYTV3Events.dbg.json +1 -1
  38. package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPAllEventsV3.dbg.json +1 -1
  39. package/build/artifacts/contracts/interfaces/IPBridgeFunder.sol/IPBridgeFunder.dbg.json +1 -1
  40. package/build/artifacts/contracts/interfaces/IPBridgePTFactory.sol/IPBridgePTFactory.dbg.json +4 -0
  41. package/build/artifacts/contracts/interfaces/IPBridgePTFactory.sol/IPBridgePTFactory.json +1026 -0
  42. package/build/artifacts/contracts/interfaces/IPBridgedPrincipalToken.sol/IPBridgedPrincipalToken.dbg.json +1 -1
  43. package/build/artifacts/contracts/interfaces/IPBridgedPrincipalToken.sol/IPBridgedPrincipalToken.json +11 -0
  44. package/build/artifacts/contracts/interfaces/IPLimitRouter.sol/IPLimitOrderType.dbg.json +1 -1
  45. package/build/artifacts/contracts/interfaces/IPLimitRouter.sol/IPLimitRouter.dbg.json +1 -1
  46. package/build/artifacts/contracts/interfaces/IPLimitRouter.sol/IPLimitRouterCallback.dbg.json +1 -1
  47. package/build/artifacts/contracts/interfaces/IPMerkleDistributor.sol/IPMerkleDistributor.dbg.json +1 -1
  48. package/build/artifacts/contracts/interfaces/IPMerkleDistributor.sol/IPMerkleDistributor.json +0 -67
  49. package/build/artifacts/contracts/interfaces/IPMultiTokenMerkleDistributor.sol/IPMultiTokenMerkleDistributor.dbg.json +1 -1
  50. package/build/artifacts/contracts/interfaces/IPMultiTokenMerkleDistributor.sol/IPMultiTokenMerkleDistributor.json +0 -120
  51. package/build/artifacts/contracts/interfaces/IPOFTPTSwapper.sol/IPOFTPTSwapper.dbg.json +4 -0
  52. package/build/artifacts/contracts/interfaces/{IPSwapHelper.sol/IPSwapHelper.json → IPOFTPTSwapper.sol/IPOFTPTSwapper.json} +2 -2
  53. package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.dbg.json +1 -1
  54. package/build/artifacts/contracts/limit/LimitMathCore.sol/LimitMathCore.dbg.json +1 -1
  55. package/build/artifacts/contracts/limit/LimitRouterBase.sol/LimitRouterBase.dbg.json +1 -1
  56. package/build/artifacts/contracts/limit/PendleLimitRouter.sol/PendleLimitRouter.dbg.json +1 -1
  57. package/build/artifacts/contracts/limit/PendleLimitRouter.sol/PendleLimitRouter.json +2 -2
  58. package/build/artifacts/contracts/limit/helpers/MintSyHelper.sol/MintSyHelper.dbg.json +1 -1
  59. package/build/artifacts/contracts/offchain-helpers/ExpiredLpPtRedeemer.sol/ExpiredLpPtRedeemer.dbg.json +1 -1
  60. package/build/artifacts/contracts/offchain-helpers/LimitBackendHelperV2.sol/LimitBackendHelperV2.dbg.json +1 -1
  61. package/build/artifacts/contracts/offchain-helpers/MarketSweed.sol/MarketSweed.dbg.json +1 -1
  62. package/build/artifacts/contracts/offchain-helpers/PendleFeeSetter.sol/PendleFeeSetter.dbg.json +1 -1
  63. package/build/artifacts/contracts/offchain-helpers/deploy/PendleCommonPoolDeployHelperV2.sol/PendleCommonPoolDeployHelperV2.dbg.json +1 -1
  64. package/build/artifacts/contracts/offchain-helpers/deploy/PendlePoolDeployHelper.sol/PendlePoolDeployHelper.dbg.json +1 -1
  65. package/build/artifacts/contracts/offchain-helpers/deploy/PendlePoolDeployHelperV2.sol/PendlePoolDeployHelperV2.dbg.json +1 -1
  66. package/build/artifacts/contracts/offchain-helpers/router-static/PendleRouterStatic.sol/PendleRouterStatic.dbg.json +1 -1
  67. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionInfoStatic.sol/ActionInfoStatic.dbg.json +1 -1
  68. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketAuxStatic.sol/ActionMarketAuxStatic.dbg.json +1 -1
  69. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketCoreStatic.sol/ActionMarketCoreStatic.dbg.json +1 -1
  70. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMintRedeemStatic.sol/ActionMintRedeemStatic.dbg.json +1 -1
  71. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionStorageStatic.sol/ActionStorageStatic.dbg.json +1 -1
  72. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionVePendleStatic.sol/ActionVePendleStatic.dbg.json +1 -1
  73. package/build/artifacts/contracts/offchain-helpers/router-static/base/MarketApproxLibV1.sol/MarketApproxPtInLibV1.dbg.json +1 -1
  74. package/build/artifacts/contracts/offchain-helpers/router-static/base/MarketApproxLibV1.sol/MarketApproxPtOutLibV1.dbg.json +1 -1
  75. package/build/artifacts/contracts/offchain-helpers/router-static/base/StorageLayout.sol/StorageLayout.dbg.json +1 -1
  76. package/build/artifacts/contracts/router/ActionStorageV4.sol/ActionStorageV4.dbg.json +1 -1
  77. package/build/artifacts/contracts/router/PendleRouterV4.sol/PendleRouterV4.dbg.json +1 -1
  78. package/build/artifacts/contracts/router/Reflector.sol/Reflector.dbg.json +1 -1
  79. package/build/artifacts/contracts/router/base/ActionBase.sol/ActionBase.dbg.json +1 -1
  80. package/build/artifacts/contracts/router/base/ActionDelegateBase.sol/ActionDelegateBase.dbg.json +1 -1
  81. package/build/artifacts/contracts/router/math/ApproxStateLib.sol/ApproxStateLib.dbg.json +1 -1
  82. package/build/artifacts/contracts/router/math/MarketApproxLibOnchain.sol/MarketApproxPtInLibOnchain.dbg.json +1 -1
  83. package/build/artifacts/contracts/router/math/MarketApproxLibOnchain.sol/MarketApproxPtOutLibOnchain.dbg.json +1 -1
  84. package/build/artifacts/contracts/router/math/MarketApproxLibV2.sol/MarketApproxPtInLibV2.dbg.json +1 -1
  85. package/build/artifacts/contracts/router/math/MarketApproxLibV2.sol/MarketApproxPtOutLibV2.dbg.json +1 -1
  86. package/build/artifacts/contracts/router/swap-aggregator/OKXScaleHelper.sol/IOKXDexRouter.dbg.json +1 -1
  87. package/build/artifacts/contracts/router/swap-aggregator/OKXScaleHelper.sol/OKXScaleHelper.dbg.json +1 -1
  88. package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/IKyberScalingHelper.dbg.json +1 -1
  89. package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/IOdosRouterV2.dbg.json +1 -1
  90. package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/PendleSwap.dbg.json +1 -1
  91. package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/PendleSwap.json +2 -2
  92. package/contracts/LiquidityMining/PendleMerkleDistributor.sol +1 -28
  93. package/contracts/LiquidityMining/PendleMultiTokenMerkleDistributor.sol +1 -36
  94. package/contracts/cross-chain/{PendleSwapHelper.sol → OFTPTSwapper.sol} +4 -3
  95. package/contracts/cross-chain/factory/PendleBridgePTFactory.sol +495 -0
  96. package/contracts/cross-chain/oftImpl/hub/OFTAdapterAltImpl.sol +5 -4
  97. package/contracts/cross-chain/oftImpl/hub/OFTAdapterImpl.sol +14 -6
  98. package/contracts/cross-chain/oftImpl/pendleOft/PendleOFT.sol +11 -0
  99. package/contracts/cross-chain/oftImpl/pendleOft/PendleOFTAlt.sol +52 -0
  100. package/contracts/cross-chain/oftImpl/spoke/PendleBridgedPrincipalToken.sol +33 -24
  101. package/contracts/cross-chain/oftImpl/spoke/PendleBridgedPrincipalTokenAlt.sol +4 -13
  102. package/contracts/interfaces/IPBridgePTFactory.sol +129 -0
  103. package/contracts/interfaces/IPBridgedPrincipalToken.sol +4 -2
  104. package/contracts/interfaces/IPMerkleDistributor.sol +0 -7
  105. package/contracts/interfaces/IPMultiTokenMerkleDistributor.sol +0 -10
  106. package/contracts/interfaces/{IPSwapHelper.sol → IPOFTPTSwapper.sol} +1 -1
  107. package/contracts/limit/LimitRouterBase.sol +1 -1
  108. package/contracts/router/swap-aggregator/OKXScaleHelper.sol +4 -1
  109. package/deployments/1-core.json +2 -1
  110. package/deployments/130-core.json +2 -1
  111. package/deployments/143-core.json +38 -1
  112. package/deployments/143-offchain-helper.json +11 -0
  113. package/deployments/42161-core.json +2 -1
  114. package/deployments/4217-core.json +3 -1
  115. package/deployments/43114-core.json +3 -1
  116. package/deployments/56-core.json +2 -1
  117. package/deployments/57073-core.json +4 -1
  118. package/deployments/747474-core.json +4 -1
  119. package/deployments/8453-core.json +2 -1
  120. package/deployments/9745-core.json +2 -1
  121. package/deployments/999-core.json +2 -1
  122. package/package.json +12 -9
  123. package/typechain-types/DVNOptions.ts +57 -0
  124. package/typechain-types/ExecutorOptions.ts +57 -0
  125. package/typechain-types/IPBridgePTFactory.ts +936 -0
  126. package/typechain-types/IPMerkleDistributor.ts +0 -90
  127. package/typechain-types/IPMultiTokenMerkleDistributor.ts +0 -158
  128. package/typechain-types/IPOFTPTSwapper.ts +161 -0
  129. package/typechain-types/OAppPreCrimeSimulatorUpgradeable.ts +410 -0
  130. package/typechain-types/OFTAdapterAltImpl.ts +50 -19
  131. package/typechain-types/OFTAdapterImpl.ts +50 -19
  132. package/typechain-types/OFTAdapterUpgradeable.ts +1337 -0
  133. package/typechain-types/OFTCoreUpgradeable.ts +1337 -0
  134. package/typechain-types/OFTPTSwapper.ts +161 -0
  135. package/typechain-types/OFTUpgradeable.ts +1681 -0
  136. package/typechain-types/OptionsBuilder.ts +57 -0
  137. package/typechain-types/PendleBridgePTFactory.ts +1311 -0
  138. package/typechain-types/PendleBridgedPrincipalToken.ts +67 -20
  139. package/typechain-types/PendleBridgedPrincipalTokenAlt.ts +67 -20
  140. package/typechain-types/PendleMerkleDistributor.ts +0 -106
  141. package/typechain-types/PendleMultiTokenMerkleDistributor.ts +0 -158
  142. package/typechain-types/PendleOFT.ts +1675 -0
  143. package/typechain-types/PendleOFTAlt.ts +1694 -0
  144. package/typechain-types/factories/DVNOptions__factory.ts +77 -0
  145. package/typechain-types/factories/ExecutorOptions__factory.ts +84 -0
  146. package/typechain-types/factories/IOFT__factory.ts +11 -0
  147. package/typechain-types/factories/IPBridgePTFactory__factory.ts +1041 -0
  148. package/typechain-types/factories/IPBridgedPrincipalToken__factory.ts +11 -0
  149. package/typechain-types/factories/IPMerkleDistributor__factory.ts +0 -67
  150. package/typechain-types/factories/IPMultiTokenMerkleDistributor__factory.ts +0 -120
  151. package/typechain-types/factories/IPOFTPTSwapper__factory.ts +114 -0
  152. package/typechain-types/factories/OAppPreCrimeSimulatorUpgradeable__factory.ts +311 -0
  153. package/typechain-types/factories/OFTAdapterAltImpl__factory.ts +49 -25
  154. package/typechain-types/factories/OFTAdapterImpl__factory.ts +49 -25
  155. package/typechain-types/factories/OFTAdapterUpgradeable__factory.ts +1287 -0
  156. package/typechain-types/factories/OFTAdapter__factory.ts +11 -0
  157. package/typechain-types/factories/OFTCoreUpgradeable__factory.ts +1283 -0
  158. package/typechain-types/factories/OFTCore__factory.ts +11 -0
  159. package/typechain-types/factories/OFTPTSwapper__factory.ts +149 -0
  160. package/typechain-types/factories/OFTUpgradeable__factory.ts +1553 -0
  161. package/typechain-types/factories/OFT__factory.ts +11 -0
  162. package/typechain-types/factories/OptionsBuilder__factory.ts +91 -0
  163. package/typechain-types/factories/PendleBridgePTFactory__factory.ts +1481 -0
  164. package/typechain-types/factories/PendleBridgedPrincipalTokenAlt__factory.ts +60 -58
  165. package/typechain-types/factories/PendleBridgedPrincipalToken__factory.ts +60 -58
  166. package/typechain-types/factories/PendleLimitRouter__factory.ts +1 -1
  167. package/typechain-types/factories/PendleMerkleDistributor__factory.ts +1 -87
  168. package/typechain-types/factories/PendleMultiTokenMerkleDistributor__factory.ts +1 -121
  169. package/typechain-types/factories/PendleOFTAlt__factory.ts +1628 -0
  170. package/typechain-types/factories/PendleOFT__factory.ts +1599 -0
  171. package/typechain-types/factories/PendlePTOFTAdapterFactory__factory.ts +1 -1
  172. package/typechain-types/factories/PendleSwap__factory.ts +1 -1
  173. package/typechain-types/hardhat.d.ts +107 -53
  174. package/typechain-types/index.ts +26 -12
  175. package/build/artifacts/contracts/cross-chain/PendleSwapHelper.sol/PendleSwapHelper.dbg.json +0 -4
  176. package/build/artifacts/contracts/cross-chain/PendleSwapHelper.sol/PendleSwapHelper.json +0 -99
  177. package/build/artifacts/contracts/cross-chain/factory/hub/PendlePTOFTAdapterFactory.sol/PendlePTOFTAdapterFactory.dbg.json +0 -4
  178. package/build/artifacts/contracts/cross-chain/factory/hub/PendlePTOFTAdapterFactory.sol/PendlePTOFTAdapterFactory.json +0 -280
  179. package/build/artifacts/contracts/interfaces/IPSwapHelper.sol/IPSwapHelper.dbg.json +0 -4
  180. package/contracts/cross-chain/factory/hub/PendlePTOFTAdapterFactory.sol +0 -38
@@ -0,0 +1,1388 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "PendleBridgePTFactory",
4
+ "sourceName": "contracts/cross-chain/factory/PendleBridgePTFactory.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "address",
10
+ "name": "lzEndpoint",
11
+ "type": "address"
12
+ },
13
+ {
14
+ "internalType": "address",
15
+ "name": "sendUln302_",
16
+ "type": "address"
17
+ },
18
+ {
19
+ "internalType": "address",
20
+ "name": "receiveUln302_",
21
+ "type": "address"
22
+ },
23
+ {
24
+ "internalType": "address",
25
+ "name": "govProxy_",
26
+ "type": "address"
27
+ },
28
+ {
29
+ "internalType": "address",
30
+ "name": "oftProxyAdmin_",
31
+ "type": "address"
32
+ },
33
+ {
34
+ "internalType": "address",
35
+ "name": "hubPtOftAdapterCreationCode",
36
+ "type": "address"
37
+ },
38
+ {
39
+ "internalType": "address",
40
+ "name": "spokePtOftCreationCode",
41
+ "type": "address"
42
+ },
43
+ {
44
+ "internalType": "address",
45
+ "name": "transparentProxyCreationCode",
46
+ "type": "address"
47
+ }
48
+ ],
49
+ "stateMutability": "nonpayable",
50
+ "type": "constructor"
51
+ },
52
+ {
53
+ "inputs": [],
54
+ "name": "InvalidDelegate",
55
+ "type": "error"
56
+ },
57
+ {
58
+ "inputs": [],
59
+ "name": "InvalidEndpointCall",
60
+ "type": "error"
61
+ },
62
+ {
63
+ "inputs": [
64
+ {
65
+ "internalType": "uint16",
66
+ "name": "optionType",
67
+ "type": "uint16"
68
+ }
69
+ ],
70
+ "name": "InvalidOptionType",
71
+ "type": "error"
72
+ },
73
+ {
74
+ "inputs": [],
75
+ "name": "LzTokenUnavailable",
76
+ "type": "error"
77
+ },
78
+ {
79
+ "inputs": [
80
+ {
81
+ "internalType": "uint32",
82
+ "name": "eid",
83
+ "type": "uint32"
84
+ }
85
+ ],
86
+ "name": "NoPeer",
87
+ "type": "error"
88
+ },
89
+ {
90
+ "inputs": [
91
+ {
92
+ "internalType": "uint256",
93
+ "name": "msgValue",
94
+ "type": "uint256"
95
+ }
96
+ ],
97
+ "name": "NotEnoughNative",
98
+ "type": "error"
99
+ },
100
+ {
101
+ "inputs": [
102
+ {
103
+ "internalType": "address",
104
+ "name": "addr",
105
+ "type": "address"
106
+ }
107
+ ],
108
+ "name": "OnlyEndpoint",
109
+ "type": "error"
110
+ },
111
+ {
112
+ "inputs": [
113
+ {
114
+ "internalType": "uint32",
115
+ "name": "eid",
116
+ "type": "uint32"
117
+ },
118
+ {
119
+ "internalType": "bytes32",
120
+ "name": "sender",
121
+ "type": "bytes32"
122
+ }
123
+ ],
124
+ "name": "OnlyPeer",
125
+ "type": "error"
126
+ },
127
+ {
128
+ "anonymous": false,
129
+ "inputs": [
130
+ {
131
+ "indexed": true,
132
+ "internalType": "uint32",
133
+ "name": "peerEid",
134
+ "type": "uint32"
135
+ },
136
+ {
137
+ "indexed": true,
138
+ "internalType": "address",
139
+ "name": "peer",
140
+ "type": "address"
141
+ }
142
+ ],
143
+ "name": "FactoryWired",
144
+ "type": "event"
145
+ },
146
+ {
147
+ "anonymous": false,
148
+ "inputs": [
149
+ {
150
+ "indexed": false,
151
+ "internalType": "uint8",
152
+ "name": "version",
153
+ "type": "uint8"
154
+ }
155
+ ],
156
+ "name": "Initialized",
157
+ "type": "event"
158
+ },
159
+ {
160
+ "anonymous": false,
161
+ "inputs": [
162
+ {
163
+ "indexed": true,
164
+ "internalType": "address",
165
+ "name": "previousOwner",
166
+ "type": "address"
167
+ },
168
+ {
169
+ "indexed": true,
170
+ "internalType": "address",
171
+ "name": "newOwner",
172
+ "type": "address"
173
+ }
174
+ ],
175
+ "name": "OwnershipTransferred",
176
+ "type": "event"
177
+ },
178
+ {
179
+ "anonymous": false,
180
+ "inputs": [
181
+ {
182
+ "indexed": true,
183
+ "internalType": "uint32",
184
+ "name": "lzEid",
185
+ "type": "uint32"
186
+ },
187
+ {
188
+ "indexed": true,
189
+ "internalType": "bytes32",
190
+ "name": "originalPt",
191
+ "type": "bytes32"
192
+ },
193
+ {
194
+ "indexed": true,
195
+ "internalType": "address",
196
+ "name": "oft",
197
+ "type": "address"
198
+ }
199
+ ],
200
+ "name": "PTOFTDeployed",
201
+ "type": "event"
202
+ },
203
+ {
204
+ "anonymous": false,
205
+ "inputs": [
206
+ {
207
+ "indexed": true,
208
+ "internalType": "uint32",
209
+ "name": "hubLzEid",
210
+ "type": "uint32"
211
+ },
212
+ {
213
+ "indexed": true,
214
+ "internalType": "address",
215
+ "name": "hubPt",
216
+ "type": "address"
217
+ },
218
+ {
219
+ "indexed": false,
220
+ "internalType": "uint32[]",
221
+ "name": "toPeerEids",
222
+ "type": "uint32[]"
223
+ }
224
+ ],
225
+ "name": "PTOFTWired",
226
+ "type": "event"
227
+ },
228
+ {
229
+ "anonymous": false,
230
+ "inputs": [
231
+ {
232
+ "indexed": false,
233
+ "internalType": "uint32",
234
+ "name": "eid",
235
+ "type": "uint32"
236
+ },
237
+ {
238
+ "indexed": false,
239
+ "internalType": "bytes32",
240
+ "name": "peer",
241
+ "type": "bytes32"
242
+ }
243
+ ],
244
+ "name": "PeerSet",
245
+ "type": "event"
246
+ },
247
+ {
248
+ "inputs": [],
249
+ "name": "GOV_PROXY",
250
+ "outputs": [
251
+ {
252
+ "internalType": "contract IPGovernanceProxy",
253
+ "name": "",
254
+ "type": "address"
255
+ }
256
+ ],
257
+ "stateMutability": "view",
258
+ "type": "function"
259
+ },
260
+ {
261
+ "inputs": [],
262
+ "name": "HUB_PT_OFT_ADAPTER_CREATION_CODE",
263
+ "outputs": [
264
+ {
265
+ "internalType": "address",
266
+ "name": "",
267
+ "type": "address"
268
+ }
269
+ ],
270
+ "stateMutability": "view",
271
+ "type": "function"
272
+ },
273
+ {
274
+ "inputs": [],
275
+ "name": "LZ_EID",
276
+ "outputs": [
277
+ {
278
+ "internalType": "uint32",
279
+ "name": "",
280
+ "type": "uint32"
281
+ }
282
+ ],
283
+ "stateMutability": "view",
284
+ "type": "function"
285
+ },
286
+ {
287
+ "inputs": [],
288
+ "name": "LZ_RECEIVE_ULN_302",
289
+ "outputs": [
290
+ {
291
+ "internalType": "address",
292
+ "name": "",
293
+ "type": "address"
294
+ }
295
+ ],
296
+ "stateMutability": "view",
297
+ "type": "function"
298
+ },
299
+ {
300
+ "inputs": [],
301
+ "name": "LZ_SEND_ULN_302",
302
+ "outputs": [
303
+ {
304
+ "internalType": "address",
305
+ "name": "",
306
+ "type": "address"
307
+ }
308
+ ],
309
+ "stateMutability": "view",
310
+ "type": "function"
311
+ },
312
+ {
313
+ "inputs": [],
314
+ "name": "OFT_PROXY_ADMIN",
315
+ "outputs": [
316
+ {
317
+ "internalType": "address",
318
+ "name": "",
319
+ "type": "address"
320
+ }
321
+ ],
322
+ "stateMutability": "view",
323
+ "type": "function"
324
+ },
325
+ {
326
+ "inputs": [],
327
+ "name": "SELF_CHAIN_SHORT_NAME",
328
+ "outputs": [
329
+ {
330
+ "internalType": "string",
331
+ "name": "",
332
+ "type": "string"
333
+ }
334
+ ],
335
+ "stateMutability": "view",
336
+ "type": "function"
337
+ },
338
+ {
339
+ "inputs": [],
340
+ "name": "SPOKE_PT_OFT_CREATION_CODE",
341
+ "outputs": [
342
+ {
343
+ "internalType": "address",
344
+ "name": "",
345
+ "type": "address"
346
+ }
347
+ ],
348
+ "stateMutability": "view",
349
+ "type": "function"
350
+ },
351
+ {
352
+ "inputs": [],
353
+ "name": "TRANSPARENT_PROXY_CREATION_CODE",
354
+ "outputs": [
355
+ {
356
+ "internalType": "address",
357
+ "name": "",
358
+ "type": "address"
359
+ }
360
+ ],
361
+ "stateMutability": "view",
362
+ "type": "function"
363
+ },
364
+ {
365
+ "inputs": [
366
+ {
367
+ "components": [
368
+ {
369
+ "internalType": "uint32",
370
+ "name": "srcEid",
371
+ "type": "uint32"
372
+ },
373
+ {
374
+ "internalType": "bytes32",
375
+ "name": "sender",
376
+ "type": "bytes32"
377
+ },
378
+ {
379
+ "internalType": "uint64",
380
+ "name": "nonce",
381
+ "type": "uint64"
382
+ }
383
+ ],
384
+ "internalType": "struct Origin",
385
+ "name": "origin",
386
+ "type": "tuple"
387
+ }
388
+ ],
389
+ "name": "allowInitializePath",
390
+ "outputs": [
391
+ {
392
+ "internalType": "bool",
393
+ "name": "",
394
+ "type": "bool"
395
+ }
396
+ ],
397
+ "stateMutability": "view",
398
+ "type": "function"
399
+ },
400
+ {
401
+ "inputs": [
402
+ {
403
+ "internalType": "address",
404
+ "name": "hubPt",
405
+ "type": "address"
406
+ }
407
+ ],
408
+ "name": "deployHubPtOftAdapter",
409
+ "outputs": [
410
+ {
411
+ "internalType": "address",
412
+ "name": "oft",
413
+ "type": "address"
414
+ }
415
+ ],
416
+ "stateMutability": "nonpayable",
417
+ "type": "function"
418
+ },
419
+ {
420
+ "inputs": [
421
+ {
422
+ "internalType": "address",
423
+ "name": "hubPt",
424
+ "type": "address"
425
+ },
426
+ {
427
+ "internalType": "uint32",
428
+ "name": "toPeerEid",
429
+ "type": "uint32"
430
+ },
431
+ {
432
+ "internalType": "bytes",
433
+ "name": "options",
434
+ "type": "bytes"
435
+ },
436
+ {
437
+ "components": [
438
+ {
439
+ "internalType": "uint256",
440
+ "name": "nativeFee",
441
+ "type": "uint256"
442
+ },
443
+ {
444
+ "internalType": "uint256",
445
+ "name": "lzTokenFee",
446
+ "type": "uint256"
447
+ }
448
+ ],
449
+ "internalType": "struct MessagingFee",
450
+ "name": "fee",
451
+ "type": "tuple"
452
+ }
453
+ ],
454
+ "name": "deploySpokePtOft",
455
+ "outputs": [
456
+ {
457
+ "components": [
458
+ {
459
+ "internalType": "bytes32",
460
+ "name": "guid",
461
+ "type": "bytes32"
462
+ },
463
+ {
464
+ "internalType": "uint64",
465
+ "name": "nonce",
466
+ "type": "uint64"
467
+ },
468
+ {
469
+ "components": [
470
+ {
471
+ "internalType": "uint256",
472
+ "name": "nativeFee",
473
+ "type": "uint256"
474
+ },
475
+ {
476
+ "internalType": "uint256",
477
+ "name": "lzTokenFee",
478
+ "type": "uint256"
479
+ }
480
+ ],
481
+ "internalType": "struct MessagingFee",
482
+ "name": "fee",
483
+ "type": "tuple"
484
+ }
485
+ ],
486
+ "internalType": "struct MessagingReceipt",
487
+ "name": "msgReceipt",
488
+ "type": "tuple"
489
+ }
490
+ ],
491
+ "stateMutability": "payable",
492
+ "type": "function"
493
+ },
494
+ {
495
+ "inputs": [
496
+ {
497
+ "internalType": "uint32",
498
+ "name": "peerLzEid",
499
+ "type": "uint32"
500
+ },
501
+ {
502
+ "internalType": "uint32",
503
+ "name": "hubLzEid",
504
+ "type": "uint32"
505
+ },
506
+ {
507
+ "internalType": "address",
508
+ "name": "hubPt",
509
+ "type": "address"
510
+ }
511
+ ],
512
+ "name": "derivePtOftAddress",
513
+ "outputs": [
514
+ {
515
+ "internalType": "address",
516
+ "name": "",
517
+ "type": "address"
518
+ }
519
+ ],
520
+ "stateMutability": "view",
521
+ "type": "function"
522
+ },
523
+ {
524
+ "inputs": [],
525
+ "name": "endpoint",
526
+ "outputs": [
527
+ {
528
+ "internalType": "contract ILayerZeroEndpointV2",
529
+ "name": "",
530
+ "type": "address"
531
+ }
532
+ ],
533
+ "stateMutability": "view",
534
+ "type": "function"
535
+ },
536
+ {
537
+ "inputs": [
538
+ {
539
+ "internalType": "address",
540
+ "name": "delegateOwner",
541
+ "type": "address"
542
+ },
543
+ {
544
+ "internalType": "string",
545
+ "name": "selfChainShortName",
546
+ "type": "string"
547
+ }
548
+ ],
549
+ "name": "initialize",
550
+ "outputs": [],
551
+ "stateMutability": "nonpayable",
552
+ "type": "function"
553
+ },
554
+ {
555
+ "inputs": [
556
+ {
557
+ "components": [
558
+ {
559
+ "internalType": "uint32",
560
+ "name": "srcEid",
561
+ "type": "uint32"
562
+ },
563
+ {
564
+ "internalType": "bytes32",
565
+ "name": "sender",
566
+ "type": "bytes32"
567
+ },
568
+ {
569
+ "internalType": "uint64",
570
+ "name": "nonce",
571
+ "type": "uint64"
572
+ }
573
+ ],
574
+ "internalType": "struct Origin",
575
+ "name": "",
576
+ "type": "tuple"
577
+ },
578
+ {
579
+ "internalType": "bytes",
580
+ "name": "",
581
+ "type": "bytes"
582
+ },
583
+ {
584
+ "internalType": "address",
585
+ "name": "_sender",
586
+ "type": "address"
587
+ }
588
+ ],
589
+ "name": "isComposeMsgSender",
590
+ "outputs": [
591
+ {
592
+ "internalType": "bool",
593
+ "name": "",
594
+ "type": "bool"
595
+ }
596
+ ],
597
+ "stateMutability": "view",
598
+ "type": "function"
599
+ },
600
+ {
601
+ "inputs": [
602
+ {
603
+ "components": [
604
+ {
605
+ "internalType": "uint32",
606
+ "name": "srcEid",
607
+ "type": "uint32"
608
+ },
609
+ {
610
+ "internalType": "bytes32",
611
+ "name": "sender",
612
+ "type": "bytes32"
613
+ },
614
+ {
615
+ "internalType": "uint64",
616
+ "name": "nonce",
617
+ "type": "uint64"
618
+ }
619
+ ],
620
+ "internalType": "struct Origin",
621
+ "name": "_origin",
622
+ "type": "tuple"
623
+ },
624
+ {
625
+ "internalType": "bytes32",
626
+ "name": "_guid",
627
+ "type": "bytes32"
628
+ },
629
+ {
630
+ "internalType": "bytes",
631
+ "name": "_message",
632
+ "type": "bytes"
633
+ },
634
+ {
635
+ "internalType": "address",
636
+ "name": "_executor",
637
+ "type": "address"
638
+ },
639
+ {
640
+ "internalType": "bytes",
641
+ "name": "_extraData",
642
+ "type": "bytes"
643
+ }
644
+ ],
645
+ "name": "lzReceive",
646
+ "outputs": [],
647
+ "stateMutability": "payable",
648
+ "type": "function"
649
+ },
650
+ {
651
+ "inputs": [
652
+ {
653
+ "internalType": "uint32",
654
+ "name": "",
655
+ "type": "uint32"
656
+ },
657
+ {
658
+ "internalType": "bytes32",
659
+ "name": "",
660
+ "type": "bytes32"
661
+ }
662
+ ],
663
+ "name": "nextNonce",
664
+ "outputs": [
665
+ {
666
+ "internalType": "uint64",
667
+ "name": "nonce",
668
+ "type": "uint64"
669
+ }
670
+ ],
671
+ "stateMutability": "view",
672
+ "type": "function"
673
+ },
674
+ {
675
+ "inputs": [],
676
+ "name": "oAppVersion",
677
+ "outputs": [
678
+ {
679
+ "internalType": "uint64",
680
+ "name": "senderVersion",
681
+ "type": "uint64"
682
+ },
683
+ {
684
+ "internalType": "uint64",
685
+ "name": "receiverVersion",
686
+ "type": "uint64"
687
+ }
688
+ ],
689
+ "stateMutability": "pure",
690
+ "type": "function"
691
+ },
692
+ {
693
+ "inputs": [],
694
+ "name": "owner",
695
+ "outputs": [
696
+ {
697
+ "internalType": "address",
698
+ "name": "",
699
+ "type": "address"
700
+ }
701
+ ],
702
+ "stateMutability": "view",
703
+ "type": "function"
704
+ },
705
+ {
706
+ "inputs": [
707
+ {
708
+ "internalType": "uint32",
709
+ "name": "_eid",
710
+ "type": "uint32"
711
+ }
712
+ ],
713
+ "name": "peers",
714
+ "outputs": [
715
+ {
716
+ "internalType": "bytes32",
717
+ "name": "",
718
+ "type": "bytes32"
719
+ }
720
+ ],
721
+ "stateMutability": "view",
722
+ "type": "function"
723
+ },
724
+ {
725
+ "inputs": [
726
+ {
727
+ "internalType": "address",
728
+ "name": "hubPt",
729
+ "type": "address"
730
+ },
731
+ {
732
+ "internalType": "uint32",
733
+ "name": "toPeerEid",
734
+ "type": "uint32"
735
+ },
736
+ {
737
+ "internalType": "bytes",
738
+ "name": "options",
739
+ "type": "bytes"
740
+ },
741
+ {
742
+ "internalType": "bool",
743
+ "name": "payInLzToken",
744
+ "type": "bool"
745
+ }
746
+ ],
747
+ "name": "quoteDeploySpokePtOft",
748
+ "outputs": [
749
+ {
750
+ "components": [
751
+ {
752
+ "internalType": "uint256",
753
+ "name": "nativeFee",
754
+ "type": "uint256"
755
+ },
756
+ {
757
+ "internalType": "uint256",
758
+ "name": "lzTokenFee",
759
+ "type": "uint256"
760
+ }
761
+ ],
762
+ "internalType": "struct MessagingFee",
763
+ "name": "fee",
764
+ "type": "tuple"
765
+ }
766
+ ],
767
+ "stateMutability": "view",
768
+ "type": "function"
769
+ },
770
+ {
771
+ "inputs": [
772
+ {
773
+ "internalType": "uint32",
774
+ "name": "peerEid",
775
+ "type": "uint32"
776
+ },
777
+ {
778
+ "components": [
779
+ {
780
+ "internalType": "uint32",
781
+ "name": "peerEid",
782
+ "type": "uint32"
783
+ },
784
+ {
785
+ "internalType": "address",
786
+ "name": "peer",
787
+ "type": "address"
788
+ },
789
+ {
790
+ "components": [
791
+ {
792
+ "internalType": "uint32",
793
+ "name": "eid",
794
+ "type": "uint32"
795
+ },
796
+ {
797
+ "internalType": "uint32",
798
+ "name": "configType",
799
+ "type": "uint32"
800
+ },
801
+ {
802
+ "internalType": "bytes",
803
+ "name": "config",
804
+ "type": "bytes"
805
+ }
806
+ ],
807
+ "internalType": "struct SetConfigParam[]",
808
+ "name": "sendConfigParam",
809
+ "type": "tuple[]"
810
+ },
811
+ {
812
+ "components": [
813
+ {
814
+ "internalType": "uint32",
815
+ "name": "eid",
816
+ "type": "uint32"
817
+ },
818
+ {
819
+ "internalType": "uint32",
820
+ "name": "configType",
821
+ "type": "uint32"
822
+ },
823
+ {
824
+ "internalType": "bytes",
825
+ "name": "config",
826
+ "type": "bytes"
827
+ }
828
+ ],
829
+ "internalType": "struct SetConfigParam[]",
830
+ "name": "receiveConfigParam",
831
+ "type": "tuple[]"
832
+ },
833
+ {
834
+ "internalType": "bool",
835
+ "name": "setSendLib",
836
+ "type": "bool"
837
+ },
838
+ {
839
+ "internalType": "bool",
840
+ "name": "setReceiveLib",
841
+ "type": "bool"
842
+ }
843
+ ],
844
+ "internalType": "struct IPBridgePTFactory.SelfWireParams",
845
+ "name": "wireParams",
846
+ "type": "tuple"
847
+ },
848
+ {
849
+ "internalType": "bytes",
850
+ "name": "options",
851
+ "type": "bytes"
852
+ },
853
+ {
854
+ "internalType": "bool",
855
+ "name": "payInLzToken",
856
+ "type": "bool"
857
+ }
858
+ ],
859
+ "name": "quoteRemoteSelfWire",
860
+ "outputs": [
861
+ {
862
+ "components": [
863
+ {
864
+ "internalType": "uint256",
865
+ "name": "nativeFee",
866
+ "type": "uint256"
867
+ },
868
+ {
869
+ "internalType": "uint256",
870
+ "name": "lzTokenFee",
871
+ "type": "uint256"
872
+ }
873
+ ],
874
+ "internalType": "struct MessagingFee",
875
+ "name": "fee",
876
+ "type": "tuple"
877
+ }
878
+ ],
879
+ "stateMutability": "view",
880
+ "type": "function"
881
+ },
882
+ {
883
+ "inputs": [
884
+ {
885
+ "internalType": "uint32",
886
+ "name": "peerEid",
887
+ "type": "uint32"
888
+ },
889
+ {
890
+ "components": [
891
+ {
892
+ "internalType": "uint32",
893
+ "name": "hubLzEid",
894
+ "type": "uint32"
895
+ },
896
+ {
897
+ "internalType": "address",
898
+ "name": "hubPt",
899
+ "type": "address"
900
+ },
901
+ {
902
+ "internalType": "uint32[]",
903
+ "name": "toPeerEids",
904
+ "type": "uint32[]"
905
+ },
906
+ {
907
+ "internalType": "uint128[]",
908
+ "name": "enforcedReceiveGas",
909
+ "type": "uint128[]"
910
+ },
911
+ {
912
+ "internalType": "bool",
913
+ "name": "setSendLib",
914
+ "type": "bool"
915
+ },
916
+ {
917
+ "internalType": "bool",
918
+ "name": "setReceiveLib",
919
+ "type": "bool"
920
+ }
921
+ ],
922
+ "internalType": "struct IPBridgePTFactory.WirePtOftParams",
923
+ "name": "wireParams",
924
+ "type": "tuple"
925
+ },
926
+ {
927
+ "internalType": "bytes",
928
+ "name": "options",
929
+ "type": "bytes"
930
+ },
931
+ {
932
+ "internalType": "bool",
933
+ "name": "payInLzToken",
934
+ "type": "bool"
935
+ }
936
+ ],
937
+ "name": "quoteRemoteWirePtOft",
938
+ "outputs": [
939
+ {
940
+ "components": [
941
+ {
942
+ "internalType": "uint256",
943
+ "name": "nativeFee",
944
+ "type": "uint256"
945
+ },
946
+ {
947
+ "internalType": "uint256",
948
+ "name": "lzTokenFee",
949
+ "type": "uint256"
950
+ }
951
+ ],
952
+ "internalType": "struct MessagingFee",
953
+ "name": "fee",
954
+ "type": "tuple"
955
+ }
956
+ ],
957
+ "stateMutability": "view",
958
+ "type": "function"
959
+ },
960
+ {
961
+ "inputs": [
962
+ {
963
+ "internalType": "uint32",
964
+ "name": "peerEid",
965
+ "type": "uint32"
966
+ },
967
+ {
968
+ "components": [
969
+ {
970
+ "internalType": "uint32",
971
+ "name": "peerEid",
972
+ "type": "uint32"
973
+ },
974
+ {
975
+ "internalType": "address",
976
+ "name": "peer",
977
+ "type": "address"
978
+ },
979
+ {
980
+ "components": [
981
+ {
982
+ "internalType": "uint32",
983
+ "name": "eid",
984
+ "type": "uint32"
985
+ },
986
+ {
987
+ "internalType": "uint32",
988
+ "name": "configType",
989
+ "type": "uint32"
990
+ },
991
+ {
992
+ "internalType": "bytes",
993
+ "name": "config",
994
+ "type": "bytes"
995
+ }
996
+ ],
997
+ "internalType": "struct SetConfigParam[]",
998
+ "name": "sendConfigParam",
999
+ "type": "tuple[]"
1000
+ },
1001
+ {
1002
+ "components": [
1003
+ {
1004
+ "internalType": "uint32",
1005
+ "name": "eid",
1006
+ "type": "uint32"
1007
+ },
1008
+ {
1009
+ "internalType": "uint32",
1010
+ "name": "configType",
1011
+ "type": "uint32"
1012
+ },
1013
+ {
1014
+ "internalType": "bytes",
1015
+ "name": "config",
1016
+ "type": "bytes"
1017
+ }
1018
+ ],
1019
+ "internalType": "struct SetConfigParam[]",
1020
+ "name": "receiveConfigParam",
1021
+ "type": "tuple[]"
1022
+ },
1023
+ {
1024
+ "internalType": "bool",
1025
+ "name": "setSendLib",
1026
+ "type": "bool"
1027
+ },
1028
+ {
1029
+ "internalType": "bool",
1030
+ "name": "setReceiveLib",
1031
+ "type": "bool"
1032
+ }
1033
+ ],
1034
+ "internalType": "struct IPBridgePTFactory.SelfWireParams",
1035
+ "name": "wireParams",
1036
+ "type": "tuple"
1037
+ },
1038
+ {
1039
+ "internalType": "bytes",
1040
+ "name": "options",
1041
+ "type": "bytes"
1042
+ },
1043
+ {
1044
+ "components": [
1045
+ {
1046
+ "internalType": "uint256",
1047
+ "name": "nativeFee",
1048
+ "type": "uint256"
1049
+ },
1050
+ {
1051
+ "internalType": "uint256",
1052
+ "name": "lzTokenFee",
1053
+ "type": "uint256"
1054
+ }
1055
+ ],
1056
+ "internalType": "struct MessagingFee",
1057
+ "name": "fee",
1058
+ "type": "tuple"
1059
+ }
1060
+ ],
1061
+ "name": "remoteSelfWire",
1062
+ "outputs": [
1063
+ {
1064
+ "components": [
1065
+ {
1066
+ "internalType": "bytes32",
1067
+ "name": "guid",
1068
+ "type": "bytes32"
1069
+ },
1070
+ {
1071
+ "internalType": "uint64",
1072
+ "name": "nonce",
1073
+ "type": "uint64"
1074
+ },
1075
+ {
1076
+ "components": [
1077
+ {
1078
+ "internalType": "uint256",
1079
+ "name": "nativeFee",
1080
+ "type": "uint256"
1081
+ },
1082
+ {
1083
+ "internalType": "uint256",
1084
+ "name": "lzTokenFee",
1085
+ "type": "uint256"
1086
+ }
1087
+ ],
1088
+ "internalType": "struct MessagingFee",
1089
+ "name": "fee",
1090
+ "type": "tuple"
1091
+ }
1092
+ ],
1093
+ "internalType": "struct MessagingReceipt",
1094
+ "name": "msgReceipt",
1095
+ "type": "tuple"
1096
+ }
1097
+ ],
1098
+ "stateMutability": "payable",
1099
+ "type": "function"
1100
+ },
1101
+ {
1102
+ "inputs": [
1103
+ {
1104
+ "internalType": "uint32",
1105
+ "name": "peerEid",
1106
+ "type": "uint32"
1107
+ },
1108
+ {
1109
+ "components": [
1110
+ {
1111
+ "internalType": "uint32",
1112
+ "name": "hubLzEid",
1113
+ "type": "uint32"
1114
+ },
1115
+ {
1116
+ "internalType": "address",
1117
+ "name": "hubPt",
1118
+ "type": "address"
1119
+ },
1120
+ {
1121
+ "internalType": "uint32[]",
1122
+ "name": "toPeerEids",
1123
+ "type": "uint32[]"
1124
+ },
1125
+ {
1126
+ "internalType": "uint128[]",
1127
+ "name": "enforcedReceiveGas",
1128
+ "type": "uint128[]"
1129
+ },
1130
+ {
1131
+ "internalType": "bool",
1132
+ "name": "setSendLib",
1133
+ "type": "bool"
1134
+ },
1135
+ {
1136
+ "internalType": "bool",
1137
+ "name": "setReceiveLib",
1138
+ "type": "bool"
1139
+ }
1140
+ ],
1141
+ "internalType": "struct IPBridgePTFactory.WirePtOftParams",
1142
+ "name": "wireParams",
1143
+ "type": "tuple"
1144
+ },
1145
+ {
1146
+ "internalType": "bytes",
1147
+ "name": "options",
1148
+ "type": "bytes"
1149
+ },
1150
+ {
1151
+ "components": [
1152
+ {
1153
+ "internalType": "uint256",
1154
+ "name": "nativeFee",
1155
+ "type": "uint256"
1156
+ },
1157
+ {
1158
+ "internalType": "uint256",
1159
+ "name": "lzTokenFee",
1160
+ "type": "uint256"
1161
+ }
1162
+ ],
1163
+ "internalType": "struct MessagingFee",
1164
+ "name": "fee",
1165
+ "type": "tuple"
1166
+ }
1167
+ ],
1168
+ "name": "remoteWirePtOft",
1169
+ "outputs": [
1170
+ {
1171
+ "components": [
1172
+ {
1173
+ "internalType": "bytes32",
1174
+ "name": "guid",
1175
+ "type": "bytes32"
1176
+ },
1177
+ {
1178
+ "internalType": "uint64",
1179
+ "name": "nonce",
1180
+ "type": "uint64"
1181
+ },
1182
+ {
1183
+ "components": [
1184
+ {
1185
+ "internalType": "uint256",
1186
+ "name": "nativeFee",
1187
+ "type": "uint256"
1188
+ },
1189
+ {
1190
+ "internalType": "uint256",
1191
+ "name": "lzTokenFee",
1192
+ "type": "uint256"
1193
+ }
1194
+ ],
1195
+ "internalType": "struct MessagingFee",
1196
+ "name": "fee",
1197
+ "type": "tuple"
1198
+ }
1199
+ ],
1200
+ "internalType": "struct MessagingReceipt",
1201
+ "name": "msgReceipt",
1202
+ "type": "tuple"
1203
+ }
1204
+ ],
1205
+ "stateMutability": "payable",
1206
+ "type": "function"
1207
+ },
1208
+ {
1209
+ "inputs": [],
1210
+ "name": "renounceOwnership",
1211
+ "outputs": [],
1212
+ "stateMutability": "nonpayable",
1213
+ "type": "function"
1214
+ },
1215
+ {
1216
+ "inputs": [
1217
+ {
1218
+ "components": [
1219
+ {
1220
+ "internalType": "uint32",
1221
+ "name": "peerEid",
1222
+ "type": "uint32"
1223
+ },
1224
+ {
1225
+ "internalType": "address",
1226
+ "name": "peer",
1227
+ "type": "address"
1228
+ },
1229
+ {
1230
+ "components": [
1231
+ {
1232
+ "internalType": "uint32",
1233
+ "name": "eid",
1234
+ "type": "uint32"
1235
+ },
1236
+ {
1237
+ "internalType": "uint32",
1238
+ "name": "configType",
1239
+ "type": "uint32"
1240
+ },
1241
+ {
1242
+ "internalType": "bytes",
1243
+ "name": "config",
1244
+ "type": "bytes"
1245
+ }
1246
+ ],
1247
+ "internalType": "struct SetConfigParam[]",
1248
+ "name": "sendConfigParam",
1249
+ "type": "tuple[]"
1250
+ },
1251
+ {
1252
+ "components": [
1253
+ {
1254
+ "internalType": "uint32",
1255
+ "name": "eid",
1256
+ "type": "uint32"
1257
+ },
1258
+ {
1259
+ "internalType": "uint32",
1260
+ "name": "configType",
1261
+ "type": "uint32"
1262
+ },
1263
+ {
1264
+ "internalType": "bytes",
1265
+ "name": "config",
1266
+ "type": "bytes"
1267
+ }
1268
+ ],
1269
+ "internalType": "struct SetConfigParam[]",
1270
+ "name": "receiveConfigParam",
1271
+ "type": "tuple[]"
1272
+ },
1273
+ {
1274
+ "internalType": "bool",
1275
+ "name": "setSendLib",
1276
+ "type": "bool"
1277
+ },
1278
+ {
1279
+ "internalType": "bool",
1280
+ "name": "setReceiveLib",
1281
+ "type": "bool"
1282
+ }
1283
+ ],
1284
+ "internalType": "struct IPBridgePTFactory.SelfWireParams",
1285
+ "name": "params",
1286
+ "type": "tuple"
1287
+ }
1288
+ ],
1289
+ "name": "selfWire",
1290
+ "outputs": [],
1291
+ "stateMutability": "nonpayable",
1292
+ "type": "function"
1293
+ },
1294
+ {
1295
+ "inputs": [
1296
+ {
1297
+ "internalType": "address",
1298
+ "name": "_delegate",
1299
+ "type": "address"
1300
+ }
1301
+ ],
1302
+ "name": "setDelegate",
1303
+ "outputs": [],
1304
+ "stateMutability": "nonpayable",
1305
+ "type": "function"
1306
+ },
1307
+ {
1308
+ "inputs": [
1309
+ {
1310
+ "internalType": "uint32",
1311
+ "name": "_eid",
1312
+ "type": "uint32"
1313
+ },
1314
+ {
1315
+ "internalType": "bytes32",
1316
+ "name": "_peer",
1317
+ "type": "bytes32"
1318
+ }
1319
+ ],
1320
+ "name": "setPeer",
1321
+ "outputs": [],
1322
+ "stateMutability": "nonpayable",
1323
+ "type": "function"
1324
+ },
1325
+ {
1326
+ "inputs": [
1327
+ {
1328
+ "internalType": "address",
1329
+ "name": "newOwner",
1330
+ "type": "address"
1331
+ }
1332
+ ],
1333
+ "name": "transferOwnership",
1334
+ "outputs": [],
1335
+ "stateMutability": "nonpayable",
1336
+ "type": "function"
1337
+ },
1338
+ {
1339
+ "inputs": [
1340
+ {
1341
+ "components": [
1342
+ {
1343
+ "internalType": "uint32",
1344
+ "name": "hubLzEid",
1345
+ "type": "uint32"
1346
+ },
1347
+ {
1348
+ "internalType": "address",
1349
+ "name": "hubPt",
1350
+ "type": "address"
1351
+ },
1352
+ {
1353
+ "internalType": "uint32[]",
1354
+ "name": "toPeerEids",
1355
+ "type": "uint32[]"
1356
+ },
1357
+ {
1358
+ "internalType": "uint128[]",
1359
+ "name": "enforcedReceiveGas",
1360
+ "type": "uint128[]"
1361
+ },
1362
+ {
1363
+ "internalType": "bool",
1364
+ "name": "setSendLib",
1365
+ "type": "bool"
1366
+ },
1367
+ {
1368
+ "internalType": "bool",
1369
+ "name": "setReceiveLib",
1370
+ "type": "bool"
1371
+ }
1372
+ ],
1373
+ "internalType": "struct IPBridgePTFactory.WirePtOftParams",
1374
+ "name": "params",
1375
+ "type": "tuple"
1376
+ }
1377
+ ],
1378
+ "name": "wirePtOft",
1379
+ "outputs": [],
1380
+ "stateMutability": "nonpayable",
1381
+ "type": "function"
1382
+ }
1383
+ ],
1384
+ "bytecode": "0x6101a080604052346103bb57610100816162ac803803809161002182856103d2565b8339810103126103bb5761003481610409565b9061004160208201610409565b61004d60408301610409565b61005960608401610409565b61006560808501610409565b9161007260a08601610409565b936004602061008f60e061008860c08b01610409565b9901610409565b6001600160a01b03909916608081905260405163416ecebf60e01b815292839182905afa9081156103c7575f91610384575b5060a05260c05260e0526001600160a01b031661010052610120526101405261016052610180525f54600881901c60ff1661032f5760ff808216036102f5575b604051615e8e908161041e82396080518181816105eb01528181610ccf01528181610dd901528181610ea101528181610f880152818161151a015281816116e5015281816117e10152818161196701528181612027015281816122ac01528181612c750152818161343701528181613f2301528181613fe00152818161409901528181614186015281816143b001528181614546015281816146420152818161490901528181615317015281816154940152818161589b0152615981015260a0518181816109b9015281816118f9015281816120f701526128b6015260c051818181610c5401528181610c9201528181610d430152818161100501528181611578015281816118530152818161238501528181613e9301528181613ed101528181613f7d015281816142030152818161440e01526146b4015260e051818181610d8701528181610e3801528181610f1e01528181611246015281816115f60152818161175701528181614038015281816141160152818161448c01526145b801526101005181818161109d015281816119d5015281816120c1015281816142a3015281816150da015261555001526101205181818161278101526150290152610140518181816111d8015261205d015261016051818181611f8101526154d40152610180518181816104ff01526149930152f35b60ff90811916175f557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a15f610101565b60405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b90506020813d6020116103bf575b8161039f602093836103d2565b810103126103bb575163ffffffff811681036103bb575f6100c1565b5f80fd5b3d9150610392565b6040513d5f823e3d90fd5b601f909101601f19168101906001600160401b038211908210176103f557604052565b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036103bb5756fe60806040526004361015610011575f80fd5b5f3560e01c806303f54e5b14610214578063128d81ce1461020f57806313137d651461020a57806317442b70146102055780633400288b1461020057806337a8b684146101fb57806340ed53c2146101f6578063467efa93146101f1578063558eb60a146101ec5780635b35fa86146101e75780635e280f11146101e25780636b9a3778146101dd578063715018a6146101d85780637a699edd146101d35780637d25a05e146101ce5780637dc61736146101c957806382413eac146101c457806387a30e86146101bf5780638da5cb5b146101ba5780638f983fd9146101b5578063ace84e26146101b0578063adbaca4e146101ab578063b7446b3d146101a6578063bb0b6a53146101a1578063ca5eb5e11461019c578063e33fa79714610197578063e6b7c44614610192578063ee9967f41461018d578063f2fde38b14610188578063f399e22e14610183578063fca881531461017e5763ff7bd03d14610179575f80fd5b6127a5565b612737565b6125ba565b6124b3565b612482565b61244a565b61233b565b612251565b6121d5565b612143565b611fa5565b611f37565b611f0a565b611eb9565b611e3d565b611db3565b611d66565b611b89565b611b2a565b6119f9565b61198b565b61191d565b6118bf565b611460565b6111fc565b61118e565b6108ee565b6106e9565b6106aa565b610552565b6104b5565b6103be565b73ffffffffffffffffffffffffffffffffffffffff81160361023757565b5f80fd5b359061024682610219565b565b63ffffffff81160361023757565b359061024682610248565b9181601f840112156102375782359167ffffffffffffffff8311610237576020838186019501011161023757565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040810190811067ffffffffffffffff8211176102d857604052565b61028f565b6060810190811067ffffffffffffffff8211176102d857604052565b60a0810190811067ffffffffffffffff8211176102d857604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176102d857604052565b6040519061024660c083610315565b60405190610246606083610315565b6040519061024660a083610315565b6102469092919260408060808301958051845267ffffffffffffffff6020820151166020850152015191019060208091805184520151910152565b60a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610237576004356103f481610219565b6024359061040182610248565b60443567ffffffffffffffff811161023757610421903690600401610261565b909160407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c360112610237576104a79361049b9361049561048b60405194610468866102bc565b6064358652608435602087015261047d612812565b50610486612d40565b61304b565b91339536916112a4565b91613380565b60405191829182610383565b0390f35b5f91031261023757565b34610237575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc606091011261023757600490565b60e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102375761058536610523565b60843567ffffffffffffffff8111610237576105a5903690600401610261565b906105b160a435610219565b60c43567ffffffffffffffff8111610237576105d1903690600401610261565b50503373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000160361067e5782359261061c84610248565b610625846134a2565b93602082013580950361063f575061063d9350613671565b005b63ffffffff8161064f8793610248565b7fc26bebcc000000000000000000000000000000000000000000000000000000005f521660045260245260445ffd5b7f91ac5e4f000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b34610237575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023757604080516001815260026020820152f35b346102375760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102375761063d60043561072781610248565b60243590610733612d40565b612842565b67ffffffffffffffff81116102d85760051b60200190565b9080601f8301121561023757813561076781610738565b926107756040519485610315565b81845260208085019260051b82010192831161023757602001905b82821061079d5750505090565b6020809183356107ac81610248565b815201910190610790565b35906fffffffffffffffffffffffffffffffff8216820361023757565b9080601f830112156102375781356107eb81610738565b926107f96040519485610315565b81845260208085019260051b82010192831161023757602001905b8282106108215750505090565b6020809161082e846107b7565b815201910190610814565b8015150361023757565b359061024682610839565b91909160c08184031261023757610863610356565b9261086d82610256565b845261087b6020830161023b565b6020850152604082013567ffffffffffffffff811161023757816108a0918401610750565b604085015260608201359167ffffffffffffffff8311610237576108cb60a0926108e79483016107d4565b60608601526108dc60808201610843565b608086015201610843565b60a0830152565b346102375760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102375760043567ffffffffffffffff81116102375761093d90369060040161084e565b610945612d40565b61094e816155c9565b60049061095e6080820151151590565b611185575b60a0810151611175575b9061098761098260408401928351519061376b565b61379d565b825163ffffffff16926109dd60208201946109b6865173ffffffffffffffffffffffffffffffffffffffff1690565b907f00000000000000000000000000000000000000000000000000000000000000006128ac565b9360608201905f90815b865180518410156110485788916109ff858993613858565b5163ffffffff16908751610a169063ffffffff1690565b855173ffffffffffffffffffffffffffffffffffffffff16610a3891846128ac565b9086885190610a4691613858565b516fffffffffffffffffffffffffffffffff1690836fffffffffffffffffffffffffffffffff831615610b5c600198610e6d98610c21610d7898610c2698610bc198610bf59860409861103d575b610b51610ae5610acc610b649596610acc8b610ab0888d613858565b519073ffffffffffffffffffffffffffffffffffffffff169052565b73ffffffffffffffffffffffffffffffffffffffff1690565b8a517f3400288b00000000000000000000000000000000000000000000000000000000602082015263ffffffff9093166024840152604483015281606481015b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610315565b88610b5c8388613858565b510152613739565b9788948c610b81610b7361386c565b94610b7c615660565b615697565b610b98610b8c610365565b63ffffffff9093168352565b6001602083015289820152610bac84613836565b52610bb683613836565b50610ab08686613858565b85519687917fb98bd070000000000000000000000000000000000000000000000000000000006020840152602483016138ca565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101875286610315565b613858565b898c610c3560808c0151151590565b610f5c575b60a08b0151610e75575b5050610c4e61396c565b610c78847f000000000000000000000000000000000000000000000000000000000000000061580f565b610c8182613836565b52610c8b81613836565b50610cb6847f00000000000000000000000000000000000000000000000000000000000000006158f5565b610cbf82613848565b52610cc981613848565b50610d0e7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610ab0848e613858565b610d6c8d610b256040519384927f6dbd9f900000000000000000000000000000000000000000000000000000000060208501527f00000000000000000000000000000000000000000000000000000000000000009060248501613a67565b6040610b5c838d613858565b90610dab610d8461386c565b917f000000000000000000000000000000000000000000000000000000000000000061580f565b610db482613836565b52610dbe81613836565b50610e0373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016610ab0848c613858565b610e618b610b256040519384927f6dbd9f900000000000000000000000000000000000000000000000000000000060208501527f00000000000000000000000000000000000000000000000000000000000000009060248501613a67565b6040610b5c838b613858565b9201916109e7565b6040610b5c84610f559594610c21610bf595610ecb73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016610ab08686613858565b85517f6a14d71500000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff918216602482015263ffffffff8c1660448201527f000000000000000000000000000000000000000000000000000000000000000090911660648201525f608482015295869060a4820190565b898c610c44565b6040610b5c846110369594610c21610bf595610fb273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016610ab08686613858565b85517f9535ff3000000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff918216602482015263ffffffff8c1660448201527f000000000000000000000000000000000000000000000000000000000000000090911660648201529586906084820190565b898c610c3a565b62015f909250610a94565b8288611083885f8b604051809481927fc45ce97200000000000000000000000000000000000000000000000000000000835260048301613b51565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af19182156111705761111573ffffffffffffffffffffffffffffffffffffffff92611130927f2db5389a2a82a40aad03462943bf87673b1de847e0168daca4c84cc73c6c730695611150575b505163ffffffff1690565b945173ffffffffffffffffffffffffffffffffffffffff1690565b92519261114b63ffffffff6040519384931696169482613bff565b0390a3005b61116b903d805f833e6111638183610315565b810190613ab5565b61110a565b6129f9565b9061117f90613739565b9061096d565b60059150610963565b34610237575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610237575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b67ffffffffffffffff81116102d857601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926112b08261126a565b916112be6040519384610315565b829481845281830111610237578281602093845f960137010152565b81601f82011215610237578035906112f182610738565b926112ff6040519485610315565b82845260208085019360051b830101918183116102375760208101935b83851061132b57505050505090565b843567ffffffffffffffff81116102375782019060607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe083860301126102375760405191611378836102dd565b602081013561138681610248565b8352604081013561139681610248565b6020840152606081013567ffffffffffffffff81116102375760209101019084601f83011215610237576020926113d386848680963591016112a4565b604082015281520194019361131c565b91909160c081840312610237576113f8610356565b9261140282610256565b84526114106020830161023b565b6020850152604082013567ffffffffffffffff811161023757816114359184016112da565b604085015260608201359167ffffffffffffffff8311610237576108cb60a0926108e79483016112da565b346102375760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102375760043567ffffffffffffffff8111610237576114af9036906004016113e3565b6114b7612d40565b805163ffffffff16906114ef60208201926114e9610acc855173ffffffffffffffffffffffffffffffffffffffff1690565b90612842565b60808101516117ca575b60a08101516116ce575b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906040810151823b15610237575f6115a191604051809381927f6dbd9f900000000000000000000000000000000000000000000000000000000083527f00000000000000000000000000000000000000000000000000000000000000003060048501613a67565b038183875af18015611170576116ba575b50606081015191803b156102375761161f5f939184926040519586809481937f6dbd9f900000000000000000000000000000000000000000000000000000000083527f00000000000000000000000000000000000000000000000000000000000000003060048501613a67565b03925af19182156111705761165c73ffffffffffffffffffffffffffffffffffffffff926116779263ffffffff956116a057505163ffffffff1690565b935173ffffffffffffffffffffffffffffffffffffffff1690565b1691167f5a2a82b1a79a14bbc32c4715dd65a21b8a1e0134d26eb6f296b914ae5c20c8d45f80a3005b806116ae5f6116b493610315565b806104ab565b5f61110a565b806116ae5f6116c893610315565b5f6115b2565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016611713825163ffffffff1690565b90803b15610237576040517f6a14d71500000000000000000000000000000000000000000000000000000000815230600482015263ffffffff9290921660248301527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1660448301525f60648301819052908290608490829084905af18015611170576117b6575b50611503565b806116ae5f6117c493610315565b5f6117b0565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001661180f825163ffffffff1690565b90803b15610237576040517f9535ff3000000000000000000000000000000000000000000000000000000000815230600482015263ffffffff9290921660248301527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1660448301525f908290606490829084905af18015611170576118ab575b506114f9565b806116ae5f6118b993610315565b5f6118a5565b34610237575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023757602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610237575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610237575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610237575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023757611a2f612d40565b5f73ffffffffffffffffffffffffffffffffffffffff6033547fffffffffffffffffffffffff00000000000000000000000000000000000000008116603355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b908160c09103126102375790565b60807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261023757600435611ad981610248565b9160243567ffffffffffffffff81116102375782611af991600401611a95565b916044359067ffffffffffffffff821161023757611b1991600401610261565b9091606435611b2781610839565b90565b34610237576040611b71611b6b611b63611b5e611b4636611aa3565b9693959192611b569591956127fa565b5036906113e3565b61478b565b9236916112a4565b9161487c565b611b878251809260208091805184520151910152565bf35b346102375760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023757611bc3600435610248565b60206040515f8152f35b90600182811c92168015611c14575b6020831014611be757565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691611bdc565b604051905f8260655491611c3183611bcd565b8083529260018116908115611cb45750600114611c55575b61024692500383610315565b5060655f90815290917f8ff97419363ffd7000167f130ef7168fbea05faf9251824ca5043f113cc6a7c75b818310611c9857505090602061024692820101611c49565b6020919350806001915483858901015201910190918492611c80565b602092506102469491507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682840152151560051b820101611c49565b5f5b838110611d025750505f910152565b8181015183820152602001611cf3565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602093611d4e81518092818752878088019101611cf1565b0116010190565b906020611b27928181520190611d12565b34610237575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610237576104a7611d9f611c1e565b604051918291602083526020830190611d12565b346102375760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023757611deb36610523565b5060643567ffffffffffffffff811161023757611e0c903690600401610261565b50506020608435611e1c81610219565b6040519073ffffffffffffffffffffffffffffffffffffffff309116148152f35b346102375760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610237576020611e9b600435611e7d81610248565b602435611e8981610248565b60443591611e9683610219565b6128ac565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b34610237575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023757602073ffffffffffffffffffffffffffffffffffffffff60335416604051908152f35b34610237576040611b71611b6b611b63611f2336611aa3565b9592611f31959194956127fa565b50614b5d565b34610237575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102375760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610237576104a761211c600435611fe681610219565b611fee612d40565b61208160405173ffffffffffffffffffffffffffffffffffffffff8316602082015273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660408201526040815261205b606082610315565b7f0000000000000000000000000000000000000000000000000000000000000000614c90565b6040517fc4d66de800000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166024820152602481526120f5604482610315565b7f000000000000000000000000000000000000000000000000000000000000000091614f6e565b60405173ffffffffffffffffffffffffffffffffffffffff90911681529081906020820190565b346102375760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102375760043561217e81610219565b6024359061218b82610248565b6044359067ffffffffffffffff821161023757604092611b6b6121b5611b71943690600401610261565b9190611b63606435956121c787610839565b6121cf6127fa565b5061304b565b346102375760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023757602061224960043561221581610248565b63ffffffff165f527f72ab1bc1039b79dc4724ffca13de82c96834302d3c7e0d4252232d4b2dd8f90060205260405f205490565b604051908152f35b34610237575f60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102375760043561228d81610219565b612295612d40565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690813b156102375773ffffffffffffffffffffffffffffffffffffffff60245f928360405195869485937fca5eb5e10000000000000000000000000000000000000000000000000000000085521660048401525af180156111705761232f575080f35b61063d91505f90610315565b34610237575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b60a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc820112610237576004356123df81610248565b9160243567ffffffffffffffff811161023757826123ff91600401611a95565b916044359167ffffffffffffffff831161023757604061242483606495600401610261565b9490949303126102375760405161243a816102bc565b6064358152608435602082015290565b6104a761049b61048b610495611b5e612462366123a9565b9592612472979294959197612812565b5061247b612d40565b36906113e3565b6104a761049b61048b610495612497366123a9565b9491926124a5969196612812565b506124ae612d40565b614b5d565b346102375760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610237576004356124ee81610219565b6124f6612d40565b73ffffffffffffffffffffffffffffffffffffffff81161561251b5761063d90614720565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152fd5b9080601f8301121561023757816020611b27933591016112a4565b346102375760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610237576004356125f581610219565b60243567ffffffffffffffff81116102375761261861267591369060040161259f565b5f549261263d60ff600886901c161580958196612729575b8115612709575b50612a04565b8361266c60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff005f5416175f55565b6126d557612c1d565b61267b57005b6126a67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff5f54165f55565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1005b6127046101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff5f5416175f55565b612c1d565b303b1591508161271b575b505f612637565b60ff1660011490505f612714565b600160ff8216109150612630565b34610237575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102375760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102375760206127df36610523565b816127ee823561221581610248565b91013560405191148152f35b60405190612807826102bc565b5f6020838281520152565b6040519061281f826102dd565b815f81525f602082015260406128336127fa565b910152565b35611b2781610248565b63ffffffff165f8181527f72ab1bc1039b79dc4724ffca13de82c96834302d3c7e0d4252232d4b2dd8f900602090815260409182902084905581519283528201929092527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b9190a1565b91909163ffffffff7f00000000000000000000000000000000000000000000000000000000000000001663ffffffff8216145f1461290a5750611b279161290530925b6128f88461498b565b6020815191012092614a2a565b614aa0565b6129419063ffffffff165f527f72ab1bc1039b79dc4724ffca13de82c96834302d3c7e0d4252232d4b2dd8f90060205260405f2090565b549182156129755761290561296f610acc611b279573ffffffffffffffffffffffffffffffffffffffff1690565b926128ef565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f50656e646c654272696467655054466163746f72793a2070656572206e6f742060448201527f73657400000000000000000000000000000000000000000000000000000000006064820152fd5b6040513d5f823e3d90fd5b15612a0b57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152fd5b601f8211612a9c57505050565b5f5260205f20906020601f840160051c83019310612ad4575b601f0160051c01905b818110612ac9575050565b5f8155600101612abe565b9091508190612ab5565b90815167ffffffffffffffff81116102d857612b0681612aff606554611bcd565b6065612a8f565b602092601f8211600114612b6457612b54929382915f92612b59575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790565b606555565b015190505f80612b22565b60655f527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08216937f8ff97419363ffd7000167f130ef7168fbea05faf9251824ca5043f113cc6a7c7915f5b868110612c055750836001959610612bce575b505050811b01606555565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c191690555f8080612bc3565b91926020600181928685015181550194019201612bb0565b90612c4060ff5f5460081c16612c328161523f565b612c3b8161523f565b61523f565b73ffffffffffffffffffffffffffffffffffffffff8216918215612d185773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001692833b15610237575f936024859260405196879384927fca5eb5e100000000000000000000000000000000000000000000000000000000845260048401525af19081156111705761024693612cff92612d04575b50612cf2615aa3565b612cfa615aa3565b614720565b612ade565b806116ae5f612d1293610315565b5f612ce9565b7fb5863604000000000000000000000000000000000000000000000000000000005f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff603354163303612d6157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b90929192612dcc8161126a565b91612dda6040519384610315565b829482845282820111610237576020610246930190611cf1565b6020818303126102375780519067ffffffffffffffff821161023757019080601f83011215610237578151611b2792602001612dbf565b90612e3e60209282815194859201611cf1565b0190565b600160026102469294939460206040519682612e678994518092858088019101611cf1565b83017f202800000000000000000000000000000000000000000000000000000000000083820152612ea18251809385602285019101611cf1565b01017f29000000000000000000000000000000000000000000000000000000000000008382015203017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1810185520183610315565b600160026102469294939460206040519682612f1b8994518092858088019101611cf1565b83017f2d2800000000000000000000000000000000000000000000000000000000000083820152612ea18251809385602285019101611cf1565b90816020910312610237575190565b60ff81160361023757565b908160209103126102375751611b2781612f64565b60031115612f8e57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f81526040602082015273ffffffffffffffffffffffffffffffffffffffff825116604082015260c060ff6080613037613004602087015160a0606088015260e0870190611d12565b60408701517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08783030184880152611d12565b94606081015160a086015201511691015290565b73ffffffffffffffffffffffffffffffffffffffff81169061306b611c1e565b906040517f06fdde030000000000000000000000000000000000000000000000000000000081525f81600481875afa908115611170576130b49184915f9161325c575b50612e42565b91604051907f95d89b410000000000000000000000000000000000000000000000000000000082525f82600481885afa8015611170576130fb925f9161323a575b50612ef6565b92604051907fe184c9be000000000000000000000000000000000000000000000000000000008252602082600481845afa908115611170576004925f92613208575b50602090604051938480927f313ce5670000000000000000000000000000000000000000000000000000000082525afa90811561117057610b2595611b27956131c8945f946131d7575b506131af613193610374565b73ffffffffffffffffffffffffffffffffffffffff9097168752565b60208601526040850152606084015260ff166080830152565b60405192839160208301612fbb565b6131fa91945060203d602011613201575b6131f28183610315565b810190612f6f565b925f613187565b503d6131e8565b602091925061322c90823d8411613233575b6132248183610315565b810190612f55565b919061313d565b503d61321a565b61325691503d805f833e61324e8183610315565b810190612df4565b5f6130f5565b61327091503d805f833e61324e8183610315565b5f6130ae565b91908260409103126102375760405161328e816102bc565b6020808294805184520151910152565b60808183031261023757604051916132b5836102dd565b81518352602082015167ffffffffffffffff811681036102375760208401526132e091604001613276565b604082015290565b9073ffffffffffffffffffffffffffffffffffffffff6020919493946040845263ffffffff8151166040850152828101516060850152608061336f61333b604084015160a08489015260e0880190611d12565b60608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08883030160a0890152611d12565b910151151560c08501529416910152565b6133e96080949261341e9694613394612812565b5060206133a186516152ca565b950191825180613493575b506133b6856134a2565b92511515926133d26133c6610374565b63ffffffff9097168752565b602086015260408501526060840152151585830152565b6040518095819482937f2637a450000000000000000000000000000000000000000000000000000000008452600484016132e8565b039173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1908115611170575f9161346a575090565b611b27915060803d60801161348c575b6134848183610315565b81019061329e565b503d61347a565b61349c90615300565b5f6133ac565b63ffffffff16805f527f72ab1bc1039b79dc4724ffca13de82c96834302d3c7e0d4252232d4b2dd8f90060205260405f20549081156134df575090565b7ff6ff4fb7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b3590600382101561023757565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b9190916040818403126102375761355a8161350a565b92602082013567ffffffffffffffff811161023757611b2792016113e3565b9190916040818403126102375761358f8161350a565b92602082013567ffffffffffffffff811161023757611b27920161084e565b359061024682612f64565b9190604083820312610237576135ce8361350a565b9260208101359067ffffffffffffffff8211610237570160a08183031261023757604051916135fc836102f9565b813561360781610219565b8352602082013567ffffffffffffffff8111610237578161362991840161259f565b602084015260408201359167ffffffffffffffff83116102375761365460809261366994830161259f565b604085015260608101356060850152016135ae565b608082015290565b909180602011610237576136848361350a565b61368d81612f84565b806136b357506136a6836136ae926102469501906135b9565b929050612838565b61545b565b9091506136bf81612f84565b600181036136df5750816136d891610246930190613579565b9050613c3e565b806136eb600292612f84565b03613707578161370091610246930190613544565b9050614353565b613517565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146137665760010190565b61370c565b8181029291811591840414171561376657565b6040519061378b826102dd565b60606040835f81525f60208201520152565b906137a782610738565b6137b46040519182610315565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06137e28294610738565b01905f5b8281106137f257505050565b6020906137fd61377e565b828285010152016137e6565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8051156138435760200190565b613809565b8051600110156138435760400190565b80518210156138435760209160051b010190565b6040805190919061387d8382610315565b60018152917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001825f5b8281106138b357505050565b6020906138be61377e565b828285010152016138a7565b602081016020825282518091526040820191602060408360051b8301019401925f915b8383106138fc57505050505090565b909192939460208061395d837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08660019603018752606060408b5163ffffffff815116845261ffff8682015116868501520151918160408201520190611d12565b970193019301919392906138ed565b6040516060919061397d8382610315565b60028152917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001825f5b8281106139b357505050565b6020906139be61377e565b828285010152016139a7565b9080602083519182815201916020808360051b8301019401925f915b8383106139f557505050505090565b9091929394602080613a58837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08660019603018752606060408b5163ffffffff815116845263ffffffff8682015116868501520151918160408201520190611d12565b970193019301919392906139e6565b73ffffffffffffffffffffffffffffffffffffffff611b2794938160609416835216602082015281604082015201906139ca565b9080601f83011215610237578151611b2792602001612dbf565b6020818303126102375780519067ffffffffffffffff821161023757019080601f83011215610237578151613ae981610738565b92613af76040519485610315565b81845260208085019260051b820101918383116102375760208201905b838210613b2357505050505090565b815167ffffffffffffffff811161023757602091613b4687848094880101613a9b565b815201910190613b14565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310613b8357505050505090565b9091929394602080613bf0837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08660019603018752606060408b5173ffffffffffffffffffffffffffffffffffffffff815116845285810151868501520151918160408201520190611d12565b97019301930191939290613b74565b60206040818301928281528451809452019201905f5b818110613c225750505090565b825163ffffffff16845260209384019390920191600101613c15565b90613c48826155c9565b600491613c586080820151151590565b61434a575b60a081015161433a575b613c7b61098260408301948551519061376b565b815163ffffffff1691613caa60208201936109b6855173ffffffffffffffffffffffffffffffffffffffff1690565b925f955f965b8151805189101561424a5788613cc591613858565b5163ffffffff16908451613cdc9063ffffffff1690565b845173ffffffffffffffffffffffffffffffffffffffff16613cfe91846128ac565b91808a606088015190613d1091613858565b516fffffffffffffffffffffffffffffffff1693898980826fffffffffffffffffffffffffffffffff891615613e4760019a61406d9a610b259961406199613fa699613e5398610b259761423f575b613d7f610acc8694610acc613dd09795610ab0613e129a613dc497613858565b6040517f3400288b00000000000000000000000000000000000000000000000000000000602082015263ffffffff909316602484015260448301528160648101610b25565b6040610b5c838c613858565b948b613ddd610b7361386c565b613de8610b8c610365565b600160208301526040820152613dfd84613836565b52613e0783613836565b50610ab08689613858565b6040519283917fb98bd070000000000000000000000000000000000000000000000000000000006020840152602483016138ca565b6040610b5c8386613858565b8c613e6160808d0151151590565b614162575b9091613e7560a08d0151151590565b614075575b610b5c83604092610c21613e8c61396c565b95613eb78c7f000000000000000000000000000000000000000000000000000000000000000061580f565b613ec088613836565b52613eca87613836565b50613ef58c7f00000000000000000000000000000000000000000000000000000000000000006158f5565b613efe88613848565b52613f0887613848565b50613f4d73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016610ab08686613858565b610bf586519788927f6dbd9f900000000000000000000000000000000000000000000000000000000060208501527f00000000000000000000000000000000000000000000000000000000000000009060248501613a67565b92613fb2610d8461386c565b613fbb82613836565b52613fc581613836565b5061400a73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016610ab0868d613858565b6040519283917f6dbd9f900000000000000000000000000000000000000000000000000000000060208401527f00000000000000000000000000000000000000000000000000000000000000008d60248501613a67565b6040610b5c838a613858565b970196613cb0565b91610b5c6141596040926140c373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016610ab08389613858565b83517f6a14d71500000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff808716602483015263ffffffff8c1660448301527f00000000000000000000000000000000000000000000000000000000000000001660648201525f608482015261414e8160a48101610b25565b84610b5c8389613858565b93915050613e7a565b6040610b5c83614237956141b073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016610ab08484613858565b83517f9535ff3000000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff958616602482015263ffffffff8c1660448201527f00000000000000000000000000000000000000000000000000000000000000009095166064860152610c218560848101610bf5565b8a908c613e66565b62015f909550613d5f565b505093509394505f61428992604051809481927fc45ce97200000000000000000000000000000000000000000000000000000000835260048301613b51565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af19182156111705761111573ffffffffffffffffffffffffffffffffffffffff9261431a927f2db5389a2a82a40aad03462943bf87673b1de847e0168daca4c84cc73c6c73069561115057505163ffffffff1690565b92519261433563ffffffff6040519384931696169482613bff565b0390a3565b9161434490613739565b91613c67565b60059250613c5d565b805163ffffffff169061438560208201926114e9610acc855173ffffffffffffffffffffffffffffffffffffffff1690565b608081015161462b575b60a081015161452f575b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906040810151823b15610237575f61443791604051809381927f6dbd9f900000000000000000000000000000000000000000000000000000000083527f00000000000000000000000000000000000000000000000000000000000000003060048501613a67565b038183875af180156111705761451b575b50606081015191803b15610237576144b55f939184926040519586809481937f6dbd9f900000000000000000000000000000000000000000000000000000000083527f00000000000000000000000000000000000000000000000000000000000000003060048501613a67565b03925af19182156111705761165c73ffffffffffffffffffffffffffffffffffffffff926144f29263ffffffff956116a057505163ffffffff1690565b1691167f5a2a82b1a79a14bbc32c4715dd65a21b8a1e0134d26eb6f296b914ae5c20c8d45f80a3565b806116ae5f61452993610315565b5f614448565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016614574825163ffffffff1690565b90803b15610237576040517f6a14d71500000000000000000000000000000000000000000000000000000000815230600482015263ffffffff9290921660248301527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1660448301525f60648301819052908290608490829084905af1801561117057614617575b50614399565b806116ae5f61462593610315565b5f614611565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016614670825163ffffffff1690565b90803b15610237576040517f9535ff3000000000000000000000000000000000000000000000000000000000815230600482015263ffffffff9290921660248301527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1660448301525f908290606490829084905af180156111705761470c575b5061438f565b806116ae5f61471a93610315565b5f614706565b73ffffffffffffffffffffffffffffffffffffffff80603354921691827fffffffffffffffffffffffff0000000000000000000000000000000000000000821617603355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b611b2760405180926147a06020830160029052565b60408083015263ffffffff815116606083015273ffffffffffffffffffffffffffffffffffffffff602082015116608083015260a06148256147f1604084015160c0848701526101208601906139ca565b60608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08683030160c08701526139ca565b916080810151151560e085015201511515610100830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610315565b9060408282031261023757611b2791613276565b906148f0936040936148bc926148906127fa565b5061489a856134a2565b6148a56133c6610374565b602086015285850152606084015215156080830152565b8151809381927fddc28c580000000000000000000000000000000000000000000000000000000083523090600484016132e8565b038173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115611170575f9161493c575090565b611b27915060403d60401161495e575b6149568183610315565b810190614868565b503d61494c565b90813b5f6149728261126a565b936149806040519586610315565b82855260208501903c565b611b276149b77f0000000000000000000000000000000000000000000000000000000000000000614965565b610b2573ffffffffffffffffffffffffffffffffffffffff614a09602095610b256040516149e58982610315565b5f815260405194859316808a85015260408401526060808401526080830190611d12565b6040519483614a218795518092848089019101611cf1565b84010190612e2b565b9073ffffffffffffffffffffffffffffffffffffffff6040519163ffffffff602084019460608652601560808601527f50656e646c654272696467655054466163746f7279000000000000000000000060a086015216604084015216606082015260a08152614a9a60c082610315565b51902090565b90605592600b92604051926040840152602083015281520160ff81532090565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18236030181121561023757016020813591019167ffffffffffffffff8211610237578160051b3603831361023757565b916020908281520191905f5b818110614b2c5750505090565b9091926020806001926fffffffffffffffffffffffffffffffff614b4f886107b7565b168152019401929101614b1f565b614b6f614b6a368361084e565b6155c9565b604051600160208201529060408083015281610120810163ffffffff8335614b9681610248565b16606083015273ffffffffffffffffffffffffffffffffffffffff6020840135614bbf81610219565b166080830152614bd26040840184614ac0565b60c060a0850152918290526101408301915f5b818110614c655750505091610b25614c5b60a0614c3c611b2796614c0c6060870187614ac0565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08984030160c08a0152614b13565b93614c55614c4c60808301610843565b151560e0880152565b01610843565b1515610100840152565b9193509160208060019263ffffffff8735614c7f81610248565b168152019401910191859392614be5565b614cfb614c9e602092614965565b9260405192839181614cb98185019788815193849201611cf1565b8301614ccd82518093858085019101611cf1565b0101037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610315565b51905ff09073ffffffffffffffffffffffffffffffffffffffff821615614d1e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6465706c6f796d656e74206661696c65640000000000000000000000000000006044820152fd5b60409073ffffffffffffffffffffffffffffffffffffffff611b2794931681528160208201520190611d12565b60408051909190614dba8382610315565b60018152917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001366020840137565b90602080835192838152019201905f5b818110614e065750505090565b82511515845260209384019390920191600101614df9565b9392909373ffffffffffffffffffffffffffffffffffffffff6080820195168152608060208201528251809552602060a0820193015f955b808710614e98575050611b279394507f3400288b0000000000000000000000000000000000000000000000000000000060408201526060818403910152614de9565b909360208060019273ffffffffffffffffffffffffffffffffffffffff885116815201950196019590614e56565b9392909373ffffffffffffffffffffffffffffffffffffffff6080820195168152608060208201528251809552602060a0820193015f955b808710614f40575050611b279394507fb98bd0700000000000000000000000000000000000000000000000000000000060408201526060818403910152614de9565b909360208060019273ffffffffffffffffffffffffffffffffffffffff885116815201950196019590614efe565b91909392614f8e614f7f8284614a2a565b614f883061498b565b906159b8565b9473ffffffffffffffffffffffffffffffffffffffff861693843b1561023757614fe8915f9160405193849283927f4f1ef28600000000000000000000000000000000000000000000000000000000845260048401614d7c565b038183885af180156111705761522b575b50823b15610237576040517f8f2839700000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1660048201525f8160248183885af1801561117057615217575b50615080614da9565b6150a88661508d83613836565b9073ffffffffffffffffffffffffffffffffffffffff169052565b6150b0614da9565b906150c36150bd83613836565b60019052565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691823b15610237576040517f2d254dcd0000000000000000000000000000000000000000000000000000000081525f818061513a85873060048501614e1e565b038183885af1801561117057615203575b50823b1561023757615190925f92836040518096819582947f2d254dcd0000000000000000000000000000000000000000000000000000000084523060048501614ec6565b03925af180156111705763ffffffff926151c792610acc926151ef575b5073ffffffffffffffffffffffffffffffffffffffff1690565b91167f497996dac69d679583cab49a7b067859c8b623151a7001356974afe003bfb50f5f80a4565b806116ae5f6151fd93610315565b5f6151ad565b806116ae5f61521193610315565b5f61514b565b806116ae5f61522593610315565b5f615077565b806116ae5f61523993610315565b5f614ff9565b1561524657565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152fd5b8034036152d45790565b7f9f704120000000000000000000000000000000000000000000000000000000005f523460045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906040517fe4fe1d94000000000000000000000000000000000000000000000000000000008152602081600481865afa8015611170575f906153c6575b73ffffffffffffffffffffffffffffffffffffffff91501691821561539e57610246923390615ab3565b7f5373352a000000000000000000000000000000000000000000000000000000005f5260045ffd5b506020813d60201161540d575b816153e060209383610315565b810103126102375773ffffffffffffffffffffffffffffffffffffffff905161540881610219565b615374565b3d91506153d3565b9161545473ffffffffffffffffffffffffffffffffffffffff91615446604094979697606087526060870190611d12565b908582036020870152611d12565b9416910152565b906155c6916154f860608301516154d2615479608086015160ff1690565b6040805173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660208201529081019390935260ff1660608301528160808101610b25565b7f0000000000000000000000000000000000000000000000000000000000000000614c90565b916155c06020820151916155a6604082015161557a6040519586927f077f224a00000000000000000000000000000000000000000000000000000000602085015273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169160248501615415565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101855284610315565b5173ffffffffffffffffffffffffffffffffffffffff1690565b92614f6e565b50565b606060408201515191015151036155dc57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f50656e646c654272696467655054466163746f72793a205769726550744f667460448201527f506172616d73206c656e677468206d69736d61746368000000000000000000006064820152fd5b6040517e03000000000000000000000000000000000000000000000000000000000000602082015260028152611b27602282610315565b600361ffff6156a583615bc6565b16036157b1577fffffffffffffffffffffffffffffffff000000000000000000000000000000006040519260801b166020830152601082526156e8603083610315565b600361ffff6156f683615bc6565b16036157b15781519061ffff821161572d57610b2561571b61ffff611b279416615c34565b93600160405195869460208601615c48565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f36206269747300000000000000000000000000000000000000000000000000006064820152fd5b6157bd61ffff91615bc6565b7f3a51740d000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b9060208282031261023757815167ffffffffffffffff811161023757611b279201613a9b565b91909163ffffffff61581f61377e565b93168084526002602085015273ffffffffffffffffffffffffffffffffffffffff604051927f2b3197b90000000000000000000000000000000000000000000000000000000084523060048501521660248301526044820152600260648201525f8160848173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115611170575f916158d3575b506040830152565b6158ef91503d805f833e6158e78183610315565b8101906157e9565b5f6158cb565b91909163ffffffff61590561377e565b93168084526001602085015273ffffffffffffffffffffffffffffffffffffffff604051927f2b3197b90000000000000000000000000000000000000000000000000000000084523060048501521660248301526044820152600160648201525f8160848173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115611170575f916158d357506040830152565b90805115615a45576020815191015ff59073ffffffffffffffffffffffffffffffffffffffff8216156159e757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152fd5b61024660ff5f5460081c1661523f565b905f8073ffffffffffffffffffffffffffffffffffffffff615b9095946102469782604051978160208a01987f23b872dd000000000000000000000000000000000000000000000000000000008a521660248a0152166044880152606487015260648652615b22608487610315565b169260405194615b33604087610315565b602086527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65646020870152519082855af13d15615bbe573d91615b748361126a565b92615b826040519485610315565b83523d5f602085013e615d90565b8051908115918215615ba4575b5050615d05565b615bb79250602080918301019101615cf0565b5f80615b9d565b606091615d90565b6002815110615bd6576002015190565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7431365f6f75744f66426f756e64730000000000000000000000006044820152fd5b61ffff60019116019061ffff821161376657565b927fffff000000000000000000000000000000000000000000000000000000000000602060049695615ca17fff000000000000000000000000000000000000000000000000000000000000009582815194859201611cf1565b01937f0100000000000000000000000000000000000000000000000000000000000000855260f01b16600184015260f81b166003820152615ceb8251809360208685019101611cf1565b010190565b908160209103126102375751611b2781610839565b15615d0c57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b91929015615e0b5750815115615da4575090565b3b15615dad5790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b825190915015615e1e5750805190602001fd5b615e54906040519182917f08c379a000000000000000000000000000000000000000000000000000000000835260048301611d55565b0390fdfea2646970667358221220d4db78bc8e23fb833cd22cd8eddd484317717defbce796cd01d88b958ec5a49164736f6c634300081e0033",
1385
+ "deployedBytecode": "0x60806040526004361015610011575f80fd5b5f3560e01c806303f54e5b14610214578063128d81ce1461020f57806313137d651461020a57806317442b70146102055780633400288b1461020057806337a8b684146101fb57806340ed53c2146101f6578063467efa93146101f1578063558eb60a146101ec5780635b35fa86146101e75780635e280f11146101e25780636b9a3778146101dd578063715018a6146101d85780637a699edd146101d35780637d25a05e146101ce5780637dc61736146101c957806382413eac146101c457806387a30e86146101bf5780638da5cb5b146101ba5780638f983fd9146101b5578063ace84e26146101b0578063adbaca4e146101ab578063b7446b3d146101a6578063bb0b6a53146101a1578063ca5eb5e11461019c578063e33fa79714610197578063e6b7c44614610192578063ee9967f41461018d578063f2fde38b14610188578063f399e22e14610183578063fca881531461017e5763ff7bd03d14610179575f80fd5b6127a5565b612737565b6125ba565b6124b3565b612482565b61244a565b61233b565b612251565b6121d5565b612143565b611fa5565b611f37565b611f0a565b611eb9565b611e3d565b611db3565b611d66565b611b89565b611b2a565b6119f9565b61198b565b61191d565b6118bf565b611460565b6111fc565b61118e565b6108ee565b6106e9565b6106aa565b610552565b6104b5565b6103be565b73ffffffffffffffffffffffffffffffffffffffff81160361023757565b5f80fd5b359061024682610219565b565b63ffffffff81160361023757565b359061024682610248565b9181601f840112156102375782359167ffffffffffffffff8311610237576020838186019501011161023757565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040810190811067ffffffffffffffff8211176102d857604052565b61028f565b6060810190811067ffffffffffffffff8211176102d857604052565b60a0810190811067ffffffffffffffff8211176102d857604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176102d857604052565b6040519061024660c083610315565b60405190610246606083610315565b6040519061024660a083610315565b6102469092919260408060808301958051845267ffffffffffffffff6020820151166020850152015191019060208091805184520151910152565b60a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610237576004356103f481610219565b6024359061040182610248565b60443567ffffffffffffffff811161023757610421903690600401610261565b909160407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c360112610237576104a79361049b9361049561048b60405194610468866102bc565b6064358652608435602087015261047d612812565b50610486612d40565b61304b565b91339536916112a4565b91613380565b60405191829182610383565b0390f35b5f91031261023757565b34610237575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc606091011261023757600490565b60e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102375761058536610523565b60843567ffffffffffffffff8111610237576105a5903690600401610261565b906105b160a435610219565b60c43567ffffffffffffffff8111610237576105d1903690600401610261565b50503373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000160361067e5782359261061c84610248565b610625846134a2565b93602082013580950361063f575061063d9350613671565b005b63ffffffff8161064f8793610248565b7fc26bebcc000000000000000000000000000000000000000000000000000000005f521660045260245260445ffd5b7f91ac5e4f000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b34610237575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023757604080516001815260026020820152f35b346102375760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102375761063d60043561072781610248565b60243590610733612d40565b612842565b67ffffffffffffffff81116102d85760051b60200190565b9080601f8301121561023757813561076781610738565b926107756040519485610315565b81845260208085019260051b82010192831161023757602001905b82821061079d5750505090565b6020809183356107ac81610248565b815201910190610790565b35906fffffffffffffffffffffffffffffffff8216820361023757565b9080601f830112156102375781356107eb81610738565b926107f96040519485610315565b81845260208085019260051b82010192831161023757602001905b8282106108215750505090565b6020809161082e846107b7565b815201910190610814565b8015150361023757565b359061024682610839565b91909160c08184031261023757610863610356565b9261086d82610256565b845261087b6020830161023b565b6020850152604082013567ffffffffffffffff811161023757816108a0918401610750565b604085015260608201359167ffffffffffffffff8311610237576108cb60a0926108e79483016107d4565b60608601526108dc60808201610843565b608086015201610843565b60a0830152565b346102375760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102375760043567ffffffffffffffff81116102375761093d90369060040161084e565b610945612d40565b61094e816155c9565b60049061095e6080820151151590565b611185575b60a0810151611175575b9061098761098260408401928351519061376b565b61379d565b825163ffffffff16926109dd60208201946109b6865173ffffffffffffffffffffffffffffffffffffffff1690565b907f00000000000000000000000000000000000000000000000000000000000000006128ac565b9360608201905f90815b865180518410156110485788916109ff858993613858565b5163ffffffff16908751610a169063ffffffff1690565b855173ffffffffffffffffffffffffffffffffffffffff16610a3891846128ac565b9086885190610a4691613858565b516fffffffffffffffffffffffffffffffff1690836fffffffffffffffffffffffffffffffff831615610b5c600198610e6d98610c21610d7898610c2698610bc198610bf59860409861103d575b610b51610ae5610acc610b649596610acc8b610ab0888d613858565b519073ffffffffffffffffffffffffffffffffffffffff169052565b73ffffffffffffffffffffffffffffffffffffffff1690565b8a517f3400288b00000000000000000000000000000000000000000000000000000000602082015263ffffffff9093166024840152604483015281606481015b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610315565b88610b5c8388613858565b510152613739565b9788948c610b81610b7361386c565b94610b7c615660565b615697565b610b98610b8c610365565b63ffffffff9093168352565b6001602083015289820152610bac84613836565b52610bb683613836565b50610ab08686613858565b85519687917fb98bd070000000000000000000000000000000000000000000000000000000006020840152602483016138ca565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101875286610315565b613858565b898c610c3560808c0151151590565b610f5c575b60a08b0151610e75575b5050610c4e61396c565b610c78847f000000000000000000000000000000000000000000000000000000000000000061580f565b610c8182613836565b52610c8b81613836565b50610cb6847f00000000000000000000000000000000000000000000000000000000000000006158f5565b610cbf82613848565b52610cc981613848565b50610d0e7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610ab0848e613858565b610d6c8d610b256040519384927f6dbd9f900000000000000000000000000000000000000000000000000000000060208501527f00000000000000000000000000000000000000000000000000000000000000009060248501613a67565b6040610b5c838d613858565b90610dab610d8461386c565b917f000000000000000000000000000000000000000000000000000000000000000061580f565b610db482613836565b52610dbe81613836565b50610e0373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016610ab0848c613858565b610e618b610b256040519384927f6dbd9f900000000000000000000000000000000000000000000000000000000060208501527f00000000000000000000000000000000000000000000000000000000000000009060248501613a67565b6040610b5c838b613858565b9201916109e7565b6040610b5c84610f559594610c21610bf595610ecb73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016610ab08686613858565b85517f6a14d71500000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff918216602482015263ffffffff8c1660448201527f000000000000000000000000000000000000000000000000000000000000000090911660648201525f608482015295869060a4820190565b898c610c44565b6040610b5c846110369594610c21610bf595610fb273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016610ab08686613858565b85517f9535ff3000000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff918216602482015263ffffffff8c1660448201527f000000000000000000000000000000000000000000000000000000000000000090911660648201529586906084820190565b898c610c3a565b62015f909250610a94565b8288611083885f8b604051809481927fc45ce97200000000000000000000000000000000000000000000000000000000835260048301613b51565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af19182156111705761111573ffffffffffffffffffffffffffffffffffffffff92611130927f2db5389a2a82a40aad03462943bf87673b1de847e0168daca4c84cc73c6c730695611150575b505163ffffffff1690565b945173ffffffffffffffffffffffffffffffffffffffff1690565b92519261114b63ffffffff6040519384931696169482613bff565b0390a3005b61116b903d805f833e6111638183610315565b810190613ab5565b61110a565b6129f9565b9061117f90613739565b9061096d565b60059150610963565b34610237575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610237575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b67ffffffffffffffff81116102d857601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926112b08261126a565b916112be6040519384610315565b829481845281830111610237578281602093845f960137010152565b81601f82011215610237578035906112f182610738565b926112ff6040519485610315565b82845260208085019360051b830101918183116102375760208101935b83851061132b57505050505090565b843567ffffffffffffffff81116102375782019060607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe083860301126102375760405191611378836102dd565b602081013561138681610248565b8352604081013561139681610248565b6020840152606081013567ffffffffffffffff81116102375760209101019084601f83011215610237576020926113d386848680963591016112a4565b604082015281520194019361131c565b91909160c081840312610237576113f8610356565b9261140282610256565b84526114106020830161023b565b6020850152604082013567ffffffffffffffff811161023757816114359184016112da565b604085015260608201359167ffffffffffffffff8311610237576108cb60a0926108e79483016112da565b346102375760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102375760043567ffffffffffffffff8111610237576114af9036906004016113e3565b6114b7612d40565b805163ffffffff16906114ef60208201926114e9610acc855173ffffffffffffffffffffffffffffffffffffffff1690565b90612842565b60808101516117ca575b60a08101516116ce575b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906040810151823b15610237575f6115a191604051809381927f6dbd9f900000000000000000000000000000000000000000000000000000000083527f00000000000000000000000000000000000000000000000000000000000000003060048501613a67565b038183875af18015611170576116ba575b50606081015191803b156102375761161f5f939184926040519586809481937f6dbd9f900000000000000000000000000000000000000000000000000000000083527f00000000000000000000000000000000000000000000000000000000000000003060048501613a67565b03925af19182156111705761165c73ffffffffffffffffffffffffffffffffffffffff926116779263ffffffff956116a057505163ffffffff1690565b935173ffffffffffffffffffffffffffffffffffffffff1690565b1691167f5a2a82b1a79a14bbc32c4715dd65a21b8a1e0134d26eb6f296b914ae5c20c8d45f80a3005b806116ae5f6116b493610315565b806104ab565b5f61110a565b806116ae5f6116c893610315565b5f6115b2565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016611713825163ffffffff1690565b90803b15610237576040517f6a14d71500000000000000000000000000000000000000000000000000000000815230600482015263ffffffff9290921660248301527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1660448301525f60648301819052908290608490829084905af18015611170576117b6575b50611503565b806116ae5f6117c493610315565b5f6117b0565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001661180f825163ffffffff1690565b90803b15610237576040517f9535ff3000000000000000000000000000000000000000000000000000000000815230600482015263ffffffff9290921660248301527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1660448301525f908290606490829084905af18015611170576118ab575b506114f9565b806116ae5f6118b993610315565b5f6118a5565b34610237575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023757602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610237575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610237575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610237575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023757611a2f612d40565b5f73ffffffffffffffffffffffffffffffffffffffff6033547fffffffffffffffffffffffff00000000000000000000000000000000000000008116603355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b908160c09103126102375790565b60807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261023757600435611ad981610248565b9160243567ffffffffffffffff81116102375782611af991600401611a95565b916044359067ffffffffffffffff821161023757611b1991600401610261565b9091606435611b2781610839565b90565b34610237576040611b71611b6b611b63611b5e611b4636611aa3565b9693959192611b569591956127fa565b5036906113e3565b61478b565b9236916112a4565b9161487c565b611b878251809260208091805184520151910152565bf35b346102375760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023757611bc3600435610248565b60206040515f8152f35b90600182811c92168015611c14575b6020831014611be757565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691611bdc565b604051905f8260655491611c3183611bcd565b8083529260018116908115611cb45750600114611c55575b61024692500383610315565b5060655f90815290917f8ff97419363ffd7000167f130ef7168fbea05faf9251824ca5043f113cc6a7c75b818310611c9857505090602061024692820101611c49565b6020919350806001915483858901015201910190918492611c80565b602092506102469491507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682840152151560051b820101611c49565b5f5b838110611d025750505f910152565b8181015183820152602001611cf3565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602093611d4e81518092818752878088019101611cf1565b0116010190565b906020611b27928181520190611d12565b34610237575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610237576104a7611d9f611c1e565b604051918291602083526020830190611d12565b346102375760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023757611deb36610523565b5060643567ffffffffffffffff811161023757611e0c903690600401610261565b50506020608435611e1c81610219565b6040519073ffffffffffffffffffffffffffffffffffffffff309116148152f35b346102375760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610237576020611e9b600435611e7d81610248565b602435611e8981610248565b60443591611e9683610219565b6128ac565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b34610237575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023757602073ffffffffffffffffffffffffffffffffffffffff60335416604051908152f35b34610237576040611b71611b6b611b63611f2336611aa3565b9592611f31959194956127fa565b50614b5d565b34610237575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102375760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610237576104a761211c600435611fe681610219565b611fee612d40565b61208160405173ffffffffffffffffffffffffffffffffffffffff8316602082015273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660408201526040815261205b606082610315565b7f0000000000000000000000000000000000000000000000000000000000000000614c90565b6040517fc4d66de800000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166024820152602481526120f5604482610315565b7f000000000000000000000000000000000000000000000000000000000000000091614f6e565b60405173ffffffffffffffffffffffffffffffffffffffff90911681529081906020820190565b346102375760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102375760043561217e81610219565b6024359061218b82610248565b6044359067ffffffffffffffff821161023757604092611b6b6121b5611b71943690600401610261565b9190611b63606435956121c787610839565b6121cf6127fa565b5061304b565b346102375760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023757602061224960043561221581610248565b63ffffffff165f527f72ab1bc1039b79dc4724ffca13de82c96834302d3c7e0d4252232d4b2dd8f90060205260405f205490565b604051908152f35b34610237575f60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102375760043561228d81610219565b612295612d40565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690813b156102375773ffffffffffffffffffffffffffffffffffffffff60245f928360405195869485937fca5eb5e10000000000000000000000000000000000000000000000000000000085521660048401525af180156111705761232f575080f35b61063d91505f90610315565b34610237575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b60a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc820112610237576004356123df81610248565b9160243567ffffffffffffffff811161023757826123ff91600401611a95565b916044359167ffffffffffffffff831161023757604061242483606495600401610261565b9490949303126102375760405161243a816102bc565b6064358152608435602082015290565b6104a761049b61048b610495611b5e612462366123a9565b9592612472979294959197612812565b5061247b612d40565b36906113e3565b6104a761049b61048b610495612497366123a9565b9491926124a5969196612812565b506124ae612d40565b614b5d565b346102375760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610237576004356124ee81610219565b6124f6612d40565b73ffffffffffffffffffffffffffffffffffffffff81161561251b5761063d90614720565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152fd5b9080601f8301121561023757816020611b27933591016112a4565b346102375760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610237576004356125f581610219565b60243567ffffffffffffffff81116102375761261861267591369060040161259f565b5f549261263d60ff600886901c161580958196612729575b8115612709575b50612a04565b8361266c60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff005f5416175f55565b6126d557612c1d565b61267b57005b6126a67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff5f54165f55565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1005b6127046101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff5f5416175f55565b612c1d565b303b1591508161271b575b505f612637565b60ff1660011490505f612714565b600160ff8216109150612630565b34610237575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102375760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102375760206127df36610523565b816127ee823561221581610248565b91013560405191148152f35b60405190612807826102bc565b5f6020838281520152565b6040519061281f826102dd565b815f81525f602082015260406128336127fa565b910152565b35611b2781610248565b63ffffffff165f8181527f72ab1bc1039b79dc4724ffca13de82c96834302d3c7e0d4252232d4b2dd8f900602090815260409182902084905581519283528201929092527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b9190a1565b91909163ffffffff7f00000000000000000000000000000000000000000000000000000000000000001663ffffffff8216145f1461290a5750611b279161290530925b6128f88461498b565b6020815191012092614a2a565b614aa0565b6129419063ffffffff165f527f72ab1bc1039b79dc4724ffca13de82c96834302d3c7e0d4252232d4b2dd8f90060205260405f2090565b549182156129755761290561296f610acc611b279573ffffffffffffffffffffffffffffffffffffffff1690565b926128ef565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f50656e646c654272696467655054466163746f72793a2070656572206e6f742060448201527f73657400000000000000000000000000000000000000000000000000000000006064820152fd5b6040513d5f823e3d90fd5b15612a0b57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152fd5b601f8211612a9c57505050565b5f5260205f20906020601f840160051c83019310612ad4575b601f0160051c01905b818110612ac9575050565b5f8155600101612abe565b9091508190612ab5565b90815167ffffffffffffffff81116102d857612b0681612aff606554611bcd565b6065612a8f565b602092601f8211600114612b6457612b54929382915f92612b59575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790565b606555565b015190505f80612b22565b60655f527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08216937f8ff97419363ffd7000167f130ef7168fbea05faf9251824ca5043f113cc6a7c7915f5b868110612c055750836001959610612bce575b505050811b01606555565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c191690555f8080612bc3565b91926020600181928685015181550194019201612bb0565b90612c4060ff5f5460081c16612c328161523f565b612c3b8161523f565b61523f565b73ffffffffffffffffffffffffffffffffffffffff8216918215612d185773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001692833b15610237575f936024859260405196879384927fca5eb5e100000000000000000000000000000000000000000000000000000000845260048401525af19081156111705761024693612cff92612d04575b50612cf2615aa3565b612cfa615aa3565b614720565b612ade565b806116ae5f612d1293610315565b5f612ce9565b7fb5863604000000000000000000000000000000000000000000000000000000005f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff603354163303612d6157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b90929192612dcc8161126a565b91612dda6040519384610315565b829482845282820111610237576020610246930190611cf1565b6020818303126102375780519067ffffffffffffffff821161023757019080601f83011215610237578151611b2792602001612dbf565b90612e3e60209282815194859201611cf1565b0190565b600160026102469294939460206040519682612e678994518092858088019101611cf1565b83017f202800000000000000000000000000000000000000000000000000000000000083820152612ea18251809385602285019101611cf1565b01017f29000000000000000000000000000000000000000000000000000000000000008382015203017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1810185520183610315565b600160026102469294939460206040519682612f1b8994518092858088019101611cf1565b83017f2d2800000000000000000000000000000000000000000000000000000000000083820152612ea18251809385602285019101611cf1565b90816020910312610237575190565b60ff81160361023757565b908160209103126102375751611b2781612f64565b60031115612f8e57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f81526040602082015273ffffffffffffffffffffffffffffffffffffffff825116604082015260c060ff6080613037613004602087015160a0606088015260e0870190611d12565b60408701517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08783030184880152611d12565b94606081015160a086015201511691015290565b73ffffffffffffffffffffffffffffffffffffffff81169061306b611c1e565b906040517f06fdde030000000000000000000000000000000000000000000000000000000081525f81600481875afa908115611170576130b49184915f9161325c575b50612e42565b91604051907f95d89b410000000000000000000000000000000000000000000000000000000082525f82600481885afa8015611170576130fb925f9161323a575b50612ef6565b92604051907fe184c9be000000000000000000000000000000000000000000000000000000008252602082600481845afa908115611170576004925f92613208575b50602090604051938480927f313ce5670000000000000000000000000000000000000000000000000000000082525afa90811561117057610b2595611b27956131c8945f946131d7575b506131af613193610374565b73ffffffffffffffffffffffffffffffffffffffff9097168752565b60208601526040850152606084015260ff166080830152565b60405192839160208301612fbb565b6131fa91945060203d602011613201575b6131f28183610315565b810190612f6f565b925f613187565b503d6131e8565b602091925061322c90823d8411613233575b6132248183610315565b810190612f55565b919061313d565b503d61321a565b61325691503d805f833e61324e8183610315565b810190612df4565b5f6130f5565b61327091503d805f833e61324e8183610315565b5f6130ae565b91908260409103126102375760405161328e816102bc565b6020808294805184520151910152565b60808183031261023757604051916132b5836102dd565b81518352602082015167ffffffffffffffff811681036102375760208401526132e091604001613276565b604082015290565b9073ffffffffffffffffffffffffffffffffffffffff6020919493946040845263ffffffff8151166040850152828101516060850152608061336f61333b604084015160a08489015260e0880190611d12565b60608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08883030160a0890152611d12565b910151151560c08501529416910152565b6133e96080949261341e9694613394612812565b5060206133a186516152ca565b950191825180613493575b506133b6856134a2565b92511515926133d26133c6610374565b63ffffffff9097168752565b602086015260408501526060840152151585830152565b6040518095819482937f2637a450000000000000000000000000000000000000000000000000000000008452600484016132e8565b039173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1908115611170575f9161346a575090565b611b27915060803d60801161348c575b6134848183610315565b81019061329e565b503d61347a565b61349c90615300565b5f6133ac565b63ffffffff16805f527f72ab1bc1039b79dc4724ffca13de82c96834302d3c7e0d4252232d4b2dd8f90060205260405f20549081156134df575090565b7ff6ff4fb7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b3590600382101561023757565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b9190916040818403126102375761355a8161350a565b92602082013567ffffffffffffffff811161023757611b2792016113e3565b9190916040818403126102375761358f8161350a565b92602082013567ffffffffffffffff811161023757611b27920161084e565b359061024682612f64565b9190604083820312610237576135ce8361350a565b9260208101359067ffffffffffffffff8211610237570160a08183031261023757604051916135fc836102f9565b813561360781610219565b8352602082013567ffffffffffffffff8111610237578161362991840161259f565b602084015260408201359167ffffffffffffffff83116102375761365460809261366994830161259f565b604085015260608101356060850152016135ae565b608082015290565b909180602011610237576136848361350a565b61368d81612f84565b806136b357506136a6836136ae926102469501906135b9565b929050612838565b61545b565b9091506136bf81612f84565b600181036136df5750816136d891610246930190613579565b9050613c3e565b806136eb600292612f84565b03613707578161370091610246930190613544565b9050614353565b613517565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146137665760010190565b61370c565b8181029291811591840414171561376657565b6040519061378b826102dd565b60606040835f81525f60208201520152565b906137a782610738565b6137b46040519182610315565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06137e28294610738565b01905f5b8281106137f257505050565b6020906137fd61377e565b828285010152016137e6565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8051156138435760200190565b613809565b8051600110156138435760400190565b80518210156138435760209160051b010190565b6040805190919061387d8382610315565b60018152917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001825f5b8281106138b357505050565b6020906138be61377e565b828285010152016138a7565b602081016020825282518091526040820191602060408360051b8301019401925f915b8383106138fc57505050505090565b909192939460208061395d837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08660019603018752606060408b5163ffffffff815116845261ffff8682015116868501520151918160408201520190611d12565b970193019301919392906138ed565b6040516060919061397d8382610315565b60028152917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001825f5b8281106139b357505050565b6020906139be61377e565b828285010152016139a7565b9080602083519182815201916020808360051b8301019401925f915b8383106139f557505050505090565b9091929394602080613a58837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08660019603018752606060408b5163ffffffff815116845263ffffffff8682015116868501520151918160408201520190611d12565b970193019301919392906139e6565b73ffffffffffffffffffffffffffffffffffffffff611b2794938160609416835216602082015281604082015201906139ca565b9080601f83011215610237578151611b2792602001612dbf565b6020818303126102375780519067ffffffffffffffff821161023757019080601f83011215610237578151613ae981610738565b92613af76040519485610315565b81845260208085019260051b820101918383116102375760208201905b838210613b2357505050505090565b815167ffffffffffffffff811161023757602091613b4687848094880101613a9b565b815201910190613b14565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310613b8357505050505090565b9091929394602080613bf0837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08660019603018752606060408b5173ffffffffffffffffffffffffffffffffffffffff815116845285810151868501520151918160408201520190611d12565b97019301930191939290613b74565b60206040818301928281528451809452019201905f5b818110613c225750505090565b825163ffffffff16845260209384019390920191600101613c15565b90613c48826155c9565b600491613c586080820151151590565b61434a575b60a081015161433a575b613c7b61098260408301948551519061376b565b815163ffffffff1691613caa60208201936109b6855173ffffffffffffffffffffffffffffffffffffffff1690565b925f955f965b8151805189101561424a5788613cc591613858565b5163ffffffff16908451613cdc9063ffffffff1690565b845173ffffffffffffffffffffffffffffffffffffffff16613cfe91846128ac565b91808a606088015190613d1091613858565b516fffffffffffffffffffffffffffffffff1693898980826fffffffffffffffffffffffffffffffff891615613e4760019a61406d9a610b259961406199613fa699613e5398610b259761423f575b613d7f610acc8694610acc613dd09795610ab0613e129a613dc497613858565b6040517f3400288b00000000000000000000000000000000000000000000000000000000602082015263ffffffff909316602484015260448301528160648101610b25565b6040610b5c838c613858565b948b613ddd610b7361386c565b613de8610b8c610365565b600160208301526040820152613dfd84613836565b52613e0783613836565b50610ab08689613858565b6040519283917fb98bd070000000000000000000000000000000000000000000000000000000006020840152602483016138ca565b6040610b5c8386613858565b8c613e6160808d0151151590565b614162575b9091613e7560a08d0151151590565b614075575b610b5c83604092610c21613e8c61396c565b95613eb78c7f000000000000000000000000000000000000000000000000000000000000000061580f565b613ec088613836565b52613eca87613836565b50613ef58c7f00000000000000000000000000000000000000000000000000000000000000006158f5565b613efe88613848565b52613f0887613848565b50613f4d73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016610ab08686613858565b610bf586519788927f6dbd9f900000000000000000000000000000000000000000000000000000000060208501527f00000000000000000000000000000000000000000000000000000000000000009060248501613a67565b92613fb2610d8461386c565b613fbb82613836565b52613fc581613836565b5061400a73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016610ab0868d613858565b6040519283917f6dbd9f900000000000000000000000000000000000000000000000000000000060208401527f00000000000000000000000000000000000000000000000000000000000000008d60248501613a67565b6040610b5c838a613858565b970196613cb0565b91610b5c6141596040926140c373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016610ab08389613858565b83517f6a14d71500000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff808716602483015263ffffffff8c1660448301527f00000000000000000000000000000000000000000000000000000000000000001660648201525f608482015261414e8160a48101610b25565b84610b5c8389613858565b93915050613e7a565b6040610b5c83614237956141b073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016610ab08484613858565b83517f9535ff3000000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff958616602482015263ffffffff8c1660448201527f00000000000000000000000000000000000000000000000000000000000000009095166064860152610c218560848101610bf5565b8a908c613e66565b62015f909550613d5f565b505093509394505f61428992604051809481927fc45ce97200000000000000000000000000000000000000000000000000000000835260048301613b51565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af19182156111705761111573ffffffffffffffffffffffffffffffffffffffff9261431a927f2db5389a2a82a40aad03462943bf87673b1de847e0168daca4c84cc73c6c73069561115057505163ffffffff1690565b92519261433563ffffffff6040519384931696169482613bff565b0390a3565b9161434490613739565b91613c67565b60059250613c5d565b805163ffffffff169061438560208201926114e9610acc855173ffffffffffffffffffffffffffffffffffffffff1690565b608081015161462b575b60a081015161452f575b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906040810151823b15610237575f61443791604051809381927f6dbd9f900000000000000000000000000000000000000000000000000000000083527f00000000000000000000000000000000000000000000000000000000000000003060048501613a67565b038183875af180156111705761451b575b50606081015191803b15610237576144b55f939184926040519586809481937f6dbd9f900000000000000000000000000000000000000000000000000000000083527f00000000000000000000000000000000000000000000000000000000000000003060048501613a67565b03925af19182156111705761165c73ffffffffffffffffffffffffffffffffffffffff926144f29263ffffffff956116a057505163ffffffff1690565b1691167f5a2a82b1a79a14bbc32c4715dd65a21b8a1e0134d26eb6f296b914ae5c20c8d45f80a3565b806116ae5f61452993610315565b5f614448565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016614574825163ffffffff1690565b90803b15610237576040517f6a14d71500000000000000000000000000000000000000000000000000000000815230600482015263ffffffff9290921660248301527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1660448301525f60648301819052908290608490829084905af1801561117057614617575b50614399565b806116ae5f61462593610315565b5f614611565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016614670825163ffffffff1690565b90803b15610237576040517f9535ff3000000000000000000000000000000000000000000000000000000000815230600482015263ffffffff9290921660248301527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1660448301525f908290606490829084905af180156111705761470c575b5061438f565b806116ae5f61471a93610315565b5f614706565b73ffffffffffffffffffffffffffffffffffffffff80603354921691827fffffffffffffffffffffffff0000000000000000000000000000000000000000821617603355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b611b2760405180926147a06020830160029052565b60408083015263ffffffff815116606083015273ffffffffffffffffffffffffffffffffffffffff602082015116608083015260a06148256147f1604084015160c0848701526101208601906139ca565b60608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08683030160c08701526139ca565b916080810151151560e085015201511515610100830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610315565b9060408282031261023757611b2791613276565b906148f0936040936148bc926148906127fa565b5061489a856134a2565b6148a56133c6610374565b602086015285850152606084015215156080830152565b8151809381927fddc28c580000000000000000000000000000000000000000000000000000000083523090600484016132e8565b038173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115611170575f9161493c575090565b611b27915060403d60401161495e575b6149568183610315565b810190614868565b503d61494c565b90813b5f6149728261126a565b936149806040519586610315565b82855260208501903c565b611b276149b77f0000000000000000000000000000000000000000000000000000000000000000614965565b610b2573ffffffffffffffffffffffffffffffffffffffff614a09602095610b256040516149e58982610315565b5f815260405194859316808a85015260408401526060808401526080830190611d12565b6040519483614a218795518092848089019101611cf1565b84010190612e2b565b9073ffffffffffffffffffffffffffffffffffffffff6040519163ffffffff602084019460608652601560808601527f50656e646c654272696467655054466163746f7279000000000000000000000060a086015216604084015216606082015260a08152614a9a60c082610315565b51902090565b90605592600b92604051926040840152602083015281520160ff81532090565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18236030181121561023757016020813591019167ffffffffffffffff8211610237578160051b3603831361023757565b916020908281520191905f5b818110614b2c5750505090565b9091926020806001926fffffffffffffffffffffffffffffffff614b4f886107b7565b168152019401929101614b1f565b614b6f614b6a368361084e565b6155c9565b604051600160208201529060408083015281610120810163ffffffff8335614b9681610248565b16606083015273ffffffffffffffffffffffffffffffffffffffff6020840135614bbf81610219565b166080830152614bd26040840184614ac0565b60c060a0850152918290526101408301915f5b818110614c655750505091610b25614c5b60a0614c3c611b2796614c0c6060870187614ac0565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08984030160c08a0152614b13565b93614c55614c4c60808301610843565b151560e0880152565b01610843565b1515610100840152565b9193509160208060019263ffffffff8735614c7f81610248565b168152019401910191859392614be5565b614cfb614c9e602092614965565b9260405192839181614cb98185019788815193849201611cf1565b8301614ccd82518093858085019101611cf1565b0101037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610315565b51905ff09073ffffffffffffffffffffffffffffffffffffffff821615614d1e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6465706c6f796d656e74206661696c65640000000000000000000000000000006044820152fd5b60409073ffffffffffffffffffffffffffffffffffffffff611b2794931681528160208201520190611d12565b60408051909190614dba8382610315565b60018152917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001366020840137565b90602080835192838152019201905f5b818110614e065750505090565b82511515845260209384019390920191600101614df9565b9392909373ffffffffffffffffffffffffffffffffffffffff6080820195168152608060208201528251809552602060a0820193015f955b808710614e98575050611b279394507f3400288b0000000000000000000000000000000000000000000000000000000060408201526060818403910152614de9565b909360208060019273ffffffffffffffffffffffffffffffffffffffff885116815201950196019590614e56565b9392909373ffffffffffffffffffffffffffffffffffffffff6080820195168152608060208201528251809552602060a0820193015f955b808710614f40575050611b279394507fb98bd0700000000000000000000000000000000000000000000000000000000060408201526060818403910152614de9565b909360208060019273ffffffffffffffffffffffffffffffffffffffff885116815201950196019590614efe565b91909392614f8e614f7f8284614a2a565b614f883061498b565b906159b8565b9473ffffffffffffffffffffffffffffffffffffffff861693843b1561023757614fe8915f9160405193849283927f4f1ef28600000000000000000000000000000000000000000000000000000000845260048401614d7c565b038183885af180156111705761522b575b50823b15610237576040517f8f2839700000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1660048201525f8160248183885af1801561117057615217575b50615080614da9565b6150a88661508d83613836565b9073ffffffffffffffffffffffffffffffffffffffff169052565b6150b0614da9565b906150c36150bd83613836565b60019052565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691823b15610237576040517f2d254dcd0000000000000000000000000000000000000000000000000000000081525f818061513a85873060048501614e1e565b038183885af1801561117057615203575b50823b1561023757615190925f92836040518096819582947f2d254dcd0000000000000000000000000000000000000000000000000000000084523060048501614ec6565b03925af180156111705763ffffffff926151c792610acc926151ef575b5073ffffffffffffffffffffffffffffffffffffffff1690565b91167f497996dac69d679583cab49a7b067859c8b623151a7001356974afe003bfb50f5f80a4565b806116ae5f6151fd93610315565b5f6151ad565b806116ae5f61521193610315565b5f61514b565b806116ae5f61522593610315565b5f615077565b806116ae5f61523993610315565b5f614ff9565b1561524657565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152fd5b8034036152d45790565b7f9f704120000000000000000000000000000000000000000000000000000000005f523460045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906040517fe4fe1d94000000000000000000000000000000000000000000000000000000008152602081600481865afa8015611170575f906153c6575b73ffffffffffffffffffffffffffffffffffffffff91501691821561539e57610246923390615ab3565b7f5373352a000000000000000000000000000000000000000000000000000000005f5260045ffd5b506020813d60201161540d575b816153e060209383610315565b810103126102375773ffffffffffffffffffffffffffffffffffffffff905161540881610219565b615374565b3d91506153d3565b9161545473ffffffffffffffffffffffffffffffffffffffff91615446604094979697606087526060870190611d12565b908582036020870152611d12565b9416910152565b906155c6916154f860608301516154d2615479608086015160ff1690565b6040805173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660208201529081019390935260ff1660608301528160808101610b25565b7f0000000000000000000000000000000000000000000000000000000000000000614c90565b916155c06020820151916155a6604082015161557a6040519586927f077f224a00000000000000000000000000000000000000000000000000000000602085015273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169160248501615415565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101855284610315565b5173ffffffffffffffffffffffffffffffffffffffff1690565b92614f6e565b50565b606060408201515191015151036155dc57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f50656e646c654272696467655054466163746f72793a205769726550744f667460448201527f506172616d73206c656e677468206d69736d61746368000000000000000000006064820152fd5b6040517e03000000000000000000000000000000000000000000000000000000000000602082015260028152611b27602282610315565b600361ffff6156a583615bc6565b16036157b1577fffffffffffffffffffffffffffffffff000000000000000000000000000000006040519260801b166020830152601082526156e8603083610315565b600361ffff6156f683615bc6565b16036157b15781519061ffff821161572d57610b2561571b61ffff611b279416615c34565b93600160405195869460208601615c48565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f36206269747300000000000000000000000000000000000000000000000000006064820152fd5b6157bd61ffff91615bc6565b7f3a51740d000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b9060208282031261023757815167ffffffffffffffff811161023757611b279201613a9b565b91909163ffffffff61581f61377e565b93168084526002602085015273ffffffffffffffffffffffffffffffffffffffff604051927f2b3197b90000000000000000000000000000000000000000000000000000000084523060048501521660248301526044820152600260648201525f8160848173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115611170575f916158d3575b506040830152565b6158ef91503d805f833e6158e78183610315565b8101906157e9565b5f6158cb565b91909163ffffffff61590561377e565b93168084526001602085015273ffffffffffffffffffffffffffffffffffffffff604051927f2b3197b90000000000000000000000000000000000000000000000000000000084523060048501521660248301526044820152600160648201525f8160848173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115611170575f916158d357506040830152565b90805115615a45576020815191015ff59073ffffffffffffffffffffffffffffffffffffffff8216156159e757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152fd5b61024660ff5f5460081c1661523f565b905f8073ffffffffffffffffffffffffffffffffffffffff615b9095946102469782604051978160208a01987f23b872dd000000000000000000000000000000000000000000000000000000008a521660248a0152166044880152606487015260648652615b22608487610315565b169260405194615b33604087610315565b602086527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65646020870152519082855af13d15615bbe573d91615b748361126a565b92615b826040519485610315565b83523d5f602085013e615d90565b8051908115918215615ba4575b5050615d05565b615bb79250602080918301019101615cf0565b5f80615b9d565b606091615d90565b6002815110615bd6576002015190565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7431365f6f75744f66426f756e64730000000000000000000000006044820152fd5b61ffff60019116019061ffff821161376657565b927fffff000000000000000000000000000000000000000000000000000000000000602060049695615ca17fff000000000000000000000000000000000000000000000000000000000000009582815194859201611cf1565b01937f0100000000000000000000000000000000000000000000000000000000000000855260f01b16600184015260f81b166003820152615ceb8251809360208685019101611cf1565b010190565b908160209103126102375751611b2781610839565b15615d0c57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b91929015615e0b5750815115615da4575090565b3b15615dad5790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b825190915015615e1e5750805190602001fd5b615e54906040519182917f08c379a000000000000000000000000000000000000000000000000000000000835260048301611d55565b0390fdfea2646970667358221220d4db78bc8e23fb833cd22cd8eddd484317717defbce796cd01d88b958ec5a49164736f6c634300081e0033",
1386
+ "linkReferences": {},
1387
+ "deployedLinkReferences": {}
1388
+ }