0x6080604052600f805462ffffff191660019081179091556012805460ff1916909117905534801561002e575f5ffd5b506040518060400160405280600581526020016426b0bb32b760d91b815250604051806040016040528060038152602001624d564d60e81b815250816003908161007891906105b9565b50600461008582826105b9565b50505061009e6100996102d160201b60201c565b6102d5565b68a2a15d09519be00000600a9081556901e7e4171bf4d3a00000600c555f9081908180601e69d3c21bcecceda10000006127106100dc826005610687565b6100e691906106a4565b600b55600980547366433b25141e0e837d801a9ff93e5a2a6956f7736001600160a01b031991821681179092556008805490911690911790556017879055601886905560198590558461013987896106c3565b61014391906106c3565b601655601b849055601c839055601d8290558161016084866106c3565b61016a91906106c3565b601a556101896101826005546001600160a01b031690565b6001610326565b610194306001610326565b6101a161dead6001610326565b6009546101b8906001600160a01b03166001610326565b6101d77366433b25141e0e837d801a9ff93e5a2a6956f7736001610326565b6008546101ee906001600160a01b03166001610326565b61020a6102036005546001600160a01b031690565b600161039c565b61021530600161039c565b61022261dead600161039c565b600954610239906001600160a01b0316600161039c565b6102587366433b25141e0e837d801a9ff93e5a2a6956f773600161039c565b60085461026f906001600160a01b0316600161039c565b61028f33606461028084605a610687565b61028a91906106a4565b610441565b6102a0306064610280846005610687565b6102c5739fdced0bd2f7491a467854235a104f74869a119c6064610280846005610687565b505050505050506106d6565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6005546001600160a01b031633146103725760405162461bcd60e51b815260206004820181905260248201525f5160206134f15f395f51905f5260448201526064015b60405180910390fd5b6001600160a01b03919091165f908152601f60205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146103e35760405162461bcd60e51b815260206004820181905260248201525f5160206134f15f395f51905f526044820152606401610369565b6001600160a01b0382165f818152601e6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b0382166104975760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610369565b8060025f8282546104a891906106c3565b90915550506001600160a01b0382165f90815260208190526040812080548392906104d49084906106c3565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061054a57607f821691505b60208210810361056857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561051d57805f5260205f20601f840160051c810160208510156105935750805b601f840160051c820191505b818110156105b2575f815560010161059f565b5050505050565b81516001600160401b038111156105d2576105d2610522565b6105e6816105e08454610536565b8461056e565b6020601f821160018114610618575f83156106015750848201515b5f19600385901b1c1916600184901b1784556105b2565b5f84815260208120601f198516915b828110156106475787850151825560209485019460019092019101610627565b508482101561066457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761069e5761069e610673565b92915050565b5f826106be57634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561069e5761069e610673565b612e0e806106e35f395ff3fe608060405260043610610395575f3560e01c80637bce5a04116101de578063c024666811610108578063e884f2601161009d578063f11a24d31161006d578063f11a24d314610a4b578063f2fde38b14610a60578063f637434214610a7f578063f8b45b0514610a94575f5ffd5b8063e884f260146109e4578063eb99766f146109f8578063eba4c33314610a17578063ef8700e514610a36575f5ffd5b8063d257b34f116100d8578063d257b34f14610957578063d85ba06314610976578063dd62ed3e1461098b578063e2f45605146109cf575f5ffd5b8063c0246668146108eb578063c18bc1951461090a578063c876d0b914610929578063c8c8ebe414610942575f5ffd5b806395d89b411161017e578063a9059cbb1161014e578063a9059cbb14610876578063b204141114610895578063b62496f5146108aa578063bc063e1a146108d7575f5ffd5b806395d89b41146108105780639a7a23d6146108245780639be1aefb14610843578063a457c2d714610857575f5ffd5b80638da5cb5b116101b95780638da5cb5b146107a0578063912ca020146107bd57806392136913146107dc578063924de9b7146107f1575f5ffd5b80637bce5a04146107635780638129fc1c146107785780638a8c523c1461078c575f5ffd5b8063313ce567116102bf5780636a486a8e1161025f578063715018a61161022f578063715018a6146106fd57806371fc468814610711578063751039fc146107305780637571336a14610744575f5ffd5b80636a486a8e146106765780636ccc1c0b1461068b5780636ddd1713146106aa57806370a08231146106c9575f5ffd5b806349bd5a5e1161029a57806349bd5a5e146105e85780634a62bb65146106075780634f8f2513146106205780634fbee1931461063f575f5ffd5b8063313ce567146105995780633443b225146105b457806339509351146105c9575f5ffd5b806318a94cf111610335578063203e727e11610305578063203e727e1461052557806323b872dd1461054657806326f0dcbc1461056557806327c8f83514610584575f5ffd5b806318a94cf1146104c857806318ac3c8d146104dd5780631a8145bb146104fb5780631f3fed8f14610510575f5ffd5b806310d5de531161037057806310d5de531461041857806310ff85e1146104465780631694505e1461047d57806318160ddd146104b4575f5ffd5b80630500b8c2146103a057806306fdde03146103c8578063095ea7b3146103e9575f5ffd5b3661039c57005b5f5ffd5b3480156103ab575f5ffd5b506103b5600d5481565b6040519081526020015b60405180910390f35b3480156103d3575f5ffd5b506103dc610aa9565b6040516103bf9190612a25565b3480156103f4575f5ffd5b50610408610403366004612a6e565b610b39565b60405190151581526020016103bf565b348015610423575f5ffd5b50610408610432366004612a98565b601f6020525f908152604090205460ff1681565b348015610451575f5ffd5b50610408610460366004612a98565b6001600160a01b03165f9081526010602052604090205460ff1690565b348015610488575f5ffd5b5060065461049c906001600160a01b031681565b6040516001600160a01b0390911681526020016103bf565b3480156104bf575f5ffd5b506002546103b5565b3480156104d3575f5ffd5b506103b5601d5481565b3480156104e8575f5ffd5b50600f5461040890610100900460ff1681565b348015610506575f5ffd5b506103b560145481565b34801561051b575f5ffd5b506103b560135481565b348015610530575f5ffd5b5061054461053f366004612ab3565b610b4f565b005b348015610551575f5ffd5b50610408610560366004612aca565b610c35565b348015610570575f5ffd5b5060095461049c906001600160a01b031681565b34801561058f575f5ffd5b5061049c61dead81565b3480156105a4575f5ffd5b50604051601281526020016103bf565b3480156105bf575f5ffd5b506103b5600e5481565b3480156105d4575f5ffd5b506104086105e3366004612a6e565b610cdd565b3480156105f3575f5ffd5b5060075461049c906001600160a01b031681565b348015610612575f5ffd5b50600f546104089060ff1681565b34801561062b575f5ffd5b5061040861063a366004612b08565b610d18565b34801561064a575f5ffd5b50610408610659366004612a98565b6001600160a01b03165f908152601e602052604090205460ff1690565b348015610681575f5ffd5b506103b5601a5481565b348015610696575f5ffd5b506105446106a5366004612b3f565b610f4b565b3480156106b5575f5ffd5b50600f546104089062010000900460ff1681565b3480156106d4575f5ffd5b506103b56106e3366004612a98565b6001600160a01b03165f9081526020819052604090205490565b348015610708575f5ffd5b50610544610fec565b34801561071c575f5ffd5b5061054461072b366004612ab3565b611021565b34801561073b575f5ffd5b50610408611098565b34801561074f575f5ffd5b5061054461075e366004612b6c565b6110d4565b34801561076e575f5ffd5b506103b560175481565b348015610783575f5ffd5b50610544611128565b348015610797575f5ffd5b5061054461130e565b3480156107ab575f5ffd5b506005546001600160a01b031661049c565b3480156107c8575f5ffd5b506105446107d7366004612ab3565b61137b565b3480156107e7575f5ffd5b506103b5601b5481565b3480156107fc575f5ffd5b5061054461080b366004612b98565b611406565b34801561081b575f5ffd5b506103dc61144c565b34801561082f575f5ffd5b5061054461083e366004612b6c565b61145b565b34801561084e575f5ffd5b50610544611517565b348015610862575f5ffd5b50610408610871366004612a6e565b611577565b348015610881575f5ffd5b50610408610890366004612a6e565b61160f565b3480156108a0575f5ffd5b506103b560195481565b3480156108b5575f5ffd5b506104086108c4366004612a98565b602080525f908152604090205460ff1681565b3480156108e2575f5ffd5b506103b5601e81565b3480156108f6575f5ffd5b50610544610905366004612b6c565b61161b565b348015610915575f5ffd5b50610544610924366004612ab3565b6116a3565b348015610934575f5ffd5b506012546104089060ff1681565b34801561094d575f5ffd5b506103b5600a5481565b348015610962575f5ffd5b50610408610971366004612ab3565b611774565b348015610981575f5ffd5b506103b560165481565b348015610996575f5ffd5b506103b56109a5366004612b08565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156109da575f5ffd5b506103b5600b5481565b3480156109ef575f5ffd5b506104086118c5565b348015610a03575f5ffd5b5060085461049c906001600160a01b031681565b348015610a22575f5ffd5b50610544610a31366004612ab3565b611901565b348015610a41575f5ffd5b506103b560155481565b348015610a56575f5ffd5b506103b560185481565b348015610a6b575f5ffd5b50610544610a7a366004612a98565b611957565b348015610a8a575f5ffd5b506103b5601c5481565b348015610a9f575f5ffd5b506103b5600c5481565b606060038054610ab890612bb3565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae490612bb3565b8015610b2f5780601f10610b0657610100808354040283529160200191610b2f565b820191905f5260205f20905b815481529060010190602001808311610b1257829003601f168201915b5050505050905090565b5f610b453384846119ef565b5060015b92915050565b6005546001600160a01b03163314610b825760405162461bcd60e51b8152600401610b7990612beb565b60405180910390fd5b670de0b6b3a76400006103e8610b9760025490565b610ba2906005612c34565b610bac9190612c4b565b610bb69190612c4b565b811015610c1d5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e352560881b6064820152608401610b79565b610c2f81670de0b6b3a7640000612c34565b600a5550565b5f610c41848484611b12565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610cc55760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610b79565b610cd285338584036119ef565b506001949350505050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610b45918590610d13908690612c6a565b6119ef565b6005545f906001600160a01b03163314610d445760405162461bcd60e51b8152600401610b7990612beb565b6001600160a01b038316610d9a5760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610b79565b6001600160a01b03831630141580610dba5750600f54610100900460ff16155b610e235760405162461bcd60e51b815260206004820152603460248201527f43616e2774207769746864726177206e617469766520746f6b656e73207768696044820152736c652074726164696e672069732061637469766560601b6064820152608401610b79565b6040516370a0823160e01b81523060048201525f906001600160a01b038516906370a0823190602401602060405180830381865afa158015610e67573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e8b9190612c7d565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303815f875af1158015610edb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eff9190612c94565b604080516001600160a01b0387168152602081018490529193507f028165f21f239456b9001495751279ed262b7f1166ceb45c47096344e1ac72ec910160405180910390a15092915050565b6005546001600160a01b03163314610f755760405162461bcd60e51b8152600401610b7990612beb565b601e821115610f965760405162461bcd60e51b8152600401610b7990612caf565b5f6017819055601881905560198390558290610fb29080612c6a565b610fbc9190612c6a565b6016555f601b819055601c819055601d8290558190610fdb9080612c6a565b610fe59190612c6a565b601a555050565b6005546001600160a01b031633146110165760405162461bcd60e51b8152600401610b7990612beb565b61101f5f612364565b565b6005546001600160a01b0316331461104b5760405162461bcd60e51b8152600401610b7990612beb565b601e81111561106c5760405162461bcd60e51b8152600401610b7990612caf565b5f60178190556018819055601982905581906110889080612c6a565b6110929190612c6a565b60165550565b6005545f906001600160a01b031633146110c45760405162461bcd60e51b8152600401610b7990612beb565b50600f805460ff19169055600190565b6005546001600160a01b031633146110fe5760405162461bcd60e51b8152600401610b7990612beb565b6001600160a01b03919091165f908152601f60205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146111525760405162461bcd60e51b8152600401610b7990612beb565b737a250d5630b4cf539739df2c5dacb4c659f2488d6111728160016110d4565b600680546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156111c9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111ed9190612cfb565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611238573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061125c9190612cfb565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156112a6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112ca9190612cfb565b600780546001600160a01b0319166001600160a01b039290921691821790556112f49060016110d4565b60075461130b906001600160a01b031660016123b5565b50565b6005546001600160a01b031633146113385760405162461bcd60e51b8152600401610b7990612beb565b600f805462ffff0019166201010017905543600d5542600e556040517fd9c2e24a130193c2fa1a6744e33e11287fbbfcf59c54b2348d586aea46b59878905f90a1565b6005546001600160a01b031633146113a55760405162461bcd60e51b8152600401610b7990612beb565b305f9081526020819052604090205481111580156113c257505f81115b6113fd5760405162461bcd60e51b815260206004820152600c60248201526b15dc9bdb99c8185b5bdd5b9d60a21b6044820152606401610b79565b61130b81612407565b6005546001600160a01b031633146114305760405162461bcd60e51b8152600401610b7990612beb565b600f8054911515620100000262ff000019909216919091179055565b606060048054610ab890612bb3565b6005546001600160a01b031633146114855760405162461bcd60e51b8152600401610b7990612beb565b6007546001600160a01b03908116908316036115095760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610b79565b61151382826123b5565b5050565b6005546001600160a01b031633146115415760405162461bcd60e51b8152600401610b7990612beb565b6005546040516001600160a01b03909116904780156108fc02915f818181858888f1935050505015801561130b573d5f5f3e3d5ffd5b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156115f85760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b79565b61160533858584036119ef565b5060019392505050565b5f610b45338484611b12565b6005546001600160a01b031633146116455760405162461bcd60e51b8152600401610b7990612beb565b6001600160a01b0382165f818152601e6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146116cd5760405162461bcd60e51b8152600401610b7990612beb565b670de0b6b3a76400006103e86116e260025490565b6116ed90600a612c34565b6116f79190612c4b565b6117019190612c4b565b81101561175c5760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263312e302560e01b6064820152608401610b79565b61176e81670de0b6b3a7640000612c34565b600c5550565b6005545f906001600160a01b031633146117a05760405162461bcd60e51b8152600401610b7990612beb565b620186a06117ad60025490565b6117b8906001612c34565b6117c29190612c4b565b82101561182f5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610b79565b6103e861183b60025490565b611846906005612c34565b6118509190612c4b565b8211156118bc5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610b79565b50600b55600190565b6005545f906001600160a01b031633146118f15760405162461bcd60e51b8152600401610b7990612beb565b506012805460ff19169055600190565b6005546001600160a01b0316331461192b5760405162461bcd60e51b8152600401610b7990612beb565b5f601b819055601c819055601d82905581906119479080612c6a565b6119519190612c6a565b601a5550565b6005546001600160a01b031633146119815760405162461bcd60e51b8152600401610b7990612beb565b6001600160a01b0381166119e65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b79565b61130b81612364565b6001600160a01b038316611a515760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b79565b6001600160a01b038216611ab25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b79565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611b775760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015265323932b9b99760d11b6064820152608401610b79565b6001600160a01b038216611bd95760405162461bcd60e51b8152602060048201526024808201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526332b9b99760e11b6064820152608401610b79565b805f03611bf057611beb83835f612557565b505050565b600f5460ff1615612044576005546001600160a01b03848116911614801590611c2757506005546001600160a01b03838116911614155b8015611c3b57506001600160a01b03821615155b8015611c5257506001600160a01b03821661dead14155b8015611c685750600754600160a01b900460ff16155b1561204457600f54610100900460ff16611cfe576001600160a01b0383165f908152601e602052604090205460ff1680611cb957506001600160a01b0382165f908152601e602052604090205460ff165b611cfe5760405162461bcd60e51b815260206004820152601660248201527554726164696e67206973206e6f74206163746976652160501b6044820152606401610b79565b60125460ff1615611dfb576005546001600160a01b03838116911614801590611d3557506006546001600160a01b03838116911614155b8015611d4f57506007546001600160a01b03838116911614155b15611dfb57325f908152601160205260409020544311611de95760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60648201526820616c6c6f7765642160b81b608482015260a401610b79565b325f9081526011602052604090204390555b6001600160a01b0383165f90815260208052604090205460ff168015611e3957506001600160a01b0382165f908152601f602052604090205460ff16155b15611f1257600a54811115611ea45760405162461bcd60e51b815260206004820152602b60248201527f427579207472616e7366657220616d6f756e74203e206d61785472616e73616360448201526a74696f6e416d6f756e742160a81b6064820152608401610b79565b600c546001600160a01b0383165f90815260208190526040902054611ec99083612c6a565b1115611f0d5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610b79565b612044565b6001600160a01b0382165f90815260208052604090205460ff168015611f5057506001600160a01b0383165f908152601f602052604090205460ff16155b15611fbc57600a54811115611f0d5760405162461bcd60e51b815260206004820152602c60248201527f53656c6c207472616e7366657220616d6f756e74203e206d61785472616e736160448201526b6374696f6e416d6f756e742160a01b6064820152608401610b79565b6001600160a01b0382165f908152601f602052604090205460ff1661204457600c546001600160a01b0383165f908152602081905260409020546120009083612c6a565b11156120445760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610b79565b305f90815260208190526040902054600b548110801590819061206f5750600f5462010000900460ff165b80156120855750600754600160a01b900460ff16155b80156120a857506001600160a01b0385165f90815260208052604090205460ff16155b80156120cc57506001600160a01b0385165f908152601e602052604090205460ff16155b80156120f057506001600160a01b0384165f908152601e602052604090205460ff16155b1561211e576007805460ff60a01b1916600160a01b179055612110612724565b6007805460ff60a01b191690555b6007546001600160a01b0386165f908152601e602052604090205460ff600160a01b90920482161591168061216a57506001600160a01b0385165f908152601e602052604090205460ff165b1561217257505f5b5f8115612350576001600160a01b0386165f90815260208052604090205460ff1680156121a057505f601a54115b1561225b576121c560646121bf601a548861294e90919063ffffffff16565b90612960565b9050601a54601c54826121d89190612c34565b6121e29190612c4b565b60145f8282546121f29190612c6a565b9091555050601a54601d546122079083612c34565b6122119190612c4b565b60155f8282546122219190612c6a565b9091555050601a54601b546122369083612c34565b6122409190612c4b565b60135f8282546122509190612c6a565b909155506123329050565b6001600160a01b0387165f90815260208052604090205460ff16801561228257505f601654115b15612332576122a160646121bf6016548861294e90919063ffffffff16565b9050601654601854826122b49190612c34565b6122be9190612c4b565b60145f8282546122ce9190612c6a565b90915550506016546019546122e39083612c34565b6122ed9190612c4b565b60155f8282546122fd9190612c6a565b90915550506016546017546123129083612c34565b61231c9190612c4b565b60135f82825461232c9190612c6a565b90915550505b801561234357612343873083612557565b61234d8186612d16565b94505b61235b878787612557565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382165f818152602080526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061243a5761243a612d29565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612491573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124b59190612cfb565b816001815181106124c8576124c8612d29565b6001600160a01b0392831660209182029290920101526006546124ee91309116846119ef565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906125269085905f90869030904290600401612d3d565b5f604051808303815f87803b15801561253d575f5ffd5b505af115801561254f573d5f5f3e3d5ffd5b505050505050565b6001600160a01b0383166125bb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b79565b6001600160a01b03821661261d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b79565b6001600160a01b0383165f90815260208190526040902054818110156126945760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610b79565b6001600160a01b038085165f908152602081905260408082208585039055918516815290812080548492906126ca908490612c6a565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161271691815260200190565b60405180910390a350505050565b305f9081526020819052604081205490505f6015546013546014546127499190612c6a565b6127539190612c6a565b90505f821580612761575081155b1561276b57505050565b600b54612779906014612c34565b83111561279157600b5461278e906014612c34565b92505b5f600283601454866127a39190612c34565b6127ad9190612c4b565b6127b79190612c4b565b90505f6127c4858361296b565b9050476127d082612407565b5f6127db478361296b565b90505f6127f7876121bf6013548561294e90919063ffffffff16565b90505f612813886121bf6015548661294e90919063ffffffff16565b90505f816128218486612d16565b61282b9190612d16565b5f6014819055601381905560158190556009546040519293506001600160a01b031691849181818185875af1925050503d805f8114612885576040519150601f19603f3d011682016040523d82523d5f602084013e61288a565b606091505b5090985050861580159061289d57505f81115b156128f0576128ac8782612976565b601454604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6008546040516001600160a01b039091169047905f81818185875af1925050503d805f811461293a576040519150601f19603f3d011682016040523d82523d5f602084013e61293f565b606091505b50505050505050505050505050565b5f6129598284612c34565b9392505050565b5f6129598284612c4b565b5f6129598284612d16565b60065461298e9030906001600160a01b0316846119ef565b60065460405163f305d71960e01b8152306004820152602481018490525f60448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156129f9573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612a1e9190612dad565b5050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b038116811461130b575f5ffd5b5f5f60408385031215612a7f575f5ffd5b8235612a8a81612a5a565b946020939093013593505050565b5f60208284031215612aa8575f5ffd5b813561295981612a5a565b5f60208284031215612ac3575f5ffd5b5035919050565b5f5f5f60608486031215612adc575f5ffd5b8335612ae781612a5a565b92506020840135612af781612a5a565b929592945050506040919091013590565b5f5f60408385031215612b19575f5ffd5b8235612b2481612a5a565b91506020830135612b3481612a5a565b809150509250929050565b5f5f60408385031215612b50575f5ffd5b50508035926020909101359150565b801515811461130b575f5ffd5b5f5f60408385031215612b7d575f5ffd5b8235612b8881612a5a565b91506020830135612b3481612b5f565b5f60208284031215612ba8575f5ffd5b813561295981612b5f565b600181811c90821680612bc757607f821691505b602082108103612be557634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610b4957610b49612c20565b5f82612c6557634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115610b4957610b49612c20565b5f60208284031215612c8d575f5ffd5b5051919050565b5f60208284031215612ca4575f5ffd5b815161295981612b5f565b6020808252602c908201527f4d4156454e3a204d757374206b65657020666565732062656c6f77206f72206560408201526b7175616c206d61782066656560a01b606082015260800190565b5f60208284031215612d0b575f5ffd5b815161295981612a5a565b81810381811115610b4957610b49612c20565b634e487b7160e01b5f52603260045260245ffd5b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015612d8d5783516001600160a01b0316835260209384019390920191600101612d66565b50506001600160a01b039590951660608401525050608001529392505050565b5f5f5f60608486031215612dbf575f5ffd5b505081516020830151604090930151909492935091905056fea26469706673582212206b202c5ebaa6e6937aff4182903cc06996a7ec340002d9df736359e880d15b0b64736f6c634300081c00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572