0x60806040526004361061031e5760003560e01c80638a8c523c116101ab578063a9059cbb116100f7578063dd62ed3e11610095578063f11a24d31161006f578063f11a24d3146108cf578063f2fde38b146108e5578063f637434214610905578063f8b45b051461091b57600080fd5b8063dd62ed3e14610891578063e2f45605146108b1578063ed995307146108c757600080fd5b8063c0246668116100d1578063c02466681461082b578063c876d0b91461084b578063c8c8ebe414610865578063d85ba0631461087b57600080fd5b8063a9059cbb146107ba578063ba6a817e146107da578063bbc0c7421461080a57600080fd5b80639a7a23d6116101645780639fccce321161013e5780639fccce3214610758578063a0d82dc51461076e578063a457c2d714610784578063a4c82a00146107a457600080fd5b80639a7a23d61461070c5780639c3b4fdc1461072c5780639ec22c0e1461074257600080fd5b80638a8c523c1461066e5780638da5cb5b146106835780638ea5220f146106a15780638eb6af32146106c157806392136913146106e157806395d89b41146106f757600080fd5b8063313ce5671161026a5780636ddd171311610223578063751039fc116101fd578063751039fc146106035780637571336a1461061857806375f0a874146106385780637bce5a041461065857600080fd5b80636ddd17131461059557806370a08231146105b6578063715018a6146105ec57600080fd5b8063313ce567146104ca57806339509351146104e657806349bd5a5e146105065780634a62bb65146105265780634fbee193146105475780636a486a8e1461057f57600080fd5b8063199ffc72116102d757806323b872dd116102b157806323b872dd1461046457806327c8f835146104845780632c3e486c1461049a5780632e82f1a0146104b057600080fd5b8063199ffc72146104225780631a8145bb146104385780631f3fed8f1461044e57600080fd5b806306fdde031461032a578063095ea7b31461035557806310d5de53146103855780631694505e146103b557806318160ddd146103ed578063184c16c51461040c57600080fd5b3661032557005b600080fd5b34801561033657600080fd5b5061033f610931565b60405161034c9190612278565b60405180910390f35b34801561036157600080fd5b506103756103703660046122db565b6109c3565b604051901515815260200161034c565b34801561039157600080fd5b506103756103a0366004612307565b60216020526000908152604090205460ff1681565b3480156103c157600080fd5b506006546103d5906001600160a01b031681565b6040516001600160a01b03909116815260200161034c565b3480156103f957600080fd5b506002545b60405190815260200161034c565b34801561041857600080fd5b506103fe601e5481565b34801561042e57600080fd5b506103fe601a5481565b34801561044457600080fd5b506103fe60185481565b34801561045a57600080fd5b506103fe60175481565b34801561047057600080fd5b5061037561047f366004612324565b6109dd565b34801561049057600080fd5b506103d561dead81565b3480156104a657600080fd5b506103fe601c5481565b3480156104bc57600080fd5b50601b546103759060ff1681565b3480156104d657600080fd5b506040516012815260200161034c565b3480156104f257600080fd5b506103756105013660046122db565b610a01565b34801561051257600080fd5b506007546103d5906001600160a01b031681565b34801561053257600080fd5b50600c5461037590600160a01b900460ff1681565b34801561055357600080fd5b50610375610562366004612307565b6001600160a01b0316600090815260208052604090205460ff1690565b34801561058b57600080fd5b506103fe60135481565b3480156105a157600080fd5b50600c5461037590600160b01b900460ff1681565b3480156105c257600080fd5b506103fe6105d1366004612307565b6001600160a01b031660009081526020819052604090205490565b3480156105f857600080fd5b50610601610a23565b005b34801561060f57600080fd5b50610375610a37565b34801561062457600080fd5b50610601610633366004612365565b610a5e565b34801561064457600080fd5b50600c546103d5906001600160a01b031681565b34801561066457600080fd5b506103fe60105481565b34801561067a57600080fd5b50610601610a91565b34801561068f57600080fd5b506005546001600160a01b03166103d5565b3480156106ad57600080fd5b50600b546103d5906001600160a01b031681565b3480156106cd57600080fd5b506106016106dc366004612479565b610ab4565b3480156106ed57600080fd5b506103fe60145481565b34801561070357600080fd5b5061033f610b85565b34801561071857600080fd5b50610601610727366004612365565b610b94565b34801561073857600080fd5b506103fe60125481565b34801561074e57600080fd5b506103fe601f5481565b34801561076457600080fd5b506103fe60195481565b34801561077a57600080fd5b506103fe60165481565b34801561079057600080fd5b5061037561079f3660046122db565b610c22565b3480156107b057600080fd5b506103fe601d5481565b3480156107c657600080fd5b506103756107d53660046122db565b610c9d565b3480156107e657600080fd5b506103756107f5366004612307565b60226020526000908152604090205460ff1681565b34801561081657600080fd5b50600c5461037590600160a81b900460ff1681565b34801561083757600080fd5b50610601610846366004612365565b610cab565b34801561085757600080fd5b50600e546103759060ff1681565b34801561087157600080fd5b506103fe60085481565b34801561088757600080fd5b506103fe600f5481565b34801561089d57600080fd5b506103fe6108ac36600461254f565b610d10565b3480156108bd57600080fd5b506103fe60095481565b610601610d3b565b3480156108db57600080fd5b506103fe60115481565b3480156108f157600080fd5b50610601610900366004612307565b610fc9565b34801561091157600080fd5b506103fe60155481565b34801561092757600080fd5b506103fe600a5481565b6060600380546109409061257d565b80601f016020809104026020016040519081016040528092919081815260200182805461096c9061257d565b80156109b95780601f1061098e576101008083540402835291602001916109b9565b820191906000526020600020905b81548152906001019060200180831161099c57829003601f168201915b5050505050905090565b6000336109d1818585611042565b60019150505b92915050565b6000336109eb858285611166565b6109f68585856111da565b506001949350505050565b6000336109d1818585610a148383610d10565b610a1e91906125cd565b611042565b610a2b611ab3565b610a356000611b0d565b565b6000610a41611ab3565b50600c805460ff60a01b19169055600e805460ff19169055600190565b610a66611ab3565b6001600160a01b03919091166000908152602160205260409020805460ff1916911515919091179055565b610a99611ab3565b600c805461ffff60a81b191661010160a81b17905542601d55565b33600090815260208052604090205460ff16610b175760405162461bcd60e51b815260206004820152601f60248201527f617272617973206d757374206265207468652073616d652073656e6465722e0060448201526064015b60405180910390fd5b60005b8251811015610b7f576000838281518110610b3757610b376125e0565b602002602001015190506000838381518110610b5557610b556125e0565b60200260200101519050610b6a868383611b5f565b50508080610b77906125f6565b915050610b1a565b50505050565b6060600480546109409061257d565b610b9c611ab3565b6007546001600160a01b0390811690831603610c145760405162461bcd60e51b815260206004820152603160248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527034b9a6b0b935b2ba26b0b5b2b92830b4b960791b6064820152608401610b0e565b610c1e8282611c89565b5050565b60003381610c308286610d10565b905083811015610c905760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b0e565b6109f68286868403611042565b6000336109d18185856111da565b610cb3611ab3565b6001600160a01b03821660008181526020808052604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610d43611ab3565b737a250d5630b4cf539739df2c5dacb4c659f2488d610d63816001610a5e565b600680546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015610dbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de0919061260f565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e51919061260f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610e9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec2919061260f565b600780546001600160a01b0319166001600160a01b03929092169182179055610eec906001610a5e565b600754610f03906001600160a01b03166001611c89565b600654610f1d9030906001600160a01b0316600019611042565b6006546001600160a01b031663f305d7193430610f4f816001600160a01b031660009081526020819052604090205490565b600080610f646005546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610f869695949392919061262c565b60606040518083038185885af1158015610fa4573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610b7f9190612667565b610fd1611ab3565b6001600160a01b0381166110365760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b0e565b61103f81611b0d565b50565b6001600160a01b0383166110a45760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b0e565b6001600160a01b0382166111055760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b0e565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006111728484610d10565b90506000198114610b7f57818110156111cd5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610b0e565b610b7f8484848403611042565b6001600160a01b0383166112005760405162461bcd60e51b8152600401610b0e90612695565b6001600160a01b0382166112265760405162461bcd60e51b8152600401610b0e906126da565b8060000361123f5761123a83836000611b5f565b505050565b600c54600160a01b900460ff16156116bb576005546001600160a01b0384811691161480159061127d57506005546001600160a01b03838116911614155b801561129157506001600160a01b03821615155b80156112a857506001600160a01b03821661dead14155b80156112be5750600754600160a01b900460ff16155b156116bb57600c54600160a81b900460ff16611356576001600160a01b038316600090815260208052604090205460ff168061131157506001600160a01b038216600090815260208052604090205460ff165b6113565760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610b0e565b600e5460ff1615611455576005546001600160a01b0383811691161480159061138d57506006546001600160a01b03838116911614155b80156113a757506007546001600160a01b03838116911614155b1561145557326000908152600d602052604090205443116114425760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610b0e565b326000908152600d602052604090204390555b6001600160a01b03831660009081526022602052604090205460ff16801561149657506001600160a01b03821660009081526021602052604090205460ff16155b1561157a5760085481111561150b5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610b0e565b600a546001600160a01b03831660009081526020819052604090205461153190836125cd565b11156115755760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610b0e565b6116bb565b6001600160a01b03821660009081526022602052604090205460ff1680156115bb57506001600160a01b03831660009081526021602052604090205460ff16155b15611631576008548111156115755760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610b0e565b6001600160a01b03821660009081526021602052604090205460ff166116bb57600a546001600160a01b03831660009081526020819052604090205461167790836125cd565b11156116bb5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610b0e565b30600090815260208190526040902054801580159081906116e55750600c54600160b01b900460ff165b80156116fb5750600754600160a01b900460ff16155b801561172057506001600160a01b03851660009081526022602052604090205460ff16155b801561174457506001600160a01b038516600090815260208052604090205460ff16155b801561176857506001600160a01b038416600090815260208052604090205460ff16155b15611796576007805460ff60a01b1916600160a01b179055611788611cdd565b6007805460ff60a01b191690555b600754600160a01b900460ff161580156117c857506001600160a01b03841660009081526022602052604090205460ff165b80156117d65750601b5460ff165b80156117f15750601c54601d546117ed91906125cd565b4210155b801561181557506001600160a01b038516600090815260208052604090205460ff16155b1561182457611822611f08565b505b6007546001600160a01b038616600090815260208052604090205460ff600160a01b90920482161591168061187057506001600160a01b038516600090815260208052604090205460ff165b156118c057506001600160a01b03851660009081526022602052604081205460ff1680156118a757506001600160a01b0385163014155b156118c0576007805460ff60a81b1916600160a81b1790555b60008115611a9f576001600160a01b03861660009081526022602052604090205460ff16156119aa57601354156119a557611911606461190b6013548861205290919063ffffffff16565b90612065565b905060135460155482611924919061271d565b61192e9190612734565b6018600082825461193f91906125cd565b9091555050601354601654611954908361271d565b61195e9190612734565b6019600082825461196f91906125cd565b9091555050601354601454611984908361271d565b61198e9190612734565b6017600082825461199f91906125cd565b90915550505b611a81565b6001600160a01b03871660009081526022602052604090205460ff1615611a8157600f5415611a81576119ed606461190b600f548861205290919063ffffffff16565b9050600f5460115482611a00919061271d565b611a0a9190612734565b60186000828254611a1b91906125cd565b9091555050600f54601254611a30908361271d565b611a3a9190612734565b60196000828254611a4b91906125cd565b9091555050600f54601054611a60908361271d565b611a6a9190612734565b60176000828254611a7b91906125cd565b90915550505b8015611a9257611a92873083611b5f565b611a9c8186612756565b94505b611aaa878787611b5f565b50505050505050565b6005546001600160a01b03163314610a355760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b0e565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038316611b855760405162461bcd60e51b8152600401610b0e90612695565b6001600160a01b038216611bab5760405162461bcd60e51b8152600401610b0e906126da565b6001600160a01b03831660009081526020819052604090205481811015611c235760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610b0e565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610b7f565b6001600160a01b038216600081815260226020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b3060009081526020819052604081205490506000601954601754601854611d0491906125cd565b611d0e91906125cd565b9050811580611d1b575080155b15611d24575050565b600954611d3290601461271d565b821115611d4a57600954611d4790601461271d565b91505b600060028260185485611d5d919061271d565b611d679190612734565b611d719190612734565b90506000611d7f8483612071565b905047611d8b8261207d565b6000611d974783612071565b90506000611db48661190b6017548561205290919063ffffffff16565b90506000611dd18761190b6019548661205290919063ffffffff16565b9050600081611de08486612756565b611dea9190612756565b6000601881905560178190556019819055600c546040519293506001600160a01b03169184156108fc0291859190818181858888f19350505050158015611e35573d6000803e3d6000fd5b50600087118015611e465750600081115b15611e9957611e5587826121d7565b601854604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b600b546007546001600160a01b03909116906108fc90600160a81b900460ff16611ec4576001611ec7565b60025b611ed49060ff164761271d565b6040518115909202916000818181858888f19350505050158015611efc573d6000803e3d6000fd5b50505050505050505050565b42601d556007546040516370a0823160e01b81526001600160a01b039091166004820152600090819030906370a0823190602401602060405180830381865afa158015611f59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7d9190612769565b90506000611f9c61271061190b601a548561205290919063ffffffff16565b90508015611fbd57600754611fbd906001600160a01b031661dead83611b5f565b6007546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b15801561200757600080fd5b505af115801561201b573d6000803e3d6000fd5b50506040517f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d925060009150a16001935050505090565b600061205e828461271d565b9392505050565b600061205e8284612734565b600061205e8284612756565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106120b2576120b26125e0565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561210b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061212f919061260f565b81600181518110612142576121426125e0565b6001600160a01b0392831660209182029290920101526006546121689130911684611042565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906121a1908590600090869030904290600401612782565b600060405180830381600087803b1580156121bb57600080fd5b505af11580156121cf573d6000803e3d6000fd5b505050505050565b6006546121ef9030906001600160a01b031684611042565b60065460405163f305d71960e01b81526001600160a01b039091169063f305d71990839061222e9030908790600090819061dead90429060040161262c565b60606040518083038185885af115801561224c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906122719190612667565b5050505050565b600060208083528351808285015260005b818110156122a557858101830151858201604001528201612289565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461103f57600080fd5b600080604083850312156122ee57600080fd5b82356122f9816122c6565b946020939093013593505050565b60006020828403121561231957600080fd5b813561205e816122c6565b60008060006060848603121561233957600080fd5b8335612344816122c6565b92506020840135612354816122c6565b929592945050506040919091013590565b6000806040838503121561237857600080fd5b8235612383816122c6565b91506020830135801515811461239857600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156123e2576123e26123a3565b604052919050565b600067ffffffffffffffff821115612404576124046123a3565b5060051b60200190565b600082601f83011261241f57600080fd5b8135602061243461242f836123ea565b6123b9565b82815260059290921b8401810191818101908684111561245357600080fd5b8286015b8481101561246e5780358352918301918301612457565b509695505050505050565b60008060006060848603121561248e57600080fd5b8335612499816122c6565b925060208481013567ffffffffffffffff808211156124b757600080fd5b818701915087601f8301126124cb57600080fd5b81356124d961242f826123ea565b81815260059190911b8301840190848101908a8311156124f857600080fd5b938501935b8285101561251f578435612510816122c6565b825293850193908501906124fd565b96505050604087013592508083111561253757600080fd5b50506125458682870161240e565b9150509250925092565b6000806040838503121561256257600080fd5b823561256d816122c6565b91506020830135612398816122c6565b600181811c9082168061259157607f821691505b6020821081036125b157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156109d7576109d76125b7565b634e487b7160e01b600052603260045260246000fd5b600060018201612608576126086125b7565b5060010190565b60006020828403121561262157600080fd5b815161205e816122c6565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b60008060006060848603121561267c57600080fd5b8351925060208401519150604084015190509250925092565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b80820281158282048414176109d7576109d76125b7565b60008261275157634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156109d7576109d76125b7565b60006020828403121561277b57600080fd5b5051919050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127d25784516001600160a01b0316835293830193918301916001016127ad565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212206d5ca87b404c5e6dd88a52c6fac560ea3e467a9dbb5bcfdf396fc3b91cd04f6b64736f6c63430008130033
0x60806040526007805460ff60a81b19169055600c805462ffffff60a01b1916600160a01b179055600e805460ff19908116909155600a601a55601b805490911690556108ad601c556202088c601e553480156200005b57600080fd5b506040518060400160405280601081526020016f416e636573746f72204f66205065706560801b815250604051806040016040528060038152602001620414f560ec1b8152508160039081620000b2919062000582565b506004620000c1828262000582565b505050620000de620000d8620002c260201b60201c565b620002c6565b600b80546001600160a01b0319908116736e300d6d99eec063e7af75e028c5d1e0baba7bc417909155600c8054909116734fdc993cc3a3e3cfbd619e36d9e20655d37940ca1790556a52b7d2dcc80cd2e40000006103e86200014282601462000664565b6200014e919062000684565b6008556103e86200016182601462000664565b6200016d919062000684565b600a556103e86200018082600162000664565b6200018c919062000684565b600955600160108190556000601181905560128190558082818080620001b38185620006a7565b620001bf9190620006a7565b600f5560148390556015829055601681905580620001de8385620006a7565b620001ea9190620006a7565b6013556200020c620002046005546001600160a01b031690565b600162000318565b600b5462000225906001600160a01b0316600162000318565b600c546200023e906001600160a01b0316600162000318565b6200024b30600162000318565b6200026a620002626005546001600160a01b031690565b60016200037f565b600b5462000283906001600160a01b031660016200037f565b600c546200029c906001600160a01b031660016200037f565b620002a93060016200037f565b620002b53388620003b4565b50505050505050620006bd565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b620003226200047b565b6001600160a01b03821660008181526020808052604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b620003896200047b565b6001600160a01b03919091166000908152602160205260409020805460ff1916911515919091179055565b6001600160a01b038216620004105760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b8060026000828254620004249190620006a7565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6005546001600160a01b03163314620004d75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000407565b565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200050957607f821691505b6020821081036200052a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004d957600081815260208120601f850160051c81016020861015620005595750805b601f850160051c820191505b818110156200057a5782815560010162000565565b505050505050565b81516001600160401b038111156200059e576200059e620004de565b620005b681620005af8454620004f4565b8462000530565b602080601f831160018114620005ee5760008415620005d55750858301515b600019600386901b1c1916600185901b1785556200057a565b600085815260208120601f198616915b828110156200061f57888601518255948401946001909101908401620005fe565b50858210156200063e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176200067e576200067e6200064e565b92915050565b600082620006a257634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156200067e576200067e6200064e565b61282980620006cd6000396000f3fe60806040526004361061031e5760003560e01c80638a8c523c116101ab578063a9059cbb116100f7578063dd62ed3e11610095578063f11a24d31161006f578063f11a24d3146108cf578063f2fde38b146108e5578063f637434214610905578063f8b45b051461091b57600080fd5b8063dd62ed3e14610891578063e2f45605146108b1578063ed995307146108c757600080fd5b8063c0246668116100d1578063c02466681461082b578063c876d0b91461084b578063c8c8ebe414610865578063d85ba0631461087b57600080fd5b8063a9059cbb146107ba578063ba6a817e146107da578063bbc0c7421461080a57600080fd5b80639a7a23d6116101645780639fccce321161013e5780639fccce3214610758578063a0d82dc51461076e578063a457c2d714610784578063a4c82a00146107a457600080fd5b80639a7a23d61461070c5780639c3b4fdc1461072c5780639ec22c0e1461074257600080fd5b80638a8c523c1461066e5780638da5cb5b146106835780638ea5220f146106a15780638eb6af32146106c157806392136913146106e157806395d89b41146106f757600080fd5b8063313ce5671161026a5780636ddd171311610223578063751039fc116101fd578063751039fc146106035780637571336a1461061857806375f0a874146106385780637bce5a041461065857600080fd5b80636ddd17131461059557806370a08231146105b6578063715018a6146105ec57600080fd5b8063313ce567146104ca57806339509351146104e657806349bd5a5e146105065780634a62bb65146105265780634fbee193146105475780636a486a8e1461057f57600080fd5b8063199ffc72116102d757806323b872dd116102b157806323b872dd1461046457806327c8f835146104845780632c3e486c1461049a5780632e82f1a0146104b057600080fd5b8063199ffc72146104225780631a8145bb146104385780631f3fed8f1461044e57600080fd5b806306fdde031461032a578063095ea7b31461035557806310d5de53146103855780631694505e146103b557806318160ddd146103ed578063184c16c51461040c57600080fd5b3661032557005b600080fd5b34801561033657600080fd5b5061033f610931565b60405161034c9190612278565b60405180910390f35b34801561036157600080fd5b506103756103703660046122db565b6109c3565b604051901515815260200161034c565b34801561039157600080fd5b506103756103a0366004612307565b60216020526000908152604090205460ff1681565b3480156103c157600080fd5b506006546103d5906001600160a01b031681565b6040516001600160a01b03909116815260200161034c565b3480156103f957600080fd5b506002545b60405190815260200161034c565b34801561041857600080fd5b506103fe601e5481565b34801561042e57600080fd5b506103fe601a5481565b34801561044457600080fd5b506103fe60185481565b34801561045a57600080fd5b506103fe60175481565b34801561047057600080fd5b5061037561047f366004612324565b6109dd565b34801561049057600080fd5b506103d561dead81565b3480156104a657600080fd5b506103fe601c5481565b3480156104bc57600080fd5b50601b546103759060ff1681565b3480156104d657600080fd5b506040516012815260200161034c565b3480156104f257600080fd5b506103756105013660046122db565b610a01565b34801561051257600080fd5b506007546103d5906001600160a01b031681565b34801561053257600080fd5b50600c5461037590600160a01b900460ff1681565b34801561055357600080fd5b50610375610562366004612307565b6001600160a01b0316600090815260208052604090205460ff1690565b34801561058b57600080fd5b506103fe60135481565b3480156105a157600080fd5b50600c5461037590600160b01b900460ff1681565b3480156105c257600080fd5b506103fe6105d1366004612307565b6001600160a01b031660009081526020819052604090205490565b3480156105f857600080fd5b50610601610a23565b005b34801561060f57600080fd5b50610375610a37565b34801561062457600080fd5b50610601610633366004612365565b610a5e565b34801561064457600080fd5b50600c546103d5906001600160a01b031681565b34801561066457600080fd5b506103fe60105481565b34801561067a57600080fd5b50610601610a91565b34801561068f57600080fd5b506005546001600160a01b03166103d5565b3480156106ad57600080fd5b50600b546103d5906001600160a01b031681565b3480156106cd57600080fd5b506106016106dc366004612479565b610ab4565b3480156106ed57600080fd5b506103fe60145481565b34801561070357600080fd5b5061033f610b85565b34801561071857600080fd5b50610601610727366004612365565b610b94565b34801561073857600080fd5b506103fe60125481565b34801561074e57600080fd5b506103fe601f5481565b34801561076457600080fd5b506103fe60195481565b34801561077a57600080fd5b506103fe60165481565b34801561079057600080fd5b5061037561079f3660046122db565b610c22565b3480156107b057600080fd5b506103fe601d5481565b3480156107c657600080fd5b506103756107d53660046122db565b610c9d565b3480156107e657600080fd5b506103756107f5366004612307565b60226020526000908152604090205460ff1681565b34801561081657600080fd5b50600c5461037590600160a81b900460ff1681565b34801561083757600080fd5b50610601610846366004612365565b610cab565b34801561085757600080fd5b50600e546103759060ff1681565b34801561087157600080fd5b506103fe60085481565b34801561088757600080fd5b506103fe600f5481565b34801561089d57600080fd5b506103fe6108ac36600461254f565b610d10565b3480156108bd57600080fd5b506103fe60095481565b610601610d3b565b3480156108db57600080fd5b506103fe60115481565b3480156108f157600080fd5b50610601610900366004612307565b610fc9565b34801561091157600080fd5b506103fe60155481565b34801561092757600080fd5b506103fe600a5481565b6060600380546109409061257d565b80601f016020809104026020016040519081016040528092919081815260200182805461096c9061257d565b80156109b95780601f1061098e576101008083540402835291602001916109b9565b820191906000526020600020905b81548152906001019060200180831161099c57829003601f168201915b5050505050905090565b6000336109d1818585611042565b60019150505b92915050565b6000336109eb858285611166565b6109f68585856111da565b506001949350505050565b6000336109d1818585610a148383610d10565b610a1e91906125cd565b611042565b610a2b611ab3565b610a356000611b0d565b565b6000610a41611ab3565b50600c805460ff60a01b19169055600e805460ff19169055600190565b610a66611ab3565b6001600160a01b03919091166000908152602160205260409020805460ff1916911515919091179055565b610a99611ab3565b600c805461ffff60a81b191661010160a81b17905542601d55565b33600090815260208052604090205460ff16610b175760405162461bcd60e51b815260206004820152601f60248201527f617272617973206d757374206265207468652073616d652073656e6465722e0060448201526064015b60405180910390fd5b60005b8251811015610b7f576000838281518110610b3757610b376125e0565b602002602001015190506000838381518110610b5557610b556125e0565b60200260200101519050610b6a868383611b5f565b50508080610b77906125f6565b915050610b1a565b50505050565b6060600480546109409061257d565b610b9c611ab3565b6007546001600160a01b0390811690831603610c145760405162461bcd60e51b815260206004820152603160248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527034b9a6b0b935b2ba26b0b5b2b92830b4b960791b6064820152608401610b0e565b610c1e8282611c89565b5050565b60003381610c308286610d10565b905083811015610c905760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b0e565b6109f68286868403611042565b6000336109d18185856111da565b610cb3611ab3565b6001600160a01b03821660008181526020808052604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610d43611ab3565b737a250d5630b4cf539739df2c5dacb4c659f2488d610d63816001610a5e565b600680546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015610dbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de0919061260f565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e51919061260f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610e9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec2919061260f565b600780546001600160a01b0319166001600160a01b03929092169182179055610eec906001610a5e565b600754610f03906001600160a01b03166001611c89565b600654610f1d9030906001600160a01b0316600019611042565b6006546001600160a01b031663f305d7193430610f4f816001600160a01b031660009081526020819052604090205490565b600080610f646005546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610f869695949392919061262c565b60606040518083038185885af1158015610fa4573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610b7f9190612667565b610fd1611ab3565b6001600160a01b0381166110365760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b0e565b61103f81611b0d565b50565b6001600160a01b0383166110a45760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b0e565b6001600160a01b0382166111055760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b0e565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006111728484610d10565b90506000198114610b7f57818110156111cd5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610b0e565b610b7f8484848403611042565b6001600160a01b0383166112005760405162461bcd60e51b8152600401610b0e90612695565b6001600160a01b0382166112265760405162461bcd60e51b8152600401610b0e906126da565b8060000361123f5761123a83836000611b5f565b505050565b600c54600160a01b900460ff16156116bb576005546001600160a01b0384811691161480159061127d57506005546001600160a01b03838116911614155b801561129157506001600160a01b03821615155b80156112a857506001600160a01b03821661dead14155b80156112be5750600754600160a01b900460ff16155b156116bb57600c54600160a81b900460ff16611356576001600160a01b038316600090815260208052604090205460ff168061131157506001600160a01b038216600090815260208052604090205460ff165b6113565760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610b0e565b600e5460ff1615611455576005546001600160a01b0383811691161480159061138d57506006546001600160a01b03838116911614155b80156113a757506007546001600160a01b03838116911614155b1561145557326000908152600d602052604090205443116114425760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610b0e565b326000908152600d602052604090204390555b6001600160a01b03831660009081526022602052604090205460ff16801561149657506001600160a01b03821660009081526021602052604090205460ff16155b1561157a5760085481111561150b5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610b0e565b600a546001600160a01b03831660009081526020819052604090205461153190836125cd565b11156115755760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610b0e565b6116bb565b6001600160a01b03821660009081526022602052604090205460ff1680156115bb57506001600160a01b03831660009081526021602052604090205460ff16155b15611631576008548111156115755760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610b0e565b6001600160a01b03821660009081526021602052604090205460ff166116bb57600a546001600160a01b03831660009081526020819052604090205461167790836125cd565b11156116bb5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610b0e565b30600090815260208190526040902054801580159081906116e55750600c54600160b01b900460ff165b80156116fb5750600754600160a01b900460ff16155b801561172057506001600160a01b03851660009081526022602052604090205460ff16155b801561174457506001600160a01b038516600090815260208052604090205460ff16155b801561176857506001600160a01b038416600090815260208052604090205460ff16155b15611796576007805460ff60a01b1916600160a01b179055611788611cdd565b6007805460ff60a01b191690555b600754600160a01b900460ff161580156117c857506001600160a01b03841660009081526022602052604090205460ff165b80156117d65750601b5460ff165b80156117f15750601c54601d546117ed91906125cd565b4210155b801561181557506001600160a01b038516600090815260208052604090205460ff16155b1561182457611822611f08565b505b6007546001600160a01b038616600090815260208052604090205460ff600160a01b90920482161591168061187057506001600160a01b038516600090815260208052604090205460ff165b156118c057506001600160a01b03851660009081526022602052604081205460ff1680156118a757506001600160a01b0385163014155b156118c0576007805460ff60a81b1916600160a81b1790555b60008115611a9f576001600160a01b03861660009081526022602052604090205460ff16156119aa57601354156119a557611911606461190b6013548861205290919063ffffffff16565b90612065565b905060135460155482611924919061271d565b61192e9190612734565b6018600082825461193f91906125cd565b9091555050601354601654611954908361271d565b61195e9190612734565b6019600082825461196f91906125cd565b9091555050601354601454611984908361271d565b61198e9190612734565b6017600082825461199f91906125cd565b90915550505b611a81565b6001600160a01b03871660009081526022602052604090205460ff1615611a8157600f5415611a81576119ed606461190b600f548861205290919063ffffffff16565b9050600f5460115482611a00919061271d565b611a0a9190612734565b60186000828254611a1b91906125cd565b9091555050600f54601254611a30908361271d565b611a3a9190612734565b60196000828254611a4b91906125cd565b9091555050600f54601054611a60908361271d565b611a6a9190612734565b60176000828254611a7b91906125cd565b90915550505b8015611a9257611a92873083611b5f565b611a9c8186612756565b94505b611aaa878787611b5f565b50505050505050565b6005546001600160a01b03163314610a355760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b0e565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038316611b855760405162461bcd60e51b8152600401610b0e90612695565b6001600160a01b038216611bab5760405162461bcd60e51b8152600401610b0e906126da565b6001600160a01b03831660009081526020819052604090205481811015611c235760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610b0e565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610b7f565b6001600160a01b038216600081815260226020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b3060009081526020819052604081205490506000601954601754601854611d0491906125cd565b611d0e91906125cd565b9050811580611d1b575080155b15611d24575050565b600954611d3290601461271d565b821115611d4a57600954611d4790601461271d565b91505b600060028260185485611d5d919061271d565b611d679190612734565b611d719190612734565b90506000611d7f8483612071565b905047611d8b8261207d565b6000611d974783612071565b90506000611db48661190b6017548561205290919063ffffffff16565b90506000611dd18761190b6019548661205290919063ffffffff16565b9050600081611de08486612756565b611dea9190612756565b6000601881905560178190556019819055600c546040519293506001600160a01b03169184156108fc0291859190818181858888f19350505050158015611e35573d6000803e3d6000fd5b50600087118015611e465750600081115b15611e9957611e5587826121d7565b601854604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b600b546007546001600160a01b03909116906108fc90600160a81b900460ff16611ec4576001611ec7565b60025b611ed49060ff164761271d565b6040518115909202916000818181858888f19350505050158015611efc573d6000803e3d6000fd5b50505050505050505050565b42601d556007546040516370a0823160e01b81526001600160a01b039091166004820152600090819030906370a0823190602401602060405180830381865afa158015611f59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7d9190612769565b90506000611f9c61271061190b601a548561205290919063ffffffff16565b90508015611fbd57600754611fbd906001600160a01b031661dead83611b5f565b6007546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b15801561200757600080fd5b505af115801561201b573d6000803e3d6000fd5b50506040517f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d925060009150a16001935050505090565b600061205e828461271d565b9392505050565b600061205e8284612734565b600061205e8284612756565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106120b2576120b26125e0565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561210b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061212f919061260f565b81600181518110612142576121426125e0565b6001600160a01b0392831660209182029290920101526006546121689130911684611042565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906121a1908590600090869030904290600401612782565b600060405180830381600087803b1580156121bb57600080fd5b505af11580156121cf573d6000803e3d6000fd5b505050505050565b6006546121ef9030906001600160a01b031684611042565b60065460405163f305d71960e01b81526001600160a01b039091169063f305d71990839061222e9030908790600090819061dead90429060040161262c565b60606040518083038185885af115801561224c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906122719190612667565b5050505050565b600060208083528351808285015260005b818110156122a557858101830151858201604001528201612289565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461103f57600080fd5b600080604083850312156122ee57600080fd5b82356122f9816122c6565b946020939093013593505050565b60006020828403121561231957600080fd5b813561205e816122c6565b60008060006060848603121561233957600080fd5b8335612344816122c6565b92506020840135612354816122c6565b929592945050506040919091013590565b6000806040838503121561237857600080fd5b8235612383816122c6565b91506020830135801515811461239857600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156123e2576123e26123a3565b604052919050565b600067ffffffffffffffff821115612404576124046123a3565b5060051b60200190565b600082601f83011261241f57600080fd5b8135602061243461242f836123ea565b6123b9565b82815260059290921b8401810191818101908684111561245357600080fd5b8286015b8481101561246e5780358352918301918301612457565b509695505050505050565b60008060006060848603121561248e57600080fd5b8335612499816122c6565b925060208481013567ffffffffffffffff808211156124b757600080fd5b818701915087601f8301126124cb57600080fd5b81356124d961242f826123ea565b81815260059190911b8301840190848101908a8311156124f857600080fd5b938501935b8285101561251f578435612510816122c6565b825293850193908501906124fd565b96505050604087013592508083111561253757600080fd5b50506125458682870161240e565b9150509250925092565b6000806040838503121561256257600080fd5b823561256d816122c6565b91506020830135612398816122c6565b600181811c9082168061259157607f821691505b6020821081036125b157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156109d7576109d76125b7565b634e487b7160e01b600052603260045260246000fd5b600060018201612608576126086125b7565b5060010190565b60006020828403121561262157600080fd5b815161205e816122c6565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b60008060006060848603121561267c57600080fd5b8351925060208401519150604084015190509250925092565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b80820281158282048414176109d7576109d76125b7565b60008261275157634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156109d7576109d76125b7565b60006020828403121561277b57600080fd5b5051919050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127d25784516001600160a01b0316835293830193918301916001016127ad565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212206d5ca87b404c5e6dd88a52c6fac560ea3e467a9dbb5bcfdf396fc3b91cd04f6b64736f6c63430008130033