{
  "_format": "hh-sol-artifact-1",
  "contractName": "PassportEntityLogicV5",
  "sourceName": "contracts/deprecated/V5/ve-better-passport/libraries/PassportEntityLogicV5.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "entity",
          "type": "address"
        }
      ],
      "name": "AlreadyLinked",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "CannotLinkToSelf",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "CheckpointUnorderedInsertion",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "entity",
          "type": "address"
        }
      ],
      "name": "DelegatedEntity",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ECDSAInvalidSignature",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "length",
          "type": "uint256"
        }
      ],
      "name": "ECDSAInvalidSignatureLength",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "ECDSAInvalidSignatureS",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidSignature",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "MaxEntitiesPerPassportReached",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "NotLinked",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "OnlyOneLinkAllowed",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "bits",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "SafeCastOverflowedUintDowncast",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "SignatureExpired",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "UnauthorizedUser",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "entity",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "passport",
          "type": "address"
        }
      ],
      "name": "LinkCreated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "entity",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "passport",
          "type": "address"
        }
      ],
      "name": "LinkPending",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "entity",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "passport",
          "type": "address"
        }
      ],
      "name": "LinkRemoved",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "entity",
          "type": "address"
        }
      ],
      "name": "getPassportForEntity",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "entity",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "timepoint",
          "type": "uint256"
        }
      ],
      "name": "getPassportForEntityAtTimepoint",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "entity",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "timepoint",
          "type": "uint256"
        }
      ],
      "name": "isEntityInTimepoint",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "passport",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "timepoint",
          "type": "uint256"
        }
      ],
      "name": "isPassportInTimepoint",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x611e6a61003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100a25760003560e01c806270f93d146100a75780631332de46146100c957806315b75cf0146100e957806338d8d688146100fe578063467b99b6146101275780636e6a304c1461013a578063c791e9371461015d578063d1143f3a1461017d578063d2a98f8b1461019d578063e0b23db4146101bd578063e4325044146101dd575b600080fd5b8180156100b357600080fd5b506100c76100c2366004611bf3565b6101f0565b005b8180156100d557600080fd5b506100c76100e4366004611bf3565b6102e8565b8180156100f557600080fd5b506100c7610367565b61011161010c366004611c0e565b6103e1565b60405161011e9190611c38565b60405180910390f35b610111610135366004611bf3565b610432565b61014d610148366004611c0e565b61044f565b604051901515815260200161011e565b81801561016957600080fd5b506100c7610178366004611c62565b61045b565b81801561018957600080fd5b506100c7610198366004611bf3565b61058d565b8180156101a957600080fd5b506100c76101b8366004611d2c565b610650565b8180156101c957600080fd5b506100c76101d8366004611bf3565b610664565b61014d6101eb366004611c0e565b610732565b60006101fa610785565b90506000610207836107a9565b9050826001600160a01b0316816001600160a01b031603610246578260405163c6ac53df60e01b815260040161023d9190611c38565b60405180910390fd5b336001600160a01b038416148015906102685750336001600160a01b03821614155b15610288573360405163ea93ab6d60e01b815260040161023d9190611c38565b6001600160a01b038316600090815260178301602052604081206102ab916107f7565b6102b58382610818565b806001600160a01b0316836001600160a01b0316600080516020611e1583398151915260405160405180910390a3505050565b60006102f2610785565b6001600160a01b038084166000908152601c830160205260409020549192501680610332578260405163c6ac53df60e01b815260040161023d9190611c38565b6001600160a01b038116331461035d573360405163ea93ab6d60e01b815260040161023d9190611c38565b6102b583826109d0565b6000610371610785565b336000908152601c820160205260409020549091506001600160a01b0316806103af573360405163c6ac53df60e01b815260040161023d9190611c38565b6103b933826109d0565b6040516001600160a01b038216903390600080516020611e1583398151915290600090a35050565b6000806103ec610785565b90506104286104256103fd85610b78565b6001600160a01b038716600090815260178501602052604090209065ffffffffffff16610baf565b90565b9150505b92915050565b60008061043d610785565b9050610448836107a9565b9392505050565b60006104488383610c66565b6000610465610785565b90508242111561048857604051630819bdcd60e01b815260040160405180910390fd5b604080517f88708ceda20b7f681a1d0bcac82e8c12fa88a5ce30261f012fdb9ed1ddc63bae60208201526001600160a01b038616918101919091523360608201526080810184905260009060a00160405160208183030381529060405280519060200120905060006104f982610c92565b905060006105078286610cbf565b9050866001600160a01b0316816001600160a01b03161461053b57604051638baa579f60e01b815260040160405180910390fd5b6105453388610ce9565b601d8401543360009081526019860160205260409020541061057a5760405163aca3ff4360e01b815260040160405180910390fd5b6105848733610f0d565b50505050505050565b6000610597610785565b6001600160a01b038084166000908152601c8301602052604090205491925016806105d7578260405163c6ac53df60e01b815260040161023d9190611c38565b6001600160a01b0381163314610602573360405163ea93ab6d60e01b815260040161023d9190611c38565b601d820154336000908152601984016020526040902054106106375760405163aca3ff4360e01b815260040160405180910390fd5b61064183336109d0565b61064b8333610f0d565b505050565b600061065a610785565b601d019190915550565b600061066e610785565b905061067a8233610ce9565b6001600160a01b0382166000908152601b820160205260409020546106a0816001611d5b565b336000818152601a850160209081526040808320949094556001600160a01b038716808352601b8701825284832080546001810182559084528284200180546001600160a01b03199081168617909155848452601c88019092528483208054909216811790915592517fa5ce3061f55dc6a6cb616713edbec99b638865accddbd58c83fd009e9ce920e79190a3505050565b60008061073d610785565b905061077361074b84610b78565b6001600160a01b038616600090815260178401602052604090209065ffffffffffff16610baf565b6001600160a01b031615949350505050565b7f273c9387b78d9b22e6f3371bb3aa3a918f53507e8cacc54e4831933cbb84410090565b6000806107b4610785565b6001600160a01b03841660009081526017820160205260408120919250906107df906104259061100f565b90506001600160a01b03811661044857509192915050565b610812610802611048565b839065ffffffffffff1683611057565b50505050565b6000610822610785565b6001600160a01b0380851660009081526018830160209081526040808320549387168352601985019091529020549192509061085f600183611d6e565b915061086c600182611d6e565b821461093a576001600160a01b03841660009081526019840160205260408120610897600184611d6e565b815481106108a7576108a7611d81565b60009182526020808320909101546001600160a01b0388811684526019880190925260409092208054919092169250829190859081106108e9576108e9611d81565b600091825260209091200180546001600160a01b0319166001600160a01b039290921691909117905561091d836001611d5b565b6001600160a01b0390911660009081526018850160205260409020555b6001600160a01b0384166000908152601984016020526040902080548061096357610963611d97565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b038716825260188501815260408083208390556019860190915281206109b591611ba1565b6109bf8585611072565b6109c985856111ee565b5050505050565b60006109da610785565b6001600160a01b038085166000908152601a830160209081526040808320549387168352601b850190915290205491925090610a17600183611d6e565b9150610a24600182611d6e565b8214610af2576001600160a01b0384166000908152601b840160205260408120610a4f600184611d6e565b81548110610a5f57610a5f611d81565b60009182526020808320909101546001600160a01b038881168452601b88019092526040909220805491909216925082919085908110610aa157610aa1611d81565b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055610ad5836001611d5b565b6001600160a01b039091166000908152601a850160205260409020555b6001600160a01b0384166000908152601b840160205260409020805480610b1b57610b1b611d97565b60008281526020808220830160001990810180546001600160a01b031990811690915593019093556001600160a01b03979097168752601a850182526040808820889055601c909501909152929094208054909216909155505050565b600065ffffffffffff821115610bab576040516306dfcc6560e41b8152603060048201526024810183905260440161023d565b5090565b815460009081816005811115610c0f576000610bca846112a8565b610bd49085611d6e565b6000888152602090209091508101546001600160601b039081169087161015610bff57809150610c0d565b610c0a816001611d5b565b92505b505b6000610c1d87878585611390565b90508015610c5857610c4287610c34600184611d6e565b600091825260209091200190565b54600160601b90046001600160a01b0316610c5b565b60005b979650505050505050565b600080610c71610785565b9050610c7f61074b84610b78565b6001600160a01b03161515949350505050565b600061042c610c9f6113f4565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080610ccf86866114d2565b925092509250610cdf828261151f565b5090949350505050565b6000610cf3610785565b6001600160a01b03831660009081526017820160205260409020909150610d199061100f565b6001600160a01b0316151580610d4857506001600160a01b0382166000908152601a8201602052604090205415155b15610d685781604051639546eb6360e01b815260040161023d9190611c38565b6001600160a01b03831660009081526017820160205260409020610d8b9061100f565b6001600160a01b0316151580610dbc57506001600160a01b038381166000908152601c830160205260409020541615155b15610ddc5782604051639546eb6360e01b815260040161023d9190611c38565b6001600160a01b0382166000908152601982016020526040902054151580610e1d57506001600160a01b0382166000908152601b8201602052604090205415155b15610e3d5782604051639546eb6360e01b815260040161023d9190611c38565b610e46826115dc565b80610e6c57506001600160a01b0382811660009081526022830160205260409020541615155b15610e8c5781604051631cd13c0760e21b815260040161023d9190611c38565b610e958261161f565b80610eb957506001600160a01b038216600090815260218201602052604090205415155b15610ed95781604051631cd13c0760e21b815260040161023d9190611c38565b826001600160a01b0316826001600160a01b03160361064b57816040516305333f6f60e31b815260040161023d9190611c38565b6000610f17610785565b6001600160a01b03841660009081526017820160205260409020909150610f3e90836107f7565b6001600160a01b0382166000908152601982016020526040902054610f64816001611d5b565b6001600160a01b03808616600081815260188601602090815260408083209590955592871681526019860183529283208054600181018255908452919092200180546001600160a01b0319169091179055610fbf8484611650565b610fc9848461177f565b826001600160a01b0316846001600160a01b03167ff644c2a6a740703067e9f00fb5a09444cd18cca01a19ce87915e934297a43fe260405160405180910390a350505050565b8054600090801561103f5761102983610c34600184611d6e565b54600160601b90046001600160a01b0316610448565b60009392505050565b600061105261182d565b905090565b600080611065858585611838565b915091505b935093915050565b600061107c610785565b6001600160a01b0380851660009081526023830160205260408082205492861682529020549192509081116110e0576001600160a01b0383166000908152602383016020526040812080548392906110d5908490611d6e565b909155506110fc9050565b6001600160a01b03831660009081526023830160205260408120555b6001600160a01b038416600090815260158301602090815260408083208054825181850281018501909352808352919290919083018282801561115e57602002820191906000526020600020905b81548152602001906001019080831161114a575b5050505050905060005b81518110156111e657600082828151811061118557611185611d81565b602090810291909101810151600081815260268801835260408082206001600160a01b038c81168452945280822054938a16825281208054929450916111cc908490611d6e565b909155508291506111de905081611dad565b915050611168565b505050505050565b60006111f8610785565b90506000611205846119b7565b611210576000611213565b60015b60ff1690506000611223856119e7565b61122e576000611231565b60015b60ff16905081836007016000866001600160a01b03166001600160a01b03168152602001908152602001600020600082825461126d9190611d6e565b90915550506001600160a01b03841660009081526008840160205260408120805483929061129c908490611d6e565b90915550505050505050565b6000816000036112ba57506000919050565b600060016112c784611a17565b901c6001901b905060018184816112e0576112e0611dc6565b048201901c905060018184816112f8576112f8611dc6565b048201901c9050600181848161131057611310611dc6565b048201901c9050600181848161132857611328611dc6565b048201901c9050600181848161134057611340611dc6565b048201901c9050600181848161135857611358611dc6565b048201901c9050600181848161137057611370611dc6565b048201901c90506104488182858161138a5761138a611dc6565b04611aab565b60005b818310156113ec5760006113a78484611ac1565b6000878152602090209091506001600160601b038616908201546001600160601b031611156113d8578092506113e6565b6113e3816001611d5b565b93505b50611393565b509392505050565b60006110526040805180820182526012815271566542657474657250617373706f7274563560701b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f2614581a1df16e95ccafff7fd01ca3eb67b753795db1f191e2ca6f85508a4421818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012090565b6000806000835160410361150c5760208401516040850151606086015160001a6114fe88828585611adc565b955095509550505050611518565b50508151600091506002905b9250925092565b600082600381111561153357611533611ddc565b0361153c575050565b600182600381111561155057611550611ddc565b0361156e5760405163f645eedf60e01b815260040160405180910390fd5b600282600381111561158257611582611ddc565b036115a35760405163fce698f760e01b81526004810182905260240161023d565b60038260038111156115b7576115b7611ddc565b036115d8576040516335e2f38360e21b81526004810182905260240161023d565b5050565b6000806115e7610785565b6001600160a01b0384166000908152601e82016020526040902090915061160d9061100f565b6001600160a01b031615159392505050565b60008061162a610785565b6001600160a01b0384166000908152601f82016020526040902090915061160d9061100f565b600061165a610785565b6001600160a01b038085166000908152602383016020526040808220549286168252812080549394509192611690908490611d5b565b90915550506001600160a01b03831660009081526015820160209081526040808320805482518185028101850190935280835291929091908301828280156116f757602002820191906000526020600020905b8154815260200190600101908083116116e3575b5050505050905060005b81518110156109c957600082828151811061171e5761171e611d81565b602090810291909101810151600081815260268701835260408082206001600160a01b038b8116845294528082205493891682528120805492945091611765908490611d5b565b90915550829150611777905081611dad565b915050611701565b6000611789610785565b90506000611796846119b7565b6117a15760006117a4565b60015b60ff16905060006117b4856119e7565b6117bf5760006117c2565b60015b60ff16905081836007016000866001600160a01b03166001600160a01b0316815260200190815260200160002060008282546117fe9190611d5b565b90915550506001600160a01b03841660009081526008840160205260408120805483929061129c908490611d5b565b600061105243610b78565b82546000908190801561195b57600061185687610c34600185611d6e565b6040805180820190915290546001600160601b03808216808452600160601b9092046001600160a01b0316602084015291925090871610156118ab57604051632520601d60e01b815260040160405180910390fd5b80516001600160601b038088169116036118f957846118cf88610c34600186611d6e565b80546001600160a01b0392909216600160601b026001600160601b0390921691909117905561194b565b604080518082019091526001600160601b0380881682526001600160a01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160601b029216919091179101555b60200151925083915061106a9050565b5050604080518082019091526001600160601b0380851682526001600160a01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160601b02919093161792019190915590508161106a565b6000806119c2610785565b6001600160a01b03909316600090815260059093016020525050604090205460ff1690565b6000806119f2610785565b6001600160a01b03909316600090815260069093016020525050604090205460ff1690565b600080608083901c15611a2c57608092831c92015b604083901c15611a3e57604092831c92015b602083901c15611a5057602092831c92015b601083901c15611a6257601092831c92015b600883901c15611a7457600892831c92015b600483901c15611a8657600492831c92015b600283901c15611a9857600292831c92015b600183901c1561042c5760010192915050565b6000818310611aba5781610448565b5090919050565b6000611ad06002848418611df2565b61044890848416611d5b565b600080806fa2a8918ca85bafe22016d0b997e4df60600160ff1b03841115611b0d5750600091506003905082611b97565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611b61573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611b8d57506000925060019150829050611b97565b9250600091508190505b9450945094915050565b5080546000825590600052602060002090810190611bbf9190611bc2565b50565b5b80821115610bab5760008155600101611bc3565b80356001600160a01b0381168114611bee57600080fd5b919050565b600060208284031215611c0557600080fd5b61044882611bd7565b60008060408385031215611c2157600080fd5b611c2a83611bd7565b946020939093013593505050565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b600080600060608486031215611c7757600080fd5b611c8084611bd7565b92506020840135915060408401356001600160401b0380821115611ca357600080fd5b818601915086601f830112611cb757600080fd5b813581811115611cc957611cc9611c4c565b604051601f8201601f19908116603f01168101908382118183101715611cf157611cf1611c4c565b81604052828152896020848701011115611d0a57600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b600060208284031215611d3e57600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561042c5761042c611d45565b8181038181111561042c5761042c611d45565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b600060018201611dbf57611dbf611d45565b5060010190565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600082611e0f57634e487b7160e01b600052601260045260246000fd5b50049056fe916811490c3a0241b2088d3f6464fbfe3003b4bb42a760a720e893a81de60051a264697066735822122037be911c09433b8433fa9062a4574e572a98b5a46d264a091ba73003cd8328ba64736f6c63430008140033",
  "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100a25760003560e01c806270f93d146100a75780631332de46146100c957806315b75cf0146100e957806338d8d688146100fe578063467b99b6146101275780636e6a304c1461013a578063c791e9371461015d578063d1143f3a1461017d578063d2a98f8b1461019d578063e0b23db4146101bd578063e4325044146101dd575b600080fd5b8180156100b357600080fd5b506100c76100c2366004611bf3565b6101f0565b005b8180156100d557600080fd5b506100c76100e4366004611bf3565b6102e8565b8180156100f557600080fd5b506100c7610367565b61011161010c366004611c0e565b6103e1565b60405161011e9190611c38565b60405180910390f35b610111610135366004611bf3565b610432565b61014d610148366004611c0e565b61044f565b604051901515815260200161011e565b81801561016957600080fd5b506100c7610178366004611c62565b61045b565b81801561018957600080fd5b506100c7610198366004611bf3565b61058d565b8180156101a957600080fd5b506100c76101b8366004611d2c565b610650565b8180156101c957600080fd5b506100c76101d8366004611bf3565b610664565b61014d6101eb366004611c0e565b610732565b60006101fa610785565b90506000610207836107a9565b9050826001600160a01b0316816001600160a01b031603610246578260405163c6ac53df60e01b815260040161023d9190611c38565b60405180910390fd5b336001600160a01b038416148015906102685750336001600160a01b03821614155b15610288573360405163ea93ab6d60e01b815260040161023d9190611c38565b6001600160a01b038316600090815260178301602052604081206102ab916107f7565b6102b58382610818565b806001600160a01b0316836001600160a01b0316600080516020611e1583398151915260405160405180910390a3505050565b60006102f2610785565b6001600160a01b038084166000908152601c830160205260409020549192501680610332578260405163c6ac53df60e01b815260040161023d9190611c38565b6001600160a01b038116331461035d573360405163ea93ab6d60e01b815260040161023d9190611c38565b6102b583826109d0565b6000610371610785565b336000908152601c820160205260409020549091506001600160a01b0316806103af573360405163c6ac53df60e01b815260040161023d9190611c38565b6103b933826109d0565b6040516001600160a01b038216903390600080516020611e1583398151915290600090a35050565b6000806103ec610785565b90506104286104256103fd85610b78565b6001600160a01b038716600090815260178501602052604090209065ffffffffffff16610baf565b90565b9150505b92915050565b60008061043d610785565b9050610448836107a9565b9392505050565b60006104488383610c66565b6000610465610785565b90508242111561048857604051630819bdcd60e01b815260040160405180910390fd5b604080517f88708ceda20b7f681a1d0bcac82e8c12fa88a5ce30261f012fdb9ed1ddc63bae60208201526001600160a01b038616918101919091523360608201526080810184905260009060a00160405160208183030381529060405280519060200120905060006104f982610c92565b905060006105078286610cbf565b9050866001600160a01b0316816001600160a01b03161461053b57604051638baa579f60e01b815260040160405180910390fd5b6105453388610ce9565b601d8401543360009081526019860160205260409020541061057a5760405163aca3ff4360e01b815260040160405180910390fd5b6105848733610f0d565b50505050505050565b6000610597610785565b6001600160a01b038084166000908152601c8301602052604090205491925016806105d7578260405163c6ac53df60e01b815260040161023d9190611c38565b6001600160a01b0381163314610602573360405163ea93ab6d60e01b815260040161023d9190611c38565b601d820154336000908152601984016020526040902054106106375760405163aca3ff4360e01b815260040160405180910390fd5b61064183336109d0565b61064b8333610f0d565b505050565b600061065a610785565b601d019190915550565b600061066e610785565b905061067a8233610ce9565b6001600160a01b0382166000908152601b820160205260409020546106a0816001611d5b565b336000818152601a850160209081526040808320949094556001600160a01b038716808352601b8701825284832080546001810182559084528284200180546001600160a01b03199081168617909155848452601c88019092528483208054909216811790915592517fa5ce3061f55dc6a6cb616713edbec99b638865accddbd58c83fd009e9ce920e79190a3505050565b60008061073d610785565b905061077361074b84610b78565b6001600160a01b038616600090815260178401602052604090209065ffffffffffff16610baf565b6001600160a01b031615949350505050565b7f273c9387b78d9b22e6f3371bb3aa3a918f53507e8cacc54e4831933cbb84410090565b6000806107b4610785565b6001600160a01b03841660009081526017820160205260408120919250906107df906104259061100f565b90506001600160a01b03811661044857509192915050565b610812610802611048565b839065ffffffffffff1683611057565b50505050565b6000610822610785565b6001600160a01b0380851660009081526018830160209081526040808320549387168352601985019091529020549192509061085f600183611d6e565b915061086c600182611d6e565b821461093a576001600160a01b03841660009081526019840160205260408120610897600184611d6e565b815481106108a7576108a7611d81565b60009182526020808320909101546001600160a01b0388811684526019880190925260409092208054919092169250829190859081106108e9576108e9611d81565b600091825260209091200180546001600160a01b0319166001600160a01b039290921691909117905561091d836001611d5b565b6001600160a01b0390911660009081526018850160205260409020555b6001600160a01b0384166000908152601984016020526040902080548061096357610963611d97565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b038716825260188501815260408083208390556019860190915281206109b591611ba1565b6109bf8585611072565b6109c985856111ee565b5050505050565b60006109da610785565b6001600160a01b038085166000908152601a830160209081526040808320549387168352601b850190915290205491925090610a17600183611d6e565b9150610a24600182611d6e565b8214610af2576001600160a01b0384166000908152601b840160205260408120610a4f600184611d6e565b81548110610a5f57610a5f611d81565b60009182526020808320909101546001600160a01b038881168452601b88019092526040909220805491909216925082919085908110610aa157610aa1611d81565b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055610ad5836001611d5b565b6001600160a01b039091166000908152601a850160205260409020555b6001600160a01b0384166000908152601b840160205260409020805480610b1b57610b1b611d97565b60008281526020808220830160001990810180546001600160a01b031990811690915593019093556001600160a01b03979097168752601a850182526040808820889055601c909501909152929094208054909216909155505050565b600065ffffffffffff821115610bab576040516306dfcc6560e41b8152603060048201526024810183905260440161023d565b5090565b815460009081816005811115610c0f576000610bca846112a8565b610bd49085611d6e565b6000888152602090209091508101546001600160601b039081169087161015610bff57809150610c0d565b610c0a816001611d5b565b92505b505b6000610c1d87878585611390565b90508015610c5857610c4287610c34600184611d6e565b600091825260209091200190565b54600160601b90046001600160a01b0316610c5b565b60005b979650505050505050565b600080610c71610785565b9050610c7f61074b84610b78565b6001600160a01b03161515949350505050565b600061042c610c9f6113f4565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080610ccf86866114d2565b925092509250610cdf828261151f565b5090949350505050565b6000610cf3610785565b6001600160a01b03831660009081526017820160205260409020909150610d199061100f565b6001600160a01b0316151580610d4857506001600160a01b0382166000908152601a8201602052604090205415155b15610d685781604051639546eb6360e01b815260040161023d9190611c38565b6001600160a01b03831660009081526017820160205260409020610d8b9061100f565b6001600160a01b0316151580610dbc57506001600160a01b038381166000908152601c830160205260409020541615155b15610ddc5782604051639546eb6360e01b815260040161023d9190611c38565b6001600160a01b0382166000908152601982016020526040902054151580610e1d57506001600160a01b0382166000908152601b8201602052604090205415155b15610e3d5782604051639546eb6360e01b815260040161023d9190611c38565b610e46826115dc565b80610e6c57506001600160a01b0382811660009081526022830160205260409020541615155b15610e8c5781604051631cd13c0760e21b815260040161023d9190611c38565b610e958261161f565b80610eb957506001600160a01b038216600090815260218201602052604090205415155b15610ed95781604051631cd13c0760e21b815260040161023d9190611c38565b826001600160a01b0316826001600160a01b03160361064b57816040516305333f6f60e31b815260040161023d9190611c38565b6000610f17610785565b6001600160a01b03841660009081526017820160205260409020909150610f3e90836107f7565b6001600160a01b0382166000908152601982016020526040902054610f64816001611d5b565b6001600160a01b03808616600081815260188601602090815260408083209590955592871681526019860183529283208054600181018255908452919092200180546001600160a01b0319169091179055610fbf8484611650565b610fc9848461177f565b826001600160a01b0316846001600160a01b03167ff644c2a6a740703067e9f00fb5a09444cd18cca01a19ce87915e934297a43fe260405160405180910390a350505050565b8054600090801561103f5761102983610c34600184611d6e565b54600160601b90046001600160a01b0316610448565b60009392505050565b600061105261182d565b905090565b600080611065858585611838565b915091505b935093915050565b600061107c610785565b6001600160a01b0380851660009081526023830160205260408082205492861682529020549192509081116110e0576001600160a01b0383166000908152602383016020526040812080548392906110d5908490611d6e565b909155506110fc9050565b6001600160a01b03831660009081526023830160205260408120555b6001600160a01b038416600090815260158301602090815260408083208054825181850281018501909352808352919290919083018282801561115e57602002820191906000526020600020905b81548152602001906001019080831161114a575b5050505050905060005b81518110156111e657600082828151811061118557611185611d81565b602090810291909101810151600081815260268801835260408082206001600160a01b038c81168452945280822054938a16825281208054929450916111cc908490611d6e565b909155508291506111de905081611dad565b915050611168565b505050505050565b60006111f8610785565b90506000611205846119b7565b611210576000611213565b60015b60ff1690506000611223856119e7565b61122e576000611231565b60015b60ff16905081836007016000866001600160a01b03166001600160a01b03168152602001908152602001600020600082825461126d9190611d6e565b90915550506001600160a01b03841660009081526008840160205260408120805483929061129c908490611d6e565b90915550505050505050565b6000816000036112ba57506000919050565b600060016112c784611a17565b901c6001901b905060018184816112e0576112e0611dc6565b048201901c905060018184816112f8576112f8611dc6565b048201901c9050600181848161131057611310611dc6565b048201901c9050600181848161132857611328611dc6565b048201901c9050600181848161134057611340611dc6565b048201901c9050600181848161135857611358611dc6565b048201901c9050600181848161137057611370611dc6565b048201901c90506104488182858161138a5761138a611dc6565b04611aab565b60005b818310156113ec5760006113a78484611ac1565b6000878152602090209091506001600160601b038616908201546001600160601b031611156113d8578092506113e6565b6113e3816001611d5b565b93505b50611393565b509392505050565b60006110526040805180820182526012815271566542657474657250617373706f7274563560701b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f2614581a1df16e95ccafff7fd01ca3eb67b753795db1f191e2ca6f85508a4421818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012090565b6000806000835160410361150c5760208401516040850151606086015160001a6114fe88828585611adc565b955095509550505050611518565b50508151600091506002905b9250925092565b600082600381111561153357611533611ddc565b0361153c575050565b600182600381111561155057611550611ddc565b0361156e5760405163f645eedf60e01b815260040160405180910390fd5b600282600381111561158257611582611ddc565b036115a35760405163fce698f760e01b81526004810182905260240161023d565b60038260038111156115b7576115b7611ddc565b036115d8576040516335e2f38360e21b81526004810182905260240161023d565b5050565b6000806115e7610785565b6001600160a01b0384166000908152601e82016020526040902090915061160d9061100f565b6001600160a01b031615159392505050565b60008061162a610785565b6001600160a01b0384166000908152601f82016020526040902090915061160d9061100f565b600061165a610785565b6001600160a01b038085166000908152602383016020526040808220549286168252812080549394509192611690908490611d5b565b90915550506001600160a01b03831660009081526015820160209081526040808320805482518185028101850190935280835291929091908301828280156116f757602002820191906000526020600020905b8154815260200190600101908083116116e3575b5050505050905060005b81518110156109c957600082828151811061171e5761171e611d81565b602090810291909101810151600081815260268701835260408082206001600160a01b038b8116845294528082205493891682528120805492945091611765908490611d5b565b90915550829150611777905081611dad565b915050611701565b6000611789610785565b90506000611796846119b7565b6117a15760006117a4565b60015b60ff16905060006117b4856119e7565b6117bf5760006117c2565b60015b60ff16905081836007016000866001600160a01b03166001600160a01b0316815260200190815260200160002060008282546117fe9190611d5b565b90915550506001600160a01b03841660009081526008840160205260408120805483929061129c908490611d5b565b600061105243610b78565b82546000908190801561195b57600061185687610c34600185611d6e565b6040805180820190915290546001600160601b03808216808452600160601b9092046001600160a01b0316602084015291925090871610156118ab57604051632520601d60e01b815260040160405180910390fd5b80516001600160601b038088169116036118f957846118cf88610c34600186611d6e565b80546001600160a01b0392909216600160601b026001600160601b0390921691909117905561194b565b604080518082019091526001600160601b0380881682526001600160a01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160601b029216919091179101555b60200151925083915061106a9050565b5050604080518082019091526001600160601b0380851682526001600160a01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160601b02919093161792019190915590508161106a565b6000806119c2610785565b6001600160a01b03909316600090815260059093016020525050604090205460ff1690565b6000806119f2610785565b6001600160a01b03909316600090815260069093016020525050604090205460ff1690565b600080608083901c15611a2c57608092831c92015b604083901c15611a3e57604092831c92015b602083901c15611a5057602092831c92015b601083901c15611a6257601092831c92015b600883901c15611a7457600892831c92015b600483901c15611a8657600492831c92015b600283901c15611a9857600292831c92015b600183901c1561042c5760010192915050565b6000818310611aba5781610448565b5090919050565b6000611ad06002848418611df2565b61044890848416611d5b565b600080806fa2a8918ca85bafe22016d0b997e4df60600160ff1b03841115611b0d5750600091506003905082611b97565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611b61573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611b8d57506000925060019150829050611b97565b9250600091508190505b9450945094915050565b5080546000825590600052602060002090810190611bbf9190611bc2565b50565b5b80821115610bab5760008155600101611bc3565b80356001600160a01b0381168114611bee57600080fd5b919050565b600060208284031215611c0557600080fd5b61044882611bd7565b60008060408385031215611c2157600080fd5b611c2a83611bd7565b946020939093013593505050565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b600080600060608486031215611c7757600080fd5b611c8084611bd7565b92506020840135915060408401356001600160401b0380821115611ca357600080fd5b818601915086601f830112611cb757600080fd5b813581811115611cc957611cc9611c4c565b604051601f8201601f19908116603f01168101908382118183101715611cf157611cf1611c4c565b81604052828152896020848701011115611d0a57600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b600060208284031215611d3e57600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561042c5761042c611d45565b8181038181111561042c5761042c611d45565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b600060018201611dbf57611dbf611d45565b5060010190565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600082611e0f57634e487b7160e01b600052601260045260246000fd5b50049056fe916811490c3a0241b2088d3f6464fbfe3003b4bb42a760a720e893a81de60051a264697066735822122037be911c09433b8433fa9062a4574e572a98b5a46d264a091ba73003cd8328ba64736f6c63430008140033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
