0x6080604052600436106101b75760003560e01c80638da5cb5b116100ec578063bc197c811161008a578063e5975bdc11610064578063e5975bdc14610532578063f23a6e6114610552578063f2fde38b1461057e578063f84d87b91461059e57600080fd5b8063bc197c81146104b7578063ca75a48a146104e3578063db9132361461051257600080fd5b8063ac4316cb116100c6578063ac4316cb1461043a578063ac78bd891461044f578063b2f2b6f914610462578063b47d3f341461048a57600080fd5b80638da5cb5b146103dc57806393e30633146103fa578063a07481541461041a57600080fd5b806357d682c411610159578063715018a611610133578063715018a614610351578063737653cc1461036657806376bb032014610386578063868e5022146103c957600080fd5b806357d682c4146102da5780635e8e3127146102fa57806366d003ac1461031957600080fd5b80632d55feaf116101955780632d55feaf1461024c57806336bfc2641461026c57806339b522bb1461028c57806350ace9c2146102ac57600080fd5b806301ffc9a7146101bc578063150b7a02146101f157806325cea9761461022a575b600080fd5b3480156101c857600080fd5b506101dc6101d7366004613058565b6105e1565b60405190151581526020015b60405180910390f35b3480156101fd57600080fd5b5061021161020c3660046131ab565b610618565b6040516001600160e01b031990911681526020016101e8565b34801561023657600080fd5b5061024a610245366004613217565b610629565b005b34801561025857600080fd5b5061024a610267366004613230565b610690565b34801561027857600080fd5b5061024a610287366004613230565b6106b9565b34801561029857600080fd5b5061024a6102a736600461324d565b61074c565b3480156102b857600080fd5b506102cc6102c736600461326f565b6107da565b6040516101e892919061344b565b3480156102e657600080fd5b506102cc6102f536600461326f565b610da1565b34801561030657600080fd5b506009545b6040519081526020016101e8565b34801561032557600080fd5b50600454610339906001600160a01b031681565b6040516001600160a01b0390911681526020016101e8565b34801561035d57600080fd5b5061024a610f2e565b34801561037257600080fd5b5061024a610381366004613217565b610f42565b34801561039257600080fd5b5061030b6103a136600461326f565b6000918252600c602090815260408084206001600160a01b0393909316845291905290205490565b6102cc6103d7366004613577565b610fab565b3480156103e857600080fd5b506001546001600160a01b0316610339565b34801561040657600080fd5b5061024a610415366004613230565b611334565b34801561042657600080fd5b506101dc610435366004613230565b6113d3565b34801561044657600080fd5b5060065461030b565b6102cc61045d3660046136c7565b61140e565b34801561046e57600080fd5b50600754600854604080519283526020830191909152016101e8565b34801561049657600080fd5b506104aa6104a5366004613217565b6118c2565b6040516101e89190613722565b3480156104c357600080fd5b506102116104d2366004613735565b63bc197c8160e01b95945050505050565b3480156104ef57600080fd5b506105036104fe3660046137e3565b611ad9565b6040516101e893929190613821565b34801561051e57600080fd5b5061024a61052d366004613230565b611ed5565b34801561053e57600080fd5b5061024a61054d366004613230565b611f71565b34801561055e57600080fd5b5061021161056d366004613856565b63f23a6e6160e01b95945050505050565b34801561058a57600080fd5b5061024a610599366004613230565b611f9d565b3480156105aa57600080fd5b5061030b6105b936600461326f565b6000918252600b602090815260408084206001600160a01b0393909316845291905290205490565b60006001600160e01b03198216630271189760e51b148061061257506301ffc9a760e01b6001600160e01b03198316145b92915050565b630a85bd0160e11b5b949350505050565b610632336113d3565b6106575760405162461bcd60e51b815260040161064e906138bf565b60405180910390fd5b6006805490829055604051829082907f536dc8089104385d58d048e1199ec65943c77c0d246fae7963bec4e247484c5590600090a35050565b610698612016565b6001600160a01b03166000908152600260205260409020805460ff19169055565b6106c2336113d3565b6106de5760405162461bcd60e51b815260040161064e906138bf565b6001600160a01b03811661072a5760405162461bcd60e51b8152602060048201526013602482015272544d3a2061646472657373206973207a65726f60681b604482015260640161064e565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b610755336113d3565b6107715760405162461bcd60e51b815260040161064e906138bf565b60075460085462015180610785818661391a565b600755610792818561391a565b600881905560075460408051868152602081018690527fa9a7c0e4f98e235c550d29e94c6baa75bfb66d1eb2265134824d6d7fc76d736c910160405180910390a35050505050565b60006107e4612f11565b3360009081526003602052604090205460ff166108135760405162461bcd60e51b815260040161064e90613939565b61081b612070565b600084815260056020526040902060018154610100900460ff1660048111156108465761084661329f565b146108935760405162461bcd60e51b815260206004820152601c60248201527f4f423a206f7264657220737461747573206973206e6f74206f70656e00000000604482015260640161064e565b42816008015410156108db5760405162461bcd60e51b815260206004820152601160248201527013d08e881bdc99195c88195e1c1a5c9959607a1b604482015260640161064e565b6000858152600c602090815260408083206001600160a01b03881684529091529020544211156109415760405162461bcd60e51b815260206004820152601160248201527013d08e881bd999995c88195e1c1a5c9959607a1b604482015260640161064e565b8054600182015460098301546005840154610970936001600160a01b03620100009091048116931691906120ca565b6109ac5760405162461bcd60e51b815260206004820152600d60248201526c27a11d103737ba1037bbb732b960991b604482015260640161064e565b60038181018054600180820183556000928352602080842090920180546001600160a01b0319166001600160a01b038a16908117909155898452600b8352604080852091855290835280842054600c8701805493840181558552929093200155825461040061ff0019821617845581516101e08101909252610bd7923092918591839160ff1690811115610a4257610a4261329f565b6003811115610a5357610a5361329f565b81528154602090910190610100900460ff166004811115610a7657610a7661329f565b6004811115610a8757610a8761329f565b815281546001600160a01b0362010000909104811660208084019190915260018401548216604080850191909152600285015490921660608401526003840180548351818402810184019094528084526080909401939091830182828015610b1857602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610afa575b50505050508152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a8201548152602001600b8201548152602001600c8201805480602002602001604051908101604052809291908181526020018280548015610bc057602002820191906000526020600020905b815481526020019060010190808311610bac575b5050505050815250506121d490919063ffffffff16565b604080516101e08101909152815460019183918290829060ff166003811115610c0257610c0261329f565b6003811115610c1357610c1361329f565b81528154602090910190610100900460ff166004811115610c3657610c3661329f565b6004811115610c4757610c4761329f565b815281546001600160a01b0362010000909104811660208084019190915260018401548216604080850191909152600285015490921660608401526003840180548351818402810184019094528084526080909401939091830182828015610cd857602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610cba575b50505050508152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a8201548152602001600b8201548152602001600c8201805480602002602001604051908101604052809291908181526020018280548015610d8057602002820191906000526020600020905b815481526020019060010190808311610d6c575b50505050508152505090509250925050610d9a6001600055565b9250929050565b6000610dab612f11565b3360009081526003602052604090205460ff16610dda5760405162461bcd60e51b815260040161064e90613939565b610de2612070565b600084815260056020526040902080546001600160a01b0385811662010000909204161415610eb45760018154610100900460ff166004811115610e2857610e2861329f565b1415610e4b57805461ff001916610200178155426007820155610bd7565b610bd7565b60048154610100900460ff166004811115610e6857610e6861329f565b1415610e7757610e46816122c0565b60405162461bcd60e51b815260206004820152601260248201527113d08e881a5b9d985b1a590818d85b98d95b60721b604482015260640161064e565b6000858152600b602090815260408083206001600160a01b038816845290915290205415610ee657610e46818561235d565b60405162461bcd60e51b815260206004820152601e60248201527f4f423a206e6569746865722073656c6c6572206e6f72206f6666657265720000604482015260640161064e565b610f36612016565b610f40600061242b565b565b610f4b336113d3565b610f675760405162461bcd60e51b815260040161064e906138bf565b600954610f77826201518061391a565b600981905560405182907f59881596f35a59e1a2aa4373e08d7f3c6ce57cb52938cebdfdf185983bd643e390600090a35050565b6000610fb5612f11565b3360009081526003602052604090205460ff16610fe45760405162461bcd60e51b815260040161064e90613939565b610fec612070565b600654836101800151101561105d5760405162461bcd60e51b815260206004820152603160248201527f4f423a207072696365206d757374206c6172676572207468616e206f7220657160448201527075616c206d696e696d756d20707269636560781b606482015260840161064e565b6007548361014001511015611084576007546110799042613965565b6101408401526110b7565b60085483610140015111156110a0576008546110799042613965565b4283610140018181516110b39190613965565b9052505b6110c08361247d565b60c083015160009081526005602052604080822081516101e081019092528054829060ff1660038111156110f6576110f661329f565b60038111156111075761110761329f565b81528154602090910190610100900460ff16600481111561112a5761112a61329f565b600481111561113b5761113b61329f565b815281546001600160a01b03620100009091048116602080840191909152600184015482166040808501919091526002850154909216606084015260038401805483518184028101840190945280845260809094019390918301828280156111cc57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116111ae575b50505050508152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a8201548152602001600b8201548152602001600c820180548060200260200160405190810160405280929190818152602001828054801561127457602002820191906000526020600020905b815481526020019060010190808311611260575b505050505081525050905080606001516001600160a01b031681604001516001600160a01b03168260c001517f777139c6c01391d6f47246af5e75f8cbff7643a93dbb97507efe052846bfb9ee84608001518560e001518661010001518761016001518861018001516040516113179594939291906001600160a01b03959095168552602085019390935260408401919091526060830152608082015260a00190565b60405180910390a460019250905061132f6001600055565b915091565b61133d336113d3565b6113595760405162461bcd60e51b815260040161064e906138bf565b6001600160a01b0381166113af5760405162461bcd60e51b815260206004820152601a60248201527f4f423a206d61726b65742061646472657373206973207a65726f000000000000604482015260640161064e565b6001600160a01b03166000908152600360205260409020805460ff19166001179055565b6001600160a01b03811660009081526002602052604081205460ff161515600114806106125750506001546001600160a01b03163314919050565b6000611418612f11565b3360009081526003602052604090205460ff166114475760405162461bcd60e51b815260040161064e90613939565b61144f612070565b600087815260056020526040902060018154610100900460ff16600481111561147a5761147a61329f565b14806114a0575060048154610100900460ff16600481111561149e5761149e61329f565b145b6114ec5760405162461bcd60e51b815260206004820152601c60248201527f4f423a206f7264657220737461747573206973206e6f74206f70656e00000000604482015260640161064e565b80546001600160a01b038781166201000090920416141561154f5760405162461bcd60e51b815260206004820152601b60248201527f4f423a2063616e206e6f74206f6666657220796f75722073656c660000000000604482015260640161064e565b42816008015410156115975760405162461bcd60e51b815260206004820152601160248201527013d08e881bdc99195c88195e1c1a5c9959607a1b604482015260640161064e565b60048101546000908152600b602090815260408083206001600160a01b038a168452909152812080548792906115ce908490613965565b9091555050600a81015460048201546000908152600b602090815260408083206001600160a01b038b16845290915290205410156116475760405162461bcd60e51b81526020600482015260166024820152754f423a20696e73756666696369656e7420707269636560501b604482015260640161064e565b6000600954426116579190613965565b9050816008015481111561166f578160080154611671565b805b60048301546000908152600c602090815260408083206001600160a01b03808d16855292529091209190915560028301546116af91168930896126cb565b85876001600160a01b03168a7f197e3ff891614693f4aaee025ff748a36e322b9c7b3a8001c8562017ce29ce78426040516116ec91815260200190565b60405180910390a4604080516101e08101909152825460019184918290829060ff16600381111561171f5761171f61329f565b60038111156117305761173061329f565b81528154602090910190610100900460ff1660048111156117535761175361329f565b60048111156117645761176461329f565b815281546001600160a01b03620100009091048116602080840191909152600184015482166040808501919091526002850154909216606084015260038401805483518184028101840190945280845260809094019390918301828280156117f557602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116117d7575b50505050508152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a8201548152602001600b8201548152602001600c820180548060200260200160405190810160405280929190818152602001828054801561189d57602002820191906000526020600020905b815481526020019060010190808311611889575b50505050508152505090509350935050506118b86001600055565b9550959350505050565b6118ca612f11565b60008281526005602052604080822081516101e081019092528054829060ff1660038111156118fb576118fb61329f565b600381111561190c5761190c61329f565b81528154602090910190610100900460ff16600481111561192f5761192f61329f565b60048111156119405761194061329f565b815281546001600160a01b03620100009091048116602080840191909152600184015482166040808501919091526002850154909216606084015260038401805483518184028101840190945280845260809094019390918301828280156119d157602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116119b3575b50505050508152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a8201548152602001600b8201548152602001600c8201805480602002602001604051908101604052809291908181526020018280548015611a7957602002820191906000526020600020905b815481526020019060010190808311611a65575b5050509190925250505060608101519091506001600160a01b03166106125760405162461bcd60e51b815260206004820152601660248201527527a11d103737ba1032bc34b9ba34b7339037b93232b960511b604482015260640161064e565b600080611ae4612f11565b3360009081526003602052604090205460ff16611b135760405162461bcd60e51b815260040161064e90613939565b611b1b612070565b600086815260056020526040902060048154610100900460ff166004811115611b4657611b4661329f565b14611b8c5760405162461bcd60e51b815260206004820152601660248201527513d08e881bd999995c881b9bdd081858d8d95c1d195960521b604482015260640161064e565b600081600301600081548110611ba457611ba461397d565b6000918252602090912001546001600160a01b03908116915087168114611c0d5760405162461bcd60e51b815260206004820152601860248201527f4f423a206e6f74206163636570746564206f6666657265720000000000000000604482015260640161064e565b6002820154600c83018054611c46926001600160a01b03169190600090611c3657611c3661397d565b9060005260206000200154612736565b611c925760405162461bcd60e51b815260206004820152601760248201527f4f423a206e6f7420656e6f756768206d696e6572616c73000000000000000000604482015260640161064e565b600182015460098301546005840154611cb89230926001600160a01b03909116916120ca565b611cf85760405162461bcd60e51b815260206004820152601160248201527013d08e881b9bdd081bdddb9959081b999d607a1b604482015260640161064e565b611d038282886127c3565b604080516101e08101909152825460019183918591908290829060ff166003811115611d3157611d3161329f565b6003811115611d4257611d4261329f565b81528154602090910190610100900460ff166004811115611d6557611d6561329f565b6004811115611d7657611d7661329f565b815281546001600160a01b0362010000909104811660208084019190915260018401548216604080850191909152600285015490921660608401526003840180548351818402810184019094528084526080909401939091830182828015611e0757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611de9575b50505050508152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a8201548152602001600b8201548152602001600c8201805480602002602001604051908101604052809291908181526020018280548015611eaf57602002820191906000526020600020905b815481526020019060010190808311611e9b575b50505050508152505090509450945094505050611ecc6001600055565b93509350939050565b611ede336113d3565b611efa5760405162461bcd60e51b815260040161064e906138bf565b6001600160a01b038116611f505760405162461bcd60e51b815260206004820152601a60248201527f4f423a206d61726b65742061646472657373206973207a65726f000000000000604482015260640161064e565b6001600160a01b03166000908152600360205260409020805460ff19169055565b611f79612016565b6001600160a01b03166000908152600260205260409020805460ff19166001179055565b611fa5612016565b6001600160a01b03811661200a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161064e565b6120138161242b565b50565b6001546001600160a01b03163314610f405760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161064e565b600260005414156120c35760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161064e565b6002600055565b60006120d5846129b6565b15612159576040516331a9108f60e11b8152600481018490526001600160a01b038087169190861690636352211e90602401602060405180830381865afa158015612124573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121489190613993565b6001600160a01b0316149050610621565b604051627eeac760e11b81526001600160a01b0386811660048301526024820185905283919086169062fdd58e90604401602060405180830381865afa1580156121a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121cb91906139b0565b10159050610621565b60608201516121f3906001600160a01b0316636cdb3d1360e11b6129ce565b156122715781606001516001600160a01b031663f242432a8360400151838561016001518660e001516040518563ffffffff1660e01b815260040161223b94939291906139c9565b600060405180830381600087803b15801561225557600080fd5b505af1158015612269573d6000803e3d6000fd5b505050505050565b60608201516040808401516101608501519151632142170760e11b81526001600160a01b03918216600482015284821660248201526044810192909252909116906342842e0e9060640161223b565b806003018054806122d3576122d3613a01565b600082815260209020810160001990810180546001600160a01b0319169055019055600c810180548061230857612308613a01565b600082815260208120820160001990810191909155019055805461ff00191661010017808255600182015460098301546005840154612013936001600160a01b039384169330936201000090920416916129f1565b6004808301546000818152600b602090815260408083206001600160a01b038716808552908352818420805490859055858552600c8452828520918552925282209190915590918454610100900460ff1660048111156123bf576123bf61329f565b1480156123fe5750826001600160a01b0316846003016000815481106123e7576123e761397d565b6000918252602090912001546001600160a01b0316145b1561240c5761240c846122c0565b6002840154612425906001600160a01b03168483612ae9565b50505050565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b606080604051806101e0016040528060038081111561249e5761249e61329f565b81526020016001815260200184604001516001600160a01b0316815260200184606001516001600160a01b0316815260200184608001516001600160a01b031681526020018381526020018460c0015181526020018460e001518152602001428152602001600081526020018461014001518152602001846101600151815260200184610180015181526020016000815260200182815250600560008560c00151815260200190815260200160002060008201518160000160006101000a81548160ff021916908360038111156125775761257761329f565b021790555060208201518154829061ff00191661010083600481111561259f5761259f61329f565b0217905550604082015181546001600160a01b03918216620100000262010000600160b01b031990911617825560608301516001830180549183166001600160a01b0319928316179055608084015160028401805491909316911617905560a08201518051612618916003840191602090910190612fa3565b5060c0820151600482015560e082015160058201556101008201516006820155610120820151600782015561014082015160088201556101608201516009820155610180820151600a8201556101a0820151600b8201556101c0820151805161268b91600c840191602090910190613008565b5050506040808401516001600160a01b03166000908152600a602090815291812060c0909501518554600181018755958252919020909301929092555050565b6040516001600160a01b03808516602483015283166044820152606481018290526124259085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612bb3565b6000806001600160a01b03841661274e5750476127b9565b6040516370a0823160e01b81523060048201526001600160a01b038516906370a0823190602401602060405180830381865afa158015612792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127b691906139b0565b90505b9091111592915050565b825461ff0019166103001783554260088401556004830154600c840180546000919082906127f3576127f361397d565b6000918252602080832090910154600a8801819055848352600b825260408084206001600160a01b03808a16808752918552828620869055878652600c855282862091865293528084208490556004805460018b0154925163e7dce61560e01b815293965085949081169363e7dce61593612873939216918a9101613a17565b600060405180830381865afa158015612890573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128b89190810190613a9f565b905060005b815151811015612958576000612710836020015183815181106128e2576128e261397d565b6020026020010151866128f5919061391a565b6128ff9190613b8d565b905061290b8185613965565b60028a015484518051929650612945926001600160a01b0390921691859081106129375761293761397d565b602002602001015183612ae9565b508061295081613baf565b9150506128bd565b5060028701548754612986916001600160a01b0390811691620100009004166129818587613bca565b612ae9565b6001870154600988015460058901546129ad926001600160a01b03169130918a91906129f1565b50505050505050565b60006106126001600160a01b0383166380ac58cd60e01b5b60006129d983612c85565b80156129ea57506129ea8383612cb8565b9392505050565b6129fa85612da5565b80612a095750612a09856129b6565b15612a7d57604051632142170760e11b81526001600160a01b0385811660048301528481166024830152604482018490528616906342842e0e90606401600060405180830381600087803b158015612a6057600080fd5b505af1158015612a74573d6000803e3d6000fd5b50505050612ae2565b604051637921219560e11b81526001600160a01b0386169063f242432a90612aaf9087908790879087906004016139c9565b600060405180830381600087803b158015612ac957600080fd5b505af1158015612add573d6000803e3d6000fd5b505050505b5050505050565b6001600160a01b038316612b9a576000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612b44576040519150601f19603f3d011682016040523d82523d6000602084013e612b49565b606091505b50509050806124255760405162461bcd60e51b815260206004820152601860248201527f4f423a20636f696e206e6f74207472616e736665727265640000000000000000604482015260640161064e565b612bae6001600160a01b0384168383612dc1565b505050565b6000612c08826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612df19092919063ffffffff16565b805190915015612bae5780806020019051810190612c269190613be1565b612bae5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161064e565b6000612c98826301ffc9a760e01b612cb8565b80156106125750612cb1826001600160e01b0319612cb8565b1592915050565b604080516001600160e01b0319831660248083019190915282518083039091018152604490910182526020810180516001600160e01b03166301ffc9a760e01b179052905160009190829081906001600160a01b0387169061753090612d1f908690613c2f565b6000604051808303818686fa925050503d8060008114612d5b576040519150601f19603f3d011682016040523d82523d6000602084013e612d60565b606091505b5091509150602081511015612d7b5760009350505050610612565b818015612d9b5750600081806020019051810190612d9991906139b0565b115b9695505050505050565b60006106126001600160a01b038316634a76e0f760e11b6129ce565b6040516001600160a01b038316602482015260448101829052612bae90849063a9059cbb60e01b906064016126ff565b6060610621848460008585600080866001600160a01b03168587604051612e189190613c2f565b60006040518083038185875af1925050503d8060008114612e55576040519150601f19603f3d011682016040523d82523d6000602084013e612e5a565b606091505b5091509150612e6b87838387612e76565b979650505050505050565b60608315612ee2578251612edb576001600160a01b0385163b612edb5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161064e565b5081610621565b6106218383815115612ef75781518083602001fd5b8060405162461bcd60e51b815260040161064e9190613c4b565b604080516101e0810190915280600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b03168152602001606081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001606081525090565b828054828255906000526020600020908101928215612ff8579160200282015b82811115612ff857825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612fc3565b50613004929150613043565b5090565b828054828255906000526020600020908101928215612ff8579160200282015b82811115612ff8578251825591602001919060010190613028565b5b808211156130045760008155600101613044565b60006020828403121561306a57600080fd5b81356001600160e01b0319811681146129ea57600080fd5b6001600160a01b038116811461201357600080fd5b80356130a281613082565b919050565b634e487b7160e01b600052604160045260246000fd5b6040516101e0810167ffffffffffffffff811182821017156130e1576130e16130a7565b60405290565b6040805190810167ffffffffffffffff811182821017156130e1576130e16130a7565b604051601f8201601f1916810167ffffffffffffffff81118282101715613133576131336130a7565b604052919050565b600082601f83011261314c57600080fd5b813567ffffffffffffffff811115613166576131666130a7565b613179601f8201601f191660200161310a565b81815284602083860101111561318e57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080608085870312156131c157600080fd5b84356131cc81613082565b935060208501356131dc81613082565b925060408501359150606085013567ffffffffffffffff8111156131ff57600080fd5b61320b8782880161313b565b91505092959194509250565b60006020828403121561322957600080fd5b5035919050565b60006020828403121561324257600080fd5b81356129ea81613082565b6000806040838503121561326057600080fd5b50508035926020909101359150565b6000806040838503121561328257600080fd5b82359150602083013561329481613082565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b600481106132c5576132c561329f565b9052565b600581106132c5576132c561329f565b600081518084526020808501945080840160005b838110156133125781516001600160a01b0316875295820195908201906001016132ed565b509495945050505050565b600081518084526020808501945080840160005b8381101561331257815187529582019590820190600101613331565b60006101e061335d8484516132b5565b602083015161336f60208601826132c9565b50604083015161338a60408601826001600160a01b03169052565b5060608301516133a560608601826001600160a01b03169052565b5060808301516133c060808601826001600160a01b03169052565b5060a08301518160a08601526133d8828601826132d9565b60c0858101519087015260e08086015190870152610100808601519087015261012080860151908701526101408086015190870152610160808601519087015261018080860151908701526101a080860151908701526101c080860151878303828901529193509150612d9b838261331d565b8215158152604060208201526000610621604083018461334d565b8035600481106130a257600080fd5b8035600581106130a257600080fd5b600067ffffffffffffffff82111561349e5761349e6130a7565b5060051b60200190565b600082601f8301126134b957600080fd5b813560206134ce6134c983613484565b61310a565b82815260059290921b840181019181810190868411156134ed57600080fd5b8286015b8481101561351157803561350481613082565b83529183019183016134f1565b509695505050505050565b600082601f83011261352d57600080fd5b8135602061353d6134c983613484565b82815260059290921b8401810191818101908684111561355c57600080fd5b8286015b848110156135115780358352918301918301613560565b60006020828403121561358957600080fd5b813567ffffffffffffffff808211156135a157600080fd5b908301906101e082860312156135b657600080fd5b6135be6130bd565b6135c783613466565b81526135d560208401613475565b60208201526135e660408401613097565b60408201526135f760608401613097565b606082015261360860808401613097565b608082015260a08301358281111561361f57600080fd5b61362b878286016134a8565b60a08301525060c0838101359082015260e08084013590820152610100808401359082015261012080840135908201526101408084013590820152610160808401359082015261018080840135908201526101a080840135908201526101c0808401358381111561369b57600080fd5b6136a78882870161351c565b918301919091525095945050505050565b8035600281106130a257600080fd5b600080600080600060a086880312156136df57600080fd5b8535945060208601356136f181613082565b9350604086013561370181613082565b925060608601359150613716608087016136b8565b90509295509295909350565b6020815260006129ea602083018461334d565b600080600080600060a0868803121561374d57600080fd5b853561375881613082565b9450602086013561376881613082565b9350604086013567ffffffffffffffff8082111561378557600080fd5b61379189838a0161351c565b945060608801359150808211156137a757600080fd5b6137b389838a0161351c565b935060808801359150808211156137c957600080fd5b506137d68882890161313b565b9150509295509295909350565b6000806000606084860312156137f857600080fd5b83359250602084013561380a81613082565b9150613818604085016136b8565b90509250925092565b83151581526001600160a01b038316602082015260606040820181905260009061384d9083018461334d565b95945050505050565b600080600080600060a0868803121561386e57600080fd5b853561387981613082565b9450602086013561388981613082565b93506040860135925060608601359150608086013567ffffffffffffffff8111156138b357600080fd5b6137d68882890161313b565b60208082526025908201527f456469746f72526f6c65203a206d73672073656e646572206973206e6f7420656040820152643234ba37b960d91b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561393457613934613904565b500290565b60208082526012908201527113d08e881a5b9d985b1a59081b585c9ad95d60721b604082015260600190565b6000821982111561397857613978613904565b500190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156139a557600080fd5b81516129ea81613082565b6000602082840312156139c257600080fd5b5051919050565b6001600160a01b0394851681529290931660208301526040820152606081019190915260a06080820181905260009082015260c00190565b634e487b7160e01b600052603160045260246000fd5b6001600160a01b03831681526040810160028310613a3757613a3761329f565b8260208301529392505050565b600082601f830112613a5557600080fd5b81516020613a656134c983613484565b82815260059290921b84018101918181019086841115613a8457600080fd5b8286015b848110156135115780518352918301918301613a88565b60006020808385031215613ab257600080fd5b825167ffffffffffffffff80821115613aca57600080fd5b9084019060408287031215613ade57600080fd5b613ae66130e7565b825182811115613af557600080fd5b8301601f81018813613b0657600080fd5b8051613b146134c982613484565b81815260059190911b8201860190868101908a831115613b3357600080fd5b928701925b82841015613b5a578351613b4b81613082565b82529287019290870190613b38565b84525050508284015182811115613b7057600080fd5b613b7c88828601613a44565b948201949094529695505050505050565b600082613baa57634e487b7160e01b600052601260045260246000fd5b500490565b6000600019821415613bc357613bc3613904565b5060010190565b600082821015613bdc57613bdc613904565b500390565b600060208284031215613bf357600080fd5b815180151581146129ea57600080fd5b60005b83811015613c1e578181015183820152602001613c06565b838111156124255750506000910152565b60008251613c41818460208701613c03565b9190910192915050565b6020815260008251806020840152613c6a816040850160208701613c03565b601f01601f1916919091016040019291505056fea264697066735822122079804dea69891b2d09b8febf4da7744556f44b94243d337a0aeaa9e51bd23d0c64736f6c634300080a0033