Files
2026-03-02 12:14:09 -08:00

955 lines
56 KiB
JSON

{
"_format": "hh-sol-artifact-1",
"contractName": "UniversalCCIPBridge",
"sourceName": "contracts/bridge/UniversalCCIPBridge.sol",
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "AccessControlBadConfirmation",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "bytes32",
"name": "neededRole",
"type": "bytes32"
}
],
"name": "AccessControlUnauthorizedAccount",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "target",
"type": "address"
}
],
"name": "AddressEmptyCode",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "AddressInsufficientBalance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "ERC1967InvalidImplementation",
"type": "error"
},
{
"inputs": [],
"name": "ERC1967NonPayable",
"type": "error"
},
{
"inputs": [],
"name": "FailedInnerCall",
"type": "error"
},
{
"inputs": [],
"name": "InvalidInitialization",
"type": "error"
},
{
"inputs": [],
"name": "NotInitializing",
"type": "error"
},
{
"inputs": [],
"name": "ReentrancyGuardReentrantCall",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "SafeERC20FailedOperation",
"type": "error"
},
{
"inputs": [],
"name": "UUPSUnauthorizedCallContext",
"type": "error"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "slot",
"type": "bytes32"
}
],
"name": "UUPSUnsupportedProxiableUUID",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "messageId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint64",
"name": "destinationChain",
"type": "uint64"
},
{
"indexed": false,
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "usedPMM",
"type": "bool"
}
],
"name": "BridgeExecuted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": true,
"internalType": "uint64",
"name": "chainSelector",
"type": "uint64"
},
{
"indexed": false,
"internalType": "address",
"name": "receiverBridge",
"type": "address"
}
],
"name": "DestinationAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": true,
"internalType": "uint64",
"name": "chainSelector",
"type": "uint64"
}
],
"name": "DestinationRemoved",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint64",
"name": "version",
"type": "uint64"
}
],
"name": "Initialized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "messageId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "uint64",
"name": "sourceChainSelector",
"type": "uint64"
},
{
"indexed": false,
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "MessageReceived",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "previousAdminRole",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "newAdminRole",
"type": "bytes32"
}
],
"name": "RoleAdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleGranted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleRevoked",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "Upgraded",
"type": "event"
},
{
"inputs": [],
"name": "BRIDGE_OPERATOR_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "DEFAULT_ADMIN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "UPGRADER_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "UPGRADE_INTERFACE_VERSION",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint64",
"name": "chainSelector",
"type": "uint64"
},
{
"internalType": "address",
"name": "receiverBridge",
"type": "address"
}
],
"name": "addDestination",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "assetRegistry",
"outputs": [
{
"internalType": "contract UniversalAssetRegistry",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint64",
"name": "destinationChain",
"type": "uint64"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "bytes32",
"name": "assetType",
"type": "bytes32"
},
{
"internalType": "bool",
"name": "usePMM",
"type": "bool"
},
{
"internalType": "bool",
"name": "useVault",
"type": "bool"
},
{
"internalType": "bytes",
"name": "complianceProof",
"type": "bytes"
},
{
"internalType": "bytes",
"name": "vaultInstructions",
"type": "bytes"
}
],
"internalType": "struct UniversalCCIPBridge.BridgeOperation",
"name": "op",
"type": "tuple"
}
],
"name": "bridge",
"outputs": [
{
"internalType": "bytes32",
"name": "messageId",
"type": "bytes32"
}
],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [],
"name": "ccipRouter",
"outputs": [
{
"internalType": "contract IRouterClient",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint64",
"name": "",
"type": "uint64"
}
],
"name": "destinations",
"outputs": [
{
"internalType": "address",
"name": "receiverBridge",
"type": "address"
},
{
"internalType": "bool",
"name": "enabled",
"type": "bool"
},
{
"internalType": "uint256",
"name": "addedAt",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint64",
"name": "chainSelector",
"type": "uint64"
}
],
"name": "getDestination",
"outputs": [
{
"components": [
{
"internalType": "address",
"name": "receiverBridge",
"type": "address"
},
{
"internalType": "bool",
"name": "enabled",
"type": "bool"
},
{
"internalType": "uint256",
"name": "addedAt",
"type": "uint256"
}
],
"internalType": "struct UniversalCCIPBridge.Destination",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"name": "getRoleAdmin",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "getUserNonce",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "getUserVault",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "grantRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "hasRole",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_assetRegistry",
"type": "address"
},
{
"internalType": "address",
"name": "_ccipRouter",
"type": "address"
},
{
"internalType": "address",
"name": "admin",
"type": "address"
}
],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "liquidityManager",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "nonces",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "processedMessages",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "proxiableUUID",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint64",
"name": "chainSelector",
"type": "uint64"
}
],
"name": "removeDestination",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "callerConfirmation",
"type": "address"
}
],
"name": "renounceRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "revokeRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_ccipRouter",
"type": "address"
}
],
"name": "setCCIPRouter",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_liquidityManager",
"type": "address"
}
],
"name": "setLiquidityManager",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_vaultFactory",
"type": "address"
}
],
"name": "setVaultFactory",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newImplementation",
"type": "address"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "upgradeToAndCall",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "userVaults",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "vaultFactory",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "withdraw",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
],
"bytecode": "0x60a080604052346100cc57306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff8260401c166100bd57506001600160401b036002600160401b031982821601610078575b60405161233690816100d282396080518181816108b5015261099a0152f35b6001600160401b031990911681179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1388080610059565b63f92ee8a960e01b8152600490fd5b600080fdfe608080604052600436101561001d575b50361561001b57600080fd5b005b60003560e01c90816301ffc9a7146118d5575080630de22984146118ac5780630fe3472c14610e2d578063248a9ca314610df15780632958d031146103115780632f2ff15d14610da557806331c1e16a14610d255780633382743814610cfc57806336568abe14610cb55780633c1624d414610c725780633ccfd60b14610c2c5780633ea7fbdb14610be95780634be40fd114610bae5780634f1ef2861461091f57806352d1902d146108a257806363673e501461082f5780636834e3a81461076b578063704f8848146107a55780637ecebe001461076b57806388ba16ab1461073a57806391d14854146106e0578063979d7e86146106b7578063a217fddf1461069b578063a6425c31146105fc578063ad3cb1cc146105b2578063c0c53b8b146103c1578063d547741f14610375578063d8a06f731461034c578063f2380a0814610311578063f72c0d8b146102d65763fa29f5261461017f573861000f565b346102d15760603660031901126102d157610198611928565b6101a0611a12565b906101a9611954565b906101b2611e8d565b6001600160a01b0390811691821561029f57811690811561026a577f204fe11fb8c7a51e768e894685e74e8fe9e8741492ea62d715826577a7a40eb5916020916001604051916102018361196a565b838352848301828152604084019142835288600052600487526001600160401b0360406000209a16998a6000528752604060002094511684549160ff60a01b9051151560a01b16916affffffffffffffffffffff60a81b161717835551910155604051908152a3005b60405162461bcd60e51b815260206004820152600d60248201526c2d32b937903932b1b2b4bb32b960991b6044820152606490fd5b60405162461bcd60e51b815260206004820152600a6024820152692d32b937903a37b5b2b760b11b6044820152606490fd5b600080fd5b346102d15760003660031901126102d15760206040517f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e38152f35b346102d15760203660031901126102d15760206001600160a01b0380610335611928565b166000526005825260406000205416604051908152f35b346102d15760003660031901126102d1576003546040516001600160a01b039091168152602090f35b346102d15760403660031901126102d15761001b60043561039461193e565b90806000526000805160206122c18339815191526020526103bc600160406000200154611ee9565b612179565b346102d15760603660031901126102d1576103da611928565b6103e261193e565b6103ea611954565b917ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009182549360ff8560401c1615926001600160401b038616958615806105ab575b600180981490816105a1575b159081610598575b506105865767ffffffffffffffff1981168717865584610567575b506104646121fc565b61046c6121fc565b6104746121fc565b856000805160206122e18339815191525561048d6121fc565b6001600160a01b03908116908115610532576104e0936bffffffffffffffffffffffff60a01b92836000541617600055169081610525575b50506104d081611f1c565b506104da81611faa565b5061205a565b506104e757005b805468ff0000000000000000191690556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b86541617855585806104c5565b60405162461bcd60e51b815260206004820152600d60248201526c5a65726f20726567697374727960981b6044820152606490fd5b68ffffffffffffffffff1916680100000000000000011785558661045b565b60405163f92ee8a960e01b8152600490fd5b90501588610440565b303b159150610438565b508461042c565b346102d15760003660031901126102d1576105f86040516105d2816119a0565b60058152640352e302e360dc1b6020820152604051918291602083526020830190611a4b565b0390f35b346102d15760403660031901126102d1576060610617611928565b61061f611a12565b610627611b19565b5060018060a01b0380921660005260046020526001600160401b0360406000209116600052602052604060002090604051906106628261196a565b6040600184549283169485855260ff602086019460a01c1615158452015492019182526040519283525115156020830152516040820152f35b346102d15760003660031901126102d157602060405160008152f35b346102d15760003660031901126102d1576000546040516001600160a01b039091168152602090f35b346102d15760403660031901126102d1576106f961193e565b6004356000526000805160206122c183398151915260205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b346102d15760203660031901126102d1576004356000526006602052602060ff604060002054166040519015158152f35b346102d15760203660031901126102d1576001600160a01b0361078c611928565b1660005260076020526020604060002054604051908152f35b346102d15760403660031901126102d1576107be611928565b6107c6611a12565b906107cf611e8d565b6001600160a01b031660008181526004602090815260408083206001600160401b0395909516808452949091528120805460ff60a01b191690557fcd50155673a3d71145772f9857052edc738a9ef46a69a04f1fed833f1708fb099080a3005b346102d15760403660031901126102d157606061084a611928565b610852611a12565b60018060a01b0380921660005260046020526001600160401b0360406000209116600052602052604060002060ff6001825492015491604051938116845260a01c16151560208301526040820152f35b346102d15760003660031901126102d1577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316300361090d5760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b60405163703e46dd60e11b8152600490fd5b60403660031901126102d157610933611928565b60249081356001600160401b0381116102d157366023820112156102d157806004013591610960836119f7565b61096d60405191826119d6565b83815260209384820193368783830101116102d15781600092888893018737830101526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116308114908115610b80575b5061090d577f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3806000526000805160206122c18339815191528652604060002033600052865260ff6040600020541615610b6357506040516352d1902d60e01b8152908316948082600481895afa918291600093610b33575b5050610a5d57604051634c9c8ce360e01b8152600481018690528690fd5b8490867f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc91828103610b1e5750843b15610b08575080546001600160a01b03191682179055604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2815115610aee5750600061001b9381925190845af4610ae8611b38565b9161223d565b9250505034610af957005b63b398979f60e01b8152600490fd5b604051634c9c8ce360e01b815260048101849052fd5b60405190632a87526960e21b82526004820152fd5b9080929350813d8311610b5c575b610b4b81836119d6565b810103126102d15751908780610a3f565b503d610b41565b866044916040519163e2517d3f60e01b8352336004840152820152fd5b9050817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc54161415876109c6565b346102d15760003660031901126102d15760206040517f7045adfe67d5f94dbfddcdb901e44bef55baacabb398c7cddda1bfd7620b15688152f35b346102d15760203660031901126102d157610c02611928565b610c0a611e35565b600380546001600160a01b0319166001600160a01b0392909216919091179055005b346102d15760003660031901126102d157610c45611e35565b600080808047818115610c69575b3390f115610c5d57005b6040513d6000823e3d90fd5b506108fc610c53565b346102d15760203660031901126102d157610c8b611928565b610c93611e35565b600280546001600160a01b0319166001600160a01b0392909216919091179055005b346102d15760403660031901126102d157610cce61193e565b336001600160a01b03821603610cea5761001b90600435612179565b60405163334bd91960e11b8152600490fd5b346102d15760003660031901126102d1576002546040516001600160a01b039091168152602090f35b346102d15760203660031901126102d157610d3e611928565b610d46611e35565b6001600160a01b03168015610d72576bffffffffffffffffffffffff60a01b6001541617600155600080f35b60405162461bcd60e51b815260206004820152600b60248201526a2d32b937903937baba32b960a91b6044820152606490fd5b346102d15760403660031901126102d15761001b600435610dc461193e565b90806000526000805160206122c1833981519152602052610dec600160406000200154611ee9565b612104565b346102d15760203660031901126102d1576004356000526000805160206122c18339815191526020526020600160406000200154604051908152f35b6003196020368201126102d1576001600160401b03600435116102d15761012090600435360301126102d15760026000805160206122e1833981519152541461189a5760026000805160206122e183398151915255600080546001600160a01b031690610e9d6004803501611a70565b60405163185c596360e11b81526001600160a01b03909116600482015291829060249082905afa908115610c5d5760009161160e575b50610220810151156115d65780516001600160a01b03161561159a576001600160a01b03610f046004803501611a70565b16600052600460205260406000206001600160401b03610f28604460043501611af8565b1660005260205260406000209060405191610f428361196a565b80546001600160a01b038116845260a01c60ff1615801560208501526001919091015460408401526115555781516001600160a01b03161561151d5760246004350135156114e75761010081015160246004350135106114b2576101200151602460043501351161147d576001600160a01b03610fc26004803501611a70565b1661101560008060405160208101906323b872dd60e01b82523360248201523060448201526024600435013560648201526064815261100081611985565b519082865af161100e611b38565b908361223d565b805190811515918261145a575b5050611442575061103760a460043501611b0c565b8061142e575b61141b575b61105060c460043501611b0c565b80611407575b6113f4575b611069606460043501611a70565b903360005260076020526040600020546040519260018060a01b031660208401526024600435013560408401523360608401526080830152608082526110ae82611985565b60018060a01b0390511690604051916020830152602082526110cf826119a0565b604051906110dc826119a0565b6001825260005b602081106113dd5750604051928360a08101106001600160401b0360a0860111176113c75760a08401604052835260208301526040820152600060608201526040518060208101106001600160401b036020830111176113c757602081016040526000815260808201526111a061115e600435600401611a70565b6040519061116b8261196a565b6001600160a01b0316815260043560240135602082015260006040808301919091528301519061119a82611d14565b52611d14565b506001546001600160a01b0316906111de906020816111c3600435604401611af8565b604051632bb74f2960e11b8152948592839260048401611d37565b0381865afa918215610c5d57600092611393575b5081471061135b5761122b9260409261120f604460043501611af8565b90845180968195829463306ab04160e21b845260048401611d37565b03925af1908115610c5d57600091611329575b503360005260076020526040600020908154916000198314611313576001602093019055611270600435600401611a70565b61127e604460043501611af8565b61128c606460043501611a70565b61129a60a460043501611b0c565b604080516004356024013581526001600160401b0394909416878501526001600160a01b0392831690840152151560608301523392169083907f6e13c3a4053492f10489076e138aeb13c656b658b1a5835874497ee79dfb5b1590608090a460016000805160206122e183398151915255604051908152f35b634e487b7160e01b600052601160045260246000fd5b90506040813d604011611353575b81611344604093836119d6565b810103126102d157518161123e565b3d9150611337565b60405162461bcd60e51b815260206004820152601060248201526f496e73756666696369656e742066656560801b6044820152606490fd5b9091506020813d6020116113bf575b816113af602093836119d6565b810103126102d1575190836111f2565b3d91506113a2565b634e487b7160e01b600052604160045260246000fd5b6020906113e8611b19565b828286010152016110e3565b611402600435600401611bdd565b61105b565b506003546001600160a01b03161515611056565b611429600435600401611b68565b611042565b506002546001600160a01b0316151561103d565b60249060405190635274afe760e01b82526004820152fd5b81925090602091810103126102d15760206114759101611aeb565b158380611022565b60405162461bcd60e51b815260206004820152600d60248201526c41626f7665206d6178696d756d60981b6044820152606490fd5b60405162461bcd60e51b815260206004820152600d60248201526c42656c6f77206d696e696d756d60981b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908185b5bdd5b9d60921b6044820152606490fd5b60405162461bcd60e51b815260206004820152601060248201526f24b73b30b634b2103932b1b2b4bb32b960811b6044820152606490fd5b60405162461bcd60e51b815260206004820152601760248201527f44657374696e6174696f6e206e6f7420656e61626c65640000000000000000006044820152606490fd5b60405162461bcd60e51b8152602060048201526014602482015273105cdcd95d081b9bdd081c9959da5cdd195c995960621b6044820152606490fd5b60405162461bcd60e51b815260206004820152601060248201526f4173736574206e6f742061637469766560801b6044820152606490fd5b3d9150816000823e61162082826119d6565b60208183810103126102d1578051906001600160401b0382116102d157610280928383830182840103126102d1576040519384018481106001600160401b038211176113c757604052611674838301611a84565b845260208383010151600a8110156102d15760208501526040838301015160058110156102d1576040850152606083830101516001600160401b0381116102d1576116c6908284019085850101611a98565b6060850152608083830101516001600160401b0381116102d1576116f1908284019085850101611a98565b608085015261170460a084840101611add565b60a085015260c083830101516001600160401b0381116102d15761172f908284019085850101611a98565b60c085015261174260e084840101611add565b60e08501528183016101008181015190860152610120808201519086015261014080820151908601526101609061177a908201611a84565b9085015261018061178e8185850101611aeb565b908501526101a0808484010151908501526101c06117af8185850101611aeb565b908501526101e083830101516001600160401b0381116102d157818301601f82868601010112156102d157808484010151916001600160401b0383116113c7578260051b6040519361180460208301866119d6565b84526020840191850160208285898901010101116102d157906020838787010101915b60208185898901010101831061187f57505050506101e08401526102008083830101519084015261022061185e8184840101611aeb565b90840152016102408181015190830152610260908101519082015281610ed3565b602080809361188d86611a84565b8152019301929150611827565b604051633ee5aeb560e01b8152600490fd5b346102d15760003660031901126102d1576001546040516001600160a01b039091168152602090f35b346102d15760203660031901126102d1576004359063ffffffff60e01b82168092036102d157602091637965db0b60e01b8114908115611917575b5015158152f35b6301ffc9a760e01b14905083611910565b600435906001600160a01b03821682036102d157565b602435906001600160a01b03821682036102d157565b604435906001600160a01b03821682036102d157565b606081019081106001600160401b038211176113c757604052565b60a081019081106001600160401b038211176113c757604052565b604081019081106001600160401b038211176113c757604052565b60c081019081106001600160401b038211176113c757604052565b90601f801991011681019081106001600160401b038211176113c757604052565b6001600160401b0381116113c757601f01601f191660200190565b602435906001600160401b03821682036102d157565b60005b838110611a3b5750506000910152565b8181015183820152602001611a2b565b90602091611a6481518092818552858086019101611a28565b601f01601f1916010190565b356001600160a01b03811681036102d15790565b51906001600160a01b03821682036102d157565b81601f820112156102d1578051611aae816119f7565b92611abc60405194856119d6565b818452602082840101116102d157611ada9160208085019101611a28565b90565b519060ff821682036102d157565b519081151582036102d157565b356001600160401b03811681036102d15790565b3580151581036102d15790565b60405190611b268261196a565b60006040838281528260208201520152565b3d15611b63573d90611b49826119f7565b91611b5760405193846119d6565b82523d6000602084013e565b606090565b6002546001600160a01b039081168015611bd8578260008094936020611b8e8396611a70565b93604051928284019563b7b3142f60e01b8752166024840152013560448201526060606482015281608482015260848152611bc8816119bb565b51925af150611bd5611b38565b50565b505050565b6003546001600160a01b039081168015611bd857600092338452602090600582528484604082205416938415611c92575b5050838316611c1f575b5050505050565b84936001600160401b0382611c348794611a70565b94611c4160408301611af8565b916040519482860197630f48aa5f60e31b89528760248801521660448601520135606484015216608482015260848152611c7a816119bb565b51925af150611c87611b38565b503880808080611c18565b81906040518286820191635a5eb7a360e11b835233602482015260248152611cb98161196a565b51925af1611cc5611b38565b90611cd2575b8590611c0e565b9092508181805181010312611d105781015191838316809303611d1057338552600582526040852080546001600160a01b0319168417905538611ccb565b8480fd5b805115611d215760200190565b634e487b7160e01b600052603260045260246000fd5b909291926001600160401b03604091168252602091604083820152611d68855160a0604084015260e0830190611a4b565b9183860151611d86603f199460609286868303016060870152611a4b565b604088015195858583030160808601528080885193848152019701936000936000915b848310611de1575050505050505060c06080611ada959660018060a01b0360608201511660a085015201519282850301910152611a4b565b90919293949598818a5160018060a01b038151168352868101518784015201516002811015611e2157828201528201988401959493926001019190611da9565b634e487b7160e01b88526021600452602488fd5b3360009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604081205460ff1615611e6f5750565b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b3360009081527ff0032186d03910e820cb3fd115c5fea4f88d913d568f567015a009fe33498ecd60205260409020547f7045adfe67d5f94dbfddcdb901e44bef55baacabb398c7cddda1bfd7620b15689060ff1615611e6f5750565b806000526000805160206122c183398151915260205260406000203360005260205260ff6040600020541615611e6f5750565b6001600160a01b031660008181527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260408120549091906000805160206122c18339815191529060ff16611fa5578280526020526040822081835260205260408220600160ff1982541617905533916000805160206122a18339815191528180a4600190565b505090565b6001600160a01b031660008181527ff0032186d03910e820cb3fd115c5fea4f88d913d568f567015a009fe33498ecd60205260408120549091907f7045adfe67d5f94dbfddcdb901e44bef55baacabb398c7cddda1bfd7620b1568906000805160206122c18339815191529060ff16612054578184526020526040832082845260205260408320600160ff198254161790556000805160206122a1833981519152339380a4600190565b50505090565b6001600160a01b031660008181527fab71e3f32666744d246edff3f96e4bdafee2e9867098cdd118a979a7464786a860205260408120549091907f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3906000805160206122c18339815191529060ff16612054578184526020526040832082845260205260408320600160ff198254161790556000805160206122a1833981519152339380a4600190565b906000918083526000805160206122c183398151915280602052604084209260018060a01b03169283855260205260ff60408520541615600014612054578184526020526040832082845260205260408320600160ff198254161790556000805160206122a1833981519152339380a4600190565b906000918083526000805160206122c183398151915280602052604084209260018060a01b03169283855260205260ff60408520541660001461205457818452602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4600190565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c161561222b57565b604051631afcd79f60e31b8152600490fd5b90612264575080511561225257805190602001fd5b604051630a12f52160e11b8152600490fd5b81511580612297575b612275575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b1561226d56fe2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a2646970667358221220425dc39e1317445f116fb1c3fc7a720d9b1bc69815368323edc56af2060f3af564736f6c63430008160033",
"deployedBytecode": "0x608080604052600436101561001d575b50361561001b57600080fd5b005b60003560e01c90816301ffc9a7146118d5575080630de22984146118ac5780630fe3472c14610e2d578063248a9ca314610df15780632958d031146103115780632f2ff15d14610da557806331c1e16a14610d255780633382743814610cfc57806336568abe14610cb55780633c1624d414610c725780633ccfd60b14610c2c5780633ea7fbdb14610be95780634be40fd114610bae5780634f1ef2861461091f57806352d1902d146108a257806363673e501461082f5780636834e3a81461076b578063704f8848146107a55780637ecebe001461076b57806388ba16ab1461073a57806391d14854146106e0578063979d7e86146106b7578063a217fddf1461069b578063a6425c31146105fc578063ad3cb1cc146105b2578063c0c53b8b146103c1578063d547741f14610375578063d8a06f731461034c578063f2380a0814610311578063f72c0d8b146102d65763fa29f5261461017f573861000f565b346102d15760603660031901126102d157610198611928565b6101a0611a12565b906101a9611954565b906101b2611e8d565b6001600160a01b0390811691821561029f57811690811561026a577f204fe11fb8c7a51e768e894685e74e8fe9e8741492ea62d715826577a7a40eb5916020916001604051916102018361196a565b838352848301828152604084019142835288600052600487526001600160401b0360406000209a16998a6000528752604060002094511684549160ff60a01b9051151560a01b16916affffffffffffffffffffff60a81b161717835551910155604051908152a3005b60405162461bcd60e51b815260206004820152600d60248201526c2d32b937903932b1b2b4bb32b960991b6044820152606490fd5b60405162461bcd60e51b815260206004820152600a6024820152692d32b937903a37b5b2b760b11b6044820152606490fd5b600080fd5b346102d15760003660031901126102d15760206040517f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e38152f35b346102d15760203660031901126102d15760206001600160a01b0380610335611928565b166000526005825260406000205416604051908152f35b346102d15760003660031901126102d1576003546040516001600160a01b039091168152602090f35b346102d15760403660031901126102d15761001b60043561039461193e565b90806000526000805160206122c18339815191526020526103bc600160406000200154611ee9565b612179565b346102d15760603660031901126102d1576103da611928565b6103e261193e565b6103ea611954565b917ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009182549360ff8560401c1615926001600160401b038616958615806105ab575b600180981490816105a1575b159081610598575b506105865767ffffffffffffffff1981168717865584610567575b506104646121fc565b61046c6121fc565b6104746121fc565b856000805160206122e18339815191525561048d6121fc565b6001600160a01b03908116908115610532576104e0936bffffffffffffffffffffffff60a01b92836000541617600055169081610525575b50506104d081611f1c565b506104da81611faa565b5061205a565b506104e757005b805468ff0000000000000000191690556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b86541617855585806104c5565b60405162461bcd60e51b815260206004820152600d60248201526c5a65726f20726567697374727960981b6044820152606490fd5b68ffffffffffffffffff1916680100000000000000011785558661045b565b60405163f92ee8a960e01b8152600490fd5b90501588610440565b303b159150610438565b508461042c565b346102d15760003660031901126102d1576105f86040516105d2816119a0565b60058152640352e302e360dc1b6020820152604051918291602083526020830190611a4b565b0390f35b346102d15760403660031901126102d1576060610617611928565b61061f611a12565b610627611b19565b5060018060a01b0380921660005260046020526001600160401b0360406000209116600052602052604060002090604051906106628261196a565b6040600184549283169485855260ff602086019460a01c1615158452015492019182526040519283525115156020830152516040820152f35b346102d15760003660031901126102d157602060405160008152f35b346102d15760003660031901126102d1576000546040516001600160a01b039091168152602090f35b346102d15760403660031901126102d1576106f961193e565b6004356000526000805160206122c183398151915260205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b346102d15760203660031901126102d1576004356000526006602052602060ff604060002054166040519015158152f35b346102d15760203660031901126102d1576001600160a01b0361078c611928565b1660005260076020526020604060002054604051908152f35b346102d15760403660031901126102d1576107be611928565b6107c6611a12565b906107cf611e8d565b6001600160a01b031660008181526004602090815260408083206001600160401b0395909516808452949091528120805460ff60a01b191690557fcd50155673a3d71145772f9857052edc738a9ef46a69a04f1fed833f1708fb099080a3005b346102d15760403660031901126102d157606061084a611928565b610852611a12565b60018060a01b0380921660005260046020526001600160401b0360406000209116600052602052604060002060ff6001825492015491604051938116845260a01c16151560208301526040820152f35b346102d15760003660031901126102d1577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316300361090d5760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b60405163703e46dd60e11b8152600490fd5b60403660031901126102d157610933611928565b60249081356001600160401b0381116102d157366023820112156102d157806004013591610960836119f7565b61096d60405191826119d6565b83815260209384820193368783830101116102d15781600092888893018737830101526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116308114908115610b80575b5061090d577f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3806000526000805160206122c18339815191528652604060002033600052865260ff6040600020541615610b6357506040516352d1902d60e01b8152908316948082600481895afa918291600093610b33575b5050610a5d57604051634c9c8ce360e01b8152600481018690528690fd5b8490867f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc91828103610b1e5750843b15610b08575080546001600160a01b03191682179055604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2815115610aee5750600061001b9381925190845af4610ae8611b38565b9161223d565b9250505034610af957005b63b398979f60e01b8152600490fd5b604051634c9c8ce360e01b815260048101849052fd5b60405190632a87526960e21b82526004820152fd5b9080929350813d8311610b5c575b610b4b81836119d6565b810103126102d15751908780610a3f565b503d610b41565b866044916040519163e2517d3f60e01b8352336004840152820152fd5b9050817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc54161415876109c6565b346102d15760003660031901126102d15760206040517f7045adfe67d5f94dbfddcdb901e44bef55baacabb398c7cddda1bfd7620b15688152f35b346102d15760203660031901126102d157610c02611928565b610c0a611e35565b600380546001600160a01b0319166001600160a01b0392909216919091179055005b346102d15760003660031901126102d157610c45611e35565b600080808047818115610c69575b3390f115610c5d57005b6040513d6000823e3d90fd5b506108fc610c53565b346102d15760203660031901126102d157610c8b611928565b610c93611e35565b600280546001600160a01b0319166001600160a01b0392909216919091179055005b346102d15760403660031901126102d157610cce61193e565b336001600160a01b03821603610cea5761001b90600435612179565b60405163334bd91960e11b8152600490fd5b346102d15760003660031901126102d1576002546040516001600160a01b039091168152602090f35b346102d15760203660031901126102d157610d3e611928565b610d46611e35565b6001600160a01b03168015610d72576bffffffffffffffffffffffff60a01b6001541617600155600080f35b60405162461bcd60e51b815260206004820152600b60248201526a2d32b937903937baba32b960a91b6044820152606490fd5b346102d15760403660031901126102d15761001b600435610dc461193e565b90806000526000805160206122c1833981519152602052610dec600160406000200154611ee9565b612104565b346102d15760203660031901126102d1576004356000526000805160206122c18339815191526020526020600160406000200154604051908152f35b6003196020368201126102d1576001600160401b03600435116102d15761012090600435360301126102d15760026000805160206122e1833981519152541461189a5760026000805160206122e183398151915255600080546001600160a01b031690610e9d6004803501611a70565b60405163185c596360e11b81526001600160a01b03909116600482015291829060249082905afa908115610c5d5760009161160e575b50610220810151156115d65780516001600160a01b03161561159a576001600160a01b03610f046004803501611a70565b16600052600460205260406000206001600160401b03610f28604460043501611af8565b1660005260205260406000209060405191610f428361196a565b80546001600160a01b038116845260a01c60ff1615801560208501526001919091015460408401526115555781516001600160a01b03161561151d5760246004350135156114e75761010081015160246004350135106114b2576101200151602460043501351161147d576001600160a01b03610fc26004803501611a70565b1661101560008060405160208101906323b872dd60e01b82523360248201523060448201526024600435013560648201526064815261100081611985565b519082865af161100e611b38565b908361223d565b805190811515918261145a575b5050611442575061103760a460043501611b0c565b8061142e575b61141b575b61105060c460043501611b0c565b80611407575b6113f4575b611069606460043501611a70565b903360005260076020526040600020546040519260018060a01b031660208401526024600435013560408401523360608401526080830152608082526110ae82611985565b60018060a01b0390511690604051916020830152602082526110cf826119a0565b604051906110dc826119a0565b6001825260005b602081106113dd5750604051928360a08101106001600160401b0360a0860111176113c75760a08401604052835260208301526040820152600060608201526040518060208101106001600160401b036020830111176113c757602081016040526000815260808201526111a061115e600435600401611a70565b6040519061116b8261196a565b6001600160a01b0316815260043560240135602082015260006040808301919091528301519061119a82611d14565b52611d14565b506001546001600160a01b0316906111de906020816111c3600435604401611af8565b604051632bb74f2960e11b8152948592839260048401611d37565b0381865afa918215610c5d57600092611393575b5081471061135b5761122b9260409261120f604460043501611af8565b90845180968195829463306ab04160e21b845260048401611d37565b03925af1908115610c5d57600091611329575b503360005260076020526040600020908154916000198314611313576001602093019055611270600435600401611a70565b61127e604460043501611af8565b61128c606460043501611a70565b61129a60a460043501611b0c565b604080516004356024013581526001600160401b0394909416878501526001600160a01b0392831690840152151560608301523392169083907f6e13c3a4053492f10489076e138aeb13c656b658b1a5835874497ee79dfb5b1590608090a460016000805160206122e183398151915255604051908152f35b634e487b7160e01b600052601160045260246000fd5b90506040813d604011611353575b81611344604093836119d6565b810103126102d157518161123e565b3d9150611337565b60405162461bcd60e51b815260206004820152601060248201526f496e73756666696369656e742066656560801b6044820152606490fd5b9091506020813d6020116113bf575b816113af602093836119d6565b810103126102d1575190836111f2565b3d91506113a2565b634e487b7160e01b600052604160045260246000fd5b6020906113e8611b19565b828286010152016110e3565b611402600435600401611bdd565b61105b565b506003546001600160a01b03161515611056565b611429600435600401611b68565b611042565b506002546001600160a01b0316151561103d565b60249060405190635274afe760e01b82526004820152fd5b81925090602091810103126102d15760206114759101611aeb565b158380611022565b60405162461bcd60e51b815260206004820152600d60248201526c41626f7665206d6178696d756d60981b6044820152606490fd5b60405162461bcd60e51b815260206004820152600d60248201526c42656c6f77206d696e696d756d60981b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908185b5bdd5b9d60921b6044820152606490fd5b60405162461bcd60e51b815260206004820152601060248201526f24b73b30b634b2103932b1b2b4bb32b960811b6044820152606490fd5b60405162461bcd60e51b815260206004820152601760248201527f44657374696e6174696f6e206e6f7420656e61626c65640000000000000000006044820152606490fd5b60405162461bcd60e51b8152602060048201526014602482015273105cdcd95d081b9bdd081c9959da5cdd195c995960621b6044820152606490fd5b60405162461bcd60e51b815260206004820152601060248201526f4173736574206e6f742061637469766560801b6044820152606490fd5b3d9150816000823e61162082826119d6565b60208183810103126102d1578051906001600160401b0382116102d157610280928383830182840103126102d1576040519384018481106001600160401b038211176113c757604052611674838301611a84565b845260208383010151600a8110156102d15760208501526040838301015160058110156102d1576040850152606083830101516001600160401b0381116102d1576116c6908284019085850101611a98565b6060850152608083830101516001600160401b0381116102d1576116f1908284019085850101611a98565b608085015261170460a084840101611add565b60a085015260c083830101516001600160401b0381116102d15761172f908284019085850101611a98565b60c085015261174260e084840101611add565b60e08501528183016101008181015190860152610120808201519086015261014080820151908601526101609061177a908201611a84565b9085015261018061178e8185850101611aeb565b908501526101a0808484010151908501526101c06117af8185850101611aeb565b908501526101e083830101516001600160401b0381116102d157818301601f82868601010112156102d157808484010151916001600160401b0383116113c7578260051b6040519361180460208301866119d6565b84526020840191850160208285898901010101116102d157906020838787010101915b60208185898901010101831061187f57505050506101e08401526102008083830101519084015261022061185e8184840101611aeb565b90840152016102408181015190830152610260908101519082015281610ed3565b602080809361188d86611a84565b8152019301929150611827565b604051633ee5aeb560e01b8152600490fd5b346102d15760003660031901126102d1576001546040516001600160a01b039091168152602090f35b346102d15760203660031901126102d1576004359063ffffffff60e01b82168092036102d157602091637965db0b60e01b8114908115611917575b5015158152f35b6301ffc9a760e01b14905083611910565b600435906001600160a01b03821682036102d157565b602435906001600160a01b03821682036102d157565b604435906001600160a01b03821682036102d157565b606081019081106001600160401b038211176113c757604052565b60a081019081106001600160401b038211176113c757604052565b604081019081106001600160401b038211176113c757604052565b60c081019081106001600160401b038211176113c757604052565b90601f801991011681019081106001600160401b038211176113c757604052565b6001600160401b0381116113c757601f01601f191660200190565b602435906001600160401b03821682036102d157565b60005b838110611a3b5750506000910152565b8181015183820152602001611a2b565b90602091611a6481518092818552858086019101611a28565b601f01601f1916010190565b356001600160a01b03811681036102d15790565b51906001600160a01b03821682036102d157565b81601f820112156102d1578051611aae816119f7565b92611abc60405194856119d6565b818452602082840101116102d157611ada9160208085019101611a28565b90565b519060ff821682036102d157565b519081151582036102d157565b356001600160401b03811681036102d15790565b3580151581036102d15790565b60405190611b268261196a565b60006040838281528260208201520152565b3d15611b63573d90611b49826119f7565b91611b5760405193846119d6565b82523d6000602084013e565b606090565b6002546001600160a01b039081168015611bd8578260008094936020611b8e8396611a70565b93604051928284019563b7b3142f60e01b8752166024840152013560448201526060606482015281608482015260848152611bc8816119bb565b51925af150611bd5611b38565b50565b505050565b6003546001600160a01b039081168015611bd857600092338452602090600582528484604082205416938415611c92575b5050838316611c1f575b5050505050565b84936001600160401b0382611c348794611a70565b94611c4160408301611af8565b916040519482860197630f48aa5f60e31b89528760248801521660448601520135606484015216608482015260848152611c7a816119bb565b51925af150611c87611b38565b503880808080611c18565b81906040518286820191635a5eb7a360e11b835233602482015260248152611cb98161196a565b51925af1611cc5611b38565b90611cd2575b8590611c0e565b9092508181805181010312611d105781015191838316809303611d1057338552600582526040852080546001600160a01b0319168417905538611ccb565b8480fd5b805115611d215760200190565b634e487b7160e01b600052603260045260246000fd5b909291926001600160401b03604091168252602091604083820152611d68855160a0604084015260e0830190611a4b565b9183860151611d86603f199460609286868303016060870152611a4b565b604088015195858583030160808601528080885193848152019701936000936000915b848310611de1575050505050505060c06080611ada959660018060a01b0360608201511660a085015201519282850301910152611a4b565b90919293949598818a5160018060a01b038151168352868101518784015201516002811015611e2157828201528201988401959493926001019190611da9565b634e487b7160e01b88526021600452602488fd5b3360009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604081205460ff1615611e6f5750565b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b3360009081527ff0032186d03910e820cb3fd115c5fea4f88d913d568f567015a009fe33498ecd60205260409020547f7045adfe67d5f94dbfddcdb901e44bef55baacabb398c7cddda1bfd7620b15689060ff1615611e6f5750565b806000526000805160206122c183398151915260205260406000203360005260205260ff6040600020541615611e6f5750565b6001600160a01b031660008181527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260408120549091906000805160206122c18339815191529060ff16611fa5578280526020526040822081835260205260408220600160ff1982541617905533916000805160206122a18339815191528180a4600190565b505090565b6001600160a01b031660008181527ff0032186d03910e820cb3fd115c5fea4f88d913d568f567015a009fe33498ecd60205260408120549091907f7045adfe67d5f94dbfddcdb901e44bef55baacabb398c7cddda1bfd7620b1568906000805160206122c18339815191529060ff16612054578184526020526040832082845260205260408320600160ff198254161790556000805160206122a1833981519152339380a4600190565b50505090565b6001600160a01b031660008181527fab71e3f32666744d246edff3f96e4bdafee2e9867098cdd118a979a7464786a860205260408120549091907f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3906000805160206122c18339815191529060ff16612054578184526020526040832082845260205260408320600160ff198254161790556000805160206122a1833981519152339380a4600190565b906000918083526000805160206122c183398151915280602052604084209260018060a01b03169283855260205260ff60408520541615600014612054578184526020526040832082845260205260408320600160ff198254161790556000805160206122a1833981519152339380a4600190565b906000918083526000805160206122c183398151915280602052604084209260018060a01b03169283855260205260ff60408520541660001461205457818452602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4600190565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c161561222b57565b604051631afcd79f60e31b8152600490fd5b90612264575080511561225257805190602001fd5b604051630a12f52160e11b8152600490fd5b81511580612297575b612275575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b1561226d56fe2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a2646970667358221220425dc39e1317445f116fb1c3fc7a720d9b1bc69815368323edc56af2060f3af564736f6c63430008160033",
"linkReferences": {},
"deployedLinkReferences": {}
}