{
  "_format": "hh-sol-artifact-1",
  "contractName": "OwnerManager",
  "sourceName": "contracts/roles/permissioning/owner/OwnerManager.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "target",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes4",
          "name": "selector",
          "type": "bytes4"
        }
      ],
      "name": "ComplianceInteraction",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "_role",
          "type": "string"
        }
      ],
      "name": "RoleAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "_role",
          "type": "string"
        }
      ],
      "name": "RoleRemoved",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "addClaimRegistryManager",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "addComplianceManager",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "addComplianceSetter",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "addIssuersRegistryManager",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "addOwnerAdmin",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "addRegistryAddressSetter",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "addTokenInfoManager",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_agent",
          "type": "address"
        }
      ],
      "name": "callAddAgentOnIdentityRegistryContract",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_agent",
          "type": "address"
        }
      ],
      "name": "callAddAgentOnTokenContract",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_claimTopic",
          "type": "uint256"
        },
        {
          "internalType": "contract IIdentity",
          "name": "_onchainID",
          "type": "address"
        }
      ],
      "name": "callAddClaimTopic",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IClaimIssuer",
          "name": "_trustedIssuer",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "_claimTopics",
          "type": "uint256[]"
        },
        {
          "internalType": "contract IIdentity",
          "name": "_onchainID",
          "type": "address"
        }
      ],
      "name": "callAddTrustedIssuer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "callData",
          "type": "bytes"
        },
        {
          "internalType": "contract IIdentity",
          "name": "_onchainID",
          "type": "address"
        }
      ],
      "name": "callComplianceFunction",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_agent",
          "type": "address"
        }
      ],
      "name": "callRemoveAgentOnIdentityRegistryContract",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_agent",
          "type": "address"
        }
      ],
      "name": "callRemoveAgentOnTokenContract",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_claimTopic",
          "type": "uint256"
        },
        {
          "internalType": "contract IIdentity",
          "name": "_onchainID",
          "type": "address"
        }
      ],
      "name": "callRemoveClaimTopic",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IClaimIssuer",
          "name": "_trustedIssuer",
          "type": "address"
        },
        {
          "internalType": "contract IIdentity",
          "name": "_onchainID",
          "type": "address"
        }
      ],
      "name": "callRemoveTrustedIssuer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_claimTopicsRegistry",
          "type": "address"
        },
        {
          "internalType": "contract IIdentity",
          "name": "_onchainID",
          "type": "address"
        }
      ],
      "name": "callSetClaimTopicsRegistry",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_compliance",
          "type": "address"
        },
        {
          "internalType": "contract IIdentity",
          "name": "_onchainID",
          "type": "address"
        }
      ],
      "name": "callSetCompliance",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_identityRegistry",
          "type": "address"
        },
        {
          "internalType": "contract IIdentity",
          "name": "_onchainID",
          "type": "address"
        }
      ],
      "name": "callSetIdentityRegistry",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_name",
          "type": "string"
        },
        {
          "internalType": "contract IIdentity",
          "name": "_onchainID",
          "type": "address"
        }
      ],
      "name": "callSetTokenName",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_tokenOnchainID",
          "type": "address"
        },
        {
          "internalType": "contract IIdentity",
          "name": "_onchainID",
          "type": "address"
        }
      ],
      "name": "callSetTokenOnchainID",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_symbol",
          "type": "string"
        },
        {
          "internalType": "contract IIdentity",
          "name": "_onchainID",
          "type": "address"
        }
      ],
      "name": "callSetTokenSymbol",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_trustedIssuersRegistry",
          "type": "address"
        },
        {
          "internalType": "contract IIdentity",
          "name": "_onchainID",
          "type": "address"
        }
      ],
      "name": "callSetTrustedIssuersRegistry",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "callTransferOwnershipOnClaimTopicsRegistryContract",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "callTransferOwnershipOnComplianceContract",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "callTransferOwnershipOnIdentityRegistryContract",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "callTransferOwnershipOnIssuersRegistryContract",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "callTransferOwnershipOnTokenContract",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IClaimIssuer",
          "name": "_trustedIssuer",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "_claimTopics",
          "type": "uint256[]"
        },
        {
          "internalType": "contract IIdentity",
          "name": "_onchainID",
          "type": "address"
        }
      ],
      "name": "callUpdateIssuerClaimTopics",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "isClaimRegistryManager",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "isComplianceManager",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "isComplianceSetter",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "isIssuersRegistryManager",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "isOwnerAdmin",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "isRegistryAddressSetter",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "isTokenInfoManager",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "removeClaimRegistryManager",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "removeComplianceManager",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "removeComplianceSetter",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "removeIssuersRegistryManager",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "removeOwnerAdmin",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "removeRegistryAddressSetter",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "removeTokenInfoManager",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "token",
      "outputs": [
        {
          "internalType": "contract IToken",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b5060405162003245380380620032458339810160408190526200003491620000b5565b6200003f3362000065565b600880546001600160a01b0319166001600160a01b0392909216919091179055620000e7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215620000c857600080fd5b81516001600160a01b0381168114620000e057600080fd5b9392505050565b61314e80620000f76000396000f3fe608060405234801561001057600080fd5b50600436106102955760003560e01c806387cc060c11610167578063ae5aaa3b116100ce578063f087249c11610087578063f087249c146105c3578063f2fde38b146105d6578063faed696a146105e9578063fc0c546a146105fc578063fc6de4b51461060f578063ff8063111461062257600080fd5b8063ae5aaa3b14610551578063ce4bdac714610564578063dd39042b14610577578063e110255b1461058a578063e38123181461059d578063eeac6fe6146105b057600080fd5b806399884aab1161012057806399884aab146104df5780639ce2d88e146104f25780639d6de3bc14610505578063a66bcc1c14610518578063aa1cef561461052b578063ac95fc911461053e57600080fd5b806387cc060c1461045b578063882fc6ca1461046e5780638da5cb5b14610481578063934b2da4146104a657806394e69f1b146104b9578063951af88d146104cc57600080fd5b8063405225541161020b5780636ff7bff7116101c45780636ff7bff7146103f4578063715018a614610407578063757d467f1461040f578063818ab8bd14610422578063828709371461043557806385cef6081461044857600080fd5b8063405225541461038257806346b686f8146103955780634837b797146103a857806354b9797f146103bb5780635c5f2047146103ce57806362cdd482146103e157600080fd5b806328d7be341161025d57806328d7be34146103105780632af70c30146103235780632f56d91b14610336578063309ff3d1146103495780633ba7c75e1461035c5780633c734ce81461036f57600080fd5b8063039ec2cd1461029a57806303ff5014146102af5780631096a7ec146102d75780632447e50b146102ea578063256ccc07146102fd575b600080fd5b6102ad6102a8366004612cb4565b610635565b005b6102c26102bd366004612cb4565b6106f0565b60405190151581526020015b60405180910390f35b6102ad6102e5366004612cb4565b610703565b6102c26102f8366004612cb4565b610823565b6102ad61030b366004612cb4565b610830565b6102ad61031e366004612cb4565b6108aa565b6102ad610331366004612d21565b610924565b6102ad610344366004612d78565b610a4f565b6102ad610357366004612d21565b610c4c565b6102c261036a366004612cb4565b610d40565b6102c261037d366004612cb4565b610d4d565b6102ad610390366004612cb4565b610d5a565b6102ad6103a3366004612cb4565b610dfb565b6102ad6103b6366004612da8565b610e9d565b6102ad6103c9366004612cb4565b61109e565b6102ad6103dc366004612d21565b611139565b6102c26103ef366004612cb4565b611321565b6102ad610402366004612cb4565b61132e565b6102ad6113d5565b6102ad61041d366004612cb4565b6113e9565b6102ad610430366004612cb4565b6114d8565b6102c2610443366004612cb4565b6115d4565b6102ad610456366004612cb4565b6115e1565b6102ad610469366004612e43565b6116d0565b6102ad61047c366004612cb4565b6117c4565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016102ce565b6102ad6104b4366004612cb4565b611865565b6102ad6104c7366004612cb4565b611900565b6102ad6104da366004612e43565b6119a1565b6102ad6104ed366004612cb4565b611ad3565b6102ad610500366004612e43565b611bcf565b6102ad610513366004612e43565b611d99565b6102ad610526366004612cb4565b611e8d565b6102ad610539366004612cb4565b611f2f565b6102ad61054c366004612cb4565b611fa9565b6102ad61055f366004612cb4565b612050565b6102ad610572366004612cb4565b6120f6565b6102ad610585366004612d78565b612197565b6102ad610598366004612cb4565b61235e565b6102ad6105ab366004612cb4565b612403565b6102ad6105be366004612e43565b61249e565b6102ad6105d1366004612e43565b612607565b6102ad6105e4366004612cb4565b612770565b6102ad6105f7366004612cb4565b6127e9565b60085461048e906001600160a01b031681565b6102ad61061d366004612da8565b61288e565b6102c2610630366004612cb4565b612a57565b336106486000546001600160a01b031690565b6001600160a01b03161480610661575061066133611321565b6106865760405162461bcd60e51b815260040161067d90612e71565b60405180910390fd5b610691600282612a64565b60408051808201825260158152742932b3b4b9ba393ca0b2323932b9b9a9b2ba3a32b960591b602082015290516001600160a01b038316906000805160206130d9833981519152906106e4908490612ea8565b60405180910390a25050565b60006106fd600483612ae6565b92915050565b336107166000546001600160a01b031690565b6001600160a01b0316148061072f575061072f33611321565b61074b5760405162461bcd60e51b815260040161067d90612e71565b600860009054906101000a90046001600160a01b03166001600160a01b0316636290865d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561079e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c29190612ef6565b60405163f2fde38b60e01b81526001600160a01b038381166004830152919091169063f2fde38b906024015b600060405180830381600087803b15801561080857600080fd5b505af115801561081c573d6000803e3d6000fd5b5050505050565b60006106fd600783612ae6565b336108436000546001600160a01b031690565b6001600160a01b0316148061085c575061085c33611321565b6108785760405162461bcd60e51b815260040161067d90612e71565b600854604051634273cc2160e11b81526001600160a01b038381166004830152909116906384e79842906024016107ee565b336108bd6000546001600160a01b031690565b6001600160a01b031614806108d657506108d633611321565b6108f25760405162461bcd60e51b815260040161067d90612e71565b600854604051634bd313c760e11b81526001600160a01b038381166004830152909116906397a6278e906024016107ee565b61092d81610823565b80156109ca5750604080513360208201526001600160a01b0383169163d202158d910160408051601f198184030181529082905280516020909101206001600160e01b031960e084901b168252600482015260026024820152604401602060405180830381865afa1580156109a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ca9190612f13565b6109e65760405162461bcd60e51b815260040161067d90612f35565b600854604051635c26412360e11b81526001600160a01b039091169063b84c824690610a189086908690600401612f82565b600060405180830381600087803b158015610a3257600080fd5b505af1158015610a46573d6000803e3d6000fd5b50505050505050565b610a5881610d4d565b8015610af55750604080513360208201526001600160a01b0383169163d202158d910160408051601f198184030181529082905280516020909101206001600160e01b031960e084901b168252600482015260026024820152604401602060405180830381865afa158015610ad1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af59190612f13565b610b115760405162461bcd60e51b815260040161067d90612fb1565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b889190612ef6565b6001600160a01b0316633b3e12f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be99190612ef6565b6001600160a01b03166308297846836040518263ffffffff1660e01b8152600401610c1691815260200190565b600060405180830381600087803b158015610c3057600080fd5b505af1158015610c44573d6000803e3d6000fd5b505050505050565b610c5581610823565b8015610cf25750604080513360208201526001600160a01b0383169163d202158d910160408051601f198184030181529082905280516020909101206001600160e01b031960e084901b168252600482015260026024820152604401602060405180830381865afa158015610cce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf29190612f13565b610d0e5760405162461bcd60e51b815260040161067d90612f35565b60085460405163c47f002760e01b81526001600160a01b039091169063c47f002790610a189086908690600401612f82565b60006106fd600383612ae6565b60006106fd600583612ae6565b33610d6d6000546001600160a01b031690565b6001600160a01b03161480610d865750610d8633611321565b610da25760405162461bcd60e51b815260040161067d90612e71565b610dad600382612a64565b604080518082018252601081526f21b7b6b83634b0b731b2a9b2ba3a32b960811b602082015290516001600160a01b038316906000805160206130d9833981519152906106e4908490612ea8565b33610e0e6000546001600160a01b031690565b6001600160a01b03161480610e275750610e2733611321565b610e435760405162461bcd60e51b815260040161067d90612e71565b610e4e600482612a64565b604080518082018252601181527021b7b6b83634b0b731b2a6b0b730b3b2b960791b602082015290516001600160a01b038316906000805160206130d9833981519152906106e4908490612ea8565b610ea681612a57565b8015610f435750604080513360208201526001600160a01b0383169163d202158d910160408051601f198184030181529082905280516020909101206001600160e01b031960e084901b168252600482015260026024820152604401602060405180830381865afa158015610f1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f439190612f13565b610f5f5760405162461bcd60e51b815260040161067d90612ff9565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd69190612ef6565b6001600160a01b031663b4f3fcb76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611013573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110379190612ef6565b6001600160a01b03166304bc7e848585856040518463ffffffff1660e01b815260040161106693929190613043565b600060405180830381600087803b15801561108057600080fd5b505af1158015611094573d6000803e3d6000fd5b5050505050505050565b336110b16000546001600160a01b031690565b6001600160a01b031614806110ca57506110ca33611321565b6110e65760405162461bcd60e51b815260040161067d90612e71565b6110f1600182612a64565b604080518082018252600a81526927bbb732b920b236b4b760b11b602082015290516001600160a01b038316906000805160206130d9833981519152906106e4908490612ea8565b611142816106f0565b80156111df5750604080513360208201526001600160a01b0383169163d202158d910160408051601f198184030181529082905280516020909101206001600160e01b031960e084901b168252600482015260026024820152604401602060405180830381865afa1580156111bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111df9190612f13565b61123a5760405162461bcd60e51b815260206004820152602660248201527f526f6c653a2053656e646572206973204e4f5420436f6d706c69616e6365204d60448201526530b730b3b2b960d11b606482015260840161067d565b60085460408051636290865d60e01b815290516000926001600160a01b031691636290865d9160048083019260209291908290030181865afa158015611284573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a89190612ef6565b90506040518385823760008085836000865af16112c9573d6000803e3d6000fd5b50806001600160a01b03167f5779a24d18a4639b1d59461e68c00fb0cd02533a4c5a6ff3ca6363e23e2fff566112ff8686612b69565b6040516001600160e01b0319909116815260200160405180910390a250505050565b60006106fd600183612ae6565b336113416000546001600160a01b031690565b6001600160a01b0316148061135a575061135a33611321565b6113765760405162461bcd60e51b815260040161067d90612e71565b611381600682612a64565b604080518082018252601681527524b9b9bab2b939a932b3b4b9ba393ca6b0b730b3b2b960511b602082015290516001600160a01b038316906000805160206130d9833981519152906106e4908490612ea8565b6113dd612b79565b6113e76000612bd3565b565b336113fc6000546001600160a01b031690565b6001600160a01b03161480611415575061141533611321565b6114315760405162461bcd60e51b815260040161067d90612e71565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611484573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a89190612ef6565b604051634bd313c760e11b81526001600160a01b03838116600483015291909116906397a6278e906024016107ee565b336114eb6000546001600160a01b031690565b6001600160a01b03161480611504575061150433611321565b6115205760405162461bcd60e51b815260040161067d90612e71565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611573573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115979190612ef6565b6001600160a01b0316633b3e12f46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561079e573d6000803e3d6000fd5b60006106fd600283612ae6565b336115f46000546001600160a01b031690565b6001600160a01b0316148061160d575061160d33611321565b6116295760405162461bcd60e51b815260040161067d90612e71565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561167c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a09190612ef6565b604051634273cc2160e11b81526001600160a01b03838116600483015291909116906384e79842906024016107ee565b6116d981610823565b80156117765750604080513360208201526001600160a01b0383169163d202158d910160408051601f198184030181529082905280516020909101206001600160e01b031960e084901b168252600482015260026024820152604401602060405180830381865afa158015611752573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117769190612f13565b6117925760405162461bcd60e51b815260040161067d90612f35565b600854604051633d1ddc5b60e01b81526001600160a01b03848116600483015290911690633d1ddc5b90602401610c16565b336117d76000546001600160a01b031690565b6001600160a01b031614806117f057506117f033611321565b61180c5760405162461bcd60e51b815260040161067d90612e71565b611817600782612a64565b604080518082018252601081526f2a37b5b2b724b73337a6b0b730b3b2b960811b602082015290516001600160a01b038316906000805160206130d9833981519152906106e4908490612ea8565b336118786000546001600160a01b031690565b6001600160a01b03161480611891575061189133611321565b6118ad5760405162461bcd60e51b815260040161067d90612e71565b6118b8600182612c23565b604080518082018252600a81526927bbb732b920b236b4b760b11b602082015290516001600160a01b038316906000805160206130f9833981519152906106e4908490612ea8565b336119136000546001600160a01b031690565b6001600160a01b0316148061192c575061192c33611321565b6119485760405162461bcd60e51b815260040161067d90612e71565b611953600782612c23565b604080518082018252601081526f2a37b5b2b724b73337a6b0b730b3b2b960811b602082015290516001600160a01b038316906000805160206130f9833981519152906106e4908490612ea8565b6119aa81610d40565b8015611a475750604080513360208201526001600160a01b0383169163d202158d910160408051601f198184030181529082905280516020909101206001600160e01b031960e084901b168252600482015260026024820152604401602060405180830381865afa158015611a23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a479190612f13565b611aa15760405162461bcd60e51b815260206004820152602560248201527f526f6c653a2053656e646572206973204e4f5420436f6d706c69616e6365205360448201526432ba3a32b960d91b606482015260840161067d565b60085460405163f898178960e01b81526001600160a01b0384811660048301529091169063f898178990602401610c16565b33611ae66000546001600160a01b031690565b6001600160a01b03161480611aff5750611aff33611321565b611b1b5760405162461bcd60e51b815260040161067d90612e71565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b929190612ef6565b6001600160a01b031663b4f3fcb76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561079e573d6000803e3d6000fd5b611bd881612a57565b8015611c755750604080513360208201526001600160a01b0383169163d202158d910160408051601f198184030181529082905280516020909101206001600160e01b031960e084901b168252600482015260026024820152604401602060405180830381865afa158015611c51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c759190612f13565b611c915760405162461bcd60e51b815260040161067d90612ff9565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ce4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d089190612ef6565b6001600160a01b031663b4f3fcb76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d699190612ef6565b60405163b93d28eb60e01b81526001600160a01b038481166004830152919091169063b93d28eb90602401610c16565b611da2816115d4565b8015611e3f5750604080513360208201526001600160a01b0383169163d202158d910160408051601f198184030181529082905280516020909101206001600160e01b031960e084901b168252600482015260026024820152604401602060405180830381865afa158015611e1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3f9190612f13565b611e5b5760405162461bcd60e51b815260040161067d9061308d565b60085460405163cbf3f86160e01b81526001600160a01b0384811660048301529091169063cbf3f86190602401610c16565b33611ea06000546001600160a01b031690565b6001600160a01b03161480611eb95750611eb933611321565b611ed55760405162461bcd60e51b815260040161067d90612e71565b611ee0600482612c23565b604080518082018252601181527021b7b6b83634b0b731b2a6b0b730b3b2b960791b602082015290516001600160a01b038316906000805160206130f9833981519152906106e4908490612ea8565b33611f426000546001600160a01b031690565b6001600160a01b03161480611f5b5750611f5b33611321565b611f775760405162461bcd60e51b815260040161067d90612e71565b60085460405163f2fde38b60e01b81526001600160a01b0383811660048301529091169063f2fde38b906024016107ee565b33611fbc6000546001600160a01b031690565b6001600160a01b03161480611fd55750611fd533611321565b611ff15760405162461bcd60e51b815260040161067d90612e71565b611ffc600682612c23565b604080518082018252601681527524b9b9bab2b939a932b3b4b9ba393ca6b0b730b3b2b960511b602082015290516001600160a01b038316906000805160206130f9833981519152906106e4908490612ea8565b336120636000546001600160a01b031690565b6001600160a01b0316148061207c575061207c33611321565b6120985760405162461bcd60e51b815260040161067d90612e71565b6120a3600282612c23565b60408051808201825260158152742932b3b4b9ba393ca0b2323932b9b9a9b2ba3a32b960591b602082015290516001600160a01b038316906000805160206130f9833981519152906106e4908490612ea8565b336121096000546001600160a01b031690565b6001600160a01b03161480612122575061212233611321565b61213e5760405162461bcd60e51b815260040161067d90612e71565b612149600382612c23565b604080518082018252601081526f21b7b6b83634b0b731b2a9b2ba3a32b960811b602082015290516001600160a01b038316906000805160206130f9833981519152906106e4908490612ea8565b6121a081610d4d565b801561223d5750604080513360208201526001600160a01b0383169163d202158d910160408051601f198184030181529082905280516020909101206001600160e01b031960e084901b168252600482015260026024820152604401602060405180830381865afa158015612219573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223d9190612f13565b6122595760405162461bcd60e51b815260040161067d90612fb1565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d09190612ef6565b6001600160a01b0316633b3e12f46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561230d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123319190612ef6565b6001600160a01b031663c7b22551836040518263ffffffff1660e01b8152600401610c1691815260200190565b336123716000546001600160a01b031690565b6001600160a01b0316148061238a575061238a33611321565b6123a65760405162461bcd60e51b815260040161067d90612e71565b6123b1600582612a64565b604080518082018252601481527321b630b4b6a932b3b4b9ba393ca6b0b730b3b2b960611b602082015290516001600160a01b038316906000805160206130d9833981519152906106e4908490612ea8565b336124166000546001600160a01b031690565b6001600160a01b0316148061242f575061242f33611321565b61244b5760405162461bcd60e51b815260040161067d90612e71565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561079e573d6000803e3d6000fd5b6124a7816115d4565b80156125445750604080513360208201526001600160a01b0383169163d202158d910160408051601f198184030181529082905280516020909101206001600160e01b031960e084901b168252600482015260026024820152604401602060405180830381865afa158015612520573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125449190612f13565b6125605760405162461bcd60e51b815260040161067d9061308d565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d79190612ef6565b60405163670af6a960e01b81526001600160a01b038481166004830152919091169063670af6a990602401610c16565b612610816115d4565b80156126ad5750604080513360208201526001600160a01b0383169163d202158d910160408051601f198184030181529082905280516020909101206001600160e01b031960e084901b168252600482015260026024820152604401602060405180830381865afa158015612689573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ad9190612f13565b6126c95760405162461bcd60e51b815260040161067d9061308d565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561271c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127409190612ef6565b60405163e744d78960e01b81526001600160a01b038481166004830152919091169063e744d78990602401610c16565b612778612b79565b6001600160a01b0381166127dd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161067d565b6127e681612bd3565b50565b336127fc6000546001600160a01b031690565b6001600160a01b03161480612815575061281533611321565b6128315760405162461bcd60e51b815260040161067d90612e71565b61283c600582612c23565b604080518082018252601481527321b630b4b6a932b3b4b9ba393ca6b0b730b3b2b960611b602082015290516001600160a01b038316906000805160206130f9833981519152906106e4908490612ea8565b61289781612a57565b80156129345750604080513360208201526001600160a01b0383169163d202158d910160408051601f198184030181529082905280516020909101206001600160e01b031960e084901b168252600482015260026024820152604401602060405180830381865afa158015612910573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129349190612f13565b6129505760405162461bcd60e51b815260040161067d90612ff9565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129c79190612ef6565b6001600160a01b031663b4f3fcb76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a289190612ef6565b6001600160a01b0316639f63ea988585856040518463ffffffff1660e01b815260040161106693929190613043565b60006106fd600683612ae6565b612a6e8282612ae6565b612ac45760405162461bcd60e51b815260206004820152602160248201527f526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6044820152606560f81b606482015260840161067d565b6001600160a01b0316600090815260209190915260409020805460ff19169055565b60006001600160a01b038216612b495760405162461bcd60e51b815260206004820152602260248201527f526f6c65733a206163636f756e7420697320746865207a65726f206164647265604482015261737360f01b606482015260840161067d565b506001600160a01b03166000908152602091909152604090205460ff1690565b6000600482106106fd5750503590565b6000546001600160a01b031633146113e75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161067d565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b612c2d8282612ae6565b15612c7a5760405162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015260640161067d565b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6001600160a01b03811681146127e657600080fd5b600060208284031215612cc657600080fd5b8135612cd181612c9f565b9392505050565b60008083601f840112612cea57600080fd5b50813567ffffffffffffffff811115612d0257600080fd5b602083019150836020828501011115612d1a57600080fd5b9250929050565b600080600060408486031215612d3657600080fd5b833567ffffffffffffffff811115612d4d57600080fd5b612d5986828701612cd8565b9094509250506020840135612d6d81612c9f565b809150509250925092565b60008060408385031215612d8b57600080fd5b823591506020830135612d9d81612c9f565b809150509250929050565b60008060008060608587031215612dbe57600080fd5b8435612dc981612c9f565b9350602085013567ffffffffffffffff80821115612de657600080fd5b818701915087601f830112612dfa57600080fd5b813581811115612e0957600080fd5b8860208260051b8501011115612e1e57600080fd5b6020830195508094505050506040850135612e3881612c9f565b939692955090935050565b60008060408385031215612e5657600080fd5b8235612e6181612c9f565b91506020830135612d9d81612c9f565b60208082526019908201527f526f6c653a2053656e646572206973204e4f542041646d696e00000000000000604082015260600190565b600060208083528351808285015260005b81811015612ed557858101830151858201604001528201612eb9565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215612f0857600080fd5b8151612cd181612c9f565b600060208284031215612f2557600080fd5b81518015158114612cd157600080fd5b6020808252602d908201527f526f6c653a2053656e646572206973204e4f5420546f6b656e20496e666f726d60408201526c30ba34b7b71026b0b730b3b2b960991b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60208082526028908201527f526f6c653a2053656e646572206973204e4f5420436c61696d526567697374726040820152673ca6b0b730b3b2b960c11b606082015260800190565b6020808252602a908201527f526f6c653a2053656e646572206973204e4f54204973737565727352656769736040820152693a393ca6b0b730b3b2b960b11b606082015260800190565b6001600160a01b0384168152604060208201819052810182905260006001600160fb1b0383111561307357600080fd5b8260051b8085606085013791909101606001949350505050565b6020808252602b908201527f526f6c653a2053656e646572206973204e4f542052656769737472792041646460408201526a3932b9b99029b2ba3a32b960a91b60608201526080019056fed211483f91fc6eff862467f8de606587a30c8fc9981056f051b897a418df803abfec83d64eaa953f2708271a023ab9ee82057f8f3578d548c1a4ba0b5b700489a264697066735822122027ee43f79f320d3b25f2083f5f5a7dc6ffd2a977495049ba41edd67d8538193764736f6c63430008110033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102955760003560e01c806387cc060c11610167578063ae5aaa3b116100ce578063f087249c11610087578063f087249c146105c3578063f2fde38b146105d6578063faed696a146105e9578063fc0c546a146105fc578063fc6de4b51461060f578063ff8063111461062257600080fd5b8063ae5aaa3b14610551578063ce4bdac714610564578063dd39042b14610577578063e110255b1461058a578063e38123181461059d578063eeac6fe6146105b057600080fd5b806399884aab1161012057806399884aab146104df5780639ce2d88e146104f25780639d6de3bc14610505578063a66bcc1c14610518578063aa1cef561461052b578063ac95fc911461053e57600080fd5b806387cc060c1461045b578063882fc6ca1461046e5780638da5cb5b14610481578063934b2da4146104a657806394e69f1b146104b9578063951af88d146104cc57600080fd5b8063405225541161020b5780636ff7bff7116101c45780636ff7bff7146103f4578063715018a614610407578063757d467f1461040f578063818ab8bd14610422578063828709371461043557806385cef6081461044857600080fd5b8063405225541461038257806346b686f8146103955780634837b797146103a857806354b9797f146103bb5780635c5f2047146103ce57806362cdd482146103e157600080fd5b806328d7be341161025d57806328d7be34146103105780632af70c30146103235780632f56d91b14610336578063309ff3d1146103495780633ba7c75e1461035c5780633c734ce81461036f57600080fd5b8063039ec2cd1461029a57806303ff5014146102af5780631096a7ec146102d75780632447e50b146102ea578063256ccc07146102fd575b600080fd5b6102ad6102a8366004612cb4565b610635565b005b6102c26102bd366004612cb4565b6106f0565b60405190151581526020015b60405180910390f35b6102ad6102e5366004612cb4565b610703565b6102c26102f8366004612cb4565b610823565b6102ad61030b366004612cb4565b610830565b6102ad61031e366004612cb4565b6108aa565b6102ad610331366004612d21565b610924565b6102ad610344366004612d78565b610a4f565b6102ad610357366004612d21565b610c4c565b6102c261036a366004612cb4565b610d40565b6102c261037d366004612cb4565b610d4d565b6102ad610390366004612cb4565b610d5a565b6102ad6103a3366004612cb4565b610dfb565b6102ad6103b6366004612da8565b610e9d565b6102ad6103c9366004612cb4565b61109e565b6102ad6103dc366004612d21565b611139565b6102c26103ef366004612cb4565b611321565b6102ad610402366004612cb4565b61132e565b6102ad6113d5565b6102ad61041d366004612cb4565b6113e9565b6102ad610430366004612cb4565b6114d8565b6102c2610443366004612cb4565b6115d4565b6102ad610456366004612cb4565b6115e1565b6102ad610469366004612e43565b6116d0565b6102ad61047c366004612cb4565b6117c4565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016102ce565b6102ad6104b4366004612cb4565b611865565b6102ad6104c7366004612cb4565b611900565b6102ad6104da366004612e43565b6119a1565b6102ad6104ed366004612cb4565b611ad3565b6102ad610500366004612e43565b611bcf565b6102ad610513366004612e43565b611d99565b6102ad610526366004612cb4565b611e8d565b6102ad610539366004612cb4565b611f2f565b6102ad61054c366004612cb4565b611fa9565b6102ad61055f366004612cb4565b612050565b6102ad610572366004612cb4565b6120f6565b6102ad610585366004612d78565b612197565b6102ad610598366004612cb4565b61235e565b6102ad6105ab366004612cb4565b612403565b6102ad6105be366004612e43565b61249e565b6102ad6105d1366004612e43565b612607565b6102ad6105e4366004612cb4565b612770565b6102ad6105f7366004612cb4565b6127e9565b60085461048e906001600160a01b031681565b6102ad61061d366004612da8565b61288e565b6102c2610630366004612cb4565b612a57565b336106486000546001600160a01b031690565b6001600160a01b03161480610661575061066133611321565b6106865760405162461bcd60e51b815260040161067d90612e71565b60405180910390fd5b610691600282612a64565b60408051808201825260158152742932b3b4b9ba393ca0b2323932b9b9a9b2ba3a32b960591b602082015290516001600160a01b038316906000805160206130d9833981519152906106e4908490612ea8565b60405180910390a25050565b60006106fd600483612ae6565b92915050565b336107166000546001600160a01b031690565b6001600160a01b0316148061072f575061072f33611321565b61074b5760405162461bcd60e51b815260040161067d90612e71565b600860009054906101000a90046001600160a01b03166001600160a01b0316636290865d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561079e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c29190612ef6565b60405163f2fde38b60e01b81526001600160a01b038381166004830152919091169063f2fde38b906024015b600060405180830381600087803b15801561080857600080fd5b505af115801561081c573d6000803e3d6000fd5b5050505050565b60006106fd600783612ae6565b336108436000546001600160a01b031690565b6001600160a01b0316148061085c575061085c33611321565b6108785760405162461bcd60e51b815260040161067d90612e71565b600854604051634273cc2160e11b81526001600160a01b038381166004830152909116906384e79842906024016107ee565b336108bd6000546001600160a01b031690565b6001600160a01b031614806108d657506108d633611321565b6108f25760405162461bcd60e51b815260040161067d90612e71565b600854604051634bd313c760e11b81526001600160a01b038381166004830152909116906397a6278e906024016107ee565b61092d81610823565b80156109ca5750604080513360208201526001600160a01b0383169163d202158d910160408051601f198184030181529082905280516020909101206001600160e01b031960e084901b168252600482015260026024820152604401602060405180830381865afa1580156109a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ca9190612f13565b6109e65760405162461bcd60e51b815260040161067d90612f35565b600854604051635c26412360e11b81526001600160a01b039091169063b84c824690610a189086908690600401612f82565b600060405180830381600087803b158015610a3257600080fd5b505af1158015610a46573d6000803e3d6000fd5b50505050505050565b610a5881610d4d565b8015610af55750604080513360208201526001600160a01b0383169163d202158d910160408051601f198184030181529082905280516020909101206001600160e01b031960e084901b168252600482015260026024820152604401602060405180830381865afa158015610ad1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af59190612f13565b610b115760405162461bcd60e51b815260040161067d90612fb1565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b889190612ef6565b6001600160a01b0316633b3e12f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be99190612ef6565b6001600160a01b03166308297846836040518263ffffffff1660e01b8152600401610c1691815260200190565b600060405180830381600087803b158015610c3057600080fd5b505af1158015610c44573d6000803e3d6000fd5b505050505050565b610c5581610823565b8015610cf25750604080513360208201526001600160a01b0383169163d202158d910160408051601f198184030181529082905280516020909101206001600160e01b031960e084901b168252600482015260026024820152604401602060405180830381865afa158015610cce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf29190612f13565b610d0e5760405162461bcd60e51b815260040161067d90612f35565b60085460405163c47f002760e01b81526001600160a01b039091169063c47f002790610a189086908690600401612f82565b60006106fd600383612ae6565b60006106fd600583612ae6565b33610d6d6000546001600160a01b031690565b6001600160a01b03161480610d865750610d8633611321565b610da25760405162461bcd60e51b815260040161067d90612e71565b610dad600382612a64565b604080518082018252601081526f21b7b6b83634b0b731b2a9b2ba3a32b960811b602082015290516001600160a01b038316906000805160206130d9833981519152906106e4908490612ea8565b33610e0e6000546001600160a01b031690565b6001600160a01b03161480610e275750610e2733611321565b610e435760405162461bcd60e51b815260040161067d90612e71565b610e4e600482612a64565b604080518082018252601181527021b7b6b83634b0b731b2a6b0b730b3b2b960791b602082015290516001600160a01b038316906000805160206130d9833981519152906106e4908490612ea8565b610ea681612a57565b8015610f435750604080513360208201526001600160a01b0383169163d202158d910160408051601f198184030181529082905280516020909101206001600160e01b031960e084901b168252600482015260026024820152604401602060405180830381865afa158015610f1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f439190612f13565b610f5f5760405162461bcd60e51b815260040161067d90612ff9565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd69190612ef6565b6001600160a01b031663b4f3fcb76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611013573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110379190612ef6565b6001600160a01b03166304bc7e848585856040518463ffffffff1660e01b815260040161106693929190613043565b600060405180830381600087803b15801561108057600080fd5b505af1158015611094573d6000803e3d6000fd5b5050505050505050565b336110b16000546001600160a01b031690565b6001600160a01b031614806110ca57506110ca33611321565b6110e65760405162461bcd60e51b815260040161067d90612e71565b6110f1600182612a64565b604080518082018252600a81526927bbb732b920b236b4b760b11b602082015290516001600160a01b038316906000805160206130d9833981519152906106e4908490612ea8565b611142816106f0565b80156111df5750604080513360208201526001600160a01b0383169163d202158d910160408051601f198184030181529082905280516020909101206001600160e01b031960e084901b168252600482015260026024820152604401602060405180830381865afa1580156111bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111df9190612f13565b61123a5760405162461bcd60e51b815260206004820152602660248201527f526f6c653a2053656e646572206973204e4f5420436f6d706c69616e6365204d60448201526530b730b3b2b960d11b606482015260840161067d565b60085460408051636290865d60e01b815290516000926001600160a01b031691636290865d9160048083019260209291908290030181865afa158015611284573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a89190612ef6565b90506040518385823760008085836000865af16112c9573d6000803e3d6000fd5b50806001600160a01b03167f5779a24d18a4639b1d59461e68c00fb0cd02533a4c5a6ff3ca6363e23e2fff566112ff8686612b69565b6040516001600160e01b0319909116815260200160405180910390a250505050565b60006106fd600183612ae6565b336113416000546001600160a01b031690565b6001600160a01b0316148061135a575061135a33611321565b6113765760405162461bcd60e51b815260040161067d90612e71565b611381600682612a64565b604080518082018252601681527524b9b9bab2b939a932b3b4b9ba393ca6b0b730b3b2b960511b602082015290516001600160a01b038316906000805160206130d9833981519152906106e4908490612ea8565b6113dd612b79565b6113e76000612bd3565b565b336113fc6000546001600160a01b031690565b6001600160a01b03161480611415575061141533611321565b6114315760405162461bcd60e51b815260040161067d90612e71565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611484573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a89190612ef6565b604051634bd313c760e11b81526001600160a01b03838116600483015291909116906397a6278e906024016107ee565b336114eb6000546001600160a01b031690565b6001600160a01b03161480611504575061150433611321565b6115205760405162461bcd60e51b815260040161067d90612e71565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611573573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115979190612ef6565b6001600160a01b0316633b3e12f46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561079e573d6000803e3d6000fd5b60006106fd600283612ae6565b336115f46000546001600160a01b031690565b6001600160a01b0316148061160d575061160d33611321565b6116295760405162461bcd60e51b815260040161067d90612e71565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561167c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a09190612ef6565b604051634273cc2160e11b81526001600160a01b03838116600483015291909116906384e79842906024016107ee565b6116d981610823565b80156117765750604080513360208201526001600160a01b0383169163d202158d910160408051601f198184030181529082905280516020909101206001600160e01b031960e084901b168252600482015260026024820152604401602060405180830381865afa158015611752573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117769190612f13565b6117925760405162461bcd60e51b815260040161067d90612f35565b600854604051633d1ddc5b60e01b81526001600160a01b03848116600483015290911690633d1ddc5b90602401610c16565b336117d76000546001600160a01b031690565b6001600160a01b031614806117f057506117f033611321565b61180c5760405162461bcd60e51b815260040161067d90612e71565b611817600782612a64565b604080518082018252601081526f2a37b5b2b724b73337a6b0b730b3b2b960811b602082015290516001600160a01b038316906000805160206130d9833981519152906106e4908490612ea8565b336118786000546001600160a01b031690565b6001600160a01b03161480611891575061189133611321565b6118ad5760405162461bcd60e51b815260040161067d90612e71565b6118b8600182612c23565b604080518082018252600a81526927bbb732b920b236b4b760b11b602082015290516001600160a01b038316906000805160206130f9833981519152906106e4908490612ea8565b336119136000546001600160a01b031690565b6001600160a01b0316148061192c575061192c33611321565b6119485760405162461bcd60e51b815260040161067d90612e71565b611953600782612c23565b604080518082018252601081526f2a37b5b2b724b73337a6b0b730b3b2b960811b602082015290516001600160a01b038316906000805160206130f9833981519152906106e4908490612ea8565b6119aa81610d40565b8015611a475750604080513360208201526001600160a01b0383169163d202158d910160408051601f198184030181529082905280516020909101206001600160e01b031960e084901b168252600482015260026024820152604401602060405180830381865afa158015611a23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a479190612f13565b611aa15760405162461bcd60e51b815260206004820152602560248201527f526f6c653a2053656e646572206973204e4f5420436f6d706c69616e6365205360448201526432ba3a32b960d91b606482015260840161067d565b60085460405163f898178960e01b81526001600160a01b0384811660048301529091169063f898178990602401610c16565b33611ae66000546001600160a01b031690565b6001600160a01b03161480611aff5750611aff33611321565b611b1b5760405162461bcd60e51b815260040161067d90612e71565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b929190612ef6565b6001600160a01b031663b4f3fcb76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561079e573d6000803e3d6000fd5b611bd881612a57565b8015611c755750604080513360208201526001600160a01b0383169163d202158d910160408051601f198184030181529082905280516020909101206001600160e01b031960e084901b168252600482015260026024820152604401602060405180830381865afa158015611c51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c759190612f13565b611c915760405162461bcd60e51b815260040161067d90612ff9565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ce4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d089190612ef6565b6001600160a01b031663b4f3fcb76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d699190612ef6565b60405163b93d28eb60e01b81526001600160a01b038481166004830152919091169063b93d28eb90602401610c16565b611da2816115d4565b8015611e3f5750604080513360208201526001600160a01b0383169163d202158d910160408051601f198184030181529082905280516020909101206001600160e01b031960e084901b168252600482015260026024820152604401602060405180830381865afa158015611e1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3f9190612f13565b611e5b5760405162461bcd60e51b815260040161067d9061308d565b60085460405163cbf3f86160e01b81526001600160a01b0384811660048301529091169063cbf3f86190602401610c16565b33611ea06000546001600160a01b031690565b6001600160a01b03161480611eb95750611eb933611321565b611ed55760405162461bcd60e51b815260040161067d90612e71565b611ee0600482612c23565b604080518082018252601181527021b7b6b83634b0b731b2a6b0b730b3b2b960791b602082015290516001600160a01b038316906000805160206130f9833981519152906106e4908490612ea8565b33611f426000546001600160a01b031690565b6001600160a01b03161480611f5b5750611f5b33611321565b611f775760405162461bcd60e51b815260040161067d90612e71565b60085460405163f2fde38b60e01b81526001600160a01b0383811660048301529091169063f2fde38b906024016107ee565b33611fbc6000546001600160a01b031690565b6001600160a01b03161480611fd55750611fd533611321565b611ff15760405162461bcd60e51b815260040161067d90612e71565b611ffc600682612c23565b604080518082018252601681527524b9b9bab2b939a932b3b4b9ba393ca6b0b730b3b2b960511b602082015290516001600160a01b038316906000805160206130f9833981519152906106e4908490612ea8565b336120636000546001600160a01b031690565b6001600160a01b0316148061207c575061207c33611321565b6120985760405162461bcd60e51b815260040161067d90612e71565b6120a3600282612c23565b60408051808201825260158152742932b3b4b9ba393ca0b2323932b9b9a9b2ba3a32b960591b602082015290516001600160a01b038316906000805160206130f9833981519152906106e4908490612ea8565b336121096000546001600160a01b031690565b6001600160a01b03161480612122575061212233611321565b61213e5760405162461bcd60e51b815260040161067d90612e71565b612149600382612c23565b604080518082018252601081526f21b7b6b83634b0b731b2a9b2ba3a32b960811b602082015290516001600160a01b038316906000805160206130f9833981519152906106e4908490612ea8565b6121a081610d4d565b801561223d5750604080513360208201526001600160a01b0383169163d202158d910160408051601f198184030181529082905280516020909101206001600160e01b031960e084901b168252600482015260026024820152604401602060405180830381865afa158015612219573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223d9190612f13565b6122595760405162461bcd60e51b815260040161067d90612fb1565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d09190612ef6565b6001600160a01b0316633b3e12f46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561230d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123319190612ef6565b6001600160a01b031663c7b22551836040518263ffffffff1660e01b8152600401610c1691815260200190565b336123716000546001600160a01b031690565b6001600160a01b0316148061238a575061238a33611321565b6123a65760405162461bcd60e51b815260040161067d90612e71565b6123b1600582612a64565b604080518082018252601481527321b630b4b6a932b3b4b9ba393ca6b0b730b3b2b960611b602082015290516001600160a01b038316906000805160206130d9833981519152906106e4908490612ea8565b336124166000546001600160a01b031690565b6001600160a01b0316148061242f575061242f33611321565b61244b5760405162461bcd60e51b815260040161067d90612e71565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561079e573d6000803e3d6000fd5b6124a7816115d4565b80156125445750604080513360208201526001600160a01b0383169163d202158d910160408051601f198184030181529082905280516020909101206001600160e01b031960e084901b168252600482015260026024820152604401602060405180830381865afa158015612520573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125449190612f13565b6125605760405162461bcd60e51b815260040161067d9061308d565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d79190612ef6565b60405163670af6a960e01b81526001600160a01b038481166004830152919091169063670af6a990602401610c16565b612610816115d4565b80156126ad5750604080513360208201526001600160a01b0383169163d202158d910160408051601f198184030181529082905280516020909101206001600160e01b031960e084901b168252600482015260026024820152604401602060405180830381865afa158015612689573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ad9190612f13565b6126c95760405162461bcd60e51b815260040161067d9061308d565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561271c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127409190612ef6565b60405163e744d78960e01b81526001600160a01b038481166004830152919091169063e744d78990602401610c16565b612778612b79565b6001600160a01b0381166127dd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161067d565b6127e681612bd3565b50565b336127fc6000546001600160a01b031690565b6001600160a01b03161480612815575061281533611321565b6128315760405162461bcd60e51b815260040161067d90612e71565b61283c600582612c23565b604080518082018252601481527321b630b4b6a932b3b4b9ba393ca6b0b730b3b2b960611b602082015290516001600160a01b038316906000805160206130f9833981519152906106e4908490612ea8565b61289781612a57565b80156129345750604080513360208201526001600160a01b0383169163d202158d910160408051601f198184030181529082905280516020909101206001600160e01b031960e084901b168252600482015260026024820152604401602060405180830381865afa158015612910573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129349190612f13565b6129505760405162461bcd60e51b815260040161067d90612ff9565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129c79190612ef6565b6001600160a01b031663b4f3fcb76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a289190612ef6565b6001600160a01b0316639f63ea988585856040518463ffffffff1660e01b815260040161106693929190613043565b60006106fd600683612ae6565b612a6e8282612ae6565b612ac45760405162461bcd60e51b815260206004820152602160248201527f526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6044820152606560f81b606482015260840161067d565b6001600160a01b0316600090815260209190915260409020805460ff19169055565b60006001600160a01b038216612b495760405162461bcd60e51b815260206004820152602260248201527f526f6c65733a206163636f756e7420697320746865207a65726f206164647265604482015261737360f01b606482015260840161067d565b506001600160a01b03166000908152602091909152604090205460ff1690565b6000600482106106fd5750503590565b6000546001600160a01b031633146113e75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161067d565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b612c2d8282612ae6565b15612c7a5760405162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015260640161067d565b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6001600160a01b03811681146127e657600080fd5b600060208284031215612cc657600080fd5b8135612cd181612c9f565b9392505050565b60008083601f840112612cea57600080fd5b50813567ffffffffffffffff811115612d0257600080fd5b602083019150836020828501011115612d1a57600080fd5b9250929050565b600080600060408486031215612d3657600080fd5b833567ffffffffffffffff811115612d4d57600080fd5b612d5986828701612cd8565b9094509250506020840135612d6d81612c9f565b809150509250925092565b60008060408385031215612d8b57600080fd5b823591506020830135612d9d81612c9f565b809150509250929050565b60008060008060608587031215612dbe57600080fd5b8435612dc981612c9f565b9350602085013567ffffffffffffffff80821115612de657600080fd5b818701915087601f830112612dfa57600080fd5b813581811115612e0957600080fd5b8860208260051b8501011115612e1e57600080fd5b6020830195508094505050506040850135612e3881612c9f565b939692955090935050565b60008060408385031215612e5657600080fd5b8235612e6181612c9f565b91506020830135612d9d81612c9f565b60208082526019908201527f526f6c653a2053656e646572206973204e4f542041646d696e00000000000000604082015260600190565b600060208083528351808285015260005b81811015612ed557858101830151858201604001528201612eb9565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215612f0857600080fd5b8151612cd181612c9f565b600060208284031215612f2557600080fd5b81518015158114612cd157600080fd5b6020808252602d908201527f526f6c653a2053656e646572206973204e4f5420546f6b656e20496e666f726d60408201526c30ba34b7b71026b0b730b3b2b960991b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60208082526028908201527f526f6c653a2053656e646572206973204e4f5420436c61696d526567697374726040820152673ca6b0b730b3b2b960c11b606082015260800190565b6020808252602a908201527f526f6c653a2053656e646572206973204e4f54204973737565727352656769736040820152693a393ca6b0b730b3b2b960b11b606082015260800190565b6001600160a01b0384168152604060208201819052810182905260006001600160fb1b0383111561307357600080fd5b8260051b8085606085013791909101606001949350505050565b6020808252602b908201527f526f6c653a2053656e646572206973204e4f542052656769737472792041646460408201526a3932b9b99029b2ba3a32b960a91b60608201526080019056fed211483f91fc6eff862467f8de606587a30c8fc9981056f051b897a418df803abfec83d64eaa953f2708271a023ab9ee82057f8f3578d548c1a4ba0b5b700489a264697066735822122027ee43f79f320d3b25f2083f5f5a7dc6ffd2a977495049ba41edd67d8538193764736f6c63430008110033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
