[ { "inputs": [ { "internalType": "address", "name": "_layerZeroEndpoint", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "currentAllowance", "type": "uint256" }, { "internalType": "uint256", "name": "requestedDecrease", "type": "uint256" } ], "name": "ERC20FailedDecreaseAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "indexed": false, "internalType": "bytes", "name": "_srcAddress", "type": "bytes" }, { "indexed": false, "internalType": "uint64", "name": "_nonce", "type": "uint64" }, { "indexed": false, "internalType": "bytes", "name": "_payload", "type": "bytes" }, { "indexed": false, "internalType": "bytes", "name": "_reason", "type": "bytes" } ], "name": "MessageFailed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "indexed": true, "internalType": "address", "name": "_to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "ReceiveFromChain", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "indexed": false, "internalType": "bytes", "name": "_srcAddress", "type": "bytes" }, { "indexed": false, "internalType": "uint64", "name": "_nonce", "type": "uint64" }, { "indexed": false, "internalType": "bytes32", "name": "_payloadHash", "type": "bytes32" } ], "name": "RetryMessageSuccess", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint16", "name": "_dstChainId", "type": "uint16" }, { "indexed": true, "internalType": "address", "name": "_from", "type": "address" }, { "indexed": false, "internalType": "bytes", "name": "_toAddress", "type": "bytes" }, { "indexed": false, "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "SendToChain", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint16", "name": "_dstChainId", "type": "uint16" }, { "indexed": false, "internalType": "uint16", "name": "_type", "type": "uint16" }, { "indexed": false, "internalType": "uint256", "name": "_minDstGas", "type": "uint256" } ], "name": "SetMinDstGas", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "precrime", "type": "address" } ], "name": "SetPrecrime", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint16", "name": "_remoteChainId", "type": "uint16" }, { "indexed": false, "internalType": "bytes", "name": "_path", "type": "bytes" } ], "name": "SetTrustedRemote", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint16", "name": "_remoteChainId", "type": "uint16" }, { "indexed": false, "internalType": "bytes", "name": "_remoteAddress", "type": "bytes" } ], "name": "SetTrustedRemoteAddress", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bool", "name": "_useCustomAdapterParams", "type": "bool" } ], "name": "SetUseCustomAdapterParams", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "DEFAULT_PAYLOAD_SIZE_LIMIT", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "NO_EXTRA_GAS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PT_SEND", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "circulatingSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "requestedDecrease", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_dstChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_toAddress", "type": "bytes" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" }, { "internalType": "bool", "name": "_useZro", "type": "bool" }, { "internalType": "bytes", "name": "_adapterParams", "type": "bytes" } ], "name": "estimateSendFee", "outputs": [ { "internalType": "uint256", "name": "nativeFee", "type": "uint256" }, { "internalType": "uint256", "name": "zroFee", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_dstChainId", "type": "uint16" }, { "internalType": "bytes", "name": "payload", "type": "bytes" }, { "internalType": "bool", "name": "_useZro", "type": "bool" }, { "internalType": "bytes", "name": "_adapterParams", "type": "bytes" } ], "name": "estimateSendFee2", "outputs": [ { "internalType": "uint256", "name": "nativeFee", "type": "uint256" }, { "internalType": "uint256", "name": "zroFee", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "", "type": "uint16" }, { "internalType": "bytes", "name": "", "type": "bytes" }, { "internalType": "uint64", "name": "", "type": "uint64" } ], "name": "failedMessages", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "fee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_srcAddress", "type": "bytes" } ], "name": "forceResumeReceive", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_version", "type": "uint16" }, { "internalType": "uint16", "name": "_chainId", "type": "uint16" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "_configType", "type": "uint256" } ], "name": "getConfig", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_remoteChainId", "type": "uint16" } ], "name": "getTrustedRemoteAddress", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_srcAddress", "type": "bytes" } ], "name": "isTrustedRemote", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lzEndpoint", "outputs": [ { "internalType": "contract ILayerZeroEndpoint", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_srcAddress", "type": "bytes" }, { "internalType": "uint64", "name": "_nonce", "type": "uint64" }, { "internalType": "bytes", "name": "_payload", "type": "bytes" } ], "name": "lzReceive", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "", "type": "uint16" }, { "internalType": "uint16", "name": "", "type": "uint16" } ], "name": "minDstGasLookup", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_srcAddress", "type": "bytes" }, { "internalType": "uint64", "name": "_nonce", "type": "uint64" }, { "internalType": "bytes", "name": "_payload", "type": "bytes" } ], "name": "nonblockingLzReceive", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "name": "payloadSizeLimitLookup", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "precrime", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_srcAddress", "type": "bytes" }, { "internalType": "uint64", "name": "_nonce", "type": "uint64" }, { "internalType": "bytes", "name": "_payload", "type": "bytes" } ], "name": "retryMessage", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_from", "type": "address" }, { "internalType": "uint16", "name": "_dstChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_toAddress", "type": "bytes" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" }, { "internalType": "address payable", "name": "_refundAddress", "type": "address" }, { "internalType": "address", "name": "_zroPaymentAddress", "type": "address" }, { "internalType": "bytes", "name": "_adapterParams", "type": "bytes" } ], "name": "sendFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_version", "type": "uint16" }, { "internalType": "uint16", "name": "_chainId", "type": "uint16" }, { "internalType": "uint256", "name": "_configType", "type": "uint256" }, { "internalType": "bytes", "name": "_config", "type": "bytes" } ], "name": "setConfig", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_fee", "type": "uint256" } ], "name": "setFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_dstChainId", "type": "uint16" }, { "internalType": "uint16", "name": "_packetType", "type": "uint16" }, { "internalType": "uint256", "name": "_minGas", "type": "uint256" } ], "name": "setMinDstGas", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_dstChainId", "type": "uint16" }, { "internalType": "uint256", "name": "_size", "type": "uint256" } ], "name": "setPayloadSizeLimit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_precrime", "type": "address" } ], "name": "setPrecrime", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_version", "type": "uint16" } ], "name": "setReceiveVersion", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_version", "type": "uint16" } ], "name": "setSendVersion", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_remoteChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_path", "type": "bytes" } ], "name": "setTrustedRemote", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_remoteChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_remoteAddress", "type": "bytes" } ], "name": "setTrustedRemoteAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_useCustomAdapterParams", "type": "bool" } ], "name": "setUseCustomAdapterParams", "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": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "token", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "name": "trustedRemoteLookup", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "useCustomAdapterParams", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "payable", "type": "function" } ]
60a0604052650246139ca800600c553480156200001b57600080fd5b5060405162003a1038038062003a108339810160408190526200003e9162000120565b6040518060400160405280600a81526020016913595c9adb1e4813d19560b21b815250604051806040016040528060048152602001634d45524b60e01b815250828282828080336200009681620000d060201b60201c565b506001600160a01b031660805250600a9050620000b48382620001f7565b50600b620000c38282620001f7565b50505050505050620002c3565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200013357600080fd5b81516001600160a01b03811681146200014b57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200017d57607f821691505b6020821081036200019e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001f257600081815260208120601f850160051c81016020861015620001cd5750805b601f850160051c820191505b81811015620001ee57828155600101620001d9565b5050505b505050565b81516001600160401b0381111562000213576200021362000152565b6200022b8162000224845462000168565b84620001a4565b602080601f8311600181146200026357600084156200024a5750858301515b600019600386901b1c1916600185901b178555620001ee565b600085815260208120601f198616915b82811015620002945788860151825594840194600190910190840162000273565b5085821015620002b35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6080516136f26200031e600039600081816107ae0152818161093f01528181610c5e01528181610d1e01528181610dbc0152818161102c01528181611206015281816115f201528181611a5f015261248901526136f26000f3fe6080604052600436106102c85760003560e01c8063715018a611610175578063baf3292d116100dc578063df2a5b3b11610095578063ed629c5c1161006f578063ed629c5c146108cf578063f2fde38b146108e9578063f5ecbdbc14610909578063fc0c546a1461092957600080fd5b8063df2a5b3b1461086f578063eab45d9c1461088f578063eb8d72b7146108af57600080fd5b8063baf3292d146107d0578063c4461834146107f0578063cbed8b9c14610806578063d1deba1f14610826578063dd62ed3e14610839578063ddca3f431461085957600080fd5b806395d89b411161012e57806395d89b41146107075780639f38369a1461071c578063a457c2d71461073c578063a6c3d1651461075c578063a9059cbb1461077c578063b353aaa71461079c57600080fd5b8063715018a6146106335780637533d788146106485780638cfd8f5c146106685780638da5cb5b146106a05780639358928b146106d2578063950c8a74146106e757600080fd5b80633ccfd60b116102345780634c42899a116101ed57806366ad5c8a116101c757806366ad5c8a1461059d57806369fe0e2d146105bd5780636d413538146105dd57806370a08231146105fd57600080fd5b80634c42899a14610513578063519056361461053b5780635b8c41e61461054e57600080fd5b80633ccfd60b146104765780633d8b38f61461047e5780633f1f4fa41461049e57806340c10f19146104cb57806342d65a8d146104de57806344770515146104fe57600080fd5b806310ddb1371161028657806310ddb137146103a657806318160ddd146103c657806323b872dd146103e55780632a205e3d14610405578063313ce5671461043a578063395093511461045657600080fd5b80621d3567146102cd57806301ffc9a7146102ef57806306fdde031461032457806307e0db1714610346578063095ea7b3146103665780630df3748314610386575b600080fd5b3480156102d957600080fd5b506102ed6102e836600461285d565b61093c565b005b3480156102fb57600080fd5b5061030f61030a3660046128f2565b610b6d565b60405190151581526020015b60405180910390f35b34801561033057600080fd5b50610339610bab565b60405161031b919061296c565b34801561035257600080fd5b506102ed61036136600461297f565b610c3d565b34801561037257600080fd5b5061030f6103813660046129b1565b610cc6565b34801561039257600080fd5b506102ed6103a13660046129dd565b610cde565b3480156103b257600080fd5b506102ed6103c136600461297f565b610cfd565b3480156103d257600080fd5b506009545b60405190815260200161031b565b3480156103f157600080fd5b5061030f6104003660046129fb565b610d55565b34801561041157600080fd5b50610425610420366004612a4c565b610d79565b6040805192835260208301919091520161031b565b34801561044657600080fd5b506040516012815260200161031b565b34801561046257600080fd5b5061030f6104713660046129b1565b610e4c565b6102ed610e6e565b34801561048a57600080fd5b5061030f610499366004612aeb565b610ece565b3480156104aa57600080fd5b506103d76104b936600461297f565b60036020526000908152604090205481565b6102ed6104d93660046129b1565b610f9a565b3480156104ea57600080fd5b506102ed6104f9366004612aeb565b61100d565b34801561050a57600080fd5b506103d7600081565b34801561051f57600080fd5b50610528600081565b60405161ffff909116815260200161031b565b6102ed610549366004612b3f565b611093565b34801561055a57600080fd5b506103d7610569366004612ccb565b6005602090815260009384526040808520845180860184018051928152908401958401959095209452929052825290205481565b3480156105a957600080fd5b506102ed6105b836600461285d565b611118565b3480156105c957600080fd5b506102ed6105d8366004612d2a565b6111f4565b3480156105e957600080fd5b506104256105f8366004612d43565b611201565b34801561060957600080fd5b506103d7610618366004612dc9565b6001600160a01b031660009081526007602052604090205490565b34801561063f57600080fd5b506102ed6112a5565b34801561065457600080fd5b5061033961066336600461297f565b6112b9565b34801561067457600080fd5b506103d7610683366004612de6565b600260209081526000928352604080842090915290825290205481565b3480156106ac57600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161031b565b3480156106de57600080fd5b506103d7611353565b3480156106f357600080fd5b506004546106ba906001600160a01b031681565b34801561071357600080fd5b50610339611363565b34801561072857600080fd5b5061033961073736600461297f565b611372565b34801561074857600080fd5b5061030f6107573660046129b1565b611488565b34801561076857600080fd5b506102ed610777366004612aeb565b6114df565b34801561078857600080fd5b5061030f6107973660046129b1565b611568565b3480156107a857600080fd5b506106ba7f000000000000000000000000000000000000000000000000000000000000000081565b3480156107dc57600080fd5b506102ed6107eb366004612dc9565b611576565b3480156107fc57600080fd5b506103d761271081565b34801561081257600080fd5b506102ed610821366004612e1f565b6115d3565b6102ed61083436600461285d565b61165d565b34801561084557600080fd5b506103d7610854366004612e91565b611873565b34801561086557600080fd5b506103d7600c5481565b34801561087b57600080fd5b506102ed61088a366004612ebf565b61189e565b34801561089b57600080fd5b506102ed6108aa366004612eef565b611950565b3480156108bb57600080fd5b506102ed6108ca366004612aeb565b611999565b3480156108db57600080fd5b5060065461030f9060ff1681565b3480156108f557600080fd5b506102ed610904366004612dc9565b6119f3565b34801561091557600080fd5b50610339610924366004612f0a565b611a2e565b34801561093557600080fd5b50306106ba565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146109b95760405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c6572000060448201526064015b60405180910390fd5b61ffff8616600090815260016020526040812080546109d790612f5b565b80601f0160208091040260200160405190810160405280929190818152602001828054610a0390612f5b565b8015610a505780601f10610a2557610100808354040283529160200191610a50565b820191906000526020600020905b815481529060010190602001808311610a3357829003601f168201915b50505050509050805186869050148015610a6b575060008151115b8015610a93575080516020820120604051610a899088908890612f95565b6040518091039020145b610aee5760405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b60648201526084016109b0565b610b648787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250611adf92505050565b50505050505050565b60006001600160e01b031982161580610b9657506001600160e01b031982166336372b0760e01b145b80610ba55750610ba582611b58565b92915050565b6060600a8054610bba90612f5b565b80601f0160208091040260200160405190810160405280929190818152602001828054610be690612f5b565b8015610c335780601f10610c0857610100808354040283529160200191610c33565b820191906000526020600020905b815481529060010190602001808311610c1657829003601f168201915b5050505050905090565b610c45611b8d565b6040516307e0db1760e01b815261ffff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307e0db17906024015b600060405180830381600087803b158015610cab57600080fd5b505af1158015610cbf573d6000803e3d6000fd5b5050505050565b600033610cd4818585611bba565b5060019392505050565b610ce6611b8d565b61ffff909116600090815260036020526040902055565b610d05611b8d565b6040516310ddb13760e01b815261ffff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906310ddb13790602401610c91565b600033610d63858285611bcc565b610d6e858585611c32565b506001949350505050565b600080600080898989604051602001610d959493929190612fce565b60408051601f198184030181529082905263040a7bb160e41b825291506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340a7bb1090610dfb908d90309086908c908c908c90600401612ffd565b6040805180830381865afa158015610e17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3b9190613053565b925092505097509795505050505050565b600033610cd4818585610e5f8383611873565b610e69919061308d565b611bba565b610e76611b8d565b604051600090339047908381818185875af1925050503d8060008114610eb8576040519150601f19603f3d011682016040523d82523d6000602084013e610ebd565b606091505b5050905080610ecb57600080fd5b50565b61ffff831660009081526001602052604081208054829190610eef90612f5b565b80601f0160208091040260200160405190810160405280929190818152602001828054610f1b90612f5b565b8015610f685780601f10610f3d57610100808354040283529160200191610f68565b820191906000526020600020905b815481529060010190602001808311610f4b57829003601f168201915b505050505090508383604051610f7f929190612f95565b60405180910390208180519060200120149150509392505050565b34600c5482610fa991906130a0565b1115610fea5760405162461bcd60e51b815260206004820152601060248201526f2737ba1032b737bab3b41032ba3432b960811b60448201526064016109b0565b61100982610ffa6012600a61319b565b61100490846130a0565b611c91565b5050565b611015611b8d565b6040516342d65a8d60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906342d65a8d90611065908690869086906004016131aa565b600060405180830381600087803b15801561107f57600080fd5b505af1158015610b64573d6000803e3d6000fd5b61110d898989898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881528c93508b92508a918a908a9081908401838280828437600092019190915250611cc792505050565b505050505050505050565b3330146111765760405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b60648201526084016109b0565b6111ec8686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611dca92505050565b505050505050565b6111fc611b8d565b600c55565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166340a7bb1087308888886040518663ffffffff1660e01b81526004016112589594939291906131c8565b6040805180830381865afa158015611274573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112989190613053565b9150915094509492505050565b6112ad611b8d565b6112b76000611e31565b565b600160205260009081526040902080546112d290612f5b565b80601f01602080910402602001604051908101604052809291908181526020018280546112fe90612f5b565b801561134b5780601f106113205761010080835404028352916020019161134b565b820191906000526020600020905b81548152906001019060200180831161132e57829003601f168201915b505050505081565b600061135e60095490565b905090565b6060600b8054610bba90612f5b565b61ffff811660009081526001602052604081208054606092919061139590612f5b565b80601f01602080910402602001604051908101604052809291908181526020018280546113c190612f5b565b801561140e5780601f106113e35761010080835404028352916020019161140e565b820191906000526020600020905b8154815290600101906020018083116113f157829003601f168201915b5050505050905080516000036114665760405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f726400000060448201526064016109b0565b611481600060148351611479919061321c565b839190611e81565b9392505050565b600033816114968286611873565b9050838110156114d257604051632983c0c360e21b81526001600160a01b038616600482015260248101829052604481018590526064016109b0565b610d6e8286868403611bba565b6114e7611b8d565b8181306040516020016114fc9392919061322f565b60408051601f1981840301815291815261ffff8516600090815260016020522090611527908261329b565b507f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce83838360405161155b939291906131aa565b60405180910390a1505050565b600033610cd4818585611c32565b61157e611b8d565b600480546001600160a01b0319166001600160a01b0383169081179091556040519081527f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b906020015b60405180910390a150565b6115db611b8d565b6040516332fb62e760e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cbed8b9c9061162f908890889088908890889060040161335a565b600060405180830381600087803b15801561164957600080fd5b505af115801561110d573d6000803e3d6000fd5b61ffff861660009081526005602052604080822090516116809088908890612f95565b90815260408051602092819003830190206001600160401b038716600090815292529020549050806117005760405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b60648201526084016109b0565b808383604051611711929190612f95565b6040518091039020146117705760405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b60648201526084016109b0565b61ffff871660009081526005602052604080822090516117939089908990612f95565b90815260408051602092819003830181206001600160401b038916600090815290845282902093909355601f8801829004820283018201905286825261182b918991899089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250611dca92505050565b7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e58787878785604051611862959493929190613393565b60405180910390a150505050505050565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b6118a6611b8d565b600081116118ee5760405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b60448201526064016109b0565b61ffff83811660008181526002602090815260408083209487168084529482529182902085905581519283528201929092529081018290527f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09060600161155b565b611958611b8d565b6006805460ff19168215159081179091556040519081527f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a4906020016115c8565b6119a1611b8d565b61ffff831660009081526001602052604090206119bf8284836133ce565b507ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab83838360405161155b939291906131aa565b6119fb611b8d565b6001600160a01b038116611a2557604051631e4fbdf760e01b8152600060048201526024016109b0565b610ecb81611e31565b604051633d7b2f6f60e21b815261ffff808616600483015284166024820152306044820152606481018290526060907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f5ecbdbc90608401600060405180830381865afa158015611aae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ad691908101906134da565b95945050505050565b600080611b425a60966366ad5c8a60e01b89898989604051602401611b07949392919061350e565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915230929190611f8e565b91509150816111ec576111ec8686868685612018565b60006001600160e01b03198216630a72677560e11b1480610ba557506301ffc9a760e01b6001600160e01b0319831614610ba5565b6000546001600160a01b031633146112b75760405163118cdaa760e01b81523360048201526024016109b0565b611bc783838360016120b5565b505050565b6000611bd88484611873565b90506000198114611c2c5781811015611c1d57604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016109b0565b611c2c848484840360006120b5565b50505050565b6001600160a01b038316611c5c57604051634b637e8f60e11b8152600060048201526024016109b0565b6001600160a01b038216611c865760405163ec442f0560e01b8152600060048201526024016109b0565b611bc783838361218a565b6001600160a01b038216611cbb5760405163ec442f0560e01b8152600060048201526024016109b0565b6110096000838361218a565b611cd58660008360006122b4565b6000611ce38888888861232e565b90506000808783604051602001611cfc9392919061354c565b60405160208183030381529060405290506000611d1c8983600087611201565b50905080341015611d685760405162461bcd60e51b8152602060048201526016602482015275139bdd08195b9bdd59da0819d85cc81d1bc81cd95b9960521b60448201526064016109b0565b611d76898388888886612360565b896001600160a01b03168961ffff167f39a4c66499bcf4b56d79f0dde8ed7a9d4925a0df55825206b2b8531e202be0d08a86604051611db6929190613579565b60405180910390a350505050505050505050565b602081015161ffff8116611de957611de485858585612505565b610cbf565b60405162461bcd60e51b815260206004820152601c60248201527f4f4654436f72653a20756e6b6e6f776e207061636b657420747970650000000060448201526064016109b0565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606081611e8f81601f61308d565b1015611ece5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016109b0565b611ed8828461308d565b84511015611f1c5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016109b0565b606082158015611f3b5760405191506000825260208201604052611f85565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015611f74578051835260209283019201611f5c565b5050858452601f01601f1916604052505b50949350505050565b6000606060008060008661ffff166001600160401b03811115611fb357611fb3612c08565b6040519080825280601f01601f191660200182016040528015611fdd576020820181803683370190505b50905060008087516020890160008d8df191503d925086831115611fff578692505b828152826000602083013e909890975095505050505050565b8180519060200120600560008761ffff1661ffff16815260200190815260200160002085604051612049919061359b565b9081526040805191829003602090810183206001600160401b0388166000908152915220919091557fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c906120a690879087908790879087906135b7565b60405180910390a15050505050565b6001600160a01b0384166120df5760405163e602df0560e01b8152600060048201526024016109b0565b6001600160a01b03831661210957604051634a1406b160e11b8152600060048201526024016109b0565b6001600160a01b0380851660009081526008602090815260408083209387168352929052208290558015611c2c57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161217c91815260200190565b60405180910390a350505050565b6001600160a01b0383166121b55780600960008282546121aa919061308d565b909155506122279050565b6001600160a01b038316600090815260076020526040902054818110156122085760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016109b0565b6001600160a01b03841660009081526007602052604090209082900390555b6001600160a01b03821661224357600980548290039055612262565b6001600160a01b03821660009081526007602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516122a791815260200190565b60405180910390a3505050565b60065460ff16156122d0576122cb8484848461258f565b611c2c565b815115611c2c5760405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b60648201526084016109b0565b6000336001600160a01b038616811461234c5761234c868285611bcc565b612356868461266e565b5090949350505050565b61ffff86166000908152600160205260408120805461237e90612f5b565b80601f01602080910402602001604051908101604052809291908181526020018280546123aa90612f5b565b80156123f75780601f106123cc576101008083540402835291602001916123f7565b820191906000526020600020905b8154815290600101906020018083116123da57829003601f168201915b5050505050905080516000036124685760405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b60648201526084016109b0565b6124738787516126a4565b60405162c5803160e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c58031009084906124ca908b9086908c908c908c908c90600401613609565b6000604051808303818588803b1580156124e357600080fd5b505af11580156124f7573d6000803e3d6000fd5b505050505050505050505050565b6000808280602001905181019061251c9190613663565b90935091506000905061252f8382612715565b905061253c87828461277a565b9150806001600160a01b03168761ffff167fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf8460405161257e91815260200190565b60405180910390a350505050505050565b600061259a8361278d565b61ffff8087166000908152600260209081526040808320938916835292905290812054919250906125cc90849061308d565b90506000811161261e5760405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f742073657400000000000060448201526064016109b0565b808210156111ec5760405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f77000000000060448201526064016109b0565b6001600160a01b03821661269857604051634b637e8f60e11b8152600060048201526024016109b0565b6110098260008361218a565b61ffff8216600090815260036020526040812054908190036126c557506127105b80821115611bc75760405162461bcd60e51b815260206004820181905260248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c6172676560448201526064016109b0565b600061272282601461308d565b8351101561276a5760405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b60448201526064016109b0565b500160200151600160601b900490565b60006127868383611c91565b5092915050565b60006022825110156127e15760405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d730000000060448201526064016109b0565b506022015190565b61ffff81168114610ecb57600080fd5b60008083601f84011261280b57600080fd5b5081356001600160401b0381111561282257600080fd5b60208301915083602082850101111561283a57600080fd5b9250929050565b80356001600160401b038116811461285857600080fd5b919050565b6000806000806000806080878903121561287657600080fd5b8635612881816127e9565b955060208701356001600160401b038082111561289d57600080fd5b6128a98a838b016127f9565b90975095508591506128bd60408a01612841565b945060608901359150808211156128d357600080fd5b506128e089828a016127f9565b979a9699509497509295939492505050565b60006020828403121561290457600080fd5b81356001600160e01b03198116811461148157600080fd5b60005b8381101561293757818101518382015260200161291f565b50506000910152565b6000815180845261295881602086016020860161291c565b601f01601f19169290920160200192915050565b6020815260006114816020830184612940565b60006020828403121561299157600080fd5b8135611481816127e9565b6001600160a01b0381168114610ecb57600080fd5b600080604083850312156129c457600080fd5b82356129cf8161299c565b946020939093013593505050565b600080604083850312156129f057600080fd5b82356129cf816127e9565b600080600060608486031215612a1057600080fd5b8335612a1b8161299c565b92506020840135612a2b8161299c565b929592945050506040919091013590565b8035801515811461285857600080fd5b600080600080600080600060a0888a031215612a6757600080fd5b8735612a72816127e9565b965060208801356001600160401b0380821115612a8e57600080fd5b612a9a8b838c016127f9565b909850965060408a01359550869150612ab560608b01612a3c565b945060808a0135915080821115612acb57600080fd5b50612ad88a828b016127f9565b989b979a50959850939692959293505050565b600080600060408486031215612b0057600080fd5b8335612b0b816127e9565b925060208401356001600160401b03811115612b2657600080fd5b612b32868287016127f9565b9497909650939450505050565b600080600080600080600080600060e08a8c031215612b5d57600080fd5b8935612b688161299c565b985060208a0135612b78816127e9565b975060408a01356001600160401b0380821115612b9457600080fd5b612ba08d838e016127f9565b909950975060608c0135965060808c01359150612bbc8261299c565b90945060a08b013590612bce8261299c565b90935060c08b01359080821115612be457600080fd5b50612bf18c828d016127f9565b915080935050809150509295985092959850929598565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612c4657612c46612c08565b604052919050565b60006001600160401b03821115612c6757612c67612c08565b50601f01601f191660200190565b600082601f830112612c8657600080fd5b8135612c99612c9482612c4e565b612c1e565b818152846020838601011115612cae57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215612ce057600080fd5b8335612ceb816127e9565b925060208401356001600160401b03811115612d0657600080fd5b612d1286828701612c75565b925050612d2160408501612841565b90509250925092565b600060208284031215612d3c57600080fd5b5035919050565b60008060008060808587031215612d5957600080fd5b8435612d64816127e9565b935060208501356001600160401b0380821115612d8057600080fd5b612d8c88838901612c75565b9450612d9a60408801612a3c565b93506060870135915080821115612db057600080fd5b50612dbd87828801612c75565b91505092959194509250565b600060208284031215612ddb57600080fd5b81356114818161299c565b60008060408385031215612df957600080fd5b8235612e04816127e9565b91506020830135612e14816127e9565b809150509250929050565b600080600080600060808688031215612e3757600080fd5b8535612e42816127e9565b94506020860135612e52816127e9565b93506040860135925060608601356001600160401b03811115612e7457600080fd5b612e80888289016127f9565b969995985093965092949392505050565b60008060408385031215612ea457600080fd5b8235612eaf8161299c565b91506020830135612e148161299c565b600080600060608486031215612ed457600080fd5b8335612edf816127e9565b92506020840135612a2b816127e9565b600060208284031215612f0157600080fd5b61148182612a3c565b60008060008060808587031215612f2057600080fd5b8435612f2b816127e9565b93506020850135612f3b816127e9565b92506040850135612f4b8161299c565b9396929550929360600135925050565b600181811c90821680612f6f57607f821691505b602082108103612f8f57634e487b7160e01b600052602260045260246000fd5b50919050565b8183823760009101908152919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b61ffff85168152606060208201526000612fec606083018587612fa5565b905082604083015295945050505050565b61ffff871681526001600160a01b038616602082015260a06040820181905260009061302b90830187612940565b85151560608401528281036080840152613046818587612fa5565b9998505050505050505050565b6000806040838503121561306657600080fd5b505080516020909101519092909150565b634e487b7160e01b600052601160045260246000fd5b80820180821115610ba557610ba5613077565b8082028115828204841417610ba557610ba5613077565b600181815b808511156130f25781600019048211156130d8576130d8613077565b808516156130e557918102915b93841c93908002906130bc565b509250929050565b60008261310957506001610ba5565b8161311657506000610ba5565b816001811461312c576002811461313657613152565b6001915050610ba5565b60ff84111561314757613147613077565b50506001821b610ba5565b5060208310610133831016604e8410600b8410161715613175575081810a610ba5565b61317f83836130b7565b806000190482111561319357613193613077565b029392505050565b600061148160ff8416836130fa565b61ffff84168152604060208201526000611ad6604083018486612fa5565b61ffff861681526001600160a01b038516602082015260a0604082018190526000906131f690830186612940565b841515606084015282810360808401526132108185612940565b98975050505050505050565b81810381811115610ba557610ba5613077565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b601f821115611bc757600081815260208120601f850160051c8101602086101561327c5750805b601f850160051c820191505b818110156111ec57828155600101613288565b81516001600160401b038111156132b4576132b4612c08565b6132c8816132c28454612f5b565b84613255565b602080601f8311600181146132fd57600084156132e55750858301515b600019600386901b1c1916600185901b1785556111ec565b600085815260208120601f198616915b8281101561332c5788860151825594840194600190910190840161330d565b508582101561334a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600061ffff808816835280871660208401525084604083015260806060830152613388608083018486612fa5565b979650505050505050565b61ffff861681526080602082015260006133b1608083018688612fa5565b6001600160401b0394909416604083015250606001529392505050565b6001600160401b038311156133e5576133e5612c08565b6133f9836133f38354612f5b565b83613255565b6000601f84116001811461342d57600085156134155750838201355b600019600387901b1c1916600186901b178355610cbf565b600083815260209020601f19861690835b8281101561345e578685013582556020948501946001909201910161343e565b508682101561347b5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b600082601f83011261349e57600080fd5b81516134ac612c9482612c4e565b8181528460208386010111156134c157600080fd5b6134d282602083016020870161291c565b949350505050565b6000602082840312156134ec57600080fd5b81516001600160401b0381111561350257600080fd5b6134d28482850161348d565b61ffff8516815260806020820152600061352b6080830186612940565b6001600160401b038516604084015282810360608401526133888185612940565b61ffff841681526060602082015260006135696060830185612940565b9050826040830152949350505050565b60408152600061358c6040830185612940565b90508260208301529392505050565b600082516135ad81846020870161291c565b9190910192915050565b61ffff8616815260a0602082015260006135d460a0830187612940565b6001600160401b038616604084015282810360608401526135f58186612940565b905082810360808401526132108185612940565b61ffff8716815260c06020820152600061362660c0830188612940565b82810360408401526136388188612940565b6001600160a01b0387811660608601528616608085015283810360a085015290506130468185612940565b60008060006060848603121561367857600080fd5b8351613683816127e9565b60208501519093506001600160401b0381111561369f57600080fd5b6136ab8682870161348d565b92505060408401519050925092509256fea2646970667358221220c5b0c8a705e0fbd783562ca9680813e064c97a0e8de4f71501601c1d6d1d00b864736f6c6343000813003300000000000000000000000066a71dcef29a0ffbdbe3c6a460a3b5bc225cd675