@black-market/sdk 0.8.0 → 0.9.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.
Files changed (43) hide show
  1. package/README.md +76 -89
  2. package/assets/abyss-ziggurat-v3-pale-text-1500x500.png +0 -0
  3. package/dist/lifecycle/deployments/dynamic-fee-pool-hook-v1-20261011.d.ts +12 -0
  4. package/dist/lifecycle/deployments/dynamic-fee-pool-hook-v1-20261011.d.ts.map +1 -0
  5. package/dist/lifecycle/deployments/dynamic-fee-pool-hook-v1-20261011.js +11 -0
  6. package/dist/lifecycle/deployments/dynamic-fee-pool-hook-v1-20261011.js.map +1 -0
  7. package/dist/lifecycle/deployments/hmm-dynamic-pool-hook-v1-20261011.d.ts +67 -0
  8. package/dist/lifecycle/deployments/hmm-dynamic-pool-hook-v1-20261011.d.ts.map +1 -0
  9. package/dist/lifecycle/deployments/hmm-dynamic-pool-hook-v1-20261011.js +69 -0
  10. package/dist/lifecycle/deployments/hmm-dynamic-pool-hook-v1-20261011.js.map +1 -0
  11. package/dist/lifecycle/deployments/hmm-fixed-pool-hook-v1-20261011.d.ts +67 -0
  12. package/dist/lifecycle/deployments/hmm-fixed-pool-hook-v1-20261011.d.ts.map +1 -0
  13. package/dist/lifecycle/deployments/hmm-fixed-pool-hook-v1-20261011.js +69 -0
  14. package/dist/lifecycle/deployments/hmm-fixed-pool-hook-v1-20261011.js.map +1 -0
  15. package/dist/lifecycle/hmm.d.ts +125 -0
  16. package/dist/lifecycle/hmm.d.ts.map +1 -0
  17. package/dist/lifecycle/hmm.js +91 -0
  18. package/dist/lifecycle/hmm.js.map +1 -0
  19. package/dist/lifecycle/index.d.ts +1 -0
  20. package/dist/lifecycle/index.d.ts.map +1 -1
  21. package/dist/lifecycle/index.js +1 -0
  22. package/dist/lifecycle/index.js.map +1 -1
  23. package/dist/lifecycle/markets.d.ts +3 -0
  24. package/dist/lifecycle/markets.d.ts.map +1 -1
  25. package/dist/lifecycle/markets.js +24 -1
  26. package/dist/lifecycle/markets.js.map +1 -1
  27. package/dist/lifecycle/presets.d.ts +9 -3
  28. package/dist/lifecycle/presets.d.ts.map +1 -1
  29. package/dist/lifecycle/presets.js +103 -1
  30. package/dist/lifecycle/presets.js.map +1 -1
  31. package/docs/launch-lifecycle.md +109 -10
  32. package/examples/README.md +11 -5
  33. package/examples/hmm-launch-config.ts +29 -0
  34. package/examples/launch-example.ts +13 -5
  35. package/package.json +1 -1
  36. package/src/lifecycle/deployments/dynamic-fee-pool-hook-v1-20261011.ts +12 -0
  37. package/src/lifecycle/deployments/hmm-dynamic-pool-hook-v1-20261011.ts +71 -0
  38. package/src/lifecycle/deployments/hmm-fixed-pool-hook-v1-20261011.ts +71 -0
  39. package/src/lifecycle/hmm.ts +99 -0
  40. package/src/lifecycle/index.ts +1 -0
  41. package/src/lifecycle/markets.ts +22 -1
  42. package/src/lifecycle/presets.ts +108 -1
  43. package/assets/abyss-social.webp +0 -0
package/README.md CHANGED
@@ -1,113 +1,100 @@
1
- ![Abyss](https://raw.githubusercontent.com/abysshopper/black-market-node-sdk/main/assets/abyss-social.webp)
1
+ ![Abyss](https://raw.githubusercontent.com/abysshopper/black-market-node-sdk/main/assets/abyss-ziggurat-v3-pale-text-1500x500.png)
2
2
 
3
3
  # Abyss TypeScript SDK
4
4
 
5
- Token launches, swaps, and lending with [viem](https://viem.sh).
5
+ TypeScript SDK for token launches, swaps, and lending with [viem](https://viem.sh).
6
+ Import the public package as `@black-market/sdk`. Requires Node 24+ to run the examples.
6
7
 
7
8
  ## Install
8
9
 
10
+ Install the package with `pnpm add @black-market/sdk viem`, or use a checkout
11
+ to run and customize the examples:
12
+
9
13
  ```sh
10
- pnpm add @black-market/sdk viem
14
+ git clone https://github.com/abysshopper/black-market-node-sdk.git
15
+ cd black-market-node-sdk
16
+ pnpm install --frozen-lockfile
17
+ pnpm build
11
18
  ```
12
19
 
20
+ ### HMM pool hooks (0.9.0)
21
+
22
+ Robinhood mainnet has frozen **HMM Fixed** and **HMM Dynamic** presets:
23
+ `KnownLifecycleProfile.V4HmmFixedPool` / `V4HmmDynamicPool`. Both require zero
24
+ LP and developer fees, plus a typed `HmmLaunchConfig` passed to the config6
25
+ encoder; it appends the required 448-byte tail automatically. Use
26
+ `defaultHmmLaunchConfig({ tokenBudget, quoteAsset, quoteDecimals })` for calibrated
27
+ WETH/USDG defaults. Unknown quotes require explicit raw quote thresholds.
28
+
29
+ At harvest, the configured share of **quote fees** funds a per-market HMM
30
+ liquidity manager; the remainder follows the normal creator/reward split.
31
+ Token fees and locked launch positions are untouched. The fee owner can change
32
+ the share later. Premium decay defaults to off (72 hours is an explicit opt-in).
33
+ See [HMM configuration](docs/launch-lifecycle.md#090-release-hmm-pool-hooks) and
34
+ the [pure, unsigned HMM example](examples/hmm-launch-config.ts).
35
+
13
36
  ## Examples
14
37
 
15
- Clone this repository to run the TypeScript examples. Requires Node 24+; Node runs
16
- the `.ts` files directly without an extra runner or type-stripping flag.
38
+ The most complete case is [`launch-erc20-dividends-multiquote-mixed.ts`](examples/launch-erc20-dividends-multiquote-mixed.ts).
39
+ On Robinhood mainnet (**chain 4663**), it:
40
+
41
+ 1. Creates an ERC20 with 1,000,000 initial tokens and holder dividends.
42
+ Fee-asset allocations split 40% to rewards and 60% to the owner, not a 40% tax.
43
+ 2. Splits liquidity across V4/WETH (two positions), V4/USDG (two), and Abyss/WETH
44
+ (three), priced from the same whole-supply USD valuation (default $5,000).
45
+ 3. Funds one opening buy per market with 0.00001 ETH each by default. ETH wraps
46
+ into WETH; USDG uses an admitted Kyber conversion. ETH for gas is additional.
47
+ 4. Prepares and proves the complete staged plan, prints the economic review,
48
+ and saves artifacts. The default dry-run never signs or submits anything.
49
+ 5. With authorization, stages metadata, begins and prepares the markets, then
50
+ activates all seven positions and three buys together. It verifies chain
51
+ results and API publication; optional images are verified before submission.
52
+
53
+ ### Configure and run
54
+
55
+ From the checkout root, create `.env` without overwriting existing configuration:
17
56
 
18
57
  ```sh
19
- pnpm install && pnpm build
20
- node examples/quickstart.ts
58
+ cp -n examples/.env.example .env
59
+ chmod 600 .env
21
60
  ```
22
61
 
23
- The quickstart reads available launch profiles without a wallet.
24
-
25
- For token launches, set `LAUNCH_API_URL` and exactly one signer source in your
26
- working folder's `.env`: `PRIVATE_KEY` or `EXAMPLE_KEYSTORE_PATH` (local V3 scrypt
27
- keystore; `EXAMPLE_KEYSTORE_PASSWORD` defaults to empty). Optional `RPC_URL`
28
- overrides the default endpoint. Choose one example for an unsigned dry run:
62
+ Set `LAUNCH_API_URL` and exactly one key source: `PRIVATE_KEY`, or
63
+ `EXAMPLE_KEYSTORE_PATH` to an owner-only V3 scrypt keystore (`EXAMPLE_KEYSTORE_PASSWORD`
64
+ defaults to empty). Optional `RPC_URL` overrides the official chain4663 RPC.
65
+ Remote endpoints require HTTPS; existing environment values override `.env`.
29
66
 
30
67
  ```sh
31
- node examples/launch-erc20-v4.ts
32
- node examples/launch-erc20-abyss.ts
33
- node examples/launch-erc404-v4.ts
34
- node examples/launch-erc404-abyss.ts
35
- node examples/launch-erc20-staking-v4.ts
36
- node examples/launch-erc20-dividends-abyss.ts
37
- node examples/launch-erc20-burn-mixed.ts
38
- node examples/launch-erc404-dividends-mixed.ts
39
- node examples/launch-erc20-multi-quote.ts
40
- node examples/launch-erc20-depth-v4.ts
68
+ # Dry run: no signing, chain submission, image upload, or publication.
41
69
  node examples/launch-erc20-dividends-multiquote-mixed.ts
70
+ # Explicitly authorize spending funds and publishing; no confirmation prompt.
71
+ node examples/launch-erc20-dividends-multiquote-mixed.ts --broadcast
72
+ # After partial execution, replace this path with the ORIGINAL run directory.
73
+ node examples/launch-erc20-dividends-multiquote-mixed.ts --resume "launch-results/<original-run>"
42
74
  ```
43
75
 
44
- The eight original cases remain alongside three additions awaiting user live-run
45
- validation. Every case funds opening buys in native ETH via admitted Kyber Swap
46
- calldata, defaulting to **0.00001 ETH per buy** (`EXAMPLE_BUY_AMOUNT_WEI`).
47
- `EXAMPLE_KYBER_API_URL` defaults to `LAUNCH_API_URL`; refused conversion admission
48
- stops unsigned, never falls back to native-wrap or direct ERC20 funding.
49
- Optional `EXAMPLE_TOKEN_NAME`, `EXAMPLE_TOKEN_SYMBOL`, `EXAMPLE_TOKEN_DESCRIPTION`
50
- and `EXAMPLE_IMAGE_PATH` customize identity and artwork. Image-enabled success
51
- requires staged/published/indexed image bindings and a bounded public-image fetch,
52
- not merely metadata staging. See the [example guide](examples/README.md).
53
-
54
- Launch cases **default to a dry run**: they print **DRY RUN — no transactions signed
55
- or broadcast.**, perform the full planning/economic review and save artifacts, then
56
- exit successfully without creating a wallet signer or writing to the chain/API.
57
- The last output line gives the same case command with `--broadcast`:
76
+ Dry-run needs live RPC/API access, the creator key, funding, and admission.
77
+ Review the saved `economic-review.json` in `launch-results/`. Broadcast builds a
78
+ **fresh plan**; resume may spend/publish but retains the original plan and session.
79
+ Keep recovery files; never commit or share keys, private artifacts, or signed bytes.
80
+
81
+ ## Creating your own
82
+
83
+ Copy the case wrapper beside its helpers, then customize it:
58
84
 
59
85
  ```sh
60
- node examples/launch-erc20-v4.ts --broadcast
86
+ cp examples/launch-erc20-dividends-multiquote-mixed.ts examples/launch-my-token.ts
87
+ node examples/launch-my-token.ts
61
88
  ```
62
89
 
63
- **`--broadcast` is the authorization to sign, spend real funds and publish.** It
64
- deliberately skips manual review admission—no hash prompt or hash input—while
65
- retaining the economic review/hash as provenance and all planner, deadline,
66
- image and canonical/reorg safety checks. It replans against current state rather
67
- than submitting the dry run's saved plan. All eleven wrappers support these modes.
68
- Plans, reviews, transaction hashes, receipts and errors are saved in `launch-results/`.
69
- Continue the original committed launch with
70
- `node examples/<case>.ts --resume launch-results/<original-run-directory>`.
71
- Preparing/Ready continues only remaining steps; Active verifies and publishes
72
- without re-execution. Retain the private session/capability and, for a pending image,
73
- reload the original bytes via `EXAMPLE_IMAGE_PATH`. See the recovery guide above.
74
- Keep `.env`, keystores and private recovery files out of Git.
75
-
76
- The published `0.8.0` package ships launch topology safety, TypeScript examples,
77
- dry-run/`--broadcast` modes, retained-plan recovery, and the opt-in static session cache.
78
- `prepareAndPlanLifecycleLaunch` combines bound-hook preparation and complete admission;
79
- `preparePoolBoundLifecyclePlan` and `PlannedLaunch.atomicAttempt` are removed.
80
- Only the explicitly requested execution mode is simulated. Independent `planLaunch`,
81
- recovery and build-next operations acquire fresh authority.
82
-
83
- Known deployments/profiles/hooks ship as frozen construction presets selected by
84
- typed keys without remote discovery. Explicit live discovery and unlisted profiles
85
- remain supported. The current October8 mined graph supports pool-bound config6/V2
86
- construction; historical config5 evidence is never reused or relabeled as that graph.
87
- Creator minimum/maximum hook fees and upward-price sensitivity are independent
88
- per-pool values frozen at launch. Optional `buySlippageBps` protects all ordered buys in one SDK
89
- operation, returning only the final proved commitment. Pure transaction compilation
90
- reports exact calldata sizes. Position recipes use Black Market's Early Scarcity,
91
- Staircase and Smooth Ramp weights, widths and gaps with exact allocation maxima.
92
- Position maxima sum to each market budget; market budgets sum to minted supply.
93
- Actual mint-rounding residuals burn before buys, with no creator reserve.
94
- Staircase and Early Scarcity can explicitly use `positionGaps: "adjacent"` instead
95
- of source gaps, retaining their weights and widths without zero-liquidity price jumps.
96
- The final band now extends to the finite usable protocol boundary by default.
97
- Unstarted planning requires opening coverage, aligned ticks, no interior gaps and
98
- a funded permanent tail in every market. Started, in-flight and terminal recovery
99
- is not retroactively blocked by this creation policy. Explicit topology opt-outs
100
- do not bypass stateful execution proof. See the API guide for the rule and option scopes.
101
-
102
- Lifecycle planning admits execution only after exact stateful proof. Robinhood
103
- admission reads native Nitro compute/poster evidence; optional caller caps only
104
- tighten it. Build-next can freshly prove an optional untrusted `reviewedTransaction`
105
- without changing its exact gas/price, and separately preflight that immediate
106
- envelope with an active `submissionClient`. Execution proof is not wallet submission.
107
-
108
- [Example setup](https://github.com/abysshopper/black-market-node-sdk/tree/main/examples)
109
- · [API guide](https://github.com/abysshopper/black-market-node-sdk/blob/main/docs/launch-lifecycle.md)
110
- · [MIT license](https://github.com/abysshopper/black-market-node-sdk/blob/main/LICENSE)
111
-
112
- [Agent guide](https://github.com/abysshopper/black-market-node-sdk/blob/main/AGENTS.md)
113
- · [Skills](https://github.com/abysshopper/black-market-node-sdk/tree/main/.agents/skills)
90
+ Edit the object passed to `runLaunchExample`: unique `id`, `tokenKind`
91
+ (0 ERC20 / 1 ERC404), `rewardMode` (0 none / 1 staking / 2 dividends),
92
+ `mode` (`atomic` / `staged`), `markets` (`venue`, `quote`, `positions`), and
93
+ `buysPerMarket`. Supported venues are `v4`/`abyss`, quotes `WETH`/`USDG`.
94
+ Customize identity, valuation, and buy input with the `EXAMPLE_*` keys in
95
+ [`.env.example`](examples/.env.example). For supply, fees, budgets, or ranges,
96
+ adapt `constructPlan` in `launch-example.ts` and `deriveExampleMarketEconomics`
97
+ in `launch-example-support.ts`. If copying elsewhere, include the Kyber helper too.
98
+
99
+ See the [launch/API guide](docs/launch-lifecycle.md), [runner configuration](examples/README.md),
100
+ and [MIT license](LICENSE) for deeper reference.
@@ -0,0 +1,12 @@
1
+ import type { Hex } from "viem";
2
+ /**
3
+ * Exact config6/V2 constructor creation code from the registered zero-author-royalty Dynamic Fee Hook.
4
+ * Evidence: pool-hook-template-v1/20261011T033141Z-dynamic-fee-zero-royalty/admission.json
5
+ * and contracts/evidence/verify-zero-royalty-20261011/children/ runtime.json files.
6
+ * PoolHookDeployerV1._initCode strips the first STOP byte from each storage-child runtime,
7
+ * concatenates chunk0 then chunk1, and appends the exact 20-word V2 arguments per market.
8
+ * Creation-code keccak256: 0xd448a4117b78714cc4f96824356c6a90ec666449fde5c57e2b7bbe072f5e4a7a.
9
+ * Creation-code size: 28918 bytes; constructor arguments add 640 bytes.
10
+ */
11
+ export declare const dynamicFeePoolHookV1CreationCode: Hex;
12
+ //# sourceMappingURL=dynamic-fee-pool-hook-v1-20261011.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamic-fee-pool-hook-v1-20261011.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/deployments/dynamic-fee-pool-hook-v1-20261011.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAEhC;;;;;;;;GAQG;AACH,eAAO,MAAM,gCAAgC,EAAE,GAAs/wD,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Exact config6/V2 constructor creation code from the registered zero-author-royalty Dynamic Fee Hook.
3
+ * Evidence: pool-hook-template-v1/20261011T033141Z-dynamic-fee-zero-royalty/admission.json
4
+ * and contracts/evidence/verify-zero-royalty-20261011/children/ runtime.json files.
5
+ * PoolHookDeployerV1._initCode strips the first STOP byte from each storage-child runtime,
6
+ * concatenates chunk0 then chunk1, and appends the exact 20-word V2 arguments per market.
7
+ * Creation-code keccak256: 0xd448a4117b78714cc4f96824356c6a90ec666449fde5c57e2b7bbe072f5e4a7a.
8
+ * Creation-code size: 28918 bytes; constructor arguments add 640 bytes.
9
+ */
10
+ export const dynamicFeePoolHookV1CreationCode = "0x610260604052348015610010575f5ffd5b506040516170f63803806170f683398101604081905261002f91610c9f565b808061003a81610471565b611afc613fff30161461006057604051632a96f9e160e21b815260040160405180910390fd5b80516001600160a01b039081166080908152602080840151831660a0908152604080860151851660c0526060860151851660e0529285015184166101005284015190921661012052516100b591839101610e24565b60408051808303601f1901815291905280516020909101206101609081526102408201516101809081526101208301516001600160a01b039081166101a05261026084015163ffffffff166101c052908301519183015160189290921b66ffffffff0000001662ffffff909216919091176101e05260a082015160c08301519082169116105f8161014a578260a00151610150565b8260c001515b90505f82610162578360c00151610168565b8360a001515b6001600160a01b038084166102008190529082166102208190526040805160a081018252928352602083019190915260e087015162ffffff169082015261010086015160020b60608201523060808201529091506101c78160a0902090565b6101405280515f80546001600160a01b03199081166001600160a01b03938416178255602080850151600180546040808901516060808b0151958a166001600160b81b031990941693909317600160a01b62ffffff928316021762ffffff60b81b1916600160b81b91909516029390931782556080808901516002805490971690891617909555825161012081018452958652938b015186169285019290925260c08a0151909416938301939093526101a088015191929083019160ff169081111561029557610295610fc9565b60018111156102a6576102a6610fc9565b815261014087015162ffffff166020808301919091526101c088015160ff166040808401919091526101e08901516001600160a01b039081166060808601919091526102008b0151151560808601526102208b015160a0909501949094528451600380549183166001600160a01b031992831617815593860151600480549184169183169190911790559185015160058054919092169281168317825593850151929390916001600160a81b031990911617600160a01b83600181111561036f5761036f610fc9565b0217905550608082015160028201805460a08086015160ff16600160c01b0260ff60c01b1962ffffff909516600160a81b029490941663ffffffff60a81b199092169190911792909217905560c08084015160038401805460e08701511515600160a01b026001600160a81b03199091166001600160a01b03938416171790556101009094015160049093019290925588015190880151908216911610610240525050506102208301515f925082915061042890610b1e565b6016805461ffff909216600160e01b0261ffff60e01b1962ffffff909416600160c81b029390931664ffffffffff60c81b19909216919091179190911790555061103a92505050565b80516001600160a01b03163b1580610495575060208101516001600160a01b03163b155b806104ac575060408101516001600160a01b03163b155b806104c3575060608101516001600160a01b03163b155b806104da575060808101516001600160a01b03163b155b806104f1575060c08101516001600160a01b03163b155b80610507575060a08101516001600160a01b0316155b8061052b57508060c001516001600160a01b03168160a001516001600160a01b0316145b80610542575060a08101516001600160a01b031630145b80610566575080606001516001600160a01b031681602001516001600160a01b0316145b806105895750805f01516001600160a01b031681602001516001600160a01b0316145b806105a0575060208101516001600160a01b031630145b806105b7575060608101516001600160a01b031630145b806105ce575060808101516001600160a01b031630145b806105f15750805f01516001600160a01b031681608001516001600160a01b0316145b80610604575060e081015162ffffff1615155b8061061a5750600160020b81610100015160020b125b806106315750610100810151617fff60029190910b135b8061065757506401000276a36001600160a01b03168161012001516001600160a01b0316105b8061068d575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b03168161012001516001600160a01b031610155b806106a95750620f424062ffffff1681610140015162ffffff16115b806106c7575080610140015162ffffff1681610160015162ffffff16115b806106dd5750600160ff16816101a0015160ff16115b8061071457506101c081015160ff161580159061071457506004816101c0015160ff1610806107145750600a816101c0015160ff16115b8061073d57506101c081015160ff161580159061073d57506101e08101516001600160a01b0316155b8061075557506101e08101516001600160a01b031630145b806107795750805f01516001600160a01b0316816101e001516001600160a01b0316145b8061079e575080608001516001600160a01b0316816101e001516001600160a01b0316145b806107ac5750610240810151155b806107c0575061026081015163ffffffff16155b806107d65750602081610260015163ffffffff16115b156107f45760405163c52a9bd360e01b815260040160405180910390fd5b5f816020015190505f8260800151905082606001516001600160a01b0316826001600160a01b031663f2f4eb266040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108729190610fdd565b6001600160a01b03161415806108fc5750825f01516001600160a01b0316826001600160a01b031663dc4c90d36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108cc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108f09190610fdd565b6001600160a01b031614155b8061097c575082604001516001600160a01b0316826001600160a01b031663c7f7fb906040518163ffffffff1660e01b8152600401602060405180830381865afa15801561094c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109709190610fdd565b6001600160a01b031614155b806109fc575082608001516001600160a01b0316826001600160a01b031663d7b96d4e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109cc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109f09190610fdd565b6001600160a01b031614155b80610a7c575082602001516001600160a01b0316816001600160a01b03166316eebd1e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a4c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a709190610fdd565b6001600160a01b031614155b80610afb5750825f01516001600160a01b0316816001600160a01b031663dc4c90d36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610acb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aef9190610fdd565b6001600160a01b031614155b15610b195760405163c52a9bd360e01b815260040160405180910390fd5b505050565b5f5f60c0516001600160a01b031663deee4135846040518263ffffffff1660e01b8152600401610b5091815260200190565b6040805180830381865afa158015610b6a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8e9190610fff565b909250905062ffffff82161580610bac5750620d89e862ffffff8316115b80610bbb575060028161ffff16105b80610bcb575061100061ffff8216115b15610be95760405163c52a9bd360e01b815260040160405180910390fd5b915091565b60405161028081016001600160401b0381118282101715610c1d57634e487b7160e01b5f52604160045260245ffd5b60405290565b6001600160a01b0381168114610c37575f5ffd5b50565b8051610c4581610c23565b919050565b805162ffffff81168114610c45575f5ffd5b8051600281900b8114610c45575f5ffd5b805163ffffffff81168114610c45575f5ffd5b805160ff81168114610c45575f5ffd5b80518015158114610c45575f5ffd5b5f610280828403128015610cb1575f5ffd5b50610cba610bee565b610cc383610c3a565b8152610cd160208401610c3a565b6020820152610ce260408401610c3a565b6040820152610cf360608401610c3a565b6060820152610d0460808401610c3a565b6080820152610d1560a08401610c3a565b60a0820152610d2660c08401610c3a565b60c0820152610d3760e08401610c4a565b60e0820152610d496101008401610c5c565b610100820152610d5c6101208401610c3a565b610120820152610d6f6101408401610c4a565b610140820152610d826101608401610c4a565b610160820152610d956101808401610c6d565b610180820152610da86101a08401610c80565b6101a0820152610dbb6101c08401610c80565b6101c0820152610dce6101e08401610c3a565b6101e0820152610de16102008401610c90565b61020082015261022083810151908201526102408084015190820152610e0a6102608401610c6d565b6102608201529392505050565b6001600160a01b03169052565b5f61028082019050610e37828451610e17565b6020830151610e496020840182610e17565b506040830151610e5c6040840182610e17565b506060830151610e6f6060840182610e17565b506080830151610e826080840182610e17565b5060a0830151610e9560a0840182610e17565b5060c0830151610ea860c0840182610e17565b5060e0830151610ebf60e084018262ffffff169052565b50610100830151610ed661010084018260020b9052565b50610120830151610eeb610120840182610e17565b50610140830151610f0461014084018262ffffff169052565b50610160830151610f1d61016084018262ffffff169052565b50610180830151610f3761018084018263ffffffff169052565b506101a0830151610f4e6101a084018260ff169052565b506101c0830151610f656101c084018260ff169052565b506101e0830151610f7a6101e0840182610e17565b50610200830151610f9061020084018215159052565b50610220830151610220830152610240830151610240830152610260830151610fc261026084018263ffffffff169052565b5092915050565b634e487b7160e01b5f52602160045260245ffd5b5f60208284031215610fed575f5ffd5b8151610ff881610c23565b9392505050565b5f5f60408385031215611010575f5ffd5b61101983610c4a565b9150602083015161ffff8116811461102f575f5ffd5b809150509250929050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e051610200516102205161024051615deb61130b5f395f818161302901526136d001525f81816122570152818161235d015261379e01525f818161221601528181612322015261377d01525f818161047f0152818161059c01526134a801525f818161055a01526138dd01525f81816104cb015261136201525f6106fb01525f6103f101525f81816103560152818161096601528181610d69015281816110e8015281816113d1015281816115ed015281816116ef01528181611a1a01528181611e4b01528181611f8001528181612120015281816122f70152818161282d015281816129ae01528181612ce20152818161342a015281816134d70152818161386a015281816138a5015261443701525f818161088a01528181612e9f01528181613b1f015261451701525f818161053301528181610d3101528181610fc10152818161113601528181611fcc01528181612037015281816120a1015281816122d101528181612853015281816128f70152818161298b015261375c01525f818161082f01528181612eee01528181613b6e015261446f01525f818161066e01526111c001525f81816102d0015281816108f401528181610c650152818161132501528181612f380152818161395101526144f401525f818161072b01528181610adb01528181610b7101528181610ec2015281816110c7015281816112940152818161145b015281816115cc0152818161165f0152818161190a01528181611b7101528181611d8801528181612145015281816121b9015281816122b001528181612b1601528181612ba501528181612c22015281816134510152818161350f0152818161373b01528181613d3b015281816145d30152818161478f0152818161481e0152818161489b01528181614963015281816149ae0152614a1b0152615deb5ff3fe608060405234801561000f575f5ffd5b5060043610610239575f3560e01c80630268e2931461023d5780630581555f146102525780630885f7321461026c57806321d0ee701461028c578063259982e5146102b85780632b20e397146102cb578063359b4f301461030a5780633e451d6a1461032b57806342ea83e01461033e57806347f8496c1461035157806350fb3a3a146103785780635524d5481461038b578063575e24b4146103ae5780635955d09a146103ec57806360f89f2e14610413578063654f631c146104265780636fe7e6eb14610457578063747a68cd1461046a5780637dbeb94e1461047d578063847211a6146104b35780638bc801c1146104c657806391dd7346146104ed578063921b0bed1461050d5780639759164a1461052e5780639e5fe06214610555578063a3f4bac714610591578063a86911141461059a578063aae49d70146105c3578063ac4e4054146105cd578063ac5555aa146105d6578063b47b2fb1146105e9578063b6a8b0fa1461061f578063c5c51dca14610632578063c5fbb29814610647578063c67046af1461065a578063c7f7fb9014610669578063ca266dfe14610690578063ce1b8e4f146106f6578063d2be66251461071d578063dc4c90d314610726578063dd71cea81461074d578063e1b4af691461079a578063e2e65ec1146107ad578063f11457c7146107c0578063f2f4eb261461082a578063f399150c14610851578063f9bc70e714610872578063fc0c546a14610885578063fd5b6d5b146108ac575b5f5ffd5b61025061024b36600461515e565b6108bf565b005b5f5b60405161ffff90911681526020015b60405180910390f35b61027f61027a366004615178565b6109ba565b60405161026391906151d9565b61029f61029a3660046152d4565b610acf565b6040516001600160e01b03199091168152602001610263565b61029f6102c63660046152d4565b610b65565b6102f27f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610263565b61031d610318366004615354565b610c02565b604051908152602001610263565b61031d610339366004615382565b610c1f565b61025061034c36600461539d565b610c30565b61031d7f000000000000000000000000000000000000000000000000000000000000000081565b6102506103863660046153eb565b610dc4565b61039e610399366004615178565b610e9f565b6040519015158152602001610263565b6103c16103bc36600461541e565b610eb4565b604080516001600160e01b03199094168452602084019290925262ffffff1690820152606001610263565b61031d7f000000000000000000000000000000000000000000000000000000000000000081565b610250610421366004615477565b6110b8565b610439610434366004615178565b61119e565b6040805162ffffff909316835261ffff909116602083015201610263565b61029f6104653660046154cf565b611288565b61031d610478366004615382565b611428565b7f00000000000000000000000000000000000000000000000000000000000000005b60405162ffffff9091168152602001610263565b61031d6104c1366004615178565b61143c565b6102f27f000000000000000000000000000000000000000000000000000000000000000081565b6105006104fb366004615526565b61144e565b6040516102639190615564565b61052061051b366004615599565b611573565b604051610263929190615611565b6102f27f000000000000000000000000000000000000000000000000000000000000000081565b61057c7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610263565b6102f2613fff81565b7f000000000000000000000000000000000000000000000000000000000000000060181c61057c565b61049f620f424081565b6102f2611afc81565b61039e6105e4366004615178565b611638565b6105fc6105f736600461569d565b611652565b604080516001600160e01b03199093168352600f9190910b602083015201610263565b61029f61062d36600461571d565b6118fe565b61063a6119b0565b6040516102639190615776565b61031d610655366004615178565b611a5b565b600160405161026391906157b8565b6102f27f000000000000000000000000000000000000000000000000000000000000000081565b6106a361069e366004615178565b611a7d565b604051610263919081516001600160a01b03908116825260208084015182169083015260408084015162ffffff169083015260608084015160020b90830152608092830151169181019190915260a00190565b61031d7f000000000000000000000000000000000000000000000000000000000000000081565b61025461100081565b6102f27f000000000000000000000000000000000000000000000000000000000000000081565b61076061075b3660046157cb565b611b07565b6040805163ffffffff909516855260069390930b60208501526001600160a01b039091169183019190915215156060820152608001610263565b61029f6107a836600461571d565b611b65565b61031d6107bb366004615354565b611c17565b6107d36107ce366004615178565b611c35565b6040805161ffff998a168152978916602089015295881695870195909552600293840b60608701526001600160401b039283166080870152911660a0850152900b60c083015290911660e082015261010001610263565b6102f27f000000000000000000000000000000000000000000000000000000000000000081565b61086461085f36600461515e565b611caa565b6040516102639291906157eb565b61049f6108803660046157f9565b611eb4565b6102f27f000000000000000000000000000000000000000000000000000000000000000081565b61031d6108ba366004615354565b611f21565b3068929eee149b4bd2126854036108dd5763ab143c065f526004601cfd5b3068929eee149b4bd2126855336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610931576040516282b42960e81b815260040160405180910390fd5b61093a81611f3f565b6013541561095b576040516304c7cf6760e51b815260040160405180910390fd5b4260138190556040517f0000000000000000000000000000000000000000000000000000000000000000907ff1bac50d2c6f6c83cb8ff6fac488b03adc5fb0cc9fae30db2077588d5d9e5fbd905f90a33868929eee149b4bd212685550565b60408051610120810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810191909152610a0b82611f7e565b6040805161012081018252600380546001600160a01b039081168352600454811660208401526005549081169383019390935290916060830190600160a01b900460ff166001811115610a6057610a6061519c565b6001811115610a7157610a7161519c565b8152600282015462ffffff600160a81b820416602083015260ff600160c01b9091048116604083015260038301546001600160a01b0381166060840152600160a01b9004161515608082015260049091015460a09091015292915050565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b18576040516282b42960e81b815260040160405180910390fd5b3068929eee149b4bd212685403610b365763ab143c065f526004601cfd5b610b3f85611f3f565b610b498685611fbd565b610b52846120f4565b5063021d0ee760e41b5b95945050505050565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bae576040516282b42960e81b815260040160405180910390fd5b3068929eee149b4bd212685403610bcc5763ab143c065f526004601cfd5b610bd585611f3f565b610bdf8685611fbd565b610be76121e8565b610bf0846120f4565b5063259982e560e01b95945050505050565b5f610c0c83611f7e565b610c1582612213565b5490505b92915050565b5f610c2982612213565b5492915050565b3068929eee149b4bd212685403610c4e5763ab143c065f526004601cfd5b3068929eee149b4bd2126855336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ca2576040516282b42960e81b815260040160405180910390fd5b610cc3610cbe610cb736859003850185615867565b60a0902090565b611f7e565b60125460ff1615610ce757604051630ea075bf60e21b815260040160405180910390fd5b610cf0816122ae565b610cf9816125b7565b610d066020820182615382565b600380546001600160a01b0319166001600160a01b039283161790556012805460ff191660011790557f000000000000000000000000000000000000000000000000000000000000000016610d5e6020830183615382565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000007ffafdbdd88ac30f0aa936e576be61816ea751908540523fa81b80c4a406ad7bec60405160405180910390a43868929eee149b4bd21268555050565b3068929eee149b4bd212685403610de25763ab143c065f526004601cfd5b610deb82611f7e565b6016805461ffff600160e01b90910481169083161115610e15578054600160e01b900461ffff1691505b8054600160201b900461ffff165f610e2f60178386612619565b835461ffff60201b1916600160201b61ffff838116918202929092178655919250831614610e98576040805161ffff80851682528316602082015286917f04f592d3848fffa22f73de92a2fd8da837e6d597f468af77c6fc619b478362ae910160405180910390a25b5050505050565b5f610ea982611f7e565b505060125460ff1690565b5f8080336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eff576040516282b42960e81b815260040160405180910390fd5b3068929eee149b4bd212685403610f1d5763ab143c065f526004601cfd5b60155460ff1615610f415760405163558a1e0360e11b815260040160405180910390fd5b610f4a87611f3f565b610f526121e8565b60035f610f5f8a896126ac565b90505f610f6c8a8a6126e4565b90505f62ffffff831615801590610f8a5750610f8a828c8c87612722565b15610fa857610fa5610f9f8b602001356127a6565b846127e1565b90505b6040516364b3357d60e11b81525f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c9666afa90610ffa908f908f9087906004016159c8565b602060405180830381865afa158015611015573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061103991906159f3565b90506110758c61104c60208e018e615a0a565b611056575f611058565b825b61106560208f018f615a0a565b61106f578361281f565b5f61281f565b81156110975761109783838760020160189054906101000a900460ff16612a0c565b506315d7892d60e21b965060801b94505f9350505050955095509592505050565b6110c183611f3f565b5f61110c7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000612d51565b5050600354919250506001600160a01b0384811691161415806111615750816001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614155b8061117357506001600160a01b038116155b156111905760405162820f3560e61b815260040160405180910390fd5b611198612e03565b50505050565b60405163deee413560e01b8152600481018290525f9081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063deee4135906024016040805180830381865afa158015611204573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112289190615a23565b909250905062ffffff821615806112465750620d89e862ffffff8316115b80611255575060028161ffff16105b80611265575061100061ffff8216115b156112835760405163c52a9bd360e01b815260040160405180910390fd5b915091565b5f336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112d1576040516282b42960e81b815260040160405180910390fd5b3068929eee149b4bd2126854036112ef5763ab143c065f526004601cfd5b611304610cbe610cb736879003870187615867565b60125460ff16158061131d5750601254610100900460ff165b8061135a57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b8061139757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b156113b45760405162820f3560e61b815260040160405180910390fd5b6113bd82612fe8565b6012805461ff0019166101001790556040517f0000000000000000000000000000000000000000000000000000000000000000907febcc9ffea17e08841d7588f2ecd87720e1cfb444bb3b5e662c4a5005c3c94ab2905f90a250636fe7e6eb60e01b5b949350505050565b5f61143282612213565b6003015492915050565b5f61144682611f7e565b505060135490565b6060336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611498576040516282b42960e81b815260040160405180910390fd5b60145415806114c0575060145483836040516114b5929190615a50565b604051809103902014155b156114de5760405163f7a632f560e01b815260040160405180910390fd5b5f60148190556114f083850185615867565b9050611500610cbe8260a0902090565b601254610100900460ff166115275760405162820f3560e61b815260040160405180910390fd5b5f611534825f01516130f6565b90505f61154483602001516130f6565b905081816040516020016115599291906157eb565b604051602081830303815290604052935050505092915050565b60608061157f85611f7e565b6016805462010000900461ffff165f036115ac576040516329d9e10560e01b815260040160405180910390fd5b805461162b90429087908790600160301b810460020b9061ffff166116117f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061318f565b875460179695949392919062010000900461ffff16613212565b9250925050935093915050565b5f61164282611f7e565b5050601254610100900460ff1690565b5f80336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461169c576040516282b42960e81b815260040160405180910390fd5b3068929eee149b4bd2126854036116ba5763ab143c065f526004601cfd5b60155460ff16156116de5760405163558a1e0360e11b815260040160405180910390fd5b6116e787611f3f565b5f61171560107f00000000000000000000000000000000000000000000000000000000000000008b8a61336d565b9050611722885f5f61281f565b60035f61172f8a8a6126e4565b90505f61173f60208c018c615382565b6001600160a01b0316826001600160a01b0316146117695761176460208c018c615382565b611779565b61177960408c0160208d01615382565b905062ffffff8416158015906117965750611796828c8c86612722565b1561182f575f6117b26117ac8c602001356127a6565b866127e1565b9050801561182d575f6117c860208e018e615382565b6001600160a01b0316846001600160a01b0316146117ef576117ea8b600f0b90565b6117f9565b6117f98b60801d90565b90506118098260208e0135615a73565b81600f0b1461182b5760405163161b48a960e21b815260040160405180910390fd5b505b505b62ffffff8416158061184a5750611848818c8c86612722565b155b15611866575063b47b2fb160e01b94505f93506118f392505050565b5f61187460208d018d615382565b6001600160a01b0316826001600160a01b03161461189b576118968a600f0b90565b6118a5565b6118a58a60801d90565b90505f6118bd6118b783600f0b6127a6565b876127e1565b905080156118e1576118e183828760020160189054906101000a900460ff16612a0c565b63b47b2fb160e01b9750955050505050505b965096945050505050565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611947576040516282b42960e81b815260040160405180910390fd5b3068929eee149b4bd2126854036119655763ab143c065f526004601cfd5b60155460ff16156119895760405163558a1e0360e11b815260040160405180910390fd5b61199286611f3f565b61199d86868661281f565b50635b54587d60e11b9695505050505050565b60125460609060ff166119c3575f6119c6565b60015b60ff166001600160401b038111156119e0576119e0615813565b604051908082528060200260200182016040528015611a09578160200160208202803683370190505b5060125490915060ff1615611a58577f0000000000000000000000000000000000000000000000000000000000000000815f81518110611a4b57611a4b615a9a565b6020026020010181815250505b90565b5f611a6582611f7e565b601654600160881b90046001600160401b0316610c19565b6040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152611ab082611f7e565b50506040805160a0810182525f546001600160a01b039081168252600154808216602084015262ffffff600160a01b82041693830193909352600160b81b909204600290810b606083015254909116608082015290565b5f5f5f5f611b1486611f7e565b5f60178661ffff8110611b2957611b29615a9a565b015463ffffffff811698600160201b820460060b9850600160581b82046001600160a01b03169750600160f81b90910460ff1695509350505050565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611bae576040516282b42960e81b815260040160405180910390fd5b60155460ff1615611bd25760405163558a1e0360e11b815260040160405180910390fd5b3068929eee149b4bd212685403611bf05763ab143c065f526004601cfd5b611bf986611f3f565b611c04865f5f61281f565b5063e1b4af6960e01b9695505050505050565b5f611c2183611f7e565b611c2a82612213565b600101549392505050565b5f5f5f5f5f5f5f5f611c4689611f7e565b505060165461ffff8082169962010000830482169950600160201b830482169850600160301b8304600290810b98506001600160401b03600160481b850481169850600160881b8504169650600160c81b8404900b9450600160e01b909204169150565b5f5f3068929eee149b4bd212685403611cca5763ab143c065f526004601cfd5b3068929eee149b4bd212685560155460ff1615611cfa5760405163558a1e0360e11b815260040160405180910390fd5b611d0383611f3f565b6003546001600160a01b03163314611d2d576040516282b42960e81b815260040160405180910390fd5b600854151580611d3e5750600c5415155b15611e3f575f83604051602001611d559190615aae565b60408051601f1981840301815290829052805160208201206014556348c8949160e01b825291505f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906348c8949190611dbd908590600401615564565b5f604051808303815f875af1158015611dd8573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611dff9190810190615abc565b60145490915015611e235760405163f7a632f560e01b815260040160405180910390fd5b80806020019051810190611e379190615b4e565b909450925050505b336001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000007f4a93be8d0a356d70b54fdf016f78a2ed8b8a3c420952848eb4f4b2c4546405b68484604051611e9b9291906157eb565b60405180910390a33868929eee149b4bd2126855915091565b5f3068929eee149b4bd212685403611ed35763ab143c065f526004601cfd5b601254610100900460ff16611efa5760405162820f3560e61b815260040160405180910390fd5b611f02612e03565b5f611f0c836133db565b509050611f18816135bf565b9150505b919050565b5f611f2b83611f7e565b611f3482612213565b600201549392505050565b611f54610cbe610cb736849003840184615867565b601254610100900460ff16611f7b5760405162820f3560e61b815260040160405180910390fd5b50565b7f00000000000000000000000000000000000000000000000000000000000000008114611f7b5760405162820f3560e61b815260040160405180910390fd5b60155460ff16801561200e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614158061200e5750604081013515155b1561202c5760405163558a1e0360e11b815260040160405180910390fd5b6013545f0361208b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161461208757604051637cd5a0ad60e01b815260040160405180910390fd5b5050565b600654600160a01b900460ff1680156120d657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b1561208757604051630af9fb3360e21b815260040160405180910390fd5b604081013515806121165750601654600160481b90046001600160401b031643145b1561211e5750565b7f00000000000000000000000000000000000000000000000000000000000000005f61216a7f000000000000000000000000000000000000000000000000000000000000000083612d51565b5090925061217e9150506020840184615b70565b60020b8160020b12806121a6575061219c6040840160208501615b70565b60020b8160020b12155b156121b057505050565b6121e3816121de7f00000000000000000000000000000000000000000000000000000000000000008561318f565b61365a565b505050565b601554610100900460ff16156121fa57565b612202612e03565b6015805461ff001916610100179055565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03160361225557506008919050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036122965750600c919050565b60405162820f3560e61b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000005f61231b837f0000000000000000000000000000000000000000000000000000000000000000612d51565b50505090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b5f148061238057506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b155b8061239357506001600160a01b03811615155b806123bf57506001600160a01b0382166123b36040860160208701615382565b6001600160a01b031614155b806123ed57506005546001600160a01b03166123e16060860160408701615382565b6001600160a01b031614155b806124355750600554600160a01b900460ff1660018111156124115761241161519c565b6124216080860160608701615b89565b60018111156124325761243261519c565b14155b806124625750600554600160a81b900462ffffff1661245a60a0860160808701615ba7565b62ffffff1614155b8061248b5750600554600160c01b900460ff1661248560c0860160a08701615bc2565b60ff1614155b806124b957506006546001600160a01b03166124ad60e0860160c08701615382565b6001600160a01b031614155b806124e45750600654600160a01b900460ff1615156124df610100860160e08701615a0a565b151514155b806124f6575060075461010085013514155b8061251557506125096020850185615382565b6001600160a01b03163b155b8061253d57506001600160a01b0382166125326020860186615382565b6001600160a01b0316145b8061255c5750306125516020860186615382565b6001600160a01b0316145b8061258457506001600160a01b0383166125796020860186615382565b6001600160a01b0316145b156125a25760405163c52a9bd360e01b815260040160405180910390fd5b6111986125b26020860186615382565b613739565b5f5f6125c783610100013561119e565b6016549193509150600283810b600160c81b909204900b1415806125fb575060165461ffff828116600160e01b9092041614155b156121e35760405163c52a9bd360e01b815260040160405180910390fd5b5f8261ffff165f0361263e576040516329d9e10560e01b815260040160405180910390fd5b8261ffff168261ffff16116126545750816126a5565b825b8261ffff168161ffff1610156126a0576001858261ffff1661ffff811061267f5761267f615a9a565b01805463ffffffff191663ffffffff92909216919091179055600101612656565b508190505b9392505050565b5f5f5f6126b8846133db565b604082015191935091506126cf6010848888613bf8565b93506126db8282613c76565b50505092915050565b5f6126f26020830183615a0a565b15155f60208401351214612715576127106040840160208501615382565b6126a5565b6126a56020840184615382565b5f8060016002840154600160a01b900460ff1660018111156127465761274661519c565b1461277e576127586020850185615a0a565b6127715761276c6040860160208701615382565b61278d565b61276c6020860186615382565b60028301546001600160a01b03165b6001600160a01b03878116911614915050949350505050565b5f600160ff1b82036127cb57604051637e2df70960e11b815260040160405180910390fd5b5f82126127d85781610c19565b610c1982615be2565b5f6127f5838362ffffff16620f4240613c99565b905060016001607f1b03811115610c1957604051637e2df70960e11b815260040160405180910390fd5b60405162e568cf60e71b81527f000000000000000000000000000000000000000000000000000000000000000060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906372b4678090602401602060405180830381865afa1580156128a0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128c491906159f3565b5f036128cf57505050565b6015805460ff191660011790556040516381f8a9d160e01b81525f9081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906381f8a9d19061293090889088908890600401615bfc565b60408051808303815f875af115801561294b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061296f9190615b4e565b6015805460ff1916905560405191935091506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016907f0000000000000000000000000000000000000000000000000000000000000000907fa30ca6140dfb2cac1c1021c5303d8dc7de0cd4db47221fb3ad068fac7ef8185e906129fd90869086906157eb565b60405180910390a35050505050565b3068929eee149b4bd212685403612a2a5763ab143c065f526004601cfd5b3068929eee149b4bd2126855825f612a4182612213565b90505f8160020154825f0154612a579190615c1b565b9050612a6a8160016001607f1b03615c1b565b851115612a7c57612a7c868383613d27565b5f60ff851615612aaf576064612a9560ff871688615c42565b612aa090607d615c55565b612aaa9190615c42565b612ab1565b5f5b905085835f015f828254612ac59190615c6c565b9250508190555080836001015f828254612adf9190615c6c565b9250508190555085836003015f828254612af99190615c6c565b9091555050604051627eeac760e11b81525f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062fdd58e90612b4c9030908990600401615c7f565b602060405180830381865afa158015612b67573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b8b91906159f3565b604051630ab714fb60e11b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063156e29f690612bde90309089908c90600401615c99565b5f604051808303815f87803b158015612bf5575f5ffd5b505af1158015612c07573d5f5f3e3d5ffd5b5050604051627eeac760e11b81525f92506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016915062fdd58e90612c599030908a90600401615c7f565b602060405180830381865afa158015612c74573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c9891906159f3565b905081811080612caa57508782820314155b80612cb85750846003015481105b15612cd65760405163104eed1d60e31b815260040160405180910390fd5b856001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000007f2616e25de5abcc9e6a698b140fb6c92f55ace21b7a57f76172f195dbbf693af68a86604051612d329291906157eb565b60405180910390a35050505050503868929eee149b4bd2126855505050565b5f5f5f5f5f612d5f86613dcb565b604051631e2eaeaf60e01b8152600481018290529091505f906001600160a01b03891690631e2eaeaf90602401602060405180830381865afa158015612da7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612dcb91906159f3565b90506001600160a01b03811695508060a01c60020b945062ffffff8160b81c16935062ffffff8160d01c169250505092959194509250565b601554610100900460ff1615612e1557565b6003546001600160a01b03165f612e3b612e3683630d96a1bf60e21b613e07565b613e21565b90505f612e5d8263537df88f60e11b6001600160a01b038616602460c0613e33565b9050606081015160a01c815160a01c1715612e76575f5ffd5b60a081015160808201511760101c15612e8d575f5ffd5b60c081016040525f6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016612ed3612e368563514526c360e11b613e07565b6001600160a01b0316141580612f2e57506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016612f22612e368563056a0fbf60e31b613e07565b6001600160a01b031614155b80612f63575081517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614155b80612f7757505f612f75836020015190565b145b80612f8b57505f612f89836040015190565b145b80612f9f57505f612f9d836060015190565b145b80612fb857508061ffff16612fb58360a0015190565b14155b80612fca5750608082015160a0830151115b156111985760405163c52a9bd360e01b815260040160405180910390fd5b6016612ff5601742613e68565b825465ffffffff00001916600160201b61ffff9283160263ffff000019161762010000929091169190910217815561304d827f0000000000000000000000000000000000000000000000000000000000000000613ea8565b8154600160301b600160881b031916600160301b62ffffff9290921691909102600160481b600160881b03191617600160481b436001600160401b039081169190910291909117600160881b600160c81b031916600160881b42929092169190910217808255600290600160e01b900461ffff168111156130d757508054600160e01b900461ffff165b815461ffff8216600160201b0261ffff60201b19909116178255505050565b5f818161310282612213565b80549091505f81900361311957505f949350505050565b613133858384600201548461312e9190615c1b565b613d27565b6001820180545f8085559182905560028401919091556131538183615c1b565b60065490955061316e9085906001600160a01b031683613ebd565b6003546131869085906001600160a01b031687613ebd565b50505050919050565b5f5f61319a83613dcb565b90505f6131a8600383615c6c565b604051631e2eaeaf60e01b8152600481018290529091506001600160a01b03861690631e2eaeaf90602401602060405180830381865afa1580156131ee573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b5c91906159f3565b6060808261ffff165f03613239576040516329d9e10560e01b815260040160405180910390fd5b866001600160401b0381111561325157613251615813565b60405190808252806020026020018201604052801561327a578160200160208202803683370190505b509150866001600160401b0381111561329557613295615813565b6040519080825280602002602001820160405280156132be578160200160208202803683370190505b5090505f5b8781101561335f576133008b8b8b8b858181106132e2576132e2615a9a565b90506020020160208101906132f79190615cbd565b8a8a8a8a613f4d565b84838151811061331257613312615a9a565b6020026020010184848151811061332b5761332b615a9a565b60200260200101826001600160a01b03166001600160a01b03168152508260060b60060b81525050508060010190506132c3565b509850989650505050505050565b60018401545f9063ffffffff16801580613392575061338d8585856140f9565b865414155b156133b3576040516001620787ab60e51b0319815260040160405180910390fd5b6133be600182615ce0565b5f87556001909601805463ffffffff191690555093949350505050565b61342760408051610120810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290529061010082015290565b5f7f00000000000000000000000000000000000000000000000000000000000000008180806134767f000000000000000000000000000000000000000000000000000000000000000085612d51565b509250925092508062ffffff165f146134a25760405163c52a9bd360e01b815260040160405180910390fd5b8194505f7f000000000000000000000000000000000000000000000000000000000000000090506040518061012001604052807f00000000000000000000000000000000000000000000000000000000000000008152602001856001600160a01b031681526020016135347f00000000000000000000000000000000000000000000000000000000000000008861318f565b6001600160801b0316815260200189602001358152602001895f01602081019061355e9190615a0a565b1515815260055462ffffff600160a81b8204811660208401528416604083015263ffffffff601885901c16606083015260809091019060ff600160a01b9091041660018111156135b0576135b061519c565b81525096505050505050915091565b5f600160ff1b8260600151036135e857604051637e2df70960e11b815260040160405180910390fd5b60a082015160c08301516135fb8461412e565b92508162ffffff168362ffffff16111561362857604051637e2df70960e11b815260040160405180910390fd5b8062ffffff168362ffffff161015613653576040516302cce67760e31b815260040160405180910390fd5b5050919050565b601680546136919060179061ffff808216914291600160301b820460020b918891620100008204811691600160201b90041661418b565b825463ffffffff19166201000061ffff9283160261ffff1916179116178082556136f490600160301b8104600290810b918691600160c81b909104900b7f0000000000000000000000000000000000000000000000000000000000000000614307565b8154600160301b600160881b031916600160301b62ffffff9290921691909102600160481b600160881b03191617600160481b436001600160401b0316021790555050565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000005f6137d2612e3687630d96a1bf60e21b613e07565b90505f6137e0878585614370565b90506001600160a01b038616613800612e368963dc4c90d360e01b613e07565b6001600160a01b031614158061383b57506001600160a01b03851661382f612e3689636bdcb6a760e11b613e07565b6001600160a01b031614155b80613862575030613856612e3689636620eee760e11b613e07565b6001600160a01b031614155b8061389d57507f000000000000000000000000000000000000000000000000000000000000000061389a88631f06e1a760e11b613e07565b14155b806138d057507f00000000000000000000000000000000000000000000000000000000000000006138cd8861440b565b14155b80613911575063ffffffff7f00000000000000000000000000000000000000000000000000000000000000001661390e88634f2ff03160e11b613e07565b14155b8061394157506001600160a01b038616613935612e368763dc4c90d360e01b613e07565b6001600160a01b031614155b8061399157506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016613985612e3687630b775e8f60e11b613e07565b6001600160a01b031614155b806139ab57505f6139a88662e568cf60e71b61442e565b14155b806139ca57506139ca6139c586630323715f60e11b61442e565b61445f565b806139e557505f6139e286635c0af38360e01b61442e565b14155b80613a0c57505f613a00612e3687630961712f60e01b61442e565b6001600160a01b031614155b80613a15575080155b80613a2857506001600160a01b0382163b155b80613a3b57506001600160a01b03821630145b80613a575750866001600160a01b0316826001600160a01b0316145b80613a735750846001600160a01b0316826001600160a01b0316145b80613a8f5750856001600160a01b0316826001600160a01b0316145b80613aab5750836001600160a01b0316826001600160a01b0316145b80613ac75750826001600160a01b0316826001600160a01b0316145b80613adf57506006546001600160a01b038381169116145b80613af757506006546001600160a01b038881169116145b15613b155760405163c52a9bd360e01b815260040160405180910390fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016613b53612e368463514526c360e11b613e07565b6001600160a01b0316141580613bae57506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016613ba2612e368463056a0fbf60e31b613e07565b6001600160a01b031614155b80613bc85750613bc86139c58363b3f05b9760e01b613e07565b15613be65760405163c52a9bd360e01b815260040160405180910390fd5b613bef8261446d565b50505050505050565b60018401545f9063ffffffff1615613c26576040516001620787ab60e51b0319815260040160405180910390fd5b8351613c31856135bf565b9150613c3e8185856140f9565b8655613c5062ffffff83166001615cfc565b600196909601805463ffffffff191663ffffffff90971696909617909555949350505050565b601654600160481b90046001600160401b0316431461208757612087828261365a565b82820281838583041485151702613d20575f198385098181108201900382848609835f038416828511613cd35763ae47f7025f526004601cfd5b93849004938382119092035f8390038390046001010292030417600260038302811880840282030280840282030280840282030280840282030280840282030280840290910302026126a5565b0492915050565b805f03613d3357505050565b8281613d5f827f000000000000000000000000000000000000000000000000000000000000000061474d565b1015613d7e576040516365169c1d60e01b815260040160405180910390fd5b81836003015f828254613d919190615c1b565b90915550613da29050818484614777565b613dad84308461494f565b81836002015f828254613dc09190615c6c565b909155505050505050565b6040515f90613dea908390600690602001918252602082015260400190565b604051602081830303815290604052805190602001209050919050565b5f80613e1884848360046020613e33565b51949350505050565b5f8160a01c15613e2f575f5ffd5b5090565b6040518481526023198301613e49578360048201525b81818483895afa613e5c573d5f823e3d81fd5b813d1015610b5c575f5ffd5b6040805160808101825263ffffffff83168082525f602083018190529282019290925260016060909101819052600160f81b9091178355805b9250929050565b5f81613eb457826126a5565b6126a583615d18565b805f03613ec957505050565b5f613ed4843061474d565b90505f613ee1858561474d565b9050613eee858585614a9d565b5f613ef9863061474d565b90505f613f06878761474d565b905083821180613f1857508482850314155b80613f2257508281105b80613f2f57508483820314155b15613bef57604051631dc418c360e31b815260040160405180910390fd5b5f5f8663ffffffff165f03613ff3575f898661ffff1661ffff8110613f7457613f74615a9a565b60408051608081018252919092015463ffffffff808216808452600160201b830460060b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff16151560608301529092508a1614613fdf57613fdc818a8988614ae7565b90505b8060200151816040015192509250506140ed565b8688035f806140078c8c858c8c8c8c614b8d565b91509150815f015163ffffffff168363ffffffff16036140375781602001518260400151945094505050506140ed565b805f015163ffffffff168363ffffffff16036140635780602001518160400151945094505050506140ed565b5f825f0151825f01510390505f835f0151850390508063ffffffff168263ffffffff1660060b856020015185602001510360060b816140a4576140a4615c2e565b05028460200151018263ffffffff168263ffffffff1686604001518660400151036001600160a01b031602816140dc576140dc615c2e565b048560400151019650965050505050505b97509795505050505050565b5f83838360405160200161410f93929190615d38565b6040516020818303038152906040528051906020012090509392505050565b5f8160c0015162ffffff168260a0015162ffffff161480614157575060e082015163ffffffff16155b15614164575060c0015190565b5f5f61416e614d68565b915091506114208460c001518560a001518660e001518585614dd8565b5f5f5f898961ffff1661ffff81106141a5576141a5615a9a565b60408051608081018252919092015463ffffffff808216808452600160201b830460060b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff16151560608301529092508916900361420e57888592509250506140ed565b8461ffff168461ffff16118015614236575061422b600186615d5b565b61ffff168961ffff16145b6142405784614242565b835b9150816142508a6001615d75565b61425a9190615d8f565b925061426881898989614ae7565b8a8461ffff1661ffff811061427f5761427f615a9a565b825191018054602084015160408501516060909501511515600160f81b026001600160f81b036001600160a01b03909616600160581b02959095166001600160581b0366ffffffffffffff909216600160201b026001600160581b031990931663ffffffff909516949094179190911716919091179190911790555097509795505050505050565b5f5f8560020b6143178685613ea8565b60020b6143249190615db2565b9050600284900b8082131561433b57809150614357565b61434481615be2565b8212156143575761435481615be2565b91505b61436582600289900b615a73565b979650505050505050565b5f80614388856371a9730560e01b8360046020613e33565b80519091506001600160a01b0380861691908516903d906001600160401b038111601f198301821117156143ba575f5ffd5b602081863e8451602080838503030481116001600160401b03821117156143df575f5ffd5b600281036143fe57604060208301873e83602087015114858751141696505b5050505050509392505050565b5f806144238363182148ef60e01b83600460a0613e33565b60a090209392505050565b5f5f613e1884847f000000000000000000000000000000000000000000000000000000000000000060246020613e33565b5f6001821115613e2f575f5ffd5b7f00000000000000000000000000000000000000000000000000000000000000005f6144a68263086fce0d60e11b836004610160613e33565b90505f6005905080604083015111602083015160201c17156144c6575f5ffd5b6101408201606083015b818110156144ee57805160a01c156144e6575f5ffd5b6020016144d0565b505081517f000000000000000000000000000000000000000000000000000000000000000091507f00000000000000000000000000000000000000000000000000000000000000009080158061454957506001604085015114155b8061456757506001600160a01b038316614564856060015190565b14155b8061458557506001600160a01b038316614582856080015190565b14155b806145a357506001600160a01b0382166145a08560a0015190565b14155b806145c357506005546001600160a01b03166145c08560c0015190565b14155b8061460157506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166145fe8560e0015190565b14155b1561461e576040516282b42960e81b815260040160405180910390fd5b5f61462a856020015190565b905061464386636373dff160e11b8460246101c0613e33565b94505f600190505f600590508060a0880151118260808901511117604088015160a01c1715614670575f5ffd5b610120870160c088015b8181101561469857805160a01c15614690575f5ffd5b60200161467a565b50506101a0870161012088015b818110156146c357805160201c156146bb575f5ffd5b6020016146a5565b5050865184925090501415806146de5750600160a086015114155b806146fc57506001600160a01b0383166146f98660c0015190565b14155b8061471a57506001600160a01b0387166147178660e0015190565b14155b80614730575061014085015163ffffffff821610155b15613bef576040516282b42960e81b815260040160405180910390fd5b5f816014526370a0823160601b5f5260208060246010865afa601f3d111660205102905092915050565b604051627eeac760e11b81525f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062fdd58e906147c59030908890600401615c7f565b602060405180830381865afa1580156147e0573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061480491906159f3565b604051637a94c56560e11b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f5298aca9061485790309088908790600401615c99565b5f604051808303815f87803b15801561486e575f5ffd5b505af1158015614880573d5f5f3e3d5ffd5b5050604051627eeac760e11b81525f92506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016915062fdd58e906148d29030908990600401615c7f565b602060405180830381865afa1580156148ed573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061491191906159f3565b90508181118061492357508281830314155b806149315750836003015481105b15610e985760405163104eed1d60e31b815260040160405180910390fd5b805f0361495b57505050565b825f614987827f000000000000000000000000000000000000000000000000000000000000000061474d565b90505f614994838661474d565b604051630b0d9c0960e01b81529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690630b0d9c09906149e790899089908990600401615c99565b5f604051808303815f87803b1580156149fe575f5ffd5b505af1158015614a10573d5f5f3e3d5ffd5b505050505f614a3f847f000000000000000000000000000000000000000000000000000000000000000061474d565b90505f614a4c858861474d565b905083821180614a5e57508582850314155b80614a6857508281105b80614a7557508583820314155b15614a9357604051631dc418c360e31b815260040160405180910390fd5b5050505050505050565b816014528060345263a9059cbb60601b5f5260205f604460105f875af18060015f511416614add57803d853b151710614add576390b8ec185f526004601cfd5b505f603452505050565b614aef615122565b5f855f01518503905060405180608001604052808663ffffffff1681526020018263ffffffff168660020b0288602001510160060b81526020015f856001600160801b031611614b40576001614b42565b845b6001600160801b031663ffffffff60801b608085901b1681614b6657614b66615c2e565b048860400151016001600160a01b0316815260200160011515815250915050949350505050565b614b95615122565b614b9d615122565b888561ffff1661ffff8110614bb457614bb4615a9a565b60408051608081018252919092015463ffffffff8116808352600160201b820460060b6020840152600160581b82046001600160a01b031693830193909352600160f81b900460ff16151560608201529250614c1290899089614e87565b15614c4b578663ffffffff16825f015163ffffffff1614614c3f5781614c3a83898988614ae7565b614c42565b81815b915091506140ed565b8883614c58876001615d75565b614c629190615d8f565b61ffff1661ffff8110614c7757614c77615a9a565b60408051608081018252929091015463ffffffff81168352600160201b810460060b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b90910416151560608201819052909250614d2057604080516080810182528a5463ffffffff81168252600160201b810460060b6020830152600160581b81046001600160a01b031692820192909252600160f81b90910460ff161515606082015291505b614d2e88835f015189614e87565b614d4b57604051636ffbbccd60e11b815260040160405180910390fd5b614d588989898887614f45565b9150915097509795505050505050565b5f5f60165461ffff8160101c166001811115614dd25761ffff82168060170154826001840383010660170154915063ffffffff828203168015614dce578260201c8260201c0360060b8181059050808660301c60020b0397505063ffffffff8342031695505b5050505b50509091565b5f8462ffffff168662ffffff1610614df1575083610b5c565b5f83131580614e04575063ffffffff8216155b80614e13575063ffffffff8416155b15614e1f575084610b5c565b63ffffffff82811687870362ffffff160290849086168281614e4357614e43615c2e565b04811115614e55578692505050610b5c565b8363ffffffff168663ffffffff16820281614e7257614e72615c2e565b048862ffffff16019250505095945050505050565b5f8363ffffffff168363ffffffff1611158015614eb057508363ffffffff168263ffffffff1611155b15614ecc578163ffffffff168363ffffffff16111590506126a5565b5f8463ffffffff168463ffffffff1611614ef957614ef463ffffffff8516600160201b615c6c565b614f01565b8363ffffffff165b90505f8563ffffffff168463ffffffff1611614f3057614f2b63ffffffff8516600160201b615c6c565b614f38565b8363ffffffff165b9091111595945050505050565b614f4d615122565b614f55615122565b5f83614f62866001615d75565b614f6c9190615d8f565b61ffff1690505f60018561ffff1683614f859190615c6c565b614f8f9190615c1b565b90505b5f6002614f9f8385615c6c565b614fa99190615c42565b905089614fba61ffff881683615dd8565b61ffff8110614fcb57614fcb615a9a565b60408051608081018252929091015463ffffffff81168352600160201b810460060b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b909104161515606082018190529095506150375761502f816001615c6c565b925050614f92565b8961ffff8716615048836001615c6c565b6150529190615dd8565b61ffff811061506357615063615a9a565b60408051608081018252929091015463ffffffff81168352600160201b810460060b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b909104161515606082015285519094505f906150c6908b908b614e87565b90508080156150de57506150de8a8a875f0151614e87565b156150ea575050615116565b80615101576150fa600183615c1b565b925061510f565b61510c826001615c6c565b93505b5050614f92565b50509550959350505050565b604080516080810182525f80825260208201819052918101829052606081019190915290565b5f60a08284031215615158575f5ffd5b50919050565b5f60a0828403121561516e575f5ffd5b6126a58383615148565b5f60208284031215615188575f5ffd5b5035919050565b6001600160a01b03169052565b634e487b7160e01b5f52602160045260245ffd5b60028110611f7b57634e487b7160e01b5f52602160045260245ffd5b6151d5816151b0565b9052565b81516001600160a01b0390811682526020808401519091169082015260408083015161012083019161520d9084018261518f565b50606083015161522060608401826151cc565b506080830151615237608084018262ffffff169052565b5060a083015161524c60a084018260ff169052565b5060c083015161525f60c084018261518f565b5060e083015161527360e084018215159052565b5061010092830151919092015290565b6001600160a01b0381168114611f7b575f5ffd5b5f5f83601f8401126152a7575f5ffd5b5081356001600160401b038111156152bd575f5ffd5b602083019150836020828501011115613ea1575f5ffd5b5f5f5f5f5f8587036101608112156152ea575f5ffd5b86356152f581615283565b95506153048860208901615148565b9450608060bf1982011215615317575f5ffd5b5060c0860192506101408601356001600160401b03811115615337575f5ffd5b61534388828901615297565b969995985093965092949392505050565b5f5f60408385031215615365575f5ffd5b82359150602083013561537781615283565b809150509250929050565b5f60208284031215615392575f5ffd5b81356126a581615283565b5f5f8284036101c08112156153b0575f5ffd5b6153ba8585615148565b9250610120609f19820112156153ce575f5ffd5b5060a0830190509250929050565b61ffff81168114611f7b575f5ffd5b5f5f604083850312156153fc575f5ffd5b823591506020830135615377816153dc565b5f60608284031215615158575f5ffd5b5f5f5f5f5f6101408688031215615433575f5ffd5b853561543e81615283565b945061544d8760208801615148565b935061545c8760c0880161540e565b92506101208601356001600160401b03811115615337575f5ffd5b5f5f5f60e08486031215615489575f5ffd5b6154938585615148565b925060a08401356154a381615283565b915060c08401356154b381615283565b809150509250925092565b8035600281900b8114611f1c575f5ffd5b5f5f5f5f61010085870312156154e3575f5ffd5b84356154ee81615283565b93506154fd8660208701615148565b925060c085013561550d81615283565b915061551b60e086016154be565b905092959194509250565b5f5f60208385031215615537575f5ffd5b82356001600160401b0381111561554c575f5ffd5b61555885828601615297565b90969095509350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f5f604084860312156155ab575f5ffd5b8335925060208401356001600160401b038111156155c7575f5ffd5b8401601f810186136155d7575f5ffd5b80356001600160401b038111156155ec575f5ffd5b8660208260051b8401011115615600575f5ffd5b939660209190910195509293505050565b604080825283519082018190525f9060208501906060840190835b8181101561564d57835160060b83526020938401939092019160010161562c565b5050838103602080860191909152855180835291810192508501905f5b818110156156915782516001600160a01b031684526020938401939092019160010161566a565b50919695505050505050565b5f5f5f5f5f5f61016087890312156156b3575f5ffd5b86356156be81615283565b95506156cd8860208901615148565b94506156dc8860c0890161540e565b935061012087013592506101408701356001600160401b038111156156ff575f5ffd5b61570b89828a01615297565b979a9699509497509295939492505050565b5f5f5f5f5f5f6101208789031215615733575f5ffd5b863561573e81615283565b955061574d8860208901615148565b945060c0870135935060e087013592506101008701356001600160401b038111156156ff575f5ffd5b602080825282518282018190525f918401906040840190835b818110156157ad57835183526020938401939092019160010161578f565b509095945050505050565b602081016157c5836151b0565b91905290565b5f5f604083850312156157dc575f5ffd5b50508035926020909101359150565b918252602082015260400190565b5f60608284031215615809575f5ffd5b6126a5838361540e565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561584f5761584f615813565b604052919050565b62ffffff81168114611f7b575f5ffd5b5f60a0828403128015615878575f5ffd5b5060405160a081016001600160401b038111828210171561589b5761589b615813565b60405282356158a981615283565b815260208301356158b981615283565b602082015260408301356158cc81615857565b60408201526158dd606084016154be565b606082015260808301356158f081615283565b60808201529392505050565b803561590781615283565b6001600160a01b03168252602081013561592081615283565b6001600160a01b03166020830152604081013561593c81615857565b62ffffff166040830152615952606082016154be565b60020b6060830152608081013561596881615283565b6001600160a01b03166080929092019190915250565b80358015158114611f1c575f5ffd5b6159968161597e565b151582526020818101359083015260408101356159b281615283565b6001600160a01b03166040929092019190915250565b61012081016159d782866158fc565b6159e460a083018561598d565b82610100830152949350505050565b5f60208284031215615a03575f5ffd5b5051919050565b5f60208284031215615a1a575f5ffd5b6126a58261597e565b5f5f60408385031215615a34575f5ffd5b8251615a3f81615857565b6020840151909250615377816153dc565b818382375f9101908152919050565b634e487b7160e01b5f52601160045260245ffd5b8082018281125f831280158216821582161715615a9257615a92615a5f565b505092915050565b634e487b7160e01b5f52603260045260245ffd5b60a08101610c1982846158fc565b5f60208284031215615acc575f5ffd5b81516001600160401b03811115615ae1575f5ffd5b8201601f81018413615af1575f5ffd5b80516001600160401b03811115615b0a57615b0a615813565b615b1d601f8201601f1916602001615827565b818152856020838501011115615b31575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b5f5f60408385031215615b5f575f5ffd5b505080516020909101519092909150565b5f60208284031215615b80575f5ffd5b6126a5826154be565b5f60208284031215615b99575f5ffd5b8135600281106126a5575f5ffd5b5f60208284031215615bb7575f5ffd5b81356126a581615857565b5f60208284031215615bd2575f5ffd5b813560ff811681146126a5575f5ffd5b5f600160ff1b8201615bf657615bf6615a5f565b505f0390565b60e08101615c0a82866158fc565b60a082019390935260c00152919050565b81810381811115610c1957610c19615a5f565b634e487b7160e01b5f52601260045260245ffd5b5f82615c5057615c50615c2e565b500490565b8082028115828204841417610c1957610c19615a5f565b80820180821115610c1957610c19615a5f565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f60208284031215615ccd575f5ffd5b813563ffffffff811681146126a5575f5ffd5b63ffffffff8281168282160390811115610c1957610c19615a5f565b63ffffffff8181168382160190811115610c1957610c19615a5f565b5f8160020b627fffff198103615d3057615d30615a5f565b5f0392915050565b8381526001600160a01b038316602082015260a08101611420604083018461598d565b61ffff8281168282160390811115610c1957610c19615a5f565b61ffff8181168382160190811115610c1957610c19615a5f565b5f61ffff831680615da257615da2615c2e565b8061ffff84160691505092915050565b8181035f831280158383131683831282161715615dd157615dd1615a5f565b5092915050565b5f82615de657615de6615c2e565b50069056";
11
+ //# sourceMappingURL=dynamic-fee-pool-hook-v1-20261011.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamic-fee-pool-hook-v1-20261011.js","sourceRoot":"","sources":["../../../src/lifecycle/deployments/dynamic-fee-pool-hook-v1-20261011.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAQ,g/wDAAg/wD,CAAC"}
@@ -0,0 +1,67 @@
1
+ import type { Hex } from "viem";
2
+ export declare const hmmDynamicEnvelope: Readonly<{
3
+ artifactDigest: "0x3b8b7ab8614512ce93d65c6aeb6ed18bb150ef7d74417c7282075ff683f1e35b";
4
+ reviewManifestDigest: "0x8a82a2331225d17a1bf0f167bfaab0bfba5e7fdf7c83455e13f43610fc17feb3";
5
+ configBoundsDigest: "0x72e0b2d542556d472a47f9c38b2c91079c72793af847dee77933f0eca203129d";
6
+ termsDigest: "0x9863cba9dbd05d748983e5833210bb6a67a02dae396cfca3744ea1c35af59910";
7
+ topology: 2;
8
+ configVersion: 6;
9
+ economicVersion: 3;
10
+ capabilities: 123n;
11
+ flags: 0n;
12
+ callbackFlags: 6908;
13
+ callbackMask: 16383;
14
+ protocolTreasury: "0x961981916AB6575C3af3eeCecbf6A3b7Fad7C9e1";
15
+ protocolFeeDenominator: 6;
16
+ beneficiary: "0x7cb44b8693b3C350A2BcD4b681aF85365aa27783";
17
+ maximumDeveloperFeeBps: 0;
18
+ bounds: Readonly<{
19
+ minimumTickSpacing: 1;
20
+ maximumTickSpacing: 32767;
21
+ maximumPositions: 32;
22
+ maximumOracleCardinality: 4096;
23
+ feeModeFlags: 3;
24
+ }>;
25
+ graph: Readonly<{
26
+ manager: "0x8366a39CC670B4001A1121B8F6A443A643e40951";
27
+ hookRoot: "0x0000000000000000000000000000000000000000";
28
+ oracleFactory: "0xe7feF2BC860B25bbdEB6F6AB96d88bAAa77ddad7";
29
+ locker: "0xAF96E3594942Ba12DC34e5da7fD4A3f61C2721Bc";
30
+ collectorFactory: "0xf86670535e6444735a84025408F47F417d4cAeeA";
31
+ collectorDeployer: "0x4F4305423Ad0D8e9fa7CD77be6Fe2bfc50A4BEbA";
32
+ hookDeployer: "0x7B7E967E4F0db00a397317Ec3d84903D3bc6eF85";
33
+ coreCodeHash: "0x9fb8f46c3b980b9db25dfdb487a69a308a86be145860269b4036a4e74480787b";
34
+ managerCodeHash: "0xbd3881180b547f5fe817545743cfb4343e96b1bc6640dcd70c106b0066e95626";
35
+ hookRuntimeCodeHash: "0x0000000000000000000000000000000000000000000000000000000000000000";
36
+ oracleFactoryCodeHash: "0x974fb5c72d91ccb99f1eb4679a5d4432c82bbaa0906b1c2917ec4da3499b7b98";
37
+ lockerCodeHash: "0xd2dc1ff8416e7524d777d937f7071fc91871fe0e85ce674e1b8a23420e44a3fc";
38
+ collectorFactoryCodeHash: "0xc298ea4bb51ed399f84572e9ad2324bf6ada59b5f40c4ddfdd05869abf9a2e25";
39
+ collectorDeployerCodeHash: "0x5761744b5ce04faf6a0a1ffcb3ac837d8e048f4420b0be131dfa289559b18c76";
40
+ hookDeployerCodeHash: "0x540ae006e2bc08cd7a38a18e72fddd29c73d1fab0c39a42e87297e67f335b982";
41
+ hookCreationCodeHash: "0x3b8b7ab8614512ce93d65c6aeb6ed18bb150ef7d74417c7282075ff683f1e35b";
42
+ codeChunk0: "0x81abA522890dae0aBC1623C135F0DbD662378d47";
43
+ codeChunk0Hash: "0xa46f41e8834c1e19b0d2eac0d296e3911c2c9e717159be00720a8cb4cc535b60";
44
+ codeChunk1: "0xf9Aa8888648b5f8C9806c772978F8803645ff44A";
45
+ codeChunk1Hash: "0x6976fbf3fcdb32312abfbc7bdd91706b1d70930d3978821cfd47b8943f656fc2";
46
+ sharedHookSalt: "0x0000000000000000000000000000000000000000000000000000000000000000";
47
+ }>;
48
+ }>;
49
+ export declare const hmmDynamicAdapter: Readonly<{
50
+ implementation: "0xb2a163646bB3661230f6e6A3c258e809514a748A";
51
+ codeHash: "0x087ffe3f38742a8cb94ea30b18c2c6150278685bf24e78b406ffb1ff77d4f4bc";
52
+ capabilities: 123n;
53
+ configVersion: 6;
54
+ enabled: true;
55
+ }>;
56
+ export declare const hmmDynamicRegistration: Readonly<{
57
+ adapterId: "0x7fbf1836bab81414a0820c856b45d769a85a60853e92e4a9554e2eedf047dbcf";
58
+ configSchema: "0x51c5ca14c40012f78425cd1afb1ea77980da3fed0490a00911a8a4ed34792045";
59
+ dependencyDigest: "0x9fc926ed5da5a2132d3eb08c93531cf70b992d600f2a54b319801375d22451f5";
60
+ venue: "0x8366a39CC670B4001A1121B8F6A443A643e40951";
61
+ factory: "0x0000000000000000000000000000000000000000";
62
+ hook: "0x0000000000000000000000000000000000000000";
63
+ capabilities: 123n;
64
+ enabled: true;
65
+ }>;
66
+ export declare const hmmDynamicCreationCode: Hex;
67
+ //# sourceMappingURL=hmm-dynamic-pool-hook-v1-20261011.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hmm-dynamic-pool-hook-v1-20261011.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/deployments/hmm-dynamic-pool-hook-v1-20261011.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAKhC,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8CF,CAAC;AAC9B,eAAO,MAAM,iBAAiB;;;;;;EAMI,CAAC;AACnC,eAAO,MAAM,sBAAsB;;;;;;;;;EASD,CAAC;AAEnC,eAAO,MAAM,sBAAsB,EAAE,GAA8/yD,CAAC"}