{
  "_format": "hh-sol-artifact-1",
  "contractName": "CountryWhitelistingTest",
  "sourceName": "contracts/compliance/legacy/test/CountryWhitelistingTest.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_agent",
          "type": "address"
        }
      ],
      "name": "AgentAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_agent",
          "type": "address"
        }
      ],
      "name": "AgentRemoved",
      "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": false,
          "internalType": "address",
          "name": "_agentAddress",
          "type": "address"
        }
      ],
      "name": "TokenAgentAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_agentAddress",
          "type": "address"
        }
      ],
      "name": "TokenAgentRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_token",
          "type": "address"
        }
      ],
      "name": "TokenBound",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_token",
          "type": "address"
        }
      ],
      "name": "TokenUnbound",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint16",
          "name": "_country",
          "type": "uint16"
        }
      ],
      "name": "UnWhitelistedCountry",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint16",
          "name": "_country",
          "type": "uint16"
        }
      ],
      "name": "WhitelistedCountry",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_agent",
          "type": "address"
        }
      ],
      "name": "addAgent",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_agentAddress",
          "type": "address"
        }
      ],
      "name": "addTokenAgent",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16[]",
          "name": "_countries",
          "type": "uint16[]"
        }
      ],
      "name": "batchUnWhitelistCountries",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16[]",
          "name": "_countries",
          "type": "uint16[]"
        }
      ],
      "name": "batchWhitelistCountries",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        }
      ],
      "name": "bindToken",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "canTransfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "complianceCheckOnCountryWhitelisting",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "created",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "destroyed",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_agent",
          "type": "address"
        }
      ],
      "name": "isAgent",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "_country",
          "type": "uint16"
        }
      ],
      "name": "isCountryWhitelisted",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_agentAddress",
          "type": "address"
        }
      ],
      "name": "isTokenAgent",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        }
      ],
      "name": "isTokenBound",
      "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": "_agent",
          "type": "address"
        }
      ],
      "name": "removeAgent",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_agentAddress",
          "type": "address"
        }
      ],
      "name": "removeTokenAgent",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "tokenBound",
      "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"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "transferred",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "_country",
          "type": "uint16"
        }
      ],
      "name": "unWhitelistCountry",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        }
      ],
      "name": "unbindToken",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "_country",
          "type": "uint16"
        }
      ],
      "name": "whitelistCountry",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6112138061007e6000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80638da5cb5b116100c3578063aee250af1161007c578063aee250af146102b4578063cdde2932146102c7578063e46638e6146102da578063f2fde38b146102ed578063f393cbc214610300578063ff3e69541461031357600080fd5b80638da5cb5b1461021c57806393e62f071461024157806397a6278e1461025457806397eab82b14610267578063993e8b951461028e578063a1b01b4f146102a157600080fd5b806340db3b501161011557806340db3b50146101c85780635f8dead3146101db578063715018a6146101ee57806384e79842146101f65780638baf29b4146102095780638d2ea772146101db57600080fd5b806307e8e344146101525780631ffbb06414610167578063346531fa1461018f5780633b0b83c0146101a25780633ff5aa02146101b5575b600080fd5b610165610160366004610f59565b610326565b005b61017a610175366004611033565b61036a565b60405190151581526020015b60405180910390f35b61017a61019d366004611033565b61037d565b61017a6101b0366004611050565b610426565b6101656101c3366004611033565b61046d565b6101656101d6366004611033565b610557565b6101656101e9366004611091565b610679565b61016561069d565b610165610204366004611033565b6106b1565b610165610217366004611050565b610751565b6000546001600160a01b03165b6040516001600160a01b039091168152602001610186565b600354610229906001600160a01b031681565b610165610262366004611033565b61077a565b61017a6102753660046110bd565b61ffff1660009081526004602052604090205460ff1690565b61017a61029c366004611033565b61081a565b6101656102af3660046110bd565b61083a565b6101656102c2366004610f59565b6108f1565b6101656102d5366004611033565b610931565b61017a6102e8366004611050565b6109f2565b6101656102fb366004611033565b610a15565b61016561030e3660046110bd565b610a8e565b610165610321366004611033565b610b49565b60005b815181101561036657610354828281518110610347576103476110da565b602002602001015161083a565b8061035e816110f0565b915050610329565b5050565b6000610377600183610c0e565b92915050565b6001600160a01b03811660009081526002602052604081205460ff1615801561041157506003546040516307feec1960e21b81526001600160a01b03848116600483015290911690631ffbb06490602401602060405180830381865afa1580156103eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061040f9190611117565b155b1561041e57506000919050565b506001919050565b60008061043284610c91565b90506104518161ffff1660009081526004602052604090205460ff1690565b15610460576001915050610466565b60009150505b9392505050565b336104806000546001600160a01b031690565b6001600160a01b031614806104b157506003546001600160a01b03161580156104b15750336001600160a01b038216145b6105025760405162461bcd60e51b815260206004820152601c60248201527f6f6e6c79206f776e6572206f7220746f6b656e2063616e2063616c6c0000000060448201526064015b60405180910390fd5b600380546001600160a01b0319166001600160a01b0383169081179091556040519081527f2de35142b19ed5a07796cf30791959c592018f70b1d2d7c460eef8ffe713692b906020015b60405180910390a150565b3361056a6000546001600160a01b031690565b6001600160a01b031614806105875750336001600160a01b038216145b6105d35760405162461bcd60e51b815260206004820152601c60248201527f6f6e6c79206f776e6572206f7220746f6b656e2063616e2063616c6c0000000060448201526064016104f9565b6003546001600160a01b038281169116146106305760405162461bcd60e51b815260206004820152601760248201527f5468697320746f6b656e206973206e6f7420626f756e6400000000000000000060448201526064016104f9565b600380546001600160a01b03191690556040516001600160a01b03821681527f28a4ca7134a3b3f9aff286e79ad3daadb4a06d1b43d037a3a98bdc074edd9b7a9060200161054c565b610681610d6b565b6103665760405162461bcd60e51b81526004016104f990611139565b6106a5610d7b565b6106af6000610dd5565b565b6106b9610d7b565b6001600160a01b03811661070f5760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617267756d656e74202d207a65726f20616464726573730060448201526064016104f9565b61071a600182610e25565b6040516001600160a01b038216907ff68e73cec97f2d70aa641fb26e87a4383686e2efacb648f2165aeb02ac562ec590600090a250565b610759610d6b565b6107755760405162461bcd60e51b81526004016104f990611139565b505050565b610782610d7b565b6001600160a01b0381166107d85760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617267756d656e74202d207a65726f20616464726573730060448201526064016104f9565b6107e3600182610ea1565b6040516001600160a01b038216907fed9c8ad8d5a0a66898ea49d2956929c93ae2e8bd50281b2ed897c5d1a6737e0b90600090a250565b6003546000906001600160a01b0383811691161461041e57506000919050565b610842610d7b565b61ffff811660009081526004602052604090205460ff166108a55760405162461bcd60e51b815260206004820152601760248201527f636f756e747279206e6f742077686974656c697374656400000000000000000060448201526064016104f9565b61ffff8116600081815260046020908152604091829020805460ff1916905590519182527f77bf94f96c0e8d724e02e1c5c7a219b0b078de66c992608a55e755a6384d1ee3910161054c565b60005b81518110156103665761091f828281518110610912576109126110da565b6020026020010151610a8e565b80610929816110f0565b9150506108f4565b610939610d7b565b6001600160a01b03811660009081526002602052604090205460ff166109a15760405162461bcd60e51b815260206004820181905260248201527f54686973204167656e74206973206e6f7420726567697374657265642079657460448201526064016104f9565b6001600160a01b038116600081815260026020908152604091829020805460ff1916905590519182527f6a659bb87bb23efbdc295f8eed8ae8c4379bfb77660ced2ef0f3d7d26b05c6a6910161054c565b60006109ff848484610426565b610a0b57506000610466565b5060019392505050565b610a1d610d7b565b6001600160a01b038116610a825760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104f9565b610a8b81610dd5565b50565b610a96610d7b565b61ffff811660009081526004602052604090205460ff1615610afa5760405162461bcd60e51b815260206004820152601b60248201527f636f756e74727920616c72656164792077686974656c6973746564000000000060448201526064016104f9565b61ffff8116600081815260046020908152604091829020805460ff1916600117905590519182527fd20535bfd780673cc88887ad4af967343e4e8e088062aa936fea2de79d10de28910161054c565b610b51610d7b565b6001600160a01b03811660009081526002602052604090205460ff1615610bba5760405162461bcd60e51b815260206004820181905260248201527f54686973204167656e7420697320616c7265616479207265676973746572656460448201526064016104f9565b6001600160a01b038116600081815260026020908152604091829020805460ff1916600117905590519182527fd62c45e13ac30396aceb3ad37c89bd1ba9048032fe61679000e92eb93dbfd67d910161054c565b60006001600160a01b038216610c715760405162461bcd60e51b815260206004820152602260248201527f526f6c65733a206163636f756e7420697320746865207a65726f206164647265604482015261737360f01b60648201526084016104f9565b506001600160a01b03166000908152602091909152604090205460ff1690565b600354604080516304d3863d60e21b815290516000926001600160a01b03169163134e18f49160048083019260209291908290030181865afa158015610cdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cff91906111a3565b604051637e42683b60e01b81526001600160a01b0384811660048301529190911690637e42683b90602401602060405180830381865afa158015610d47573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037791906111c0565b6000610d763361081a565b905090565b6000546001600160a01b031633146106af5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104f9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610e2f8282610c0e565b15610e7c5760405162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650060448201526064016104f9565b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b610eab8282610c0e565b610f015760405162461bcd60e51b815260206004820152602160248201527f526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6044820152606560f81b60648201526084016104f9565b6001600160a01b0316600090815260209190915260409020805460ff19169055565b634e487b7160e01b600052604160045260246000fd5b61ffff81168114610a8b57600080fd5b8035610f5481610f39565b919050565b60006020808385031215610f6c57600080fd5b823567ffffffffffffffff80821115610f8457600080fd5b818501915085601f830112610f9857600080fd5b813581811115610faa57610faa610f23565b8060051b604051601f19603f83011681018181108582111715610fcf57610fcf610f23565b604052918252848201925083810185019188831115610fed57600080fd5b938501935b828510156110125761100385610f49565b84529385019392850192610ff2565b98975050505050505050565b6001600160a01b0381168114610a8b57600080fd5b60006020828403121561104557600080fd5b81356104668161101e565b60008060006060848603121561106557600080fd5b83356110708161101e565b925060208401356110808161101e565b929592945050506040919091013590565b600080604083850312156110a457600080fd5b82356110af8161101e565b946020939093013593505050565b6000602082840312156110cf57600080fd5b813561046681610f39565b634e487b7160e01b600052603260045260246000fd5b60006001820161111057634e487b7160e01b600052601160045260246000fd5b5060010190565b60006020828403121561112957600080fd5b8151801515811461046657600080fd5b60208082526044908201527f6572726f72203a20746869732061646472657373206973206e6f74206120746f60408201527f6b656e20626f756e6420746f2074686520636f6d706c69616e636520636f6e746060820152631c9858dd60e21b608082015260a00190565b6000602082840312156111b557600080fd5b81516104668161101e565b6000602082840312156111d257600080fd5b815161046681610f3956fea26469706673582212202bd76e72a1e39724b66fd7cfd9d59ece2c3c00fca79b35ad86e154f11e8685a964736f6c63430008110033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061014d5760003560e01c80638da5cb5b116100c3578063aee250af1161007c578063aee250af146102b4578063cdde2932146102c7578063e46638e6146102da578063f2fde38b146102ed578063f393cbc214610300578063ff3e69541461031357600080fd5b80638da5cb5b1461021c57806393e62f071461024157806397a6278e1461025457806397eab82b14610267578063993e8b951461028e578063a1b01b4f146102a157600080fd5b806340db3b501161011557806340db3b50146101c85780635f8dead3146101db578063715018a6146101ee57806384e79842146101f65780638baf29b4146102095780638d2ea772146101db57600080fd5b806307e8e344146101525780631ffbb06414610167578063346531fa1461018f5780633b0b83c0146101a25780633ff5aa02146101b5575b600080fd5b610165610160366004610f59565b610326565b005b61017a610175366004611033565b61036a565b60405190151581526020015b60405180910390f35b61017a61019d366004611033565b61037d565b61017a6101b0366004611050565b610426565b6101656101c3366004611033565b61046d565b6101656101d6366004611033565b610557565b6101656101e9366004611091565b610679565b61016561069d565b610165610204366004611033565b6106b1565b610165610217366004611050565b610751565b6000546001600160a01b03165b6040516001600160a01b039091168152602001610186565b600354610229906001600160a01b031681565b610165610262366004611033565b61077a565b61017a6102753660046110bd565b61ffff1660009081526004602052604090205460ff1690565b61017a61029c366004611033565b61081a565b6101656102af3660046110bd565b61083a565b6101656102c2366004610f59565b6108f1565b6101656102d5366004611033565b610931565b61017a6102e8366004611050565b6109f2565b6101656102fb366004611033565b610a15565b61016561030e3660046110bd565b610a8e565b610165610321366004611033565b610b49565b60005b815181101561036657610354828281518110610347576103476110da565b602002602001015161083a565b8061035e816110f0565b915050610329565b5050565b6000610377600183610c0e565b92915050565b6001600160a01b03811660009081526002602052604081205460ff1615801561041157506003546040516307feec1960e21b81526001600160a01b03848116600483015290911690631ffbb06490602401602060405180830381865afa1580156103eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061040f9190611117565b155b1561041e57506000919050565b506001919050565b60008061043284610c91565b90506104518161ffff1660009081526004602052604090205460ff1690565b15610460576001915050610466565b60009150505b9392505050565b336104806000546001600160a01b031690565b6001600160a01b031614806104b157506003546001600160a01b03161580156104b15750336001600160a01b038216145b6105025760405162461bcd60e51b815260206004820152601c60248201527f6f6e6c79206f776e6572206f7220746f6b656e2063616e2063616c6c0000000060448201526064015b60405180910390fd5b600380546001600160a01b0319166001600160a01b0383169081179091556040519081527f2de35142b19ed5a07796cf30791959c592018f70b1d2d7c460eef8ffe713692b906020015b60405180910390a150565b3361056a6000546001600160a01b031690565b6001600160a01b031614806105875750336001600160a01b038216145b6105d35760405162461bcd60e51b815260206004820152601c60248201527f6f6e6c79206f776e6572206f7220746f6b656e2063616e2063616c6c0000000060448201526064016104f9565b6003546001600160a01b038281169116146106305760405162461bcd60e51b815260206004820152601760248201527f5468697320746f6b656e206973206e6f7420626f756e6400000000000000000060448201526064016104f9565b600380546001600160a01b03191690556040516001600160a01b03821681527f28a4ca7134a3b3f9aff286e79ad3daadb4a06d1b43d037a3a98bdc074edd9b7a9060200161054c565b610681610d6b565b6103665760405162461bcd60e51b81526004016104f990611139565b6106a5610d7b565b6106af6000610dd5565b565b6106b9610d7b565b6001600160a01b03811661070f5760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617267756d656e74202d207a65726f20616464726573730060448201526064016104f9565b61071a600182610e25565b6040516001600160a01b038216907ff68e73cec97f2d70aa641fb26e87a4383686e2efacb648f2165aeb02ac562ec590600090a250565b610759610d6b565b6107755760405162461bcd60e51b81526004016104f990611139565b505050565b610782610d7b565b6001600160a01b0381166107d85760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617267756d656e74202d207a65726f20616464726573730060448201526064016104f9565b6107e3600182610ea1565b6040516001600160a01b038216907fed9c8ad8d5a0a66898ea49d2956929c93ae2e8bd50281b2ed897c5d1a6737e0b90600090a250565b6003546000906001600160a01b0383811691161461041e57506000919050565b610842610d7b565b61ffff811660009081526004602052604090205460ff166108a55760405162461bcd60e51b815260206004820152601760248201527f636f756e747279206e6f742077686974656c697374656400000000000000000060448201526064016104f9565b61ffff8116600081815260046020908152604091829020805460ff1916905590519182527f77bf94f96c0e8d724e02e1c5c7a219b0b078de66c992608a55e755a6384d1ee3910161054c565b60005b81518110156103665761091f828281518110610912576109126110da565b6020026020010151610a8e565b80610929816110f0565b9150506108f4565b610939610d7b565b6001600160a01b03811660009081526002602052604090205460ff166109a15760405162461bcd60e51b815260206004820181905260248201527f54686973204167656e74206973206e6f7420726567697374657265642079657460448201526064016104f9565b6001600160a01b038116600081815260026020908152604091829020805460ff1916905590519182527f6a659bb87bb23efbdc295f8eed8ae8c4379bfb77660ced2ef0f3d7d26b05c6a6910161054c565b60006109ff848484610426565b610a0b57506000610466565b5060019392505050565b610a1d610d7b565b6001600160a01b038116610a825760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104f9565b610a8b81610dd5565b50565b610a96610d7b565b61ffff811660009081526004602052604090205460ff1615610afa5760405162461bcd60e51b815260206004820152601b60248201527f636f756e74727920616c72656164792077686974656c6973746564000000000060448201526064016104f9565b61ffff8116600081815260046020908152604091829020805460ff1916600117905590519182527fd20535bfd780673cc88887ad4af967343e4e8e088062aa936fea2de79d10de28910161054c565b610b51610d7b565b6001600160a01b03811660009081526002602052604090205460ff1615610bba5760405162461bcd60e51b815260206004820181905260248201527f54686973204167656e7420697320616c7265616479207265676973746572656460448201526064016104f9565b6001600160a01b038116600081815260026020908152604091829020805460ff1916600117905590519182527fd62c45e13ac30396aceb3ad37c89bd1ba9048032fe61679000e92eb93dbfd67d910161054c565b60006001600160a01b038216610c715760405162461bcd60e51b815260206004820152602260248201527f526f6c65733a206163636f756e7420697320746865207a65726f206164647265604482015261737360f01b60648201526084016104f9565b506001600160a01b03166000908152602091909152604090205460ff1690565b600354604080516304d3863d60e21b815290516000926001600160a01b03169163134e18f49160048083019260209291908290030181865afa158015610cdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cff91906111a3565b604051637e42683b60e01b81526001600160a01b0384811660048301529190911690637e42683b90602401602060405180830381865afa158015610d47573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037791906111c0565b6000610d763361081a565b905090565b6000546001600160a01b031633146106af5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104f9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610e2f8282610c0e565b15610e7c5760405162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650060448201526064016104f9565b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b610eab8282610c0e565b610f015760405162461bcd60e51b815260206004820152602160248201527f526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6044820152606560f81b60648201526084016104f9565b6001600160a01b0316600090815260209190915260409020805460ff19169055565b634e487b7160e01b600052604160045260246000fd5b61ffff81168114610a8b57600080fd5b8035610f5481610f39565b919050565b60006020808385031215610f6c57600080fd5b823567ffffffffffffffff80821115610f8457600080fd5b818501915085601f830112610f9857600080fd5b813581811115610faa57610faa610f23565b8060051b604051601f19603f83011681018181108582111715610fcf57610fcf610f23565b604052918252848201925083810185019188831115610fed57600080fd5b938501935b828510156110125761100385610f49565b84529385019392850192610ff2565b98975050505050505050565b6001600160a01b0381168114610a8b57600080fd5b60006020828403121561104557600080fd5b81356104668161101e565b60008060006060848603121561106557600080fd5b83356110708161101e565b925060208401356110808161101e565b929592945050506040919091013590565b600080604083850312156110a457600080fd5b82356110af8161101e565b946020939093013593505050565b6000602082840312156110cf57600080fd5b813561046681610f39565b634e487b7160e01b600052603260045260246000fd5b60006001820161111057634e487b7160e01b600052601160045260246000fd5b5060010190565b60006020828403121561112957600080fd5b8151801515811461046657600080fd5b60208082526044908201527f6572726f72203a20746869732061646472657373206973206e6f74206120746f60408201527f6b656e20626f756e6420746f2074686520636f6d706c69616e636520636f6e746060820152631c9858dd60e21b608082015260a00190565b6000602082840312156111b557600080fd5b81516104668161101e565b6000602082840312156111d257600080fd5b815161046681610f3956fea26469706673582212202bd76e72a1e39724b66fd7cfd9d59ece2c3c00fca79b35ad86e154f11e8685a964736f6c63430008110033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
