@black-market/sdk 0.9.0 → 0.10.0
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.
- package/README.md +19 -15
- package/dist/abyss.d.ts +4 -0
- package/dist/abyss.d.ts.map +1 -1
- package/dist/abyss.js +1 -0
- package/dist/abyss.js.map +1 -1
- package/dist/lifecycle/abi.d.ts +1 -0
- package/dist/lifecycle/abi.d.ts.map +1 -1
- package/dist/lifecycle/abi.js +1 -0
- package/dist/lifecycle/abi.js.map +1 -1
- package/dist/lifecycle/deployments/{hmm-dynamic-pool-hook-v1-20261011.d.ts → hmm-dynamic-pool-hook-v2-20261017.d.ts} +21 -21
- package/dist/lifecycle/deployments/{hmm-dynamic-pool-hook-v1-20261011.d.ts.map → hmm-dynamic-pool-hook-v2-20261017.d.ts.map} +1 -1
- package/dist/lifecycle/deployments/hmm-dynamic-pool-hook-v2-20261017.js +69 -0
- package/dist/lifecycle/deployments/{hmm-dynamic-pool-hook-v1-20261011.js.map → hmm-dynamic-pool-hook-v2-20261017.js.map} +1 -1
- package/dist/lifecycle/deployments/{hmm-fixed-pool-hook-v1-20261011.d.ts → hmm-fixed-pool-hook-v2-20261017.d.ts} +21 -21
- package/dist/lifecycle/deployments/{hmm-fixed-pool-hook-v1-20261011.d.ts.map → hmm-fixed-pool-hook-v2-20261017.d.ts.map} +1 -1
- package/dist/lifecycle/deployments/hmm-fixed-pool-hook-v2-20261017.js +69 -0
- package/dist/lifecycle/deployments/{hmm-fixed-pool-hook-v1-20261011.js.map → hmm-fixed-pool-hook-v2-20261017.js.map} +1 -1
- package/dist/lifecycle/hmm-abi.d.ts +4544 -0
- package/dist/lifecycle/hmm-abi.d.ts.map +1 -0
- package/dist/lifecycle/hmm-abi.js +299 -0
- package/dist/lifecycle/hmm-abi.js.map +1 -0
- package/dist/lifecycle/hmm.d.ts +19 -3
- package/dist/lifecycle/hmm.d.ts.map +1 -1
- package/dist/lifecycle/hmm.js +11 -7
- package/dist/lifecycle/hmm.js.map +1 -1
- package/dist/lifecycle/markets.d.ts.map +1 -1
- package/dist/lifecycle/markets.js +2 -0
- package/dist/lifecycle/markets.js.map +1 -1
- package/dist/lifecycle/presets.d.ts +2 -2
- package/dist/lifecycle/presets.js +4 -4
- package/docs/launch-lifecycle.md +135 -56
- package/examples/README.md +6 -4
- package/examples/hmm-launch-config.ts +4 -1
- package/package.json +2 -2
- package/src/abyss.ts +1 -0
- package/src/lifecycle/abi.ts +1 -0
- package/src/lifecycle/deployments/hmm-dynamic-pool-hook-v2-20261017.ts +71 -0
- package/src/lifecycle/deployments/hmm-fixed-pool-hook-v2-20261017.ts +71 -0
- package/src/lifecycle/hmm-abi.ts +302 -0
- package/src/lifecycle/hmm.ts +12 -7
- package/src/lifecycle/markets.ts +1 -0
- package/src/lifecycle/presets.ts +4 -4
- package/dist/lifecycle/deployments/hmm-dynamic-pool-hook-v1-20261011.js +0 -69
- package/dist/lifecycle/deployments/hmm-fixed-pool-hook-v1-20261011.js +0 -69
- package/src/lifecycle/deployments/hmm-dynamic-pool-hook-v1-20261011.ts +0 -71
- package/src/lifecycle/deployments/hmm-fixed-pool-hook-v1-20261011.ts +0 -71
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import type { Hex } from "viem";
|
|
2
|
+
import type { LaunchEnvelopeV2, AdapterRegistrationV1, ProfileRegistrationV1 } from "../schema.js";
|
|
3
|
+
|
|
4
|
+
// Preserved hooks/hmm-fixed-v2; admission 0x3f997e382b4f88ba3e44ac50c5794dc72afb6b390c9d58f311ad46b5527fea25.
|
|
5
|
+
// Generated by scripts/generate-hmm-presets.mjs; pinned readback block 91874655.
|
|
6
|
+
export const hmmFixedEnvelope = Object.freeze({
|
|
7
|
+
artifactDigest: "0xf1b6adc6e0321acb5a0febb1d4affb651155fa0b32ad483df209f51dc81b89be",
|
|
8
|
+
reviewManifestDigest: "0xe5c552d101e6fed9840debc99b102c14e20ca172453b7d43179b407fb01edc30",
|
|
9
|
+
configBoundsDigest: "0x72e0b2d542556d472a47f9c38b2c91079c72793af847dee77933f0eca203129d",
|
|
10
|
+
termsDigest: "0x27d1c2848ea4c705653408a8245b15d41e5f8163dd0f8220a175c9aa1ee52378",
|
|
11
|
+
topology: 2,
|
|
12
|
+
configVersion: 6,
|
|
13
|
+
economicVersion: 3,
|
|
14
|
+
capabilities: 123n,
|
|
15
|
+
flags: 0n,
|
|
16
|
+
callbackFlags: 6908,
|
|
17
|
+
callbackMask: 16383,
|
|
18
|
+
protocolTreasury: "0x961981916AB6575C3af3eeCecbf6A3b7Fad7C9e1",
|
|
19
|
+
protocolFeeDenominator: 6,
|
|
20
|
+
beneficiary: "0x7cb44b8693b3C350A2BcD4b681aF85365aa27783",
|
|
21
|
+
maximumDeveloperFeeBps: 0,
|
|
22
|
+
bounds: Object.freeze({
|
|
23
|
+
minimumTickSpacing: 1,
|
|
24
|
+
maximumTickSpacing: 32767,
|
|
25
|
+
maximumPositions: 32,
|
|
26
|
+
maximumOracleCardinality: 4096,
|
|
27
|
+
feeModeFlags: 3,
|
|
28
|
+
}),
|
|
29
|
+
graph: Object.freeze({
|
|
30
|
+
manager: "0x8366a39CC670B4001A1121B8F6A443A643e40951",
|
|
31
|
+
hookRoot: "0x0000000000000000000000000000000000000000",
|
|
32
|
+
oracleFactory: "0xe7feF2BC860B25bbdEB6F6AB96d88bAAa77ddad7",
|
|
33
|
+
locker: "0xa65f9415B50e966a67EA6Cc607aA899fE6cEC9F0",
|
|
34
|
+
collectorFactory: "0xCa3d4b8612815975DBF5Ccb5c49cc0D2C100a72e",
|
|
35
|
+
collectorDeployer: "0x50E3Be1389b8001bF1E76787Ccbd9e150EB44c37",
|
|
36
|
+
hookDeployer: "0xF43475DA6b379B5da8ad90F9b3886F6392B41480",
|
|
37
|
+
coreCodeHash: "0x9fb8f46c3b980b9db25dfdb487a69a308a86be145860269b4036a4e74480787b",
|
|
38
|
+
managerCodeHash: "0xbd3881180b547f5fe817545743cfb4343e96b1bc6640dcd70c106b0066e95626",
|
|
39
|
+
hookRuntimeCodeHash: "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
40
|
+
oracleFactoryCodeHash: "0x974fb5c72d91ccb99f1eb4679a5d4432c82bbaa0906b1c2917ec4da3499b7b98",
|
|
41
|
+
lockerCodeHash: "0x0322c569abddd951e410289d2b070fca302879a74f795a4d333cd0f9c2aa564b",
|
|
42
|
+
collectorFactoryCodeHash: "0x3b688b50ae22af0ca2074b8f34c96a1ab0cf86b465f758a133f1c15cf74e22ec",
|
|
43
|
+
collectorDeployerCodeHash: "0x7a0b4579c42e0c37e96b956a35dca5dcea1eb0c5bb5ff551f5413b4bc00afafe",
|
|
44
|
+
hookDeployerCodeHash: "0x8f8a4be2f2f0b32944bdff45a41adda6518d7a70b4b510512abe9bfab3acf714",
|
|
45
|
+
hookCreationCodeHash: "0xf1b6adc6e0321acb5a0febb1d4affb651155fa0b32ad483df209f51dc81b89be",
|
|
46
|
+
codeChunk0: "0xDAf66854b3fdaC9Dd993B6a082080D760468aC17",
|
|
47
|
+
codeChunk0Hash: "0xc9f8dba55d8bbd8f515b36a916e8f4aca4c06e60da41fb4eadfdd5e84b3fc4b5",
|
|
48
|
+
codeChunk1: "0x16899c471Dbe96B44432d070061158ef3b354732",
|
|
49
|
+
codeChunk1Hash: "0x1d1ba90e7518b4632315c4f80d7896793c9ed628a0bc4acbabb7becf6e537738",
|
|
50
|
+
sharedHookSalt: "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
51
|
+
}),
|
|
52
|
+
}) satisfies LaunchEnvelopeV2;
|
|
53
|
+
export const hmmFixedAdapter = Object.freeze({
|
|
54
|
+
implementation: "0x7635bb78cb0189a34e0140836bC4f17E62D7a8D4",
|
|
55
|
+
codeHash: "0x1349fa8996716d413e76d3e23211754639820cf422b963b8b44db36c7d54b0d1",
|
|
56
|
+
capabilities: 123n,
|
|
57
|
+
configVersion: 6,
|
|
58
|
+
enabled: true,
|
|
59
|
+
}) satisfies AdapterRegistrationV1;
|
|
60
|
+
export const hmmFixedRegistration = Object.freeze({
|
|
61
|
+
adapterId: "0xbd781bb9a1f7abbbfc7a56e88f383c04e0b97241651f156f195091c19bff7114",
|
|
62
|
+
configSchema: "0x51c5ca14c40012f78425cd1afb1ea77980da3fed0490a00911a8a4ed34792045",
|
|
63
|
+
dependencyDigest: "0x16e80d4dcc52914ed56583fe8b6bd619c7f28079b8d8cd2edf544028087250a2",
|
|
64
|
+
venue: "0x8366a39CC670B4001A1121B8F6A443A643e40951",
|
|
65
|
+
factory: "0x0000000000000000000000000000000000000000",
|
|
66
|
+
hook: "0x0000000000000000000000000000000000000000",
|
|
67
|
+
capabilities: 123n,
|
|
68
|
+
enabled: true,
|
|
69
|
+
}) satisfies ProfileRegistrationV1;
|
|
70
|
+
// 27985 bytes; keccak256 0xf1b6adc6e0321acb5a0febb1d4affb651155fa0b32ad483df209f51dc81b89be; append the 640-byte PoolBoundHookParametersV2 constructor, not the launch tail.
|
|
71
|
+
export const hmmFixedCreationCode: Hex = "0x61028060405234610b5257610280616d518038038091610021826102806110f8565b6102803912610b525760405161028081016001600160401b03811182821017610b695760405261005261028061111b565b8082526100606102a061111b565b602083018190526100726102c061111b565b60408401819052916100856102e061111b565b606085018190529061009861030061111b565b60808601819052916100ab61032061111b565b60a08701819052926100be61034061111b565b60c088018190526100d061036061112f565b908160e08a01526101006102800151928360020b8403610b52576101008a018490526103a051946001600160a01b0386168603610b52576101208b018690526101a09861016098610140988d6101276103c061112f565b9a8b9101528d61013a8c6102800161112f565b9b018b90528d61018061014e61040061113f565b9101528d61015f8d61028001611150565b9c018c90528d6101c0610173610440611150565b9101528d6101e061018561046061111b565b910152610480518015158103610b52576102008f01526104a0516102208f01526104c0516102408f01528d6102606101be6104e061113f565b9101526001600160a01b0316803b159c9095908d156110e5575b8d156110d2575b508c156110bf575b8c156110ac575b8c15611099575b8c15611087575b8c15611071575b508b1561105e575b508a15611048575b8a15611035575b8a15611022575b50891561100f575b508815610ffc575b8815610fe9575b50508615610fda575b508515610fcb575b8515610fba575b508415610fa2575b8415610f77575b508315610f65575b8315610f52575b50508115610f44575b508015610f0b575b8015610ee3575b8015610ecc575b8015610eb0575b8015610e91575b8015610e84575b8015610e71575b8015610e5c575b610ad457602081810151608083015160405163797a759360e11b81526001600160a01b0392831693929091169181600481865afa908115610b5e575f91610e22575b5060608401516001600160a01b0391821691161480159290610da9575b8215610d2d575b8215610cad575b508115610c31575b8115610bae575b50610ad457611afc613fff301603610b9f5760018060a01b0381511660805260018060a01b0360208201511660a05260018060a01b0360408201511660c05260018060a01b0360608201511660e05260018060a01b036080820151166101005260018060a01b0360a08201511661012052604051602081019060018060a01b03835116825260018060a01b03602084015116604082015260018060a01b03604084015116606082015260018060a01b03606084015116608082015260018060a01b0360808401511660a082015260018060a01b0360a08401511660c082015260018060a01b0360c08401511660e082015262ffffff60e08401511661010082015261010083015160020b61012082015260018060a01b036101208401511661014082015262ffffff6101408401511661016082015262ffffff6101608401511661018082015263ffffffff610180840151166101a082015260ff6101a0840151166101c082015260ff6101c0840151166101e082015260018060a01b036101e084015116610200820152610200830151151561022082015261022083015161024082015261024083015161026082015263ffffffff6102608401511661028082015261028081526104ff6102a0826110f8565b5190206101609081526102408201516101809081526101208301516001600160a01b039081166101a05261026084015163ffffffff166101c052918301519083015160181b66ffffffff0000001662ffffff91909116176101e05260c082015160a08301518216911681811091908215610b985780925b15610b9157505b8161020052806102205262ffffff60e08401511661010084015160020b916040519360a0850185811060018060401b03821117610b695760409081526001600160a01b039182168652918116602086019081529185019283526060850193845230608080870191825260a08088206101405296515f80549185166001600160a01b03199283161790559351600180549651975160b81b62ffffff60b81b1662ffffff60a01b9890991b979097169084166001600160d01b03199096169590951794909417959095179093559251600280549184169190941617835583015160c08401516101a085015160ff811694928416939190911691841015610b7d5762ffffff6101408601511660ff6101c0870151169060018060a01b036101e088015116936102008801511515956102208901519760405190610120820182811060018060401b03821117610b695760409081525f83526020830184905282810185905260608301919091526080820185905260a080830187905260c08084018a905260e084018b90526101009093018b9052600380546001600160a01b0319908116909155600480549091166001600160a01b03958616178155600580546001600160c81b0319169686169690961798821b60ff60a01b9081169990991760a89790971b62ffffff60a81b169690961796831b60ff60c01b1696909617909355600680546001600160a81b03191697831697909717971515851b90951696909617909455600795909555858201519086015190841690841611610240526102208501519051825163deee413560e01b815294850191909152909183916024918391165afa8015610b5e575f915f91610b0d575b5062ffffff82168015908115610b00575b508015610af2575b8015610ae3575b610ad4576016805464ffffffffff60c81b191660c89390931b62ffffff60c81b169290921760e09190911b61ffff60e01b1617905560c001516001600160a01b031661026052604051615bf2908161115f823960805181818161035801528181610612015281816108e401528181610a9901528181610b5a01528181610c7901528181610f6a0152818161105e015281816118ae01528181611a6701528181611c99015281816120200152818161215401528181612b810152818161381c015281816138a601528181614d9301528181614e3a0152615608015260a051818181611f3f01528181612a7b015281816137d701528181613a7b0152614b81015260c051818181610de90152613edd015260e05181818161074801528181612e1a015281816131c10152614bc80152610100518181816117d60152818161208c015281816123ff01528181612b5f01528181614133015281816141c7015281816141ff01528181614515015281816146710152818161479901526148770152610120518181816102bf01528181610b230152818161148c0152818161271001528181612dd30152614ad60152610140518181816103360152818161052001528181610f0f015281816110b40152818161188d01528181611ec901528181611fff015281816121c201528181612a1201528181612b3d01528181613ac7015281816140e6015281816144ed01528181614649015281816147710152818161484f0152614d71015261016051816120da01526101805181610cdd01526101a051818181611b9e0152611f0701526101c05181818161179c015261342b01526101e0518181816103930152818161173b01528181611c1301526121fc015261020051818181612baf0152614276015261022051818181612c91015281816136fd015261429e0152610240518181816109c801528181611de301526154fd01526102605181610a620152f35b63c52a9bd360e01b5f5260045ffd5b5061100061ffff82161161080e565b50600261ffff821610610807565b620d89e89150115f6107ff565b9150506040813d604011610b56575b81610b29604093836110f8565b81010312610b52576020610b3c8261112f565b9101519061ffff82168203610b5257905f6107ee565b5f80fd5b3d9150610b1c565b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b905061057d565b8192610576565b632a96f9e160e21b5f5260045ffd5b60405163dc4c90d360e01b81529150602090829060049082905afa908115610b5e575f91610bef575b5081516001600160a01b03918216911614155f61032c565b90506020813d602011610c29575b81610c0a602093836110f8565b81010312610b5257516001600160a01b0381168103610b52575f610bd7565b3d9150610bfd565b604051630b775e8f60e11b8152909150602081600481855afa908115610b5e575f91610c73575b5060208301516001600160a01b039182169116141590610325565b90506020813d602011610ca5575b81610c8e602093836110f8565b81010312610b5257610c9f9061111b565b5f610c58565b3d9150610c81565b604051636bdcb6a760e11b8152919250602090829060049082905afa908115610b5e575f91610cf3575b5060808301516001600160a01b0391821691161415905f61031d565b90506020813d602011610d25575b81610d0e602093836110f8565b81010312610b5257610d1f9061111b565b5f610cd7565b3d9150610d01565b604051630c7f7fb960e41b8152909250602081600481865afa908115610b5e575f91610d6f575b5060408401516001600160a01b039182169116141591610316565b90506020813d602011610da1575b81610d8a602093836110f8565b81010312610b5257610d9b9061111b565b5f610d54565b3d9150610d7d565b60405163dc4c90d360e01b8152909250602081600481865afa908115610b5e575f91610de8575b5083516001600160a01b03918216911614159161030f565b90506020813d602011610e1a575b81610e03602093836110f8565b81010312610b5257610e149061111b565b5f610dd0565b3d9150610df6565b90506020813d602011610e54575b81610e3d602093836110f8565b81010312610b5257610e4e9061111b565b5f6102f2565b3d9150610e30565b50602063ffffffff61026083015116116102b0565b5063ffffffff61026082015116156102a9565b50610240810151156102a2565b506101e081015160808201516001600160a01b0390811691161461029b565b506101e081015181516001600160a01b03908116911614610294565b506101e08101516001600160a01b0316301461028d565b5060ff6101c0820151161515801561028657506101e08101516001600160a01b031615610286565b5060ff6101c0820151168015159081610f25575b5061027f565b6004811091508115610f39575b505f610f1f565b600a9150115f610f32565b6001915060ff16115f610277565b62ffffff90811691161191505f8061026e565b620f424062ffffff8216119350610267565b73fffd8963efd1fc6a506488495d951d5263988d266001600160a01b0391909116101593505f61025f565b6401000276a36001600160a01b038216109450610258565b617fff91955060020b13935f610250565b945060018560020b1294610249565b62ffffff16151595505f610241565b6001600160a01b03161496505f80610238565b6001600160a01b03811630149850610231565b6001600160a01b0316301498505f610229565b6001600160a01b0316301499505f610221565b6001600160a01b03811684149a5061021a565b6001600160a01b03808216908316149a50610213565b6001600160a01b031630149a505f61020b565b6001600160a01b038083169116149b505f610203565b6001600160a01b038216159c506101fc565b6001600160a01b0381163b159c506101f5565b6001600160a01b0385163b159c506101ee565b6001600160a01b0384163b159c506101e7565b6001600160a01b03163b159c505f6101df565b6001600160a01b0384163b159d506101d8565b601f909101601f19168101906001600160401b03821190821017610b6957604052565b51906001600160a01b0382168203610b5257565b519062ffffff82168203610b5257565b519063ffffffff82168203610b5257565b519060ff82168203610b525756fe60806040526004361015610011575f80fd5b5f5f3560e01c80630268e29314613a4b5780630581555f14613a315780630885f7321461390857806321d0ee7014613890578063259982e5146138065780632b20e397146137c25780633382743814613798578063354a856314613779578063359b4f301461375b5780633e451d6a1461373457806342ea83e014612a3557806347f8496c146129fb57806350fb3a3a146129315780635341d8d7146129125780635524d548146128e4578063575e24b4146120fd5780635955d09a146120c257806360f89f2e14611fba578063654f631c14611f835780636fe7e6eb14611c58578063747a68cd14611c375780637dbeb94e14611bf7578063847211a614611bcd5780638bc801c114611b8857806391dd734614611a34578063921b0bed146118055780639759164a146117c05780639e5fe0621461177f578063a3f4bac714611762578063a86911141461171e578063aae49d7014611700578063ac4e4054146116e3578063ac5555aa146116b1578063b47b2fb114611002578063b6a8b0fa14610f51578063c5c51dca14610e6d578063c5fbb29814610e34578063c67046af14610e18578063c7f7fb9014610dd3578063ca266dfe14610d00578063ce1b8e4f14610cc5578063d2be662514610ca8578063dc4c90d314610c63578063dd71cea814610be7578063e16ccbb014610969578063e1b4af69146108cc578063e2e65ec1146108ab578063e3daf45614610801578063f11457c714610777578063f2f4eb2614610732578063f399150c14610485578063f9bc70e7146102ee578063fc0c546a146102a95763fd5b6d5b1461026c575f80fd5b346102a65760403660031901126102a6576020600261029c61028c613b45565b6102976004356140e4565b614268565b0154604051908152f35b80fd5b50346102a657806003193601126102a6576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346102a65760603660031901126102a6573068929eee149b4bd2126854146104785760ff60125460081c161561046a57610327614a3c565b61032f613d43565b5062ffffff7f0000000000000000000000000000000000000000000000000000000000000000917f000000000000000000000000000000000000000000000000000000000000000090610382848361499d565b50949091941661045b57506103b8847f000000000000000000000000000000000000000000000000000000000000000093614c8b565b90600435801515918282036102a657602061044e888863ffffffff8962ffffff8a8a6005549160ff8360a01c1696604051986103f38a613cba565b89526001600160a01b03168a8901526001600160801b031660408801526024356060880152608087015260a81c1660a085015262ffffff811660c085015260181c1660e083015261044381613b27565b610100820152614d18565b62ffffff60405191168152f35b63c52a9bd360e01b8252600482fd5b62820f3560e61b8152600490fd5b63ab143c0690526004601cfd5b50346102a65760a03660031901126102a6573068929eee149b4bd212685414610478573068929eee149b4bd212685560ff601554166107235780816104c8614090565b6003546001600160a01b03163303610715576008541580159061070a575b610559575b60408093505182815281602082015233907f4a93be8d0a356d70b54fdf016f78a2ed8b8a3c420952848eb4f4b2c4546405b6857f000000000000000000000000000000000000000000000000000000000000000092a33868929eee149b4bd212685582519182526020820152f35b505060405190602082016004356001600160a01b038116908190036106f55781526024356001600160a01b038116908190036106f557604084015260443562ffffff81168091036106f55760608401526064358060020b8091036106f55760808401526084356001600160a01b038116908190036106f55792829161060d9460a083015260a082526105ec60c083613d20565b81519020601455604051809481926348c8949160e01b835260048301613c39565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af19182156106fd57819261067c575b5060145461066d57506106688160208060409451830101910161407a565b6104eb565b63f7a632f560e01b8152600490fd5b908092503d8082843e61068f8184613d20565b8201916020818403126106f9578051906001600160401b0382116106f5570182601f820112156106f95780516106c481613fbb565b936106d26040519586613d20565b818552602082840101116106f5578060208093018386015e83010152905f61064a565b8280fd5b5080fd5b50604051903d90823e3d90fd5b50600c5415156104e6565b6282b42960e81b8352600483fd5b63558a1e0360e11b8152600490fd5b50346102a657806003193601126102a6576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346102a65760203660031901126102a6576107946004356140e4565b61010060165461ffff604051918181168352818160101c166020840152818160201c1660408401528060301c60020b606084015260018060401b038160481c16608084015260018060401b038160881c1660a08401528060c81c60020b60c084015260e01c1660e0820152f35b50346102a657806003193601126102a6576003546040516371ed7a2b60e11b815290602090829060049082906001600160a01b03165afa9081156108a057829161085a575b6040516001600160a01b0383168152602090f35b90506020813d602011610898575b8161087560209383613d20565b810103126106f957516001600160a01b03811681036106f957602091505f610846565b3d9150610868565b6040513d84823e3d90fd5b50346102a65760403660031901126102a6576020600161029c61028c613b45565b50346102a6576108db36613c63565b509294935050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303905061095b5760ff60155416610723573068929eee149b4bd212685414610478576109418261093c816140d4565b614763565b610949615459565b60405163e1b4af6960e01b8152602090f35b6282b42960e81b8152600490fd5b50346102a657806003193601126102a6573068929eee149b4bd212685414610478573068929eee149b4bd212685560ff601554166107235762010016546001600160a01b0381163303610bd95760165461ffff8160101c1615610bca577f000000000000000000000000000000000000000000000000000000000000000015610bbf576109fb9060301c60020b6153a0565b62010017549162010018549084620100175584620100185583610b0c575b81610a45575b50606093503868929eee149b4bd2126855604051928352602083015260020b6040820152f35b6040516304ade6db60e11b81529060209082908190610a949086907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169060048501614058565b0381887f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af18015610b01576060955015610a1f57610af39060203d602011610afa575b610aeb8183613d20565b810190614040565b505f610a1f565b503d610ae1565b6040513d87823e3d90fd5b6040516304ade6db60e11b815260208180610b55887f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168760048501614058565b0381897f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af18015610bb457610b95575b50610a19565b610bad9060203d602011610afa57610aeb8183613d20565b505f610b8f565b6040513d88823e3d90fd5b60301c60020b6109fb565b6329d9e10560e01b8352600483fd5b6282b42960e81b8252600482fd5b50346102a65760403660031901126102a65760243590610c086004356140e4565b61ffff821015610c4f57608082601701546040519063ffffffff811682528060201c60060b602083015260018060a01b038160581c16604083015260f81c15156060820152f35b634e487b7160e01b81526032600452602490fd5b50346102a657806003193601126102a6576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346102a657806003193601126102a65760206040516110008152f35b50346102a657806003193601126102a65760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102a65760203660031901126102a6578060a0916080604051610d2481613d05565b8281528260208201528260408201528260608201520152610d466004356140e4565b60405190610d5382613d05565b600180841b039054169081815260015462ffffff60208301600180871b038316815260408401908284881c168252606085019360b81c60020b84526080600180891b03600254169501948552604051958652600180881b039051166020860152511660408401525160020b6060830152600180841b039051166080820152f35b50346102a657806003193601126102a6576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346102a657806003193601126102a657602090604051908152f35b50346102a65760203660031901126102a657610e516004356140e4565b60165460405160889190911c6001600160401b03168152602090f35b50346102a657806003193601126102a65760125460ff168015610f495760ff60015b16610eb2610e9c82613ff1565b91610eaa6040519384613d20565b808352613ff1565b602082019290601f1901368437610f06575b90604051928392602084019060208552518091526040840192915b818110610eed575050500390f35b8251845285945060209384019390920191600101610edf565b805115610f35577f00000000000000000000000000000000000000000000000000000000000000008252610ec4565b634e487b7160e01b83526032600452602483fd5b60ff82610e8f565b50346102a657610f6036613c63565b50909350909190507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610ff4573068929eee149b4bd212685414610fe75760ff60155416610fd857610fc69350610fc1816140d4565b614841565b604051635b54587d60e11b8152602090f35b63558a1e0360e11b8452600484fd5b63ab143c0684526004601cfd5b6282b42960e81b8452600484fd5b50346102a6576101603660031901126102a65761101d613b5b565b60a03660231901126106f95760603660c31901126106f9576101243591610144356001600160401b0381116106f95761105a903690600401613b9b565b50507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169133839003610bd9573068929eee149b4bd2126854146116a45760ff60155416611695576110b26140c4565b7f00000000000000000000000000000000000000000000000000000000000000006011549163ffffffff831690811590811561167e575b5061166c575f190163ffffffff81116116585762ffffff16918360105563ffffffff191660115561111861463b565b61112061434e565b936001600160a01b038086169490611136613e15565b16850361164a576044356001600160a01b03811681036106f957945b8415158097819861163a575b506115ce575b508095806115bf575b6111ac575b60408661118b898060801b15159060801c151516615419565b815163b47b2fb160e01b81526001600160801b03909116600f0b6020820152f35b9394506001600160a01b038086169492939192916111e8916111cc613e15565b1686036115b3576111e38860801d5b600f0b614418565b614446565b9485156111725760ff60055460c01c163068929eee149b4bd2126854146115a6573068929eee149b4bd212685561121e86614268565b9161122f8354600285015490614938565b8361123982614923565b8a11611595575b5050508061155a575081925b6112568488614938565b600354604051632637166b60e11b815290602090829060049082906001600160a01b03165afa908115610b01578591611504575b506112b26127106112a56112da9461ffff6003951690614963565b048061148a575b8a614938565b936112be858254614976565b8155600181016112cf888254614976565b905501928354614976565b8255604051627eeac760e11b815291602083806112fb8a3060048401614983565b0381855afa928315611432578493611456575b50813b1561145257604051630ab714fb60e11b81528481806113358c8c3060048501614058565b038183875af18015610b015790859161143d575b505060206040518093627eeac760e11b8252818061136b8c3060048401614983565b03915afa9182156114325784926113fa575b50878383109384156113ed575b505082156113e2575b50506113d3575091604094915f516020615b925f395f51905f528661118b958151908882526020820152a33868929eee149b4bd2126855925f8080611172565b63104eed1d60e31b8152600490fd5b541190505f80611393565b830314159250875f61138a565b9091506020813d60201161142a575b8161141660209383613d20565b810103126114265751905f61137d565b5f80fd5b3d9150611409565b6040513d86823e3d90fd5b8161144791613d20565b61145257835f611349565b8380fd5b9092506020813d602011611482575b8161147260209383613d20565b810103126114265751915f61130e565b3d9150611465565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168a036114ec576114c8816201001754614976565b62010017555b89895f516020615bd25f395f51905f526020604051858152a36112ac565b6114fa816201001854614976565b62010018556114ce565b90506020813d602011611552575b8161151f60209383613d20565b8101031261154e576112b26127106112a56112da9461ffff611542600396613eaf565b9550509450505061128a565b8480fd5b3d9150611512565b6115649087614945565b607d810290808204607d149015171561158157606490049261124c565b634e487b7160e01b83526011600452602483fd5b61159e92614e29565b5f8083611240565b63ab143c0683526004601cfd5b6111e388600f0b6111db565b506115c985614393565b61116d565b60e435906115df866111e384614418565b806115ec575b5050611164565b611610916001600160a01b03611600613e15565b1603611630578960801d92613fd6565b90600f0b03611621575f80806115e5565b63161b48a960e21b8152600490fd5b89600f0b92613fd6565b6116449150614393565b5f61115e565b611652613e15565b94611152565b634e487b7160e01b84526011600452602484fd5b6001620787ab60e51b03198452600484fd5b905061168d6010549184615341565b14155f6110e9565b63558a1e0360e11b8252600482fd5b63ab143c0682526004601cfd5b50346102a65760203660031901126102a6576116ce6004356140e4565b602060ff60125460081c166040519015158152f35b50346102a657806003193601126102a6576020604051611afc8152f35b50346102a657806003193601126102a6576020604051620f42408152f35b50346102a657806003193601126102a657602060405163ffffffff7f000000000000000000000000000000000000000000000000000000000000000060181c168152f35b50346102a657806003193601126102a6576020604051613fff8152f35b50346102a657806003193601126102a657602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102a657806003193601126102a6576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346102a65760403660031901126102a6576024356001600160401b0381116106f957366023820112156106f9576004810135906001600160401b0382116106f5573660248360051b830101116106f5576118616004356140e4565b6016549261ffff8460101c16908115611a25574263ffffffff169461ffff81169060301c60020b6118d27f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000614c8b565b926118dc87613ff1565b976118ea604051998a613d20565b8789526118f688613ff1565b60208a019790601f190136893761190c89613ff1565b9761191a604051998a613d20565b8989526119268a613ff1565b60208a019190601f1901368337845b8b81101561199c5760248160051b8501013563ffffffff8116810361199857908b61198c8f8390818f8f8f918f9161197d938f9360019c611975956151eb565b929096614008565b90878060a01b03169052614008565b9060060b905201611935565b8680fd5b8a8d84888560405194859460408601906040875251809152606086019290845b818110611a09575050506020908583038287015251918281520192915b8181106119e7575050500390f35b82516001600160a01b03168452859450602093840193909201916001016119d9565b825160060b8552889750602094850194909201916001016119bc565b6329d9e10560e01b8152600490fd5b50346102a65760203660031901126102a6576004356001600160401b0381116106f957611a65903690600401613b9b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610715576014548015908115611b44575b50611b355782601455810160a0828203126106f557611ac091613d96565b90611acd60a083206140e4565b60ff60125460081c161561046a57611b3182611b08611af460018060a01b03835116614bff565b6020909201516001600160a01b0316614bff565b604051916020830152604082015260408152611b25606082613d20565b60405191829182613c39565b0390f35b63f7a632f560e01b8352600483fd5b9050611b4f82613fbb565b611b5c6040519182613d20565b82815260208101903684860111611b845783858337856020858301015251902014155f611aa2565b8580fd5b50346102a657806003193601126102a6576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346102a65760203660031901126102a657611bea6004356140e4565b6020601354604051908152f35b50346102a657806003193601126102a657602060405162ffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102a65760203660031901126102a6576020600361029c610297613b5b565b50346102a6576101003660031901126102a657611c73613b5b565b9060a03660231901126102a657611c88613b71565b9160e435928360020b84036106f5577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610715573068929eee149b4bd2126854146115a657604051611ce481613d05565b6024356001600160a01b038116810361154e5781526044356001600160a01b038116810361154e57602082015260643562ffffff8116810361154e5760408201526084358060020b810361154e57606082015260a4356001600160a01b038116810361154e578160a0916080611d5c940152206140e4565b6012549160ff831615928315611f75575b508215611f3d575b508115611f05575b5061046a57602091604051611d9181613cea565b4263ffffffff908116825284820184815260408301859052600160608401529151915166ffffffffffffff16851b911617605883901b600160581b600160f81b031617600160f81b17601755601654907f000000000000000000000000000000000000000000000000000000000000000015611eff57611e10906153a0565b905b60309190911b62ffffff60301b1662010000600160c81b0319909116174360481b600160481b600160881b03168181174260881b600160881b600160c81b0316908117640100010000908117601681905593179290919060029060e01c61ffff16808211611ef7575b5061ffff861b90861b169261ffff861b191617171760165561010061ff00196012541617601255604051907febcc9ffea17e08841d7588f2ecd87720e1cfb444bb3b5e662c4a5005c3c94ab27f00000000000000000000000000000000000000000000000000000000000000009180a2636fe7e6eb60e01b8152f35b90505f611e7b565b90611e12565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081169116141590505f611d7d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081169116141591505f611d75565b60081c60ff1692505f611d6d565b50346102a65760203660031901126102a657604061ffff611fa5600435613ebe565b62ffffff849392935193168352166020820152f35b50346102a657366003190160e081126106f95760a0136102a65760a4356001600160a01b038116908190036106f957611ff1613b71565b90611ffa614090565b6120447f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061499d565b50506003546001600160a01b031690921480159391925061208a575b508115612078575b5061046a57612075614a3c565b80f35b6001600160a01b03161590505f612068565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081169116141591505f612060565b50346102a657806003193601126102a65760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346114265761014036600319011261142657612118613b5b565b60a03660231901126114265760603660c319011261142657610124356001600160401b03811161142657612150903690600401613b9b565b50507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0381169290338490036128d6573068929eee149b4bd2126854146128265760ff601554166128c75762ffffff906121af6140c4565b6121b7614240565b6121bf613d43565b507f0000000000000000000000000000000000000000000000000000000000000000906121ec828261499d565b5094909194166128b857612221837f000000000000000000000000000000000000000000000000000000000000000093614c8b565b9060e4359160c4359384151594858103611426575063ffffffff6005549162ffffff60ff8460a01c16936040519a6122588c613cba565b8a8c526001600160a01b031660208c01526001600160801b0390951660408b0190815260608b0188905260808b0189905260a89590951c1660a08a015262ffffff811660c08a015260181c1660e08801526122b281613b27565b610100870152516011546001600160801b03909116979063ffffffff166128a9576122e8906122e2875197614d18565b96615341565b60105562ffffff8516966001880163ffffffff81116128015763ffffffff1663ffffffff19601154161760115560018060401b0360165460481c164303612899575b505061233461434e565b935f9615158061288a575b612874575b506040516364b3357d60e11b8152916024356001600160a01b038116908190036114265760048401526044356001600160a01b0381169081900361142657602484015260643562ffffff81168091036114265760448401526084358060020b80910361142657606484015260a4356001600160a01b0381169081900361142657608484015260a483015260c4820152610104356001600160a01b038116908190036114265760e48201526101048101859052602081610124817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156126cf575f90612840575b61245f9150612443613ea0565b1561283957805b612452613ea0565b1561283357505f906144df565b83612486575b60608484604051916315d7892d60e21b835260801b60208301526040820152f35b60ff60055460c01c16913068929eee149b4bd212685414612826573068929eee149b4bd21268556001600160a01b038116926124c184614268565b916124d28354600285015490614938565b836124dc82614923565b8911612815575b505050806127da57505f955b60046124fb8888614938565b600354604051632637166b60e11b81529260209184919082906001600160a01b03165afa9182156126cf575f92612788575b5061255561271061254860039361ffff612572961690614963565b048061270e575b89614938565b93612561858254614976565b8155600181016112cf8b8254614976565b8255604051627eeac760e11b81529160208380612593883060048401614983565b0381855afa9283156126cf575f936126da575b50813b1561142657604051630ab714fb60e11b81525f81806125cd8b8a3060048501614058565b038183875af180156126cf576126ba575b5060206040518093627eeac760e11b825281806125ff8a3060048401614983565b03915afa918215610bb4578692612686575b5086838310938415612679575b5050821561266e575b505061265f575f516020615b925f395f51905f5260406060968151908782526020820152a33868929eee149b4bd21268555f80612465565b63104eed1d60e31b8352600483fd5b541190505f80612627565b830314159250865f61261e565b9091506020813d6020116126b2575b816126a260209383613d20565b810103126114265751905f612611565b3d9150612695565b6126c79196505f90613d20565b5f945f6125de565b6040513d5f823e3d90fd5b9092506020813d602011612706575b816126f660209383613d20565b810103126114265751915f6125a6565b3d91506126e9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031688036127705761274c816201001754614976565b62010017555b87875f516020615bd25f395f51905f526020604051858152a361254f565b61277e816201001854614976565b6201001855612752565b91506020823d6020116127d2575b816127a360209383613d20565b810103126114265761255561271061254860039361ffff6127c661257297613eaf565b9650509350505061252d565b3d9150612796565b6127e49086614945565b607d810290808204607d14901517156128015760649004956124ef565b634e487b7160e01b5f52601160045260245ffd5b61281e92614e29565b5f80836124e3565b63ab143c065f526004601cfd5b906144df565b5f9061244a565b506020813d60201161286c575b8161285a60209383613d20565b810103126114265761245f9051612436565b3d915061284d565b8196506111e361288392614418565b945f612344565b5061289485614393565b61233f565b6128a291615498565b5f8061232a565b6307f8785560e51b5f5260045ffd5b63c52a9bd360e01b5f5260045ffd5b63558a1e0360e11b5f5260045ffd5b6282b42960e81b5f5260045ffd5b34611426576020366003190112611426576129006004356140e4565b602060ff601254166040519015158152f35b34611426575f3660031901126114265760206201001854604051908152f35b346114265760403660031901126114265760043560243561ffff811690818103611426573068929eee149b4bd2126854146128265790612970836140e4565b6016549061ffff8260e01c168091116129f1575b5061ffff6129979160201c1691826142e4565b6016805461ffff60201b1916602083901b61ffff60201b1617905561ffff168082036129bf57005b7f04f592d3848fffa22f73de92a2fd8da837e6d597f468af77c6fc619b478362ae9160409182519182526020820152a2005b915061ffff612984565b34611426575f3660031901126114265760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346114265736600319016101c081126114265760a013611426576101203660a3190112611426573068929eee149b4bd212685414612826573068929eee149b4bd21268557f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316338190036128d657604051612ab781613d05565b6004356001600160a01b03811681036114265781526024356001600160a01b038116810361142657602082015260443562ffffff811681036114265760408201526064358060020b81036114265760608201526084356001600160a01b0381168103611426578160a0916080612b2f940152206140e4565b6012549060ff8216613725577f0000000000000000000000000000000000000000000000000000000000000000917f0000000000000000000000000000000000000000000000000000000000000000917f0000000000000000000000000000000000000000000000000000000000000000612baa858261499d565b5050507f000000000000000000000000000000000000000000000000000000000000000090813b159081156136fb575b81156136e8575b5080156136c0575b8015613696575b8015613665575b8015613641575b8015613621575b80156135f6575b80156135d3575b80156135c4575b80156135b4575b8015613598575b801561357f575b8015613563575b6128b857612c42613dff565b916001600160a01b031690612c5683615031565b51928360a01c611426576040516371a9730560e01b81525f92602082600481865afa1561355a5760203d106114265781516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811693921691903d601f19810182116001600160401b0383111761142657602082843e8251906001600160401b03821190839003601f190160051c8211176114265760021461353b575b5050612d0583615059565b518060a01c611426576001600160a01b03168514801594906134f7575b84156134b6575b8415613486575b8415613453575b84156133fd575b84156133d7575b8415613396575b8415613363575b8415613329575b84156132f5575b84156132b0575b84156132a7575b50831561329d575b831561328a575b8315613274575b831561325e575b831561324b575b8315613238575b508215613225575b50811561320d575b81156131f4575b506128b857612dbf82615081565b51918260a01c611426576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116931683148015906131ac575b8015613172575b6128b85760405163086fce0d60e11b81527f000000000000000000000000000000000000000000000000000000000000000093909261016084600481885afa15613169576101603d1061142657604084015190602085019460058311865160201c176114265760608101976101408201895b818110613158575050815198891594851561314c575b508415613140575b508315613131575b508215613122575b8215613108575b82156130f9575b50506128d6576101c063ffffffff60249451169460405194858092636373dff160e11b82528960048301525afa156130f0576101c03d106114265760a08301519460058611600160808601511117604085015160a01c176114265760c08401906101208501825b8181106130df57506101a08601905b8181106130ce575050845114958615966130c2575b5085156130b6575b5050831561309c575b50821561308c575b50506128d657612f6b6101a435613ebe565b6016549162ffffff8360c81c60020b911660020b1491821592613075575b50506128b85760046020612f9b613dff565b6040516306704e8760e31b815292839182905afa601f3d1116156114265751908160a01c61142657604051637f5a7c7b60e01b8152602081600481865afa601f3d11161561142657518060a01c6114265730036128b85762010016919091556001906001600160a01b0361300d613dff565b16828060a01b0319600354161760035560ff19161760125560018060a01b03613034613dff565b6001600160a01b03909216929116907ffafdbdd88ac30f0aa936e576be61816ea751908540523fa81b80c4a406ad7bec5f80a43868929eee149b4bd2126855005b61ffff919250819060e01c16911614158480612f89565b6101400151111590508480612f59565b60e08201516001600160a01b039091161415925086612f51565b51141593508780612f48565b60011415955089612f40565b805160201c61142657602001612f2b565b805160a01c61142657602001612f1c565b823d5f823e3d90fd5b60e00151141590508980612eb5565b60c08101516005546001600160a01b031614159250612eae565b60a08101518414159250612ea7565b6080820151141592508b612e9f565b5181141593508c612e97565b6001141594508d612e8f565b805160a01c61142657602001612e79565b833d5f823e3d90fd5b5060405163b3f05b9760e01b8152602081600481855afa156131a45760203d1061142657516001811115612e07575f80fd5b3d5f823e3d90fd5b506131b6816150a9565b518060a01c611426577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161415612e00565b6006546001600160a01b03918216911614905087612db1565b6006546001600160a01b038581169116149150612daa565b6001600160a01b03851614915088612da2565b6001600160a01b03861614925089612d9a565b6001600160a01b03861685149350612d93565b6001600160a01b03868116908a16149350612d8c565b6001600160a01b03868116908416149350612d85565b6001600160a01b03861630149350612d7e565b853b159350612d77565b1593508a612d6f565b9350604051630961712f60e01b81528a60048201526020816024818d5afa156131a45760203d1061142657518060a01c611426576001600160a01b0316151593612d68565b9350604051635c0af38360e01b81528a60048201526020816024818d5afa156131a45760203d106114265751151593612d61565b9350604051630323715f60e11b81528a60048201526020816024818d5afa156131a45760203d106114265751600181116114265793612d5a565b935060405162e568cf60e71b81528a60048201526020816024818d5afa156131a45760203d106114265751151593612d53565b604051630b775e8f60e11b81529094506020816004818d5afa156131a45760203d1061142657518060a01c611426576001600160a01b031687141593612d4c565b93506133e289615059565b518060a01c611426576001600160a01b031685141593612d45565b604051634f2ff03160e11b8152909450602081600481875afa156131a45760203d10611426575163ffffffff7f000000000000000000000000000000000000000000000000000000000000000016141593612d3e565b60405163182148ef60e01b815290945060a081600481875afa156131a45760a03d106114265760a08b9120141593612d37565b604051631f06e1a760e11b8152909450602081600481875afa156131a45760203d1061142657518a141593612d30565b604051636620eee760e11b8152909450602081600481875afa156131a45760203d1061142657518060a01c611426576001600160a01b031630141593612d29565b604051636bdcb6a760e11b8152909450602081600481875afa156131a45760203d1061142657518060a01c611426576001600160a01b038a81169116141593612d22565b604091929550602001823e838260208301511491511416928a80612cfa565b503d5f823e3d90fd5b5061356c613dff565b6001600160a01b03838116911614612c36565b50306001600160a01b03613591613dff565b1614612c2f565b506135a1613dff565b6001600160a01b03868116911614612c28565b506135bd613dff565b3b15612c21565b506007546101a4351415612c1a565b506101843580151590818103611426575060ff60065460a01c1615151415612c13565b50610164356001600160a01b0381169081810361142657506006546001600160a01b03161415612c0c565b506101443560ff81168091036114265760ff60055460c01c161415612c05565b506101243562ffffff81168091036114265762ffffff60055460a81c161415612bfe565b506101043560028110156114265760ff60055460a01c169061368682613b27565b61368f81613b27565b1415612bf7565b5060e4356001600160a01b0381169081810361142657506005546001600160a01b03161415612bf0565b5060c4356001600160a01b0381169081810361142657506001600160a01b0386161415612be9565b6001600160a01b03161515905087612be1565b7f00000000000000000000000000000000000000000000000000000000000000003b159150612bda565b630ea075bf60e21b5f5260045ffd5b34611426576020366003190112611426576020613752610297613b5b565b54604051908152f35b3461142657604036600319011261142657602061375261028c613b45565b34611426575f3660031901126114265760206201001754604051908152f35b34611426575f3660031901126114265762010016546040516001600160a01b039091168152602090f35b34611426575f366003190112611426576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346114265761381436613bc8565b5091929091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036128d6573068929eee149b4bd21268541461282657816138719161386c61387e956140d4565b61410c565b613879614240565b614d5e565b60405163259982e560e01b8152602090f35b346114265761389e36613bc8565b5091929091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036128d6573068929eee149b4bd21268541461282657816138799161386c6138f6956140d4565b60405163021d0ee760e41b8152602090f35b3461142657602036600319011261142657613921613d43565b5061392d6004356140e4565b61012060405161393c81613cba565b6003546001600160a01b03908116825260045481166020830190815260055491821660408401908152909160608401919060ff9060a081901c821661398081613b27565b845262ffffff60a882901c81166080880190815260c092831c841660a0808a019182526006546001600160a01b03808216968c01968752911c8616151560e08b019081526007546101008c01908152604080519c5184168d529a51831660208d01529751909116988a0198909852955194969592946139fe81613b27565b606089015251166080870152511660a0850152516001600160a01b031660c084015251151560e083015251610100820152f35b34611426575f3660031901126114265760206040515f8152f35b346114265760a0366003190112611426573068929eee149b4bd212685414612826573068929eee149b4bd21268557f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036128d657613ab1614090565b601354613b185742601355613ac46153b3565b427f00000000000000000000000000000000000000000000000000000000000000007ff1bac50d2c6f6c83cb8ff6fac488b03adc5fb0cc9fae30db2077588d5d9e5fbd5f80a33868929eee149b4bd2126855005b6304c7cf6760e51b5f5260045ffd5b60021115613b3157565b634e487b7160e01b5f52602160045260245ffd5b602435906001600160a01b038216820361142657565b600435906001600160a01b038216820361142657565b60c435906001600160a01b038216820361142657565b35906001600160a01b038216820361142657565b9181601f84011215611426578235916001600160401b038311611426576020838186019501011161142657565b90610160600319830112611426576004356001600160a01b0381168103611426579160a060231982011261142657602491608060c3198301126114265760c49161014435906001600160401b03821161142657613c2791600401613b9b565b9091565b35908160020b820361142657565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b610120600319820112611426576004356001600160a01b0381168103611426579160a06023198301126114265760249160c4359160e4359161010435906001600160401b03821161142657613c2791600401613b9b565b61012081019081106001600160401b03821117613cd657604052565b634e487b7160e01b5f52604160045260245ffd5b608081019081106001600160401b03821117613cd657604052565b60a081019081106001600160401b03821117613cd657604052565b601f909101601f19168101906001600160401b03821190821017613cd657604052565b60405190613d5082613cba565b5f610100838281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e08201520152565b359062ffffff8216820361142657565b91908260a091031261142657604051613dae81613d05565b6080613dfa818395613dbf81613b87565b8552613dcd60208201613b87565b6020860152613dde60408201613d86565b6040860152613def60608201613c2b565b606086015201613b87565b910152565b60a4356001600160a01b03811681036114265790565b6024356001600160a01b03811681036114265790565b6080906001600160a01b03613e3f82613b87565b1683526001600160a01b03613e5660208301613b87565b16602084015262ffffff613e6c60408301613d86565b166040840152613e7e60608201613c2b565b60020b60608401526001600160a01b0390613e9a908301613b87565b16910152565b60c43580151581036114265790565b519061ffff8216820361142657565b6040805163deee413560e01b81526004810192909252909190826024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156126cf575f925f92613f6c575b508162ffffff8416908115918215613f5f575b508115613f50575b8115613f40575b506128b857565b611000915061ffff16115f613f39565b600261ffff8216109150613f32565b620d89e81091505f613f2a565b925090506040823d604011613fb3575b81613f8960409383613d20565b810103126114265781519162ffffff83168303611426576020613fac9101613eaf565b905f613f17565b3d9150613f7c565b6001600160401b038111613cd657601f01601f191660200190565b9190915f838201938412911290801582169115161761280157565b6001600160401b038111613cd65760051b60200190565b805182101561401c5760209160051b010190565b634e487b7160e01b5f52603260045260245ffd5b61ffff82101561401c5701905f90565b90816020910312611426575180151581036114265790565b6001600160a01b03918216815291166020820152604081019190915260600190565b9190826040910312611426576020825192015190565b6140a660a06140a0366004613d96565b206140e4565b60ff60125460081c16156140b657565b62820f3560e61b5f5260045ffd5b6140a660a06140a0366024613d96565b60a06140a06140a6923690613d96565b7f0000000000000000000000000000000000000000000000000000000000000000036140b657565b9060ff60155416809181926141f2575b506128c75760135461416c57506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811691160361415d57565b637cd5a0ad60e01b5f5260045ffd5b60ff60065460a01c1691826141ba575b82614199575b505061418a57565b630af9fb3360e21b5f5260045ffd5b90915081156141ab575b505f80614182565b9050620100165414155f6141a3565b6001600160a01b038082167f00000000000000000000000000000000000000000000000000000000000000009091161415925061417c565b6001600160a01b038481167f00000000000000000000000000000000000000000000000000000000000000009091161480159250614232575b505f61411c565b60409150013515155f61422b565b60155460ff8160081c16614265576101009061425a614a3c565b61ff00191617601555565b50565b6001600160a01b03908116907f00000000000000000000000000000000000000000000000000000000000000001681146142de577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146142d95762820f3560e61b5f5260045ffd5b600c90565b50600890565b61ffff811690811561433f5761ffff831691821115614339576017905b8261ffff8216106143125750505090565b61ffff81101561401c5760018161ffff9284018263ffffffff198254161790550116614301565b91505090565b6329d9e10560e01b5f5260045ffd5b60c4358015159081810361142657505f60e435120361437d576024356001600160a01b03811681036114265790565b6044356001600160a01b03811681036114265790565b600554600160ff8260a01c166143a881613b27565b036143c8576001600160a01b03165b6001600160a01b0391821691161490565b5060c435801515810361142657156143f1576024356001600160a01b03811681146143b7575f80fd5b6044356001600160a01b03811681146143b7575f80fd5b600160ff1b8114612801575f0390565b600160ff1b8114614437575f8112156144345761443490614408565b90565b637e2df70960e11b5f5260045ffd5b9062ffffff169081810291620f42408215828486041417021561447d575050620f42409004905b60016001607f1b03821161443757565b620f4240905f198184098481108501900392099080620f424011156144d257828211900360fa1b910360061c177fde8f6cefed634549b62c77574f722e1ac57e23f24d8fd5cb790fb65668c26139029061446d565b63ae47f7025f526004601cfd5b60405162e568cf60e71b81527f0000000000000000000000000000000000000000000000000000000000000000600482018190527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693909291602081602481885afa9081156126cf575f91614609575b5015614603576015805460ff191660011790556040516381f8a9d160e01b815291614587600484016024613e2b565b60a483015260c482015260408160e4815f875af180156126cf575f516020615bb25f395f51905f52916040915f915f916145d4575b5060ff196015541660155582519182526020820152a3565b90506145f69150823d84116145fc575b6145ee8183613d20565b81019061407a565b5f6145bc565b503d6145e4565b50505050565b90506020813d602011614633575b8161462460209383613d20565b8101031261142657515f614558565b3d9150614617565b60405162e568cf60e71b81527f0000000000000000000000000000000000000000000000000000000000000000600482018190527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691602081602481865afa9081156126cf575f91614731575b501561472d576015805460ff191660011790556040516381f8a9d160e01b81526146df600482016024613e2b565b5f60a48201525f60c482015260408160e4815f875af180156126cf575f516020615bb25f395f51905f52916040915f915f916145d4575060ff196015541660155582519182526020820152a3565b5050565b90506020813d60201161475b575b8161474c60209383613d20565b8101031261142657515f6146b1565b3d915061473f565b60405162e568cf60e71b81527f0000000000000000000000000000000000000000000000000000000000000000600482018190527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316929091602081602481875afa9081156126cf575f9161480f575b501561480a576015805460ff191660011790556040516381f8a9d160e01b8152906146df906004830190613e2b565b505050565b90506020813d602011614839575b8161482a60209383613d20565b8101031261142657515f6147db565b3d915061481d565b60405162e568cf60e71b81527f0000000000000000000000000000000000000000000000000000000000000000600482018190527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169490939091602081602481895afa9081156126cf575f916148f1575b50156148ea576015805460ff191660011790556040516381f8a9d160e01b815292614587906004850190613e2b565b5050505050565b90506020813d60201161491b575b8161490c60209383613d20565b8101031261142657515f6148bb565b3d91506148ff565b60016001607f1b039081039190821161280157565b9190820391821161280157565b811561494f570490565b634e487b7160e01b5f52601260045260245ffd5b8181029291811591840414171561280157565b9190820180921161280157565b6001600160a01b0391821681529116602082015260400190565b91906149aa60209161500b565b604051631e2eaeaf60e01b8152600481019190915292839060249082906001600160a01b03165afa9182156126cf575f92614a08575b506001600160a01b0382169160a081901c60020b9162ffffff60b883901c81169260d01c1690565b9091506020813d602011614a34575b81614a2460209383613d20565b810103126114265751905f6149e0565b3d9150614a17565b60ff60155460081c16614bfd576003546001600160a01b0316614a5e81615031565b51908160a01c611426576040519063537df88f60e11b8252600482015260c081602481855afa156131a45760c03d106114265760608101805160a01c825160a01c176114265760a0820190815192608081019384511760101c6114265760c08101604052614acb85615081565b518060a01c611426577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161480159590614bb2575b508415614b7d575b8415614b70575b8415614b63575b508315614b59575b508215614b4e575b8215614b41575b50506128b857565b5190511090505f80614b39565b805115159250614b32565b511592505f614b2a565b604001511593505f614b22565b6020810151159450614b1b565b80517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614159450614b14565b614bbd9195506150a9565b518060a01c611426577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161415935f614b0c565b565b6001600160a01b03811690614c1382614268565b908154908115614c835792614c59835f9384614c719897614c476002614bfd99019185614c41845487614938565b91614e29565b81600185018054988996555555614938565b6006549095869390916001600160a01b0316836150d1565b6003546001600160a01b0316906150d1565b505050505f90565b90614c959061500b565b6003810180911161280157604051631e2eaeaf60e01b8152600481019190915290602090829060249082906001600160a01b03165afa9081156126cf575f91614ce6575b506001600160801b031690565b90506020813d602011614d10575b81614d0160209383613d20565b8101031261142657515f614cd9565b3d9150614cf4565b906060820151600160ff1b146144375762ffffff60c08160a085015116930151168210614d4157565b6302cce67760e31b5f5260045ffd5b358060020b81036114265790565b6040810135158015614e0f575b614265577f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000614dbc838261499d565b5050929050614dca81614d50565b60020b8360020b908112918215614df5575b505061480a57614bfd92614def91614c8b565b90615498565b614e03919250602001614d50565b60020b13155f80614ddc565b506016544360489190911c6001600160401b031614614d6b565b5f8315614603576001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811690831685614e6983836155d0565b10614ffc576003850190614e7e878354614938565b8255604051627eeac760e11b81529260208480614e9f853060048401614983565b0381845afa9384156126cf575f94614fc8575b50803b1561142657604051637a94c56560e11b81525f8180614ed98c873060048501614058565b038183865af180156126cf57614fa9575b50614f0e92916020916040518080968194627eeac760e11b83523060048401614983565b03915afa918215611432578492614f75575b5086838311938415614f67575b50508215614f5c575b50506113d35750614f5891614f4f8460029330906155f5565b01918254614976565b9055565b541190505f80614f36565b83900314159250865f614f2d565b9091506020813d602011614fa1575b81614f9160209383613d20565b810103126114265751905f614f20565b3d9150614f84565b602091955091614fbd5f614f0e9594613d20565b5f9591509192614eea565b9093506020813d602011614ff4575b81614fe460209383613d20565b810103126114265751925f614eb2565b3d9150614fd7565b6365169c1d60e01b5f5260045ffd5b60405160208101918252600660408201526040815261502b606082613d20565b51902090565b90602060049260405193848092630d96a1bf60e21b82525afa1561355a5760203d1061142657565b9060206004926040519384809263dc4c90d360e01b82525afa1561355a5760203d1061142657565b9060206004926040519384809263514526c360e11b82525afa1561355a5760203d1061142657565b9060206004926040519384809263056a0fbf60e31b82525afa1561355a5760203d1061142657565b9190811561480a576150e330846155d0565b926150ee82826155d0565b91806014528360345263a9059cbb60601b5f5260205f6044601082865af18060015f5114161561518a575b50615132905f60345261512c30846155d0565b926155d0565b9084811194851561517d575b50508315615173575b8315615166575b50505061515757565b631dc418c360e31b5f5260045ffd5b03141590505f808061514e565b8181109350615147565b0383141593505f8061513e565b3d833b1517101561519b575f615119565b6390b8ec185f526004601cfd5b906040516151b581613cea565b915463ffffffff81168352602081811c60060b90840152605881901c6001600160a01b0316604084015260f81c15156060830152565b95949290939163ffffffff8516156152e25763ffffffff615212958803168097601761580f565b63ffffffff82949251168083146152c65763ffffffff8251168084146152a3579063ffffffff818193031693031693602081015160060b9283602084015160060b0360060b928160060b92831561494f576040908101519101516001600160a01b039291831691839161528e9190831684900383168a02614945565b1601169460060b91050260060b0160060b9190565b5050602081015160409091015160069190910b93506001600160a01b0316919050565b505050602082015160060b91604060018060a01b039101511690565b925090925061ffff81101561401c576152fd906017016151a8565b9363ffffffff85511663ffffffff82160361532e57505050602082015160060b91604060018060a01b039101511690565b6153389394615730565b905f80806152c6565b60408051602081019283526001600160a01b0390931690830152906060810160c4358015159081900361142657815260e435602082015260406001600160a01b0361538d610104613b87565b1691015260a0815261502b60c082613d20565b60020b627fffff198114612801575f0390565b62010016546001600160a01b0381161561426557622ea7d35a106128b8575f602481808094632520a12d60e11b825281600452622dc6c0f1156153f257565b7f6e819d90474482ea53f17905af71585dac910232de1a68f42349cd60badb287460205fa1565b62010016546001600160a01b0381161561472d57622ea7d35a106128b85760245f808094938194632f02d37f60e21b8352600452622dc6c0f1156153f257565b62010016546001600160a01b0381161561426557622ea7d35a106128b8575f6024818080946309f17b8160e31b825281600452622dc6c0f1156153f257565b906154cb9060165461ffff8160201c169161ffff8260101c16918060301c60020b9061ffff63ffffffff42169116615a0d565b909161ffff63ffff00006016549360101b16931690818463ffffffff19851617178060301c60020b9060c81c60020b917f00000000000000000000000000000000000000000000000000000000000000005f146155cb5761552b906153a0565b60020b81810391905f821280158285131691841216176128015761555a9282818113156155a457509150613fd6565b62ffffff60301b60309190911b16600160481b600160881b031990931665ffff00000001600160881b03199092169190911717174360481b600160481b600160881b031617601655565b6155ad82614408565b136155b9575b50613fd6565b6155c4919250614408565b905f6155b3565b61552b565b602460106020939284936014526370a0823160601b5f525afa601f3d11166020510290565b915f928115614603576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911661563582826155d0565b9361564081836155d0565b92803b1561142657604051630b0d9c0960e01b8152600481018490526001600160a01b0383166024820152604481018690525f8160648183865af180156126cf576156ee575b509061512c61569592846155d0565b908481119485156156e1575b505083156156d7575b83156156ca575b5050506156bb5750565b631dc418c360e31b8152600490fd5b03141590505f80806156b1565b81811093506156aa565b0383141593505f806156a1565b615695929197505f6156ff91613d20565b61512c5f97919250615686565b6040519061571982613cea565b5f6060838281528260208201528260408201520152565b9192909261573c61570c565b508251602084015160409094015163ffffffff9091168503936001600160a01b039091169260069190910b906001600160801b038116156157df575b6001600160801b031691821561494f5763ffffffff6040519661579a88613cea565b16865263ffffffff851660060b9060020b0260060b0160060b602085015260018060a01b039263ffffffff60801b9060801b1604011660408201526001606082015290565b506001615778565b61ffff60019116019061ffff821161280157565b9061ffff1690811561494f5761ffff160690565b969294909493919361581f61570c565b5061582861570c565b9161583c615836858b614030565b506151a8565b9161584f8763ffffffff8551168a615b07565b6159d9575050505061587561583661586f8761586a856157e7565b6157fb565b88614030565b836060820151156159be575b63ffffffff61589292511686615b07565b156159af5761ffff6158ba8661586a83946158ab61570c565b506158b461570c565b506157e7565b169416936158c88582614976565b5f19810191908211612801575b6158df8282614976565b60011c916158f96158366158f38986615b87565b8a614030565b6060810151156159985760018401908185116128015761592561583661591f8b85615b87565b8c614030565b6159378863ffffffff8451168b615b07565b918280615980575b6159715750506159645750505f198201918211612801576158df91905b9091506158d5565b9091506158df925061595c565b9a509850949650505050505050565b5061599363ffffffff8351168a8c615b07565b61593f565b50905060018201809211612801576158df9161595c565b636ffbbccd60e11b5f5260045ffd5b615892915063ffffffff6159d1896151a8565b925050615881565b94975094925063ffffffff919750809550511663ffffffff8216145f14615a01575050509190565b83614434949650615730565b94959392919061ffff86101561401c57615a29866017016151a8565b9663ffffffff88511663ffffffff831614615afc5761ffff85168061ffff8316119081615adb575b50615a7295615a6c929115615ad457505b61586a81986157e7565b96615730565b61ffff84101561401c57805160208083015160408401516060909401516001600160f81b031990151560f81b16600160581b600160f81b0360589590951b9490941663ffffffff909316911b66ffffffffffffff60201b161717176017840155565b9050615a62565b5f190191905061ffff8211612801579061ffff888116911614615a72615a51565b505050509250909190565b63ffffffff8091169116818111801580615b77575b615b685715615b4e5763ffffffff90925b1690811115615b3b57101590565b600160201b810190811061280157101590565b600160201b81019081106128015763ffffffff9092615b2d565b509163ffffffff915016101590565b508263ffffffff85161115615b1c565b811561494f57069056fe2616e25de5abcc9e6a698b140fb6c92f55ace21b7a57f76172f195dbbf693af6a30ca6140dfb2cac1c1021c5303d8dc7de0cd4db47221fb3ad068fac7ef8185e1168603ec6f79d8fa5f8da5aab9cd5dd8455146cb4adfd8e21e1fc4beb829389";
|