Files
linea-monorepo/contracts/local-deployments-artifacts/dynamic-artifacts/TokenBridge.json
kyzooghost a83412e247 [Fix] Add more checks to TokenBridge.initialize() (#380)
* added new tests covering TokenBridge.initialise() changes

* ran npx hardhat docgen

* update TokenBridge dynamic artifact

* test verified commit

* reverse verified commit test

* added nonZeroChainId modifier

* Update contracts/contracts/tokenBridge/interfaces/ITokenBridge.sol

Co-authored-by: The Dark Jester <thedarkjester@users.noreply.github.com>
Signed-off-by: kyzooghost <73516204+kyzooghost@users.noreply.github.com>

* update ITokenBridge doc

* add initialization check for default admin

---------

Signed-off-by: kyzooghost <73516204+kyzooghost@users.noreply.github.com>
Co-authored-by: The Dark Jester <thedarkjester@users.noreply.github.com>
Co-authored-by: thedarkjester <grant.southey@consensys.net>
2025-01-06 03:05:28 -08:00

1490 lines
119 KiB
JSON

{
"_format": "hh-sol-artifact-1",
"contractName": "TokenBridge",
"sourceName": "contracts/tokenBridge/TokenBridge.sol",
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "AlreadyBridgedToken",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "AlreadyBrigedToNativeTokenSet",
"type": "error"
},
{
"inputs": [],
"name": "ArrayLengthsDoNotMatch",
"type": "error"
},
{
"inputs": [],
"name": "CallerIsNotMessageService",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "DecimalsAreUnknown",
"type": "error"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "permitData",
"type": "bytes4"
},
{
"internalType": "bytes4",
"name": "permitSelector",
"type": "bytes4"
}
],
"name": "InvalidPermitData",
"type": "error"
},
{
"inputs": [
{
"internalType": "enum IPauseManager.PauseType",
"name": "pauseType",
"type": "uint8"
}
],
"name": "IsNotPaused",
"type": "error"
},
{
"inputs": [
{
"internalType": "enum IPauseManager.PauseType",
"name": "pauseType",
"type": "uint8"
}
],
"name": "IsPaused",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "NativeToBridgedTokenAlreadySet",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "NotReserved",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "PermitNotAllowingBridge",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "PermitNotFromSender",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "remoteTokenBridge",
"type": "address"
}
],
"name": "RemoteTokenBridgeAlreadySet",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "ReservedToken",
"type": "error"
},
{
"inputs": [],
"name": "SenderNotAuthorized",
"type": "error"
},
{
"inputs": [],
"name": "SourceChainSameAsTargetChain",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "StatusAddressNotAllowed",
"type": "error"
},
{
"inputs": [],
"name": "TokenListEmpty",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "TokenNotDeployed",
"type": "error"
},
{
"inputs": [],
"name": "ZeroAddressNotAllowed",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "ZeroAmountNotAllowed",
"type": "error"
},
{
"inputs": [],
"name": "ZeroChainIdNotAllowed",
"type": "error"
},
{
"inputs": [],
"name": "ZeroHashNotAllowed",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "nativeToken",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "bridgedToken",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "address",
"name": "recipient",
"type": "address"
}
],
"name": "BridgingFinalized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "nativeToken",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "bridgedToken",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"indexed": true,
"internalType": "address",
"name": "recipient",
"type": "address"
}
],
"name": "BridgingFinalizedV2",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "BridgingInitiated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "BridgingInitiatedV2",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "nativeToken",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "customContract",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "setBy",
"type": "address"
}
],
"name": "CustomContractSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address[]",
"name": "tokens",
"type": "address[]"
},
{
"indexed": true,
"internalType": "address",
"name": "confirmedBy",
"type": "address"
}
],
"name": "DeploymentConfirmed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint8",
"name": "version",
"type": "uint8"
}
],
"name": "Initialized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "newMessageService",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "oldMessageService",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "setBy",
"type": "address"
}
],
"name": "MessageServiceUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "NewToken",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "bridgedToken",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "nativeToken",
"type": "address"
}
],
"name": "NewTokenDeployed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "enum IPauseManager.PauseType",
"name": "pauseType",
"type": "uint8"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"name": "PauseTypeRoleSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "messageSender",
"type": "address"
},
{
"indexed": true,
"internalType": "enum IPauseManager.PauseType",
"name": "pauseType",
"type": "uint8"
}
],
"name": "Paused",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "remoteSender",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "setter",
"type": "address"
}
],
"name": "RemoteSenderSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "remoteTokenBridge",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "setBy",
"type": "address"
}
],
"name": "RemoteTokenBridgeSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "ReservationRemoved",
"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": "token",
"type": "address"
}
],
"name": "TokenDeployed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "TokenReserved",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "enum IPauseManager.PauseType",
"name": "unPauseType",
"type": "uint8"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"name": "UnPauseTypeRoleSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "messageSender",
"type": "address"
},
{
"indexed": true,
"internalType": "enum IPauseManager.PauseType",
"name": "pauseType",
"type": "uint8"
}
],
"name": "UnPaused",
"type": "event"
},
{
"inputs": [],
"name": "CONTRACT_VERSION",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "DEFAULT_ADMIN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "PAUSE_ALL_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "PAUSE_COMPLETE_TOKEN_BRIDGING_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "PAUSE_INITIATE_TOKEN_BRIDGING_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "REMOVE_RESERVED_TOKEN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "SET_CUSTOM_CONTRACT_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "SET_MESSAGE_SERVICE_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "SET_REMOTE_TOKENBRIDGE_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "SET_RESERVED_TOKEN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "UNPAUSE_ALL_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "UNPAUSE_COMPLETE_TOKEN_BRIDGING_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "UNPAUSE_INITIATE_TOKEN_BRIDGING_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_token",
"type": "address"
},
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
},
{
"internalType": "address",
"name": "_recipient",
"type": "address"
}
],
"name": "bridgeToken",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_token",
"type": "address"
},
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
},
{
"internalType": "address",
"name": "_recipient",
"type": "address"
},
{
"internalType": "bytes",
"name": "_permitData",
"type": "bytes"
}
],
"name": "bridgeTokenWithPermit",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "bridged",
"type": "address"
}
],
"name": "bridgedToNativeToken",
"outputs": [
{
"internalType": "address",
"name": "native",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_nativeToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
},
{
"internalType": "address",
"name": "_recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "_chainId",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "_tokenMetadata",
"type": "bytes"
}
],
"name": "completeBridging",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "_tokens",
"type": "address[]"
}
],
"name": "confirmDeployment",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"name": "getRoleAdmin",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"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": [
{
"components": [
{
"internalType": "address",
"name": "defaultAdmin",
"type": "address"
},
{
"internalType": "address",
"name": "messageService",
"type": "address"
},
{
"internalType": "address",
"name": "tokenBeacon",
"type": "address"
},
{
"internalType": "uint256",
"name": "sourceChainId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "targetChainId",
"type": "uint256"
},
{
"internalType": "address[]",
"name": "reservedTokens",
"type": "address[]"
},
{
"components": [
{
"internalType": "address",
"name": "addressWithRole",
"type": "address"
},
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"internalType": "struct IPermissionsManager.RoleAddress[]",
"name": "roleAddresses",
"type": "tuple[]"
},
{
"components": [
{
"internalType": "enum IPauseManager.PauseType",
"name": "pauseType",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"internalType": "struct IPauseManager.PauseTypeRole[]",
"name": "pauseTypeRoles",
"type": "tuple[]"
},
{
"components": [
{
"internalType": "enum IPauseManager.PauseType",
"name": "pauseType",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"internalType": "struct IPauseManager.PauseTypeRole[]",
"name": "unpauseTypeRoles",
"type": "tuple[]"
}
],
"internalType": "struct ITokenBridge.InitializationData",
"name": "_initializationData",
"type": "tuple"
}
],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "enum IPauseManager.PauseType",
"name": "_pauseType",
"type": "uint8"
}
],
"name": "isPaused",
"outputs": [
{
"internalType": "bool",
"name": "pauseTypeIsPaused",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "messageService",
"outputs": [
{
"internalType": "contract IMessageService",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "address",
"name": "native",
"type": "address"
}
],
"name": "nativeToBridgedToken",
"outputs": [
{
"internalType": "address",
"name": "bridged",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "enum IPauseManager.PauseType",
"name": "_pauseType",
"type": "uint8"
}
],
"name": "pauseByType",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "pauseType",
"type": "bytes32"
}
],
"name": "pauseTypeStatuses",
"outputs": [
{
"internalType": "bool",
"name": "pauseStatus",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_defaultAdmin",
"type": "address"
},
{
"components": [
{
"internalType": "address",
"name": "addressWithRole",
"type": "address"
},
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"internalType": "struct IPermissionsManager.RoleAddress[]",
"name": "_roleAddresses",
"type": "tuple[]"
},
{
"components": [
{
"internalType": "enum IPauseManager.PauseType",
"name": "pauseType",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"internalType": "struct IPauseManager.PauseTypeRole[]",
"name": "_pauseTypeRoles",
"type": "tuple[]"
},
{
"components": [
{
"internalType": "enum IPauseManager.PauseType",
"name": "pauseType",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"internalType": "struct IPauseManager.PauseTypeRole[]",
"name": "_unpauseTypeRoles",
"type": "tuple[]"
}
],
"name": "reinitializePauseTypesAndPermissions",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "remoteSender",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_token",
"type": "address"
}
],
"name": "removeReserved",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"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": "_nativeToken",
"type": "address"
},
{
"internalType": "address",
"name": "_targetContract",
"type": "address"
}
],
"name": "setCustomContract",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "_nativeTokens",
"type": "address[]"
}
],
"name": "setDeployed",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_messageService",
"type": "address"
}
],
"name": "setMessageService",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_remoteTokenBridge",
"type": "address"
}
],
"name": "setRemoteTokenBridge",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_token",
"type": "address"
}
],
"name": "setReserved",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "sourceChainId",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "targetChainId",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "tokenBeacon",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "enum IPauseManager.PauseType",
"name": "_pauseType",
"type": "uint8"
}
],
"name": "unPauseByType",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61567780620000f36000396000f3fe6080604052600436106200030b5760003560e01c806391d148541162000197578063ca41a24711620000e7578063d547741f1162000095578063e4d27451116200006c578063e4d2745114620009f3578063edc42a221462000a18578063fe3c50a01462000a3d57600080fd5b8063d547741f1462000992578063dfa96efb14620009b7578063e196fb5d14620009ce57600080fd5b8063ccf5a77c11620000ca578063ccf5a77c1462000914578063cdd914c51462000937578063cf4a7208146200095c57600080fd5b8063ca41a24714620008a5578063cc5782f614620008e057600080fd5b8063b3232bdf1162000145578063be46096f1162000128578063be46096f1462000814578063c483d8381462000839578063c986752a146200086f57600080fd5b8063b3232bdf14620007ca578063bc61e73314620007ef57600080fd5b8063a217fddf116200017a578063a217fddf146200076c578063a676e8ab1462000783578063a6ef995f14620007a857600080fd5b806391d1485414620006ec5780639ac25d08146200073657600080fd5b80632f2ff15d116200025f578063522ea81a116200020d5780636a906b8011620001e45780636a906b80146200065e57806380efb43a14620006945780638dae45dd14620006ca57600080fd5b8063522ea81a14620005db5780635626fc2514620005f25780635a06a42a146200062857600080fd5b806336568abe116200024257806336568abe146200054557806338b90333146200056a5780634bf98dce14620005c457600080fd5b80632f2ff15d14620004ea5780633551237b146200050f57600080fd5b80631544298e11620002bd578063248a9ca311620002a0578063248a9ca3146200045b5780632a564f34146200048f5780632e4c3fff14620004b457600080fd5b80631544298e146200041d5780631754f301146200043657600080fd5b80630f6f86ec11620002f25780630f6f86ec14620003715780631065a39914620003d0578063146ffb2614620003f557600080fd5b806301941d39146200031057806301ffc9a71462000337575b600080fd5b3480156200031d57600080fd5b50620003356200032f366004620042d6565b62000a73565b005b3480156200034457600080fd5b506200035c620003563660046200438f565b62000c0a565b60405190151581526020015b60405180910390f35b3480156200037e57600080fd5b50620003b762000390366004620043d3565b6101086020908152600092835260408084209091529082529020546001600160a01b031681565b6040516001600160a01b03909116815260200162000368565b348015620003dd57600080fd5b5062000335620003ef36600462004406565b62000ca4565b3480156200040257600080fd5b506200040e61010b5481565b60405190815260200162000368565b3480156200042a57600080fd5b506200040e61010a5481565b3480156200044357600080fd5b50620003356200045536600462004429565b62000dad565b3480156200046857600080fd5b506200040e6200047a3660046200445c565b60009081526097602052604090206001015490565b3480156200049c57600080fd5b5062000335620004ae36600462004476565b620010a8565b348015620004c157600080fd5b506200040e7f8a7b208fd13ab36d18025be4f62b53d46aeb2cbe8958d2e13de74c040dddcddd81565b348015620004f757600080fd5b506200033562000509366004620043d3565b620012c7565b3480156200051c57600080fd5b506200040e7f19bf281d118073c159a713666aba52e0d403520cd01e03f42e0f62a0b3bd4a3581565b3480156200055257600080fd5b506200033562000564366004620043d3565b620012f5565b3480156200057757600080fd5b50620005b56040518060400160405280600381526020017f312e30000000000000000000000000000000000000000000000000000000000081525081565b60405162000368919062004544565b62000335620005d5366004620045bc565b62001385565b62000335620005ec3660046200467b565b620015f4565b348015620005ff57600080fd5b506200040e7f46e34517dc946faf87aabe65eb5b4fa06b974e5c8d72c5df73b9fb6ff7b6d80281565b3480156200063557600080fd5b506200040e7f50962b2d10066f5051f78d5ea04a3ab09b9c87dd1002962f0b1e30e66eeb80a581565b3480156200066b57600080fd5b506200040e7fd8b4c34c2ec1f3194471108c64ad2beda340c0337ee4ca35592f9ef270f4228b81565b348015620006a157600080fd5b506200040e7fbf094fe3c005c553ff0d33c7dff9d1273add12fb3f258b992f8d36224dd35b2481565b348015620006d757600080fd5b5060c954620003b7906001600160a01b031681565b348015620006f957600080fd5b506200035c6200070b366004620043d3565b60009182526097602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156200074357600080fd5b506200040e7f56bdc3c9ec86cb7db110a7699b2ade72f0b8819727d9f7d906b012641505fa7781565b3480156200077957600080fd5b506200040e600081565b3480156200079057600080fd5b5062000335620007a2366004620046c2565b62001ba2565b348015620007b557600080fd5b5060ca54620003b7906001600160a01b031681565b348015620007d757600080fd5b5062000335620007e9366004620046e2565b62001c67565b348015620007fc57600080fd5b506200035c6200080e36600462004406565b62002189565b3480156200082157600080fd5b506200033562000833366004620046c2565b620021b1565b3480156200084657600080fd5b506200040e7feaf25fcc6b7d45bda16c56628df3f435e20319ef53b065c11ee4510083f0ae2d81565b3480156200087c57600080fd5b506200040e7f550554a677c8e7b73b62db78b0ef06c5f237da4ef30b88196a899ccf591041fe81565b348015620008b257600080fd5b50620003b7620008c4366004620046c2565b610109602052600090815260409020546001600160a01b031681565b348015620008ed57600080fd5b506200035c620008ff3660046200445c565b60d56020526000908152604090205460ff1681565b3480156200092157600080fd5b5061010754620003b7906001600160a01b031681565b3480156200094457600080fd5b506200033562000956366004620046c2565b62002274565b3480156200096957600080fd5b506200040e7f3900d9d72d5177a154375317154fdc0e08377e3134a8a5d21cadccf831cc231c81565b3480156200099f57600080fd5b5062000335620009b1366004620043d3565b620023df565b62000335620009c836600462004766565b62002408565b348015620009db57600080fd5b5062000335620009ed36600462004406565b62002430565b34801562000a0057600080fd5b506200033562000a12366004620047e1565b6200251e565b34801562000a2557600080fd5b506200033562000a37366004620046c2565b62002861565b34801562000a4a57600080fd5b506200040e7f77974cc9cb5bafc9bb265be792d93fa46355c05701895b82f6d3b4b448c8ce0081565b600054600290610100900460ff1615801562000a96575060005460ff8083169116105b62000b0e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001660ff8316176101001790556001600160a01b03881662000b67576040516342bcdf7f60e11b815260040160405180910390fd5b62000b746000896200299d565b6000606555600060d55562000b8862002a5f565b62000b968585858562002aea565b62000ba2878762002dd0565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148062000c9e57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60d8600082600881111562000cbd5762000cbd62004865565b600881111562000cd15762000cd162004865565b81526020019081526020016000205462000ceb8162002f72565b62000cf68262002189565b62000d3157816040517f1865965400000000000000000000000000000000000000000000000000000000815260040162000b05919062004894565b81600881111562000d465762000d4662004865565b60d68054600190921b19909116905581600881111562000d6a5762000d6a62004865565b7fd071d2b85dec4489435b541d2f0e2570db09b09db9efd8703948d44a433df65a335b6040516001600160a01b0390911681526020015b60405180910390a25050565b816001600160a01b03811662000dd6576040516342bcdf7f60e11b815260040160405180910390fd5b816001600160a01b03811662000dff576040516342bcdf7f60e11b815260040160405180910390fd5b7f550554a677c8e7b73b62db78b0ef06c5f237da4ef30b88196a899ccf591041fe62000e2b8162002f72565b6001600160a01b038086166000908152610109602052604090205486911615158062000e7f575061010a546000908152610108602090815260408083206001600160a01b0385811685529252909120541615155b1562000ec3576040517f12f3df090000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240162000b05565b6001600160a01b0385811660009081526101096020526040902054161562000f23576040517ff8fb7c270000000000000000000000000000000000000000000000000000000081526001600160a01b038616600482015260240162000b05565b6001600160a01b038516610222148062000f4757506001600160a01b038516610333145b8062000f5d57506001600160a01b038516610111145b1562000fa1576040517fd8ce8acb0000000000000000000000000000000000000000000000000000000081526001600160a01b038616600482015260240162000b05565b61010b546000818152610108602090815260408083206001600160a01b038b8116855292529091205416156200100f576040517f022bc8410000000000000000000000000000000000000000000000000000000081526001600160a01b038816600482015260240162000b05565b6000818152610108602090815260408083206001600160a01b03808c168086529184528285208054918c167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909155808652610109909452828520805490911682179055905133937f844cb5c635052898ad92bea4ece14519111765d835105e76aa1f77ad0d0aa81f91a450505050505050565b60c9546001600160a01b03163314620010ed576040517f8c56efb100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ca5460c954604080517f67e404ce00000000000000000000000000000000000000000000000000000000815290516001600160a01b0393841693909216916367e404ce916004808201926020929091908290030181865afa15801562001158573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200117e9190620048d6565b6001600160a01b031614620011bf576040517f79d1e58f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61010a5460005b82811015620012c15760008281526101086020526040812061033391868685818110620011f757620011f7620048f6565b90506020020160208101906200120e9190620046c2565b6001600160a01b039081168252602082019290925260400160002080547fffffffffffffffffffffffff000000000000000000000000000000000000000016929091169190911790558383828181106200126c576200126c620048f6565b9050602002016020810190620012839190620046c2565b6001600160a01b03167f91d24864a084ab70b268a1f865e757ca12006cf298d763b6be697302ef86498c60405160405180910390a2600101620011c6565b50505050565b600082815260976020526040902060010154620012e48162002f72565b620012f083836200299d565b505050565b6001600160a01b0381163314620013755760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c660000000000000000000000000000000000606482015260840162000b05565b62001381828262002f81565b5050565b80516000819003620013c3576040517f10cbd58300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015620014bf5760006101096000858481518110620013eb57620013eb620048f6565b6020908102919091018101516001600160a01b0390811683529082019290925260400160002054169050806200147b57838281518110620014305762001430620048f6565b60200260200101516040517fa5ea89da00000000000000000000000000000000000000000000000000000000815260040162000b0591906001600160a01b0391909116815260200190565b80848381518110620014915762001491620048f6565b6001600160a01b03909216602092830291909101909101525080620014b68162004954565b915050620013c6565b5060c95460ca546040516001600160a01b0392831692639f3ce55a9234929116908290620014f29088906024016200498f565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2a564f3400000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b1681526200158593929190600401620049de565b6000604051808303818588803b1580156200159f57600080fd5b505af1158015620015b4573d6000803e3d6000fd5b5050505050336001600160a01b03167f59eab5b5f813ac9e0c10035dfb55b5e3419eff53c0f7a869fb3c22400ea036d68360405162000da191906200498f565b826001600160a01b0381166200161d576040516342bcdf7f60e11b815260040160405180910390fd5b816001600160a01b03811662001646576040516342bcdf7f60e11b815260040160405180910390fd5b838060000362001686576040517f4618044a0000000000000000000000000000000000000000000000000000000081526004810182905260240162000b05565b6200169062003023565b6200169c60076200307e565b61010a546000818152610108602090815260408083206001600160a01b03808c168552925290912054167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeef81016200172c576040517f6dad9c780000000000000000000000000000000000000000000000000000000081526001600160a01b038916600482015260240162000b05565b6001600160a01b03808916600090815261010960205260408120549091169060608215620017db576040517f9dc29fac000000000000000000000000000000000000000000000000000000008152336004820152602481018b90526001600160a01b038c1690639dc29fac90604401600060405180830381600087803b158015620017b657600080fd5b505af1158015620017cb573d6000803e3d6000fd5b5050505061010b54915062001a15565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038d16906370a0823190602401602060405180830381865afa1580156200183c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001862919062004a11565b90506200187b6001600160a01b038d1633308e62003119565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015281906001600160a01b038e16906370a0823190602401602060405180830381865afa158015620018db573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001901919062004a11565b6200190d919062004a2b565b9a508b93506001600160a01b038516620019b657610222610108600088815260200190815260200160002060008e6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508b6001600160a01b03167f0f53e2a811b6fd2d6cd965fd6c27b44fb924ca39f7a7f321115705c22366d62360405160405180910390a25b6001600160a01b0385166103331462001a1057620019d48c620031cc565b620019df8d620032df565b620019ea8e620033df565b604051602001620019fe9392919062004a41565b60405160208183030381529060405291505b859250505b60c960009054906101000a90046001600160a01b03166001600160a01b0316639f3ce55a3460ca60009054906101000a90046001600160a01b031634878f8f898960405160240162001a6c95949392919062004a7e565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe4d2745100000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16815262001aff93929190600401620049de565b6000604051808303818588803b15801562001b1957600080fd5b505af115801562001b2e573d6000803e3d6000fd5b50505050508a6001600160a01b0316896001600160a01b0316336001600160a01b03167f8780a94875b70464f8ac6c28851501d32e7fd4ee574e4b94beb28923a3c42d9c8d60405162001b8391815260200190565b60405180910390a4505050505062001b9a60018055565b505050505050565b7fbf094fe3c005c553ff0d33c7dff9d1273add12fb3f258b992f8d36224dd35b2462001bce8162002f72565b60ca546001600160a01b03161562001c225760ca546040517f94fbfd2e0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260240162000b05565b62001c2d826200350b565b60405133906001600160a01b038416907fb044c1a1a05a729c402def784b4e4cb01612ff03eee6f0beb3eba0f0606260a190600090a35050565b62001c796040820160208301620046c2565b6001600160a01b03811662001ca1576040516342bcdf7f60e11b815260040160405180910390fd5b62001cb36060830160408401620046c2565b6001600160a01b03811662001cdb576040516342bcdf7f60e11b815260040160405180910390fd5b82606001358060000362001d1b576040517f488d765100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83608001358060000362001d5b576040517f488d765100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff161580801562001d7c5750600054600160ff909116105b8062001d985750303b15801562001d98575060005460ff166001145b62001e0c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840162000b05565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801562001e6b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b62001e9462001e7e60e088018862004ab8565b62001e8e6101008a018a62004ab8565b62002aea565b62001eb062001eaa6040880160208901620046c2565b62003598565b62001eba62002a5f565b62001ed5600062001ecf6020890189620046c2565b6200299d565b62001eee62001ee860c088018862004ab8565b62002dd0565b62001f006060870160408801620046c2565b61010780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055608086013560608701350362001f7b576040517fac867a5500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606086013561010a55608086013561010b5560005b62001f9f60a088018862004b23565b90508110156200211d57600062001fba60a089018962004b23565b8381811062001fcd5762001fcd620048f6565b905060200201602081019062001fe49190620046c2565b6001600160a01b0316036200200c576040516342bcdf7f60e11b815260040160405180910390fd5b6060870135600090815261010860205260408120610111916200203360a08b018b62004b23565b85818110620020465762002046620048f6565b90506020020160208101906200205d9190620046c2565b6001600160a01b039081168252602082019290925260400160002080547fffffffffffffffffffffffff00000000000000000000000000000000000000001692909116919091179055620020b560a088018862004b23565b82818110620020c857620020c8620048f6565b9050602002016020810190620020df9190620046c2565b6001600160a01b03167f5e023c7a09fa0534ce3199f65fc3e635a5e851c5adc88ebda3b9d332ae07cbe960405160405180910390a260010162001f90565b50801562001b9a57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050565b6000816008811115620021a057620021a062004865565b60d654600190911b16151592915050565b806001600160a01b038116620021da576040516342bcdf7f60e11b815260040160405180910390fd5b7f77974cc9cb5bafc9bb265be792d93fa46355c05701895b82f6d3b4b448c8ce00620022068162002f72565b60c980546001600160a01b038581167fffffffffffffffffffffffff00000000000000000000000000000000000000008316811790935560405191169133918391907fc96d462e42a71473da49a1d58c1754b9b2d319786692d621dc7f921331c517e990600090a450505050565b806001600160a01b0381166200229d576040516342bcdf7f60e11b815260040160405180910390fd5b6001600160a01b0380831660009081526101096020526040902054839116151580620022f1575061010a546000908152610108602090815260408083206001600160a01b0385811685529252909120541615155b1562002335576040517f12f3df090000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240162000b05565b7feaf25fcc6b7d45bda16c56628df3f435e20319ef53b065c11ee4510083f0ae2d620023618162002f72565b61010a546000908152610108602090815260408083206001600160a01b038816808552925280832080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166101111790555190917f5e023c7a09fa0534ce3199f65fc3e635a5e851c5adc88ebda3b9d332ae07cbe991a250505050565b600082815260976020526040902060010154620023fc8162002f72565b620012f0838362002f81565b80156200241c576200241c85838362003679565b62002429858585620015f4565b5050505050565b60d7600082600881111562002449576200244962004865565b60088111156200245d576200245d62004865565b815260200190815260200160002054620024778162002f72565b620024828262002189565b15620024be57816040517fc0a71b5800000000000000000000000000000000000000000000000000000000815260040162000b05919062004894565b816008811115620024d357620024d362004865565b60d68054600190921b9091179055816008811115620024f657620024f662004865565b7f534f879afd40abb4e39f8e1b77a316be4c8e3521d9cf5a3a3db8959d574d45593362000d8d565b6200252862003023565b60c9546001600160a01b031633146200256d576040517f8c56efb100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ca5460c954604080517f67e404ce00000000000000000000000000000000000000000000000000000000815290516001600160a01b0393841693909216916367e404ce916004808201926020929091908290030181865afa158015620025d8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620025fe9190620048d6565b6001600160a01b0316146200263f576040517f79d1e58f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60086200264c816200307e565b6000848152610108602090815260408083206001600160a01b03808c168552925282205416906102228214806200268d57506001600160a01b038216610333145b15620026af57620026a96001600160a01b038a16888a62003995565b620027fc565b50806001600160a01b0381166200277e57620026d189868661010a54620039e0565b9050886101096000836001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555080610108600061010b54815260200190815260200160002060008b6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b6040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152602482018a90528216906340c10f1990604401600060405180830381600087803b158015620027e257600080fd5b505af1158015620027f7573d6000803e3d6000fd5b505050505b866001600160a01b0316816001600160a01b03168a6001600160a01b03167f6ed06519caca659cdefa71015c79a561928d3cf8cc4a3e9739fde9fb5fb38d648b6040516200284c91815260200190565b60405180910390a450505062001b9a60018055565b806001600160a01b0381166200288a576040516342bcdf7f60e11b815260040160405180910390fd5b7f19bf281d118073c159a713666aba52e0d403520cd01e03f42e0f62a0b3bd4a35620028b68162002f72565b61010a546000818152610108602090815260408083206001600160a01b038881168552925290912054166101111462002927576040517f82f5d0a50000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240162000b05565b6000818152610108602090815260408083206001600160a01b038816808552925280832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555190917f0145163d8d460d1ab21463758d147fdfe79d4b57c81ca3d1439996104ae6895991a250505050565b60008281526097602090815260408083206001600160a01b038516845290915290205460ff16620013815760008281526097602090815260408083206001600160a01b0385168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905562002a1b3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600054610100900460ff1662002ade5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840162000b05565b62002ae862003b10565b565b600054610100900460ff1662002b695760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840162000b05565b60005b8381101562002c9c5784848281811062002b8a5762002b8a620048f6565b9050604002016020013560d7600087878581811062002bad5762002bad620048f6565b62002bc5926020604090920201908101915062004406565b600881111562002bd95762002bd962004865565b600881111562002bed5762002bed62004865565b815260208101919091526040016000205584848281811062002c135762002c13620048f6565b9050604002016020013585858381811062002c325762002c32620048f6565b62002c4a926020604090920201908101915062004406565b600881111562002c5e5762002c5e62004865565b6040517f33aa8fd1ce49e1761bc8d27fd53414bfefc45d690feed0ce55019d7d3aec609190600090a38062002c938162004954565b91505062002b6c565b5060005b81811015620024295782828281811062002cbe5762002cbe620048f6565b9050604002016020013560d8600085858581811062002ce15762002ce1620048f6565b62002cf9926020604090920201908101915062004406565b600881111562002d0d5762002d0d62004865565b600881111562002d215762002d2162004865565b815260208101919091526040016000205582828281811062002d475762002d47620048f6565b9050604002016020013583838381811062002d665762002d66620048f6565b62002d7e926020604090920201908101915062004406565b600881111562002d925762002d9262004865565b6040517fe7bf4b8dc0c17a52dc9e52323a3ab61cb2079db35f969125b1f8a3d984c6f6c290600090a38062002dc78162004954565b91505062002ca0565b600054610100900460ff1662002e4f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840162000b05565b60005b81811015620012f057600083838381811062002e725762002e72620048f6565b62002e8a9260206040909202019081019150620046c2565b6001600160a01b03160362002eb2576040516342bcdf7f60e11b815260040160405180910390fd5b82828281811062002ec75762002ec7620048f6565b905060400201602001356000801b0362002f0d576040517f0742d05300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62002f5d83838381811062002f265762002f26620048f6565b9050604002016020013584848481811062002f455762002f45620048f6565b62001ecf9260206040909202019081019150620046c2565b8062002f698162004954565b91505062002e52565b62002f7e813362003b8f565b50565b60008281526097602090815260408083206001600160a01b038516845290915290205460ff1615620013815760008281526097602090815260408083206001600160a01b038516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600260015403620030775760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640162000b05565b6002600155565b60d65481600881111562003096576200309662004865565b6001901b811615620030d857816040517fc0a71b5800000000000000000000000000000000000000000000000000000000815260040162000b05919062004894565b6002811615620013815760016040517fc0a71b5800000000000000000000000000000000000000000000000000000000815260040162000b05919062004894565b6040516001600160a01b0380851660248301528316604482015260648101829052620012c19085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915262003c0d565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f06fdde0300000000000000000000000000000000000000000000000000000000179052905160609160009182916001600160a01b0386169162003243919062004b8e565b600060405180830381855afa9150503d806000811462003280576040519150601f19603f3d011682016040523d82523d6000602084013e62003285565b606091505b509150915081620032cc576040518060400160405280600781526020017f4e4f5f4e414d4500000000000000000000000000000000000000000000000000815250620032d7565b620032d78162003cfc565b949350505050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f95d89b4100000000000000000000000000000000000000000000000000000000179052905160609160009182916001600160a01b0386169162003356919062004b8e565b600060405180830381855afa9150503d806000811462003393576040519150601f19603f3d011682016040523d82523d6000602084013e62003398565b606091505b509150915081620032cc576040518060400160405280600981526020017f4e4f5f53594d424f4c0000000000000000000000000000000000000000000000815250620032d7565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f313ce567000000000000000000000000000000000000000000000000000000001790529051600091829182916001600160a01b0386169162003455919062004b8e565b600060405180830381855afa9150503d806000811462003492576040519150601f19603f3d011682016040523d82523d6000602084013e62003497565b606091505b5091509150818015620034ab575060208151145b15620034c75780806020019051810190620032d7919062004bbc565b6040517fb5a2f1c60000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240162000b05565b60018055565b6001600160a01b03811662003533576040516342bcdf7f60e11b815260040160405180910390fd5b60ca80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040513391907fe68b208814fdb633b222cd15e73d5a27fb4ef9eef4cae78c623bc27702141d2890600090a350565b600054610100900460ff16620036175760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840162000b05565b6001600160a01b0381166200363f576040516342bcdf7f60e11b815260040160405180910390fd5b60c980547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b7fd505accf00000000000000000000000000000000000000000000000000000000620036aa60046000848662004bdc565b620036b59162004c08565b7fffffffff0000000000000000000000000000000000000000000000000000000016146200377657620036ed60046000838562004bdc565b620036f89162004c08565b6040517fcf9e29460000000000000000000000000000000000000000000000000000000081527fffffffff0000000000000000000000000000000000000000000000000000000090911660048201527fd505accf00000000000000000000000000000000000000000000000000000000602482015260440162000b05565b60008080808080806200378d886004818c62004bdc565b8101906200379c919062004c51565b9650965096509650965096509650336001600160a01b0316876001600160a01b03161462003802576040517f200688cc0000000000000000000000000000000000000000000000000000000081526001600160a01b038816600482015260240162000b05565b6001600160a01b038616301462003851576040517f291159480000000000000000000000000000000000000000000000000000000081526001600160a01b038716600482015260240162000b05565b6040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301528691908c169063dd62ed3e90604401602060405180830381865afa158015620038bc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620038e2919062004a11565b101562003989576040517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526064810185905260ff8416608482015260a4810183905260c481018290526001600160a01b038b169063d505accf9060e401600060405180830381600087803b1580156200396f57600080fd5b505af115801562003984573d6000803e3d6000fd5b505050505b50505050505050505050565b6040516001600160a01b038316602482015260448101829052620012f09084907fa9059cbb000000000000000000000000000000000000000000000000000000009060640162003167565b6000818152602085905260408120610107546040516001600160a01b039091169062003a0c9062004263565b6001600160a01b0390911681526040602082018190526000908201526060018190604051809103906000f590508015801562003a4c573d6000803e3d6000fd5b5090506000808062003a618688018862004d50565b925092509250836001600160a01b0316631624f6c68484846040518463ffffffff1660e01b815260040162003a999392919062004a41565b600060405180830381600087803b15801562003ab457600080fd5b505af115801562003ac9573d6000803e3d6000fd5b50506040516001600160a01b03808c169350871691507fd5d4920bb61e6141c8499d50a7bd617dae2b1818c9d6b995d3f2ba4975e32ea490600090a3505050949350505050565b600054610100900460ff16620035055760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840162000b05565b60008281526097602090815260408083206001600160a01b038516845290915290205460ff16620013815762003bc58162003ecf565b62003bd283602062003ee2565b60405160200162003be592919062004dc6565b60408051601f198184030181529082905262461bcd60e51b825262000b059160040162004544565b600062003c64826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316620041309092919063ffffffff16565b905080516000148062003c8857508080602001905181019062003c88919062004e4b565b620012f05760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840162000b05565b6060604082511062003d1e578180602001905181019062000c9e919062004e6f565b602082511462003d6157505060408051808201909152601281527f4e4f545f56414c49445f454e434f44494e470000000000000000000000000000602082015290565b60005b60208110801562003daf575082818151811062003d855762003d85620048f6565b01602001517fff000000000000000000000000000000000000000000000000000000000000001615155b1562003dbe5760010162003d64565b8060000362003e0257505060408051808201909152601281527f4e4f545f56414c49445f454e434f44494e4700000000000000000000000000006020820152919050565b60008167ffffffffffffffff81111562003e205762003e2062004559565b6040519080825280601f01601f19166020018201604052801562003e4b576020820181803683370190505b50905060005b8281101562003ec75784818151811062003e6f5762003e6f620048f6565b602001015160f81c60f81b82828151811062003e8f5762003e8f620048f6565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060010162003e51565b509392505050565b606062000c9e6001600160a01b03831660145b6060600062003ef383600262004ee6565b62003f0090600262004f00565b67ffffffffffffffff81111562003f1b5762003f1b62004559565b6040519080825280601f01601f19166020018201604052801562003f46576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811062003f805762003f80620048f6565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811062003fe65762003fe6620048f6565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006200402484600262004ee6565b6200403190600162004f00565b90505b6001811115620040d8577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110620040765762004076620048f6565b1a60f81b8282815181106200408f576200408f620048f6565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c93620040d08162004f16565b905062004034565b508315620041295760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640162000b05565b9392505050565b6060620032d7848460008585600080866001600160a01b031685876040516200415a919062004b8e565b60006040518083038185875af1925050503d806000811462004199576040519150601f19603f3d011682016040523d82523d6000602084013e6200419e565b606091505b5091509150620041b187838387620041bc565b979650505050505050565b606083156200423057825160000362004228576001600160a01b0385163b620042285760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000b05565b5081620032d7565b620032d78383815115620042475781518083602001fd5b8060405162461bcd60e51b815260040162000b05919062004544565b6106f38062004f4f83390190565b6001600160a01b038116811462002f7e57600080fd5b60008083601f8401126200429a57600080fd5b50813567ffffffffffffffff811115620042b357600080fd5b6020830191508360208260061b8501011115620042cf57600080fd5b9250929050565b60008060008060008060006080888a031215620042f257600080fd5b8735620042ff8162004271565b9650602088013567ffffffffffffffff808211156200431d57600080fd5b6200432b8b838c0162004287565b909850965060408a01359150808211156200434557600080fd5b620043538b838c0162004287565b909650945060608a01359150808211156200436d57600080fd5b506200437c8a828b0162004287565b989b979a50959850939692959293505050565b600060208284031215620043a257600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146200412957600080fd5b60008060408385031215620043e757600080fd5b823591506020830135620043fb8162004271565b809150509250929050565b6000602082840312156200441957600080fd5b8135600981106200412957600080fd5b600080604083850312156200443d57600080fd5b82356200444a8162004271565b91506020830135620043fb8162004271565b6000602082840312156200446f57600080fd5b5035919050565b600080602083850312156200448a57600080fd5b823567ffffffffffffffff80821115620044a357600080fd5b818501915085601f830112620044b857600080fd5b813581811115620044c857600080fd5b8660208260051b8501011115620044de57600080fd5b60209290920196919550909350505050565b60005b838110156200450d578181015183820152602001620044f3565b50506000910152565b6000815180845262004530816020860160208601620044f0565b601f01601f19169290920160200192915050565b60208152600062004129602083018462004516565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715620045b457620045b462004559565b604052919050565b60006020808385031215620045d057600080fd5b823567ffffffffffffffff80821115620045e957600080fd5b818501915085601f830112620045fe57600080fd5b81358181111562004613576200461362004559565b8060051b91506200462684830162004588565b81815291830184019184810190888411156200464157600080fd5b938501935b838510156200466f57843592506200465e8362004271565b828252938501939085019062004646565b98975050505050505050565b6000806000606084860312156200469157600080fd5b83356200469e8162004271565b9250602084013591506040840135620046b78162004271565b809150509250925092565b600060208284031215620046d557600080fd5b8135620041298162004271565b600060208284031215620046f557600080fd5b813567ffffffffffffffff8111156200470d57600080fd5b820161012081850312156200412957600080fd5b60008083601f8401126200473457600080fd5b50813567ffffffffffffffff8111156200474d57600080fd5b602083019150836020828501011115620042cf57600080fd5b6000806000806000608086880312156200477f57600080fd5b85356200478c8162004271565b9450602086013593506040860135620047a58162004271565b9250606086013567ffffffffffffffff811115620047c257600080fd5b620047d08882890162004721565b969995985093965092949392505050565b60008060008060008060a08789031215620047fb57600080fd5b8635620048088162004271565b9550602087013594506040870135620048218162004271565b935060608701359250608087013567ffffffffffffffff8111156200484557600080fd5b6200485389828a0162004721565b979a9699509497509295939492505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160098310620048d0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b600060208284031215620048e957600080fd5b8151620041298162004271565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362004988576200498862004925565b5060010190565b6020808252825182820181905260009190848201906040850190845b81811015620049d25783516001600160a01b031683529284019291840191600101620049ab565b50909695505050505050565b6001600160a01b038416815282602082015260606040820152600062004a08606083018462004516565b95945050505050565b60006020828403121562004a2457600080fd5b5051919050565b8181038181111562000c9e5762000c9e62004925565b60608152600062004a56606083018662004516565b828103602084015262004a6a818662004516565b91505060ff83166040830152949350505050565b60006001600160a01b03808816835286602084015280861660408401525083606083015260a06080830152620041b160a083018462004516565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811262004aee57600080fd5b83018035915067ffffffffffffffff82111562004b0a57600080fd5b6020019150600681901b3603821315620042cf57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811262004b5957600080fd5b83018035915067ffffffffffffffff82111562004b7557600080fd5b6020019150600581901b3603821315620042cf57600080fd5b6000825162004ba2818460208701620044f0565b9190910192915050565b60ff8116811462002f7e57600080fd5b60006020828403121562004bcf57600080fd5b8151620041298162004bac565b6000808585111562004bed57600080fd5b8386111562004bfb57600080fd5b5050820193919092039150565b7fffffffff00000000000000000000000000000000000000000000000000000000813581811691600485101562004c495780818660040360031b1b83161692505b505092915050565b600080600080600080600060e0888a03121562004c6d57600080fd5b873562004c7a8162004271565b9650602088013562004c8c8162004271565b95506040880135945060608801359350608088013562004cac8162004bac565b9699959850939692959460a0840135945060c09093013592915050565b600067ffffffffffffffff82111562004ce65762004ce662004559565b50601f01601f191660200190565b600082601f83011262004d0657600080fd5b813562004d1d62004d178262004cc9565b62004588565b81815284602083860101111562004d3357600080fd5b816020850160208301376000918101602001919091529392505050565b60008060006060848603121562004d6657600080fd5b833567ffffffffffffffff8082111562004d7f57600080fd5b62004d8d8783880162004cf4565b9450602086013591508082111562004da457600080fd5b5062004db38682870162004cf4565b9250506040840135620046b78162004bac565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835162004e00816017850160208801620044f0565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000601791840191820152835162004e3f816028840160208801620044f0565b01602801949350505050565b60006020828403121562004e5e57600080fd5b815180151581146200412957600080fd5b60006020828403121562004e8257600080fd5b815167ffffffffffffffff81111562004e9a57600080fd5b8201601f8101841362004eac57600080fd5b805162004ebd62004d178262004cc9565b81815285602083850101111562004ed357600080fd5b62004a08826020830160208601620044f0565b808202811582820484141762000c9e5762000c9e62004925565b8082018082111562000c9e5762000c9e62004925565b60008162004f285762004f2862004925565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fe60806040526040516106f33803806106f383398101604081905261002291610420565b61002e82826000610035565b505061054a565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104e0565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104e0565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f83836040518060600160405280602781526020016106cc602791396102a6565b9392505050565b6060600080856001600160a01b0316856040516102c391906104fb565b600060405180830381855af49150503d80600081146102fe576040519150601f19603f3d011682016040523d82523d6000602084013e610303565b606091505b5090925090506103158683838761031f565b9695505050505050565b6060831561038e578251600003610387576001600160a01b0385163b6103875760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610157565b5081610398565b61039883836103a0565b949350505050565b8151156103b05781518083602001fd5b8060405162461bcd60e51b81526004016101579190610517565b80516001600160a01b03811681146103e157600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156104175781810151838201526020016103ff565b50506000910152565b6000806040838503121561043357600080fd5b61043c836103ca565b60208401519092506001600160401b038082111561045957600080fd5b818501915085601f83011261046d57600080fd5b81518181111561047f5761047f6103e6565b604051601f8201601f19908116603f011681019083821181831017156104a7576104a76103e6565b816040528281528860208487010111156104c057600080fd5b6104d18360208301602088016103fc565b80955050505050509250929050565b6000602082840312156104f257600080fd5b61029f826103ca565b6000825161050d8184602087016103fc565b9190910192915050565b60208152600082518060208401526105368160408501602087016103fc565b601f01601f19169190910160400192915050565b610173806105596000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100dc565b565b60006100697fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d505473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100d79190610100565b905090565b3660008037600080366000845af43d6000803e8080156100fb573d6000f35b3d6000fd5b60006020828403121561011257600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461013657600080fd5b939250505056fea2646970667358221220662c40b76fc0d477a291a78deacd27f4cddd7512dea18087244e38acb2fd99dd64736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201f32ef901647bd30a862a1b3c8df5817d7cc11f4c5759955bd247c2eb12e6c9564736f6c63430008130033",
"deployedBytecode": "0x6080604052600436106200030b5760003560e01c806391d148541162000197578063ca41a24711620000e7578063d547741f1162000095578063e4d27451116200006c578063e4d2745114620009f3578063edc42a221462000a18578063fe3c50a01462000a3d57600080fd5b8063d547741f1462000992578063dfa96efb14620009b7578063e196fb5d14620009ce57600080fd5b8063ccf5a77c11620000ca578063ccf5a77c1462000914578063cdd914c51462000937578063cf4a7208146200095c57600080fd5b8063ca41a24714620008a5578063cc5782f614620008e057600080fd5b8063b3232bdf1162000145578063be46096f1162000128578063be46096f1462000814578063c483d8381462000839578063c986752a146200086f57600080fd5b8063b3232bdf14620007ca578063bc61e73314620007ef57600080fd5b8063a217fddf116200017a578063a217fddf146200076c578063a676e8ab1462000783578063a6ef995f14620007a857600080fd5b806391d1485414620006ec5780639ac25d08146200073657600080fd5b80632f2ff15d116200025f578063522ea81a116200020d5780636a906b8011620001e45780636a906b80146200065e57806380efb43a14620006945780638dae45dd14620006ca57600080fd5b8063522ea81a14620005db5780635626fc2514620005f25780635a06a42a146200062857600080fd5b806336568abe116200024257806336568abe146200054557806338b90333146200056a5780634bf98dce14620005c457600080fd5b80632f2ff15d14620004ea5780633551237b146200050f57600080fd5b80631544298e11620002bd578063248a9ca311620002a0578063248a9ca3146200045b5780632a564f34146200048f5780632e4c3fff14620004b457600080fd5b80631544298e146200041d5780631754f301146200043657600080fd5b80630f6f86ec11620002f25780630f6f86ec14620003715780631065a39914620003d0578063146ffb2614620003f557600080fd5b806301941d39146200031057806301ffc9a71462000337575b600080fd5b3480156200031d57600080fd5b50620003356200032f366004620042d6565b62000a73565b005b3480156200034457600080fd5b506200035c620003563660046200438f565b62000c0a565b60405190151581526020015b60405180910390f35b3480156200037e57600080fd5b50620003b762000390366004620043d3565b6101086020908152600092835260408084209091529082529020546001600160a01b031681565b6040516001600160a01b03909116815260200162000368565b348015620003dd57600080fd5b5062000335620003ef36600462004406565b62000ca4565b3480156200040257600080fd5b506200040e61010b5481565b60405190815260200162000368565b3480156200042a57600080fd5b506200040e61010a5481565b3480156200044357600080fd5b50620003356200045536600462004429565b62000dad565b3480156200046857600080fd5b506200040e6200047a3660046200445c565b60009081526097602052604090206001015490565b3480156200049c57600080fd5b5062000335620004ae36600462004476565b620010a8565b348015620004c157600080fd5b506200040e7f8a7b208fd13ab36d18025be4f62b53d46aeb2cbe8958d2e13de74c040dddcddd81565b348015620004f757600080fd5b506200033562000509366004620043d3565b620012c7565b3480156200051c57600080fd5b506200040e7f19bf281d118073c159a713666aba52e0d403520cd01e03f42e0f62a0b3bd4a3581565b3480156200055257600080fd5b506200033562000564366004620043d3565b620012f5565b3480156200057757600080fd5b50620005b56040518060400160405280600381526020017f312e30000000000000000000000000000000000000000000000000000000000081525081565b60405162000368919062004544565b62000335620005d5366004620045bc565b62001385565b62000335620005ec3660046200467b565b620015f4565b348015620005ff57600080fd5b506200040e7f46e34517dc946faf87aabe65eb5b4fa06b974e5c8d72c5df73b9fb6ff7b6d80281565b3480156200063557600080fd5b506200040e7f50962b2d10066f5051f78d5ea04a3ab09b9c87dd1002962f0b1e30e66eeb80a581565b3480156200066b57600080fd5b506200040e7fd8b4c34c2ec1f3194471108c64ad2beda340c0337ee4ca35592f9ef270f4228b81565b348015620006a157600080fd5b506200040e7fbf094fe3c005c553ff0d33c7dff9d1273add12fb3f258b992f8d36224dd35b2481565b348015620006d757600080fd5b5060c954620003b7906001600160a01b031681565b348015620006f957600080fd5b506200035c6200070b366004620043d3565b60009182526097602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156200074357600080fd5b506200040e7f56bdc3c9ec86cb7db110a7699b2ade72f0b8819727d9f7d906b012641505fa7781565b3480156200077957600080fd5b506200040e600081565b3480156200079057600080fd5b5062000335620007a2366004620046c2565b62001ba2565b348015620007b557600080fd5b5060ca54620003b7906001600160a01b031681565b348015620007d757600080fd5b5062000335620007e9366004620046e2565b62001c67565b348015620007fc57600080fd5b506200035c6200080e36600462004406565b62002189565b3480156200082157600080fd5b506200033562000833366004620046c2565b620021b1565b3480156200084657600080fd5b506200040e7feaf25fcc6b7d45bda16c56628df3f435e20319ef53b065c11ee4510083f0ae2d81565b3480156200087c57600080fd5b506200040e7f550554a677c8e7b73b62db78b0ef06c5f237da4ef30b88196a899ccf591041fe81565b348015620008b257600080fd5b50620003b7620008c4366004620046c2565b610109602052600090815260409020546001600160a01b031681565b348015620008ed57600080fd5b506200035c620008ff3660046200445c565b60d56020526000908152604090205460ff1681565b3480156200092157600080fd5b5061010754620003b7906001600160a01b031681565b3480156200094457600080fd5b506200033562000956366004620046c2565b62002274565b3480156200096957600080fd5b506200040e7f3900d9d72d5177a154375317154fdc0e08377e3134a8a5d21cadccf831cc231c81565b3480156200099f57600080fd5b5062000335620009b1366004620043d3565b620023df565b62000335620009c836600462004766565b62002408565b348015620009db57600080fd5b5062000335620009ed36600462004406565b62002430565b34801562000a0057600080fd5b506200033562000a12366004620047e1565b6200251e565b34801562000a2557600080fd5b506200033562000a37366004620046c2565b62002861565b34801562000a4a57600080fd5b506200040e7f77974cc9cb5bafc9bb265be792d93fa46355c05701895b82f6d3b4b448c8ce0081565b600054600290610100900460ff1615801562000a96575060005460ff8083169116105b62000b0e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001660ff8316176101001790556001600160a01b03881662000b67576040516342bcdf7f60e11b815260040160405180910390fd5b62000b746000896200299d565b6000606555600060d55562000b8862002a5f565b62000b968585858562002aea565b62000ba2878762002dd0565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148062000c9e57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60d8600082600881111562000cbd5762000cbd62004865565b600881111562000cd15762000cd162004865565b81526020019081526020016000205462000ceb8162002f72565b62000cf68262002189565b62000d3157816040517f1865965400000000000000000000000000000000000000000000000000000000815260040162000b05919062004894565b81600881111562000d465762000d4662004865565b60d68054600190921b19909116905581600881111562000d6a5762000d6a62004865565b7fd071d2b85dec4489435b541d2f0e2570db09b09db9efd8703948d44a433df65a335b6040516001600160a01b0390911681526020015b60405180910390a25050565b816001600160a01b03811662000dd6576040516342bcdf7f60e11b815260040160405180910390fd5b816001600160a01b03811662000dff576040516342bcdf7f60e11b815260040160405180910390fd5b7f550554a677c8e7b73b62db78b0ef06c5f237da4ef30b88196a899ccf591041fe62000e2b8162002f72565b6001600160a01b038086166000908152610109602052604090205486911615158062000e7f575061010a546000908152610108602090815260408083206001600160a01b0385811685529252909120541615155b1562000ec3576040517f12f3df090000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240162000b05565b6001600160a01b0385811660009081526101096020526040902054161562000f23576040517ff8fb7c270000000000000000000000000000000000000000000000000000000081526001600160a01b038616600482015260240162000b05565b6001600160a01b038516610222148062000f4757506001600160a01b038516610333145b8062000f5d57506001600160a01b038516610111145b1562000fa1576040517fd8ce8acb0000000000000000000000000000000000000000000000000000000081526001600160a01b038616600482015260240162000b05565b61010b546000818152610108602090815260408083206001600160a01b038b8116855292529091205416156200100f576040517f022bc8410000000000000000000000000000000000000000000000000000000081526001600160a01b038816600482015260240162000b05565b6000818152610108602090815260408083206001600160a01b03808c168086529184528285208054918c167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909155808652610109909452828520805490911682179055905133937f844cb5c635052898ad92bea4ece14519111765d835105e76aa1f77ad0d0aa81f91a450505050505050565b60c9546001600160a01b03163314620010ed576040517f8c56efb100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ca5460c954604080517f67e404ce00000000000000000000000000000000000000000000000000000000815290516001600160a01b0393841693909216916367e404ce916004808201926020929091908290030181865afa15801562001158573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200117e9190620048d6565b6001600160a01b031614620011bf576040517f79d1e58f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61010a5460005b82811015620012c15760008281526101086020526040812061033391868685818110620011f757620011f7620048f6565b90506020020160208101906200120e9190620046c2565b6001600160a01b039081168252602082019290925260400160002080547fffffffffffffffffffffffff000000000000000000000000000000000000000016929091169190911790558383828181106200126c576200126c620048f6565b9050602002016020810190620012839190620046c2565b6001600160a01b03167f91d24864a084ab70b268a1f865e757ca12006cf298d763b6be697302ef86498c60405160405180910390a2600101620011c6565b50505050565b600082815260976020526040902060010154620012e48162002f72565b620012f083836200299d565b505050565b6001600160a01b0381163314620013755760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c660000000000000000000000000000000000606482015260840162000b05565b62001381828262002f81565b5050565b80516000819003620013c3576040517f10cbd58300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015620014bf5760006101096000858481518110620013eb57620013eb620048f6565b6020908102919091018101516001600160a01b0390811683529082019290925260400160002054169050806200147b57838281518110620014305762001430620048f6565b60200260200101516040517fa5ea89da00000000000000000000000000000000000000000000000000000000815260040162000b0591906001600160a01b0391909116815260200190565b80848381518110620014915762001491620048f6565b6001600160a01b03909216602092830291909101909101525080620014b68162004954565b915050620013c6565b5060c95460ca546040516001600160a01b0392831692639f3ce55a9234929116908290620014f29088906024016200498f565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2a564f3400000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b1681526200158593929190600401620049de565b6000604051808303818588803b1580156200159f57600080fd5b505af1158015620015b4573d6000803e3d6000fd5b5050505050336001600160a01b03167f59eab5b5f813ac9e0c10035dfb55b5e3419eff53c0f7a869fb3c22400ea036d68360405162000da191906200498f565b826001600160a01b0381166200161d576040516342bcdf7f60e11b815260040160405180910390fd5b816001600160a01b03811662001646576040516342bcdf7f60e11b815260040160405180910390fd5b838060000362001686576040517f4618044a0000000000000000000000000000000000000000000000000000000081526004810182905260240162000b05565b6200169062003023565b6200169c60076200307e565b61010a546000818152610108602090815260408083206001600160a01b03808c168552925290912054167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeef81016200172c576040517f6dad9c780000000000000000000000000000000000000000000000000000000081526001600160a01b038916600482015260240162000b05565b6001600160a01b03808916600090815261010960205260408120549091169060608215620017db576040517f9dc29fac000000000000000000000000000000000000000000000000000000008152336004820152602481018b90526001600160a01b038c1690639dc29fac90604401600060405180830381600087803b158015620017b657600080fd5b505af1158015620017cb573d6000803e3d6000fd5b5050505061010b54915062001a15565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038d16906370a0823190602401602060405180830381865afa1580156200183c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001862919062004a11565b90506200187b6001600160a01b038d1633308e62003119565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015281906001600160a01b038e16906370a0823190602401602060405180830381865afa158015620018db573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001901919062004a11565b6200190d919062004a2b565b9a508b93506001600160a01b038516620019b657610222610108600088815260200190815260200160002060008e6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508b6001600160a01b03167f0f53e2a811b6fd2d6cd965fd6c27b44fb924ca39f7a7f321115705c22366d62360405160405180910390a25b6001600160a01b0385166103331462001a1057620019d48c620031cc565b620019df8d620032df565b620019ea8e620033df565b604051602001620019fe9392919062004a41565b60405160208183030381529060405291505b859250505b60c960009054906101000a90046001600160a01b03166001600160a01b0316639f3ce55a3460ca60009054906101000a90046001600160a01b031634878f8f898960405160240162001a6c95949392919062004a7e565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe4d2745100000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16815262001aff93929190600401620049de565b6000604051808303818588803b15801562001b1957600080fd5b505af115801562001b2e573d6000803e3d6000fd5b50505050508a6001600160a01b0316896001600160a01b0316336001600160a01b03167f8780a94875b70464f8ac6c28851501d32e7fd4ee574e4b94beb28923a3c42d9c8d60405162001b8391815260200190565b60405180910390a4505050505062001b9a60018055565b505050505050565b7fbf094fe3c005c553ff0d33c7dff9d1273add12fb3f258b992f8d36224dd35b2462001bce8162002f72565b60ca546001600160a01b03161562001c225760ca546040517f94fbfd2e0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260240162000b05565b62001c2d826200350b565b60405133906001600160a01b038416907fb044c1a1a05a729c402def784b4e4cb01612ff03eee6f0beb3eba0f0606260a190600090a35050565b62001c796040820160208301620046c2565b6001600160a01b03811662001ca1576040516342bcdf7f60e11b815260040160405180910390fd5b62001cb36060830160408401620046c2565b6001600160a01b03811662001cdb576040516342bcdf7f60e11b815260040160405180910390fd5b82606001358060000362001d1b576040517f488d765100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83608001358060000362001d5b576040517f488d765100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff161580801562001d7c5750600054600160ff909116105b8062001d985750303b15801562001d98575060005460ff166001145b62001e0c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840162000b05565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801562001e6b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b62001e9462001e7e60e088018862004ab8565b62001e8e6101008a018a62004ab8565b62002aea565b62001eb062001eaa6040880160208901620046c2565b62003598565b62001eba62002a5f565b62001ed5600062001ecf6020890189620046c2565b6200299d565b62001eee62001ee860c088018862004ab8565b62002dd0565b62001f006060870160408801620046c2565b61010780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055608086013560608701350362001f7b576040517fac867a5500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606086013561010a55608086013561010b5560005b62001f9f60a088018862004b23565b90508110156200211d57600062001fba60a089018962004b23565b8381811062001fcd5762001fcd620048f6565b905060200201602081019062001fe49190620046c2565b6001600160a01b0316036200200c576040516342bcdf7f60e11b815260040160405180910390fd5b6060870135600090815261010860205260408120610111916200203360a08b018b62004b23565b85818110620020465762002046620048f6565b90506020020160208101906200205d9190620046c2565b6001600160a01b039081168252602082019290925260400160002080547fffffffffffffffffffffffff00000000000000000000000000000000000000001692909116919091179055620020b560a088018862004b23565b82818110620020c857620020c8620048f6565b9050602002016020810190620020df9190620046c2565b6001600160a01b03167f5e023c7a09fa0534ce3199f65fc3e635a5e851c5adc88ebda3b9d332ae07cbe960405160405180910390a260010162001f90565b50801562001b9a57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050565b6000816008811115620021a057620021a062004865565b60d654600190911b16151592915050565b806001600160a01b038116620021da576040516342bcdf7f60e11b815260040160405180910390fd5b7f77974cc9cb5bafc9bb265be792d93fa46355c05701895b82f6d3b4b448c8ce00620022068162002f72565b60c980546001600160a01b038581167fffffffffffffffffffffffff00000000000000000000000000000000000000008316811790935560405191169133918391907fc96d462e42a71473da49a1d58c1754b9b2d319786692d621dc7f921331c517e990600090a450505050565b806001600160a01b0381166200229d576040516342bcdf7f60e11b815260040160405180910390fd5b6001600160a01b0380831660009081526101096020526040902054839116151580620022f1575061010a546000908152610108602090815260408083206001600160a01b0385811685529252909120541615155b1562002335576040517f12f3df090000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240162000b05565b7feaf25fcc6b7d45bda16c56628df3f435e20319ef53b065c11ee4510083f0ae2d620023618162002f72565b61010a546000908152610108602090815260408083206001600160a01b038816808552925280832080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166101111790555190917f5e023c7a09fa0534ce3199f65fc3e635a5e851c5adc88ebda3b9d332ae07cbe991a250505050565b600082815260976020526040902060010154620023fc8162002f72565b620012f0838362002f81565b80156200241c576200241c85838362003679565b62002429858585620015f4565b5050505050565b60d7600082600881111562002449576200244962004865565b60088111156200245d576200245d62004865565b815260200190815260200160002054620024778162002f72565b620024828262002189565b15620024be57816040517fc0a71b5800000000000000000000000000000000000000000000000000000000815260040162000b05919062004894565b816008811115620024d357620024d362004865565b60d68054600190921b9091179055816008811115620024f657620024f662004865565b7f534f879afd40abb4e39f8e1b77a316be4c8e3521d9cf5a3a3db8959d574d45593362000d8d565b6200252862003023565b60c9546001600160a01b031633146200256d576040517f8c56efb100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ca5460c954604080517f67e404ce00000000000000000000000000000000000000000000000000000000815290516001600160a01b0393841693909216916367e404ce916004808201926020929091908290030181865afa158015620025d8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620025fe9190620048d6565b6001600160a01b0316146200263f576040517f79d1e58f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60086200264c816200307e565b6000848152610108602090815260408083206001600160a01b03808c168552925282205416906102228214806200268d57506001600160a01b038216610333145b15620026af57620026a96001600160a01b038a16888a62003995565b620027fc565b50806001600160a01b0381166200277e57620026d189868661010a54620039e0565b9050886101096000836001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555080610108600061010b54815260200190815260200160002060008b6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b6040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152602482018a90528216906340c10f1990604401600060405180830381600087803b158015620027e257600080fd5b505af1158015620027f7573d6000803e3d6000fd5b505050505b866001600160a01b0316816001600160a01b03168a6001600160a01b03167f6ed06519caca659cdefa71015c79a561928d3cf8cc4a3e9739fde9fb5fb38d648b6040516200284c91815260200190565b60405180910390a450505062001b9a60018055565b806001600160a01b0381166200288a576040516342bcdf7f60e11b815260040160405180910390fd5b7f19bf281d118073c159a713666aba52e0d403520cd01e03f42e0f62a0b3bd4a35620028b68162002f72565b61010a546000818152610108602090815260408083206001600160a01b038881168552925290912054166101111462002927576040517f82f5d0a50000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240162000b05565b6000818152610108602090815260408083206001600160a01b038816808552925280832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555190917f0145163d8d460d1ab21463758d147fdfe79d4b57c81ca3d1439996104ae6895991a250505050565b60008281526097602090815260408083206001600160a01b038516845290915290205460ff16620013815760008281526097602090815260408083206001600160a01b0385168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905562002a1b3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600054610100900460ff1662002ade5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840162000b05565b62002ae862003b10565b565b600054610100900460ff1662002b695760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840162000b05565b60005b8381101562002c9c5784848281811062002b8a5762002b8a620048f6565b9050604002016020013560d7600087878581811062002bad5762002bad620048f6565b62002bc5926020604090920201908101915062004406565b600881111562002bd95762002bd962004865565b600881111562002bed5762002bed62004865565b815260208101919091526040016000205584848281811062002c135762002c13620048f6565b9050604002016020013585858381811062002c325762002c32620048f6565b62002c4a926020604090920201908101915062004406565b600881111562002c5e5762002c5e62004865565b6040517f33aa8fd1ce49e1761bc8d27fd53414bfefc45d690feed0ce55019d7d3aec609190600090a38062002c938162004954565b91505062002b6c565b5060005b81811015620024295782828281811062002cbe5762002cbe620048f6565b9050604002016020013560d8600085858581811062002ce15762002ce1620048f6565b62002cf9926020604090920201908101915062004406565b600881111562002d0d5762002d0d62004865565b600881111562002d215762002d2162004865565b815260208101919091526040016000205582828281811062002d475762002d47620048f6565b9050604002016020013583838381811062002d665762002d66620048f6565b62002d7e926020604090920201908101915062004406565b600881111562002d925762002d9262004865565b6040517fe7bf4b8dc0c17a52dc9e52323a3ab61cb2079db35f969125b1f8a3d984c6f6c290600090a38062002dc78162004954565b91505062002ca0565b600054610100900460ff1662002e4f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840162000b05565b60005b81811015620012f057600083838381811062002e725762002e72620048f6565b62002e8a9260206040909202019081019150620046c2565b6001600160a01b03160362002eb2576040516342bcdf7f60e11b815260040160405180910390fd5b82828281811062002ec75762002ec7620048f6565b905060400201602001356000801b0362002f0d576040517f0742d05300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62002f5d83838381811062002f265762002f26620048f6565b9050604002016020013584848481811062002f455762002f45620048f6565b62001ecf9260206040909202019081019150620046c2565b8062002f698162004954565b91505062002e52565b62002f7e813362003b8f565b50565b60008281526097602090815260408083206001600160a01b038516845290915290205460ff1615620013815760008281526097602090815260408083206001600160a01b038516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600260015403620030775760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640162000b05565b6002600155565b60d65481600881111562003096576200309662004865565b6001901b811615620030d857816040517fc0a71b5800000000000000000000000000000000000000000000000000000000815260040162000b05919062004894565b6002811615620013815760016040517fc0a71b5800000000000000000000000000000000000000000000000000000000815260040162000b05919062004894565b6040516001600160a01b0380851660248301528316604482015260648101829052620012c19085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915262003c0d565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f06fdde0300000000000000000000000000000000000000000000000000000000179052905160609160009182916001600160a01b0386169162003243919062004b8e565b600060405180830381855afa9150503d806000811462003280576040519150601f19603f3d011682016040523d82523d6000602084013e62003285565b606091505b509150915081620032cc576040518060400160405280600781526020017f4e4f5f4e414d4500000000000000000000000000000000000000000000000000815250620032d7565b620032d78162003cfc565b949350505050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f95d89b4100000000000000000000000000000000000000000000000000000000179052905160609160009182916001600160a01b0386169162003356919062004b8e565b600060405180830381855afa9150503d806000811462003393576040519150601f19603f3d011682016040523d82523d6000602084013e62003398565b606091505b509150915081620032cc576040518060400160405280600981526020017f4e4f5f53594d424f4c0000000000000000000000000000000000000000000000815250620032d7565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f313ce567000000000000000000000000000000000000000000000000000000001790529051600091829182916001600160a01b0386169162003455919062004b8e565b600060405180830381855afa9150503d806000811462003492576040519150601f19603f3d011682016040523d82523d6000602084013e62003497565b606091505b5091509150818015620034ab575060208151145b15620034c75780806020019051810190620032d7919062004bbc565b6040517fb5a2f1c60000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240162000b05565b60018055565b6001600160a01b03811662003533576040516342bcdf7f60e11b815260040160405180910390fd5b60ca80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040513391907fe68b208814fdb633b222cd15e73d5a27fb4ef9eef4cae78c623bc27702141d2890600090a350565b600054610100900460ff16620036175760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840162000b05565b6001600160a01b0381166200363f576040516342bcdf7f60e11b815260040160405180910390fd5b60c980547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b7fd505accf00000000000000000000000000000000000000000000000000000000620036aa60046000848662004bdc565b620036b59162004c08565b7fffffffff0000000000000000000000000000000000000000000000000000000016146200377657620036ed60046000838562004bdc565b620036f89162004c08565b6040517fcf9e29460000000000000000000000000000000000000000000000000000000081527fffffffff0000000000000000000000000000000000000000000000000000000090911660048201527fd505accf00000000000000000000000000000000000000000000000000000000602482015260440162000b05565b60008080808080806200378d886004818c62004bdc565b8101906200379c919062004c51565b9650965096509650965096509650336001600160a01b0316876001600160a01b03161462003802576040517f200688cc0000000000000000000000000000000000000000000000000000000081526001600160a01b038816600482015260240162000b05565b6001600160a01b038616301462003851576040517f291159480000000000000000000000000000000000000000000000000000000081526001600160a01b038716600482015260240162000b05565b6040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301528691908c169063dd62ed3e90604401602060405180830381865afa158015620038bc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620038e2919062004a11565b101562003989576040517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526064810185905260ff8416608482015260a4810183905260c481018290526001600160a01b038b169063d505accf9060e401600060405180830381600087803b1580156200396f57600080fd5b505af115801562003984573d6000803e3d6000fd5b505050505b50505050505050505050565b6040516001600160a01b038316602482015260448101829052620012f09084907fa9059cbb000000000000000000000000000000000000000000000000000000009060640162003167565b6000818152602085905260408120610107546040516001600160a01b039091169062003a0c9062004263565b6001600160a01b0390911681526040602082018190526000908201526060018190604051809103906000f590508015801562003a4c573d6000803e3d6000fd5b5090506000808062003a618688018862004d50565b925092509250836001600160a01b0316631624f6c68484846040518463ffffffff1660e01b815260040162003a999392919062004a41565b600060405180830381600087803b15801562003ab457600080fd5b505af115801562003ac9573d6000803e3d6000fd5b50506040516001600160a01b03808c169350871691507fd5d4920bb61e6141c8499d50a7bd617dae2b1818c9d6b995d3f2ba4975e32ea490600090a3505050949350505050565b600054610100900460ff16620035055760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840162000b05565b60008281526097602090815260408083206001600160a01b038516845290915290205460ff16620013815762003bc58162003ecf565b62003bd283602062003ee2565b60405160200162003be592919062004dc6565b60408051601f198184030181529082905262461bcd60e51b825262000b059160040162004544565b600062003c64826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316620041309092919063ffffffff16565b905080516000148062003c8857508080602001905181019062003c88919062004e4b565b620012f05760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840162000b05565b6060604082511062003d1e578180602001905181019062000c9e919062004e6f565b602082511462003d6157505060408051808201909152601281527f4e4f545f56414c49445f454e434f44494e470000000000000000000000000000602082015290565b60005b60208110801562003daf575082818151811062003d855762003d85620048f6565b01602001517fff000000000000000000000000000000000000000000000000000000000000001615155b1562003dbe5760010162003d64565b8060000362003e0257505060408051808201909152601281527f4e4f545f56414c49445f454e434f44494e4700000000000000000000000000006020820152919050565b60008167ffffffffffffffff81111562003e205762003e2062004559565b6040519080825280601f01601f19166020018201604052801562003e4b576020820181803683370190505b50905060005b8281101562003ec75784818151811062003e6f5762003e6f620048f6565b602001015160f81c60f81b82828151811062003e8f5762003e8f620048f6565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060010162003e51565b509392505050565b606062000c9e6001600160a01b03831660145b6060600062003ef383600262004ee6565b62003f0090600262004f00565b67ffffffffffffffff81111562003f1b5762003f1b62004559565b6040519080825280601f01601f19166020018201604052801562003f46576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811062003f805762003f80620048f6565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811062003fe65762003fe6620048f6565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006200402484600262004ee6565b6200403190600162004f00565b90505b6001811115620040d8577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110620040765762004076620048f6565b1a60f81b8282815181106200408f576200408f620048f6565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c93620040d08162004f16565b905062004034565b508315620041295760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640162000b05565b9392505050565b6060620032d7848460008585600080866001600160a01b031685876040516200415a919062004b8e565b60006040518083038185875af1925050503d806000811462004199576040519150601f19603f3d011682016040523d82523d6000602084013e6200419e565b606091505b5091509150620041b187838387620041bc565b979650505050505050565b606083156200423057825160000362004228576001600160a01b0385163b620042285760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000b05565b5081620032d7565b620032d78383815115620042475781518083602001fd5b8060405162461bcd60e51b815260040162000b05919062004544565b6106f38062004f4f83390190565b6001600160a01b038116811462002f7e57600080fd5b60008083601f8401126200429a57600080fd5b50813567ffffffffffffffff811115620042b357600080fd5b6020830191508360208260061b8501011115620042cf57600080fd5b9250929050565b60008060008060008060006080888a031215620042f257600080fd5b8735620042ff8162004271565b9650602088013567ffffffffffffffff808211156200431d57600080fd5b6200432b8b838c0162004287565b909850965060408a01359150808211156200434557600080fd5b620043538b838c0162004287565b909650945060608a01359150808211156200436d57600080fd5b506200437c8a828b0162004287565b989b979a50959850939692959293505050565b600060208284031215620043a257600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146200412957600080fd5b60008060408385031215620043e757600080fd5b823591506020830135620043fb8162004271565b809150509250929050565b6000602082840312156200441957600080fd5b8135600981106200412957600080fd5b600080604083850312156200443d57600080fd5b82356200444a8162004271565b91506020830135620043fb8162004271565b6000602082840312156200446f57600080fd5b5035919050565b600080602083850312156200448a57600080fd5b823567ffffffffffffffff80821115620044a357600080fd5b818501915085601f830112620044b857600080fd5b813581811115620044c857600080fd5b8660208260051b8501011115620044de57600080fd5b60209290920196919550909350505050565b60005b838110156200450d578181015183820152602001620044f3565b50506000910152565b6000815180845262004530816020860160208601620044f0565b601f01601f19169290920160200192915050565b60208152600062004129602083018462004516565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715620045b457620045b462004559565b604052919050565b60006020808385031215620045d057600080fd5b823567ffffffffffffffff80821115620045e957600080fd5b818501915085601f830112620045fe57600080fd5b81358181111562004613576200461362004559565b8060051b91506200462684830162004588565b81815291830184019184810190888411156200464157600080fd5b938501935b838510156200466f57843592506200465e8362004271565b828252938501939085019062004646565b98975050505050505050565b6000806000606084860312156200469157600080fd5b83356200469e8162004271565b9250602084013591506040840135620046b78162004271565b809150509250925092565b600060208284031215620046d557600080fd5b8135620041298162004271565b600060208284031215620046f557600080fd5b813567ffffffffffffffff8111156200470d57600080fd5b820161012081850312156200412957600080fd5b60008083601f8401126200473457600080fd5b50813567ffffffffffffffff8111156200474d57600080fd5b602083019150836020828501011115620042cf57600080fd5b6000806000806000608086880312156200477f57600080fd5b85356200478c8162004271565b9450602086013593506040860135620047a58162004271565b9250606086013567ffffffffffffffff811115620047c257600080fd5b620047d08882890162004721565b969995985093965092949392505050565b60008060008060008060a08789031215620047fb57600080fd5b8635620048088162004271565b9550602087013594506040870135620048218162004271565b935060608701359250608087013567ffffffffffffffff8111156200484557600080fd5b6200485389828a0162004721565b979a9699509497509295939492505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160098310620048d0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b600060208284031215620048e957600080fd5b8151620041298162004271565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362004988576200498862004925565b5060010190565b6020808252825182820181905260009190848201906040850190845b81811015620049d25783516001600160a01b031683529284019291840191600101620049ab565b50909695505050505050565b6001600160a01b038416815282602082015260606040820152600062004a08606083018462004516565b95945050505050565b60006020828403121562004a2457600080fd5b5051919050565b8181038181111562000c9e5762000c9e62004925565b60608152600062004a56606083018662004516565b828103602084015262004a6a818662004516565b91505060ff83166040830152949350505050565b60006001600160a01b03808816835286602084015280861660408401525083606083015260a06080830152620041b160a083018462004516565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811262004aee57600080fd5b83018035915067ffffffffffffffff82111562004b0a57600080fd5b6020019150600681901b3603821315620042cf57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811262004b5957600080fd5b83018035915067ffffffffffffffff82111562004b7557600080fd5b6020019150600581901b3603821315620042cf57600080fd5b6000825162004ba2818460208701620044f0565b9190910192915050565b60ff8116811462002f7e57600080fd5b60006020828403121562004bcf57600080fd5b8151620041298162004bac565b6000808585111562004bed57600080fd5b8386111562004bfb57600080fd5b5050820193919092039150565b7fffffffff00000000000000000000000000000000000000000000000000000000813581811691600485101562004c495780818660040360031b1b83161692505b505092915050565b600080600080600080600060e0888a03121562004c6d57600080fd5b873562004c7a8162004271565b9650602088013562004c8c8162004271565b95506040880135945060608801359350608088013562004cac8162004bac565b9699959850939692959460a0840135945060c09093013592915050565b600067ffffffffffffffff82111562004ce65762004ce662004559565b50601f01601f191660200190565b600082601f83011262004d0657600080fd5b813562004d1d62004d178262004cc9565b62004588565b81815284602083860101111562004d3357600080fd5b816020850160208301376000918101602001919091529392505050565b60008060006060848603121562004d6657600080fd5b833567ffffffffffffffff8082111562004d7f57600080fd5b62004d8d8783880162004cf4565b9450602086013591508082111562004da457600080fd5b5062004db38682870162004cf4565b9250506040840135620046b78162004bac565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835162004e00816017850160208801620044f0565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000601791840191820152835162004e3f816028840160208801620044f0565b01602801949350505050565b60006020828403121562004e5e57600080fd5b815180151581146200412957600080fd5b60006020828403121562004e8257600080fd5b815167ffffffffffffffff81111562004e9a57600080fd5b8201601f8101841362004eac57600080fd5b805162004ebd62004d178262004cc9565b81815285602083850101111562004ed357600080fd5b62004a08826020830160208601620044f0565b808202811582820484141762000c9e5762000c9e62004925565b8082018082111562000c9e5762000c9e62004925565b60008162004f285762004f2862004925565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fe60806040526040516106f33803806106f383398101604081905261002291610420565b61002e82826000610035565b505061054a565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104e0565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104e0565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f83836040518060600160405280602781526020016106cc602791396102a6565b9392505050565b6060600080856001600160a01b0316856040516102c391906104fb565b600060405180830381855af49150503d80600081146102fe576040519150601f19603f3d011682016040523d82523d6000602084013e610303565b606091505b5090925090506103158683838761031f565b9695505050505050565b6060831561038e578251600003610387576001600160a01b0385163b6103875760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610157565b5081610398565b61039883836103a0565b949350505050565b8151156103b05781518083602001fd5b8060405162461bcd60e51b81526004016101579190610517565b80516001600160a01b03811681146103e157600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156104175781810151838201526020016103ff565b50506000910152565b6000806040838503121561043357600080fd5b61043c836103ca565b60208401519092506001600160401b038082111561045957600080fd5b818501915085601f83011261046d57600080fd5b81518181111561047f5761047f6103e6565b604051601f8201601f19908116603f011681019083821181831017156104a7576104a76103e6565b816040528281528860208487010111156104c057600080fd5b6104d18360208301602088016103fc565b80955050505050509250929050565b6000602082840312156104f257600080fd5b61029f826103ca565b6000825161050d8184602087016103fc565b9190910192915050565b60208152600082518060208401526105368160408501602087016103fc565b601f01601f19169190910160400192915050565b610173806105596000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100dc565b565b60006100697fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d505473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100d79190610100565b905090565b3660008037600080366000845af43d6000803e8080156100fb573d6000f35b3d6000fd5b60006020828403121561011257600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461013657600080fd5b939250505056fea2646970667358221220662c40b76fc0d477a291a78deacd27f4cddd7512dea18087244e38acb2fd99dd64736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201f32ef901647bd30a862a1b3c8df5817d7cc11f4c5759955bd247c2eb12e6c9564736f6c63430008130033",
"linkReferences": {},
"deployedLinkReferences": {}
}