60806040523480156200001157600080fd5b50604051620014cd380380620014cd83398101604081905262000034916200017e565b8181620000413362000069565b60046200004f838262000277565b5060056200005e828262000277565b505050505062000343565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620000e157600080fd5b81516001600160401b0380821115620000fe57620000fe620000b9565b604051601f8301601f19908116603f01168101908282118183101715620001295762000129620000b9565b816040528381526020925086838588010111156200014657600080fd5b600091505b838210156200016a57858201830151818301840152908201906200014b565b600093810190920192909252949350505050565b600080604083850312156200019257600080fd5b82516001600160401b0380821115620001aa57600080fd5b620001b886838701620000cf565b93506020850151915080821115620001cf57600080fd5b50620001de85828601620000cf565b9150509250929050565b600181811c90821680620001fd57607f821691505b6020821081036200021e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200027257600081815260208120601f850160051c810160208610156200024d5750805b601f850160051c820191505b818110156200026e5782815560010162000259565b5050505b505050565b81516001600160401b03811115620002935762000293620000b9565b620002ab81620002a48454620001e8565b8462000224565b602080601f831160018114620002e35760008415620002ca5750858301515b600019600386901b1c1916600185901b1785556200026e565b600085815260208120601f198616915b828110156200031457888601518255948401946001909101908401620002f3565b5085821015620003335787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61117a80620003536000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c80637bcb4a64116100b2578063a457c2d711610081578063dd62ed3e11610066578063dd62ed3e146102c8578063f2fde38b1461030e578063f8fcabe31461032157600080fd5b8063a457c2d7146102a2578063a9059cbb146102b557600080fd5b80637bcb4a641461023f5780638da5cb5b1461025f57806395d89b4114610287578063a0712d681461028f57600080fd5b8063313ce56711610109578063583432a2116100ee578063583432a2146101c357806370a08231146101ff578063715018a61461023557600080fd5b8063313ce567146101a157806339509351146101b057600080fd5b806306fdde031461013b578063095ea7b31461015957806318160ddd1461017c57806323b872dd1461018e575b600080fd5b610143610334565b6040516101509190610ea9565b60405180910390f35b61016c610167366004610f3e565b6103c6565b6040519015158152602001610150565b6003545b604051908152602001610150565b61016c61019c366004610f68565b6103e0565b60405160128152602001610150565b61016c6101be366004610f3e565b610404565b6101d66101d1366004610f3e565b610450565b604080516fffffffffffffffffffffffffffffffff938416815292909116602083015201610150565b61018061020d366004610fa4565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b61023d6104a9565b005b61025261024d366004610fa4565b6104bd565b6040516101509190610fc6565b60005460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610150565b61014361056c565b61023d61029d36600461102b565b61057b565b61016c6102b0366004610f3e565b610588565b61016c6102c3366004610f3e565b61065e565b6101806102d6366004611044565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b61023d61031c366004610fa4565b61066c565b61023d61032f366004610f3e565b610720565b60606004805461034390611077565b80601f016020809104026020016040519081016040528092919081815260200182805461036f90611077565b80156103bc5780601f10610391576101008083540402835291602001916103bc565b820191906000526020600020905b81548152906001019060200180831161039f57829003601f168201915b5050505050905090565b6000336103d48185856107be565b60019150505b92915050565b6000336103ee858285610971565b6103f9858585610a48565b506001949350505050565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906103d4908290869061044b9087906110f9565b6107be565b6006602052816000526040600020818154811061046c57600080fd5b6000918252602090912001546fffffffffffffffffffffffffffffffff808216935070010000000000000000000000000000000090910416905082565b6104b1610cbe565b6104bb6000610d3f565b565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600660209081526040808320805482518185028101850190935280835260609492939192909184015b8282101561056157600084815260209081902060408051808201909152908401546fffffffffffffffffffffffffffffffff80821683527001000000000000000000000000000000009091041681830152825260019092019101610502565b505050509050919050565b60606005805461034390611077565b6105853382610db4565b50565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610651576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6103f982868684036107be565b6000336103d4818585610a48565b610674610cbe565b73ffffffffffffffffffffffffffffffffffffffff8116610717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610648565b61058581610d3f565b60078054600091826107318361110c565b9091555073ffffffffffffffffffffffffffffffffffffffff909316600090815260066020908152604080832081518083019092526fffffffffffffffffffffffffffffffff968716825294861681830190815285546001810187559584529190922091519051851670010000000000000000000000000000000002941693909317929091019190915550565b73ffffffffffffffffffffffffffffffffffffffff8316610860576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610648565b73ffffffffffffffffffffffffffffffffffffffff8216610903576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610648565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600260209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a425781811015610a35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610648565b610a4284848484036107be565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610aeb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610648565b73ffffffffffffffffffffffffffffffffffffffff8216610b8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610648565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604090205481811015610c44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610648565b73ffffffffffffffffffffffffffffffffffffffff80851660008181526001602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610cb19086815260200190565b60405180910390a3610a42565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610648565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8216610e31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610648565b8060036000828254610e4391906110f9565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600060208083528351808285015260005b81811015610ed657858101830151858201604001528201610eba565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610f3957600080fd5b919050565b60008060408385031215610f5157600080fd5b610f5a83610f15565b946020939093013593505050565b600080600060608486031215610f7d57600080fd5b610f8684610f15565b9250610f9460208501610f15565b9150604084013590509250925092565b600060208284031215610fb657600080fd5b610fbf82610f15565b9392505050565b602080825282518282018190526000919060409081850190868401855b8281101561101e57815180516fffffffffffffffffffffffffffffffff90811686529087015116868501529284019290850190600101610fe3565b5091979650505050505050565b60006020828403121561103d57600080fd5b5035919050565b6000806040838503121561105757600080fd5b61106083610f15565b915061106e60208401610f15565b90509250929050565b600181811c9082168061108b57607f821691505b6020821081036110c4577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103da576103da6110ca565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361113d5761113d6110ca565b506001019056fea264697066735822122017c0c8ae8ab125b6f4208b43965cc6a2743c2bc84284d6c644bc1502dda3b29264736f6c6343000813003300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000846616b655553444300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045553444300000000000000000000000000000000000000000000000000000000