60806040527308af924e727eda4999d141ecdc43d327b76ec45a600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060036009556003600a5569152d02c7e14af6800000600d5561dead600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620000c157600080fd5b506040518060400160405280600781526020017f52616964426f74000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f524149440000000000000000000000000000000000000000000000000000000081525081600390816200013f919062000d89565b50806004908162000151919062000d89565b505050600062000166620006e960201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000292919062000eda565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000320919062000eda565b6040518363ffffffff1660e01b81526004016200033f92919062000f1d565b6020604051808303816000875af11580156200035f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000385919062000eda565b905081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200045e30600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620006f160201b60201c565b62000493600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620008c260201b60201c565b600160106000620004a96200096360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600069d3c21bcecceda1000000905062000676620006696200096360201b60201c565b826200098d60201b60201c565b61271060058262000688919062000f79565b62000694919062000ff3565b600f819055506064600282620006ab919062000f79565b620006b7919062000ff3565b6006819055506064600282620006ce919062000f79565b620006da919062000ff3565b60078190555050505062001247565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000763576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200075a90620010b2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620007d5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007cc906200114a565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051620008b591906200117d565b60405180910390a3505050565b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620009ff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009f690620011ea565b60405180910390fd5b62000a136000838362000b0560201b60201c565b806002600082825462000a2791906200120c565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000a7e91906200120c565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000ae591906200117d565b60405180910390a362000b016000838362000b0a60201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000b9157607f821691505b60208210810362000ba75762000ba662000b49565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000c117fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000bd2565b62000c1d868362000bd2565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000c6a62000c6462000c5e8462000c35565b62000c3f565b62000c35565b9050919050565b6000819050919050565b62000c868362000c49565b62000c9e62000c958262000c71565b84845462000bdf565b825550505050565b600090565b62000cb562000ca6565b62000cc281848462000c7b565b505050565b5b8181101562000cea5762000cde60008262000cab565b60018101905062000cc8565b5050565b601f82111562000d395762000d038162000bad565b62000d0e8462000bc2565b8101602085101562000d1e578190505b62000d3662000d2d8562000bc2565b83018262000cc7565b50505b505050565b600082821c905092915050565b600062000d5e6000198460080262000d3e565b1980831691505092915050565b600062000d79838362000d4b565b9150826002028217905092915050565b62000d948262000b0f565b67ffffffffffffffff81111562000db05762000daf62000b1a565b5b62000dbc825462000b78565b62000dc982828562000cee565b600060209050601f83116001811462000e01576000841562000dec578287015190505b62000df8858262000d6b565b86555062000e68565b601f19841662000e118662000bad565b60005b8281101562000e3b5784890151825560018201915060208501945060208101905062000e14565b8683101562000e5b578489015162000e57601f89168262000d4b565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ea28262000e75565b9050919050565b62000eb48162000e95565b811462000ec057600080fd5b50565b60008151905062000ed48162000ea9565b92915050565b60006020828403121562000ef35762000ef262000e70565b5b600062000f038482850162000ec3565b91505092915050565b62000f178162000e95565b82525050565b600060408201905062000f34600083018562000f0c565b62000f43602083018462000f0c565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000f868262000c35565b915062000f938362000c35565b925082820262000fa38162000c35565b9150828204841483151762000fbd5762000fbc62000f4a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620010008262000c35565b91506200100d8362000c35565b92508262001020576200101f62000fc4565b5b828204905092915050565b600082825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006200109a6024836200102b565b9150620010a7826200103c565b604082019050919050565b60006020820190508181036000830152620010cd816200108b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000620011326022836200102b565b91506200113f82620010d4565b604082019050919050565b60006020820190508181036000830152620011658162001123565b9050919050565b620011778162000c35565b82525050565b60006020820190506200119460008301846200116c565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620011d2601f836200102b565b9150620011df826200119a565b602082019050919050565b600060208201905081810360008301526200120581620011c3565b9050919050565b6000620012198262000c35565b9150620012268362000c35565b925082820190508082111562001241576200124062000f4a565b5b92915050565b613b8180620012576000396000f3fe6080604052600436106101e75760003560e01c80638da5cb5b11610102578063b62496f511610095578063dd62ed3e11610064578063dd62ed3e14610715578063e2f4560514610752578063f2fde38b1461077d578063f8b45b05146107a6576101ee565b8063b62496f51461065b578063c024666814610698578063c18bc195146106c1578063c8c8ebe4146106ea576101ee565b8063a457c2d7116100d1578063a457c2d71461058f578063a9059cbb146105cc578063aacebbe314610609578063afa4f3b214610632576101ee565b80638da5cb5b146104e5578063921369131461051057806395d89b411461053b5780639a7a23d614610566576101ee565b80634fbee1931161017a57806370a082311161014957806370a082311461043b578063715018a61461047857806375f0a8741461048f5780637bce5a04146104ba576101ee565b80634fbee193146103815780634ffe14ab146103be5780636256d181146103e75780636a01f09c14610410576101ee565b806323b872dd116101b657806323b872dd146102b1578063313ce567146102ee578063395093511461031957806349bd5a5e14610356576101ee565b806306fdde03146101f3578063095ea7b31461021e5780631694505e1461025b57806318160ddd14610286576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b506102086107d1565b60405161021591906129af565b60405180910390f35b34801561022a57600080fd5b5061024560048036038101906102409190612a6a565b610863565b6040516102529190612ac5565b60405180910390f35b34801561026757600080fd5b50610270610881565b60405161027d9190612b3f565b60405180910390f35b34801561029257600080fd5b5061029b6108a7565b6040516102a89190612b69565b60405180910390f35b3480156102bd57600080fd5b506102d860048036038101906102d39190612b84565b6108b1565b6040516102e59190612ac5565b60405180910390f35b3480156102fa57600080fd5b506103036109d0565b6040516103109190612bf3565b60405180910390f35b34801561032557600080fd5b50610340600480360381019061033b9190612a6a565b6109d9565b60405161034d9190612ac5565b60405180910390f35b34801561036257600080fd5b5061036b610a85565b6040516103789190612c1d565b60405180910390f35b34801561038d57600080fd5b506103a860048036038101906103a39190612c38565b610aab565b6040516103b59190612ac5565b60405180910390f35b3480156103ca57600080fd5b506103e560048036038101906103e09190612c65565b610b01565b005b3480156103f357600080fd5b5061040e60048036038101906104099190612ca5565b610c6f565b005b34801561041c57600080fd5b50610425610d2e565b6040516104329190612b69565b60405180910390f35b34801561044757600080fd5b50610462600480360381019061045d9190612c38565b610d34565b60405161046f9190612b69565b60405180910390f35b34801561048457600080fd5b5061048d610d7c565b005b34801561049b57600080fd5b506104a4610ed4565b6040516104b19190612c1d565b60405180910390f35b3480156104c657600080fd5b506104cf610efa565b6040516104dc9190612b69565b60405180910390f35b3480156104f157600080fd5b506104fa610f00565b6040516105079190612c1d565b60405180910390f35b34801561051c57600080fd5b50610525610f2a565b6040516105329190612b69565b60405180910390f35b34801561054757600080fd5b50610550610f30565b60405161055d91906129af565b60405180910390f35b34801561057257600080fd5b5061058d60048036038101906105889190612cfe565b610fc2565b005b34801561059b57600080fd5b506105b660048036038101906105b19190612a6a565b6110f7565b6040516105c39190612ac5565b60405180910390f35b3480156105d857600080fd5b506105f360048036038101906105ee9190612a6a565b6111e2565b6040516106009190612ac5565b60405180910390f35b34801561061557600080fd5b50610630600480360381019061062b9190612c38565b611200565b005b34801561063e57600080fd5b5061065960048036038101906106549190612ca5565b6113ba565b005b34801561066757600080fd5b50610682600480360381019061067d9190612c38565b611492565b60405161068f9190612ac5565b60405180910390f35b3480156106a457600080fd5b506106bf60048036038101906106ba9190612cfe565b6114b2565b005b3480156106cd57600080fd5b506106e860048036038101906106e39190612ca5565b611684565b005b3480156106f657600080fd5b506106ff611743565b60405161070c9190612b69565b60405180910390f35b34801561072157600080fd5b5061073c60048036038101906107379190612d3e565b611749565b6040516107499190612b69565b60405180910390f35b34801561075e57600080fd5b506107676117d0565b6040516107749190612b69565b60405180910390f35b34801561078957600080fd5b506107a4600480360381019061079f9190612c38565b6117d6565b005b3480156107b257600080fd5b506107bb61199c565b6040516107c89190612b69565b60405180910390f35b6060600380546107e090612dad565b80601f016020809104026020016040519081016040528092919081815260200182805461080c90612dad565b80156108595780601f1061082e57610100808354040283529160200191610859565b820191906000526020600020905b81548152906001019060200180831161083c57829003601f168201915b5050505050905090565b60006108776108706119a2565b84846119aa565b6001905092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108fd6119a2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146109b957828110156109a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099b90612e50565b60405180910390fd5b6109b8856109b06119a2565b8584036119aa565b5b6109c4858585611b73565b60019150509392505050565b60006012905090565b6000610a7b6109e66119a2565b8484600160006109f46119a2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a769190612e9f565b6119aa565b6001905092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610b096119a2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8f90612f1f565b60405180910390fd5b600f821115610bdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd390612fb1565b60405180910390fd5b600f811115610c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1790613043565b60405180910390fd5b8160098190555080600a819055507f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a1600954600a54604051610c63929190613063565b60405180910390a15050565b610c776119a2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfd90612f1f565b60405180910390fd5b670de0b6b3a76400008082610d1b919061308c565b610d259190612e9f565b60068190555050565b600d5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d846119a2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0a90612f1f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600a5481565b606060048054610f3f90612dad565b80601f0160208091040260200160405190810160405280929190818152602001828054610f6b90612dad565b8015610fb85780601f10610f8d57610100808354040283529160200191610fb8565b820191906000526020600020905b815481529060010190602001808311610f9b57829003601f168201915b5050505050905090565b610fca6119a2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611059576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105090612f1f565b60405180910390fd5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e090613140565b60405180910390fd5b6110f3828261226f565b5050565b600080600160006111066119a2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156111c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ba906131d2565b60405180910390fd5b6111d76111ce6119a2565b858584036119aa565b600191505092915050565b60006111f66111ef6119a2565b8484611b73565b6001905092915050565b6112086119a2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128e90612f1f565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160106000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd1a6f806ccf6e5a2241d358891af2601bbf89feaad0fb4a891c9fbde2933761960405160405180910390a250565b6113c26119a2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611451576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144890612f1f565b60405180910390fd5b80600f819055507fcba17309eff0b14bb89cad72aef8b308a23d698dfff957e2255d17bbc03620bd816040516114879190612b69565b60405180910390a150565b60116020528060005260406000206000915054906101000a900460ff1681565b6114ba6119a2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611549576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154090612f1f565b60405180910390fd5b801515601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036115db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d290613264565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516116789190612ac5565b60405180910390a25050565b61168c6119a2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461171b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171290612f1f565b60405180910390fd5b670de0b6b3a76400008082611730919061308c565b61173a9190612e9f565b60078190555050565b60065481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600f5481565b6117de6119a2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461186d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186490612f1f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d3906132f6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60075481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1090613388565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7f9061341a565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b669190612b69565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611be2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd9906134ac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c489061353e565b60405180910390fd5b60008103611c6a57611c6583836000612310565b61226a565b611c72610f00565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ce05750611cb0610f00565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611d195750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611d53575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611d6c5750600e60149054906101000a900460ff16155b15611fab57601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611e145750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ebb57600654811115611e5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e55906135d0565b60405180910390fd5b600754611e6a83610d34565b82611e759190612e9f565b1115611eb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ead9061363c565b60405180910390fd5b611faa565b601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611f5e5750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611fa957600654811115611fa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9f906136ce565b60405180910390fd5b5b5b5b6000611fb630610d34565b90506000600f548210159050808015611fdc5750600e60149054906101000a900460ff16155b80156120355750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b1561207c576001600e60146101000a81548160ff021916908315150217905550612060600d5461258f565b6000600e60146101000a81548160ff0219169083151502179055505b6000600e60149054906101000a900460ff16159050601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121325750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561213c57600090505b801561225b576000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16036121ba576064600954866121a9919061308c565b6121b3919061371d565b9050612236565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603612230576064600a548661221f919061308c565b612229919061371d565b9050612235565b600090505b5b8085612242919061374e565b9450600081111561225957612258873083612310565b5b505b612266868686612310565b5050505b505050565b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361237f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612376906134ac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e59061353e565b60405180910390fd5b6123f9838383612821565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561247f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612476906137f4565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125129190612e9f565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125769190612b69565b60405180910390a3612589848484612826565b50505050565b60004790506000600267ffffffffffffffff8111156125b1576125b0613814565b5b6040519080825280602002602001820160405280156125df5781602001602082028036833780820191505090505b50905030816000815181106125f7576125f6613843565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561269e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126c29190613887565b816001815181106126d6576126d5613843565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b81526004016127749594939291906139ad565b600060405180830381600087803b15801561278e57600080fd5b505af11580156127a2573d6000803e3d6000fd5b50505050600082476127b4919061374e565b90506127e2600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261282b565b7f54c5e193a68e36b996e0c85b164c5953625d951c488fbad0e67aa32e1c45307b8482604051612813929190613063565b60405180910390a150505050565b505050565b505050565b8047101561286e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286590613a53565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405161289490613aa4565b60006040518083038185875af1925050503d80600081146128d1576040519150601f19603f3d011682016040523d82523d6000602084013e6128d6565b606091505b505090508061291a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291190613b2b565b60405180910390fd5b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561295957808201518184015260208101905061293e565b60008484015250505050565b6000601f19601f8301169050919050565b60006129818261291f565b61298b818561292a565b935061299b81856020860161293b565b6129a481612965565b840191505092915050565b600060208201905081810360008301526129c98184612976565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a01826129d6565b9050919050565b612a11816129f6565b8114612a1c57600080fd5b50565b600081359050612a2e81612a08565b92915050565b6000819050919050565b612a4781612a34565b8114612a5257600080fd5b50565b600081359050612a6481612a3e565b92915050565b60008060408385031215612a8157612a806129d1565b5b6000612a8f85828601612a1f565b9250506020612aa085828601612a55565b9150509250929050565b60008115159050919050565b612abf81612aaa565b82525050565b6000602082019050612ada6000830184612ab6565b92915050565b6000819050919050565b6000612b05612b00612afb846129d6565b612ae0565b6129d6565b9050919050565b6000612b1782612aea565b9050919050565b6000612b2982612b0c565b9050919050565b612b3981612b1e565b82525050565b6000602082019050612b546000830184612b30565b92915050565b612b6381612a34565b82525050565b6000602082019050612b7e6000830184612b5a565b92915050565b600080600060608486031215612b9d57612b9c6129d1565b5b6000612bab86828701612a1f565b9350506020612bbc86828701612a1f565b9250506040612bcd86828701612a55565b9150509250925092565b600060ff82169050919050565b612bed81612bd7565b82525050565b6000602082019050612c086000830184612be4565b92915050565b612c17816129f6565b82525050565b6000602082019050612c326000830184612c0e565b92915050565b600060208284031215612c4e57612c4d6129d1565b5b6000612c5c84828501612a1f565b91505092915050565b60008060408385031215612c7c57612c7b6129d1565b5b6000612c8a85828601612a55565b9250506020612c9b85828601612a55565b9150509250929050565b600060208284031215612cbb57612cba6129d1565b5b6000612cc984828501612a55565b91505092915050565b612cdb81612aaa565b8114612ce657600080fd5b50565b600081359050612cf881612cd2565b92915050565b60008060408385031215612d1557612d146129d1565b5b6000612d2385828601612a1f565b9250506020612d3485828601612ce9565b9150509250929050565b60008060408385031215612d5557612d546129d1565b5b6000612d6385828601612a1f565b9250506020612d7485828601612a1f565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612dc557607f821691505b602082108103612dd857612dd7612d7e565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612e3a60288361292a565b9150612e4582612dde565b604082019050919050565b60006020820190508181036000830152612e6981612e2d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612eaa82612a34565b9150612eb583612a34565b9250828201905080821115612ecd57612ecc612e70565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612f0960208361292a565b9150612f1482612ed3565b602082019050919050565b60006020820190508181036000830152612f3881612efc565b9050919050565b7f4d61726b6574696e6720666565206f6e206275792063616e6e6f74206265206d60008201527f6f7265207468616e203135250000000000000000000000000000000000000000602082015250565b6000612f9b602c8361292a565b9150612fa682612f3f565b604082019050919050565b60006020820190508181036000830152612fca81612f8e565b9050919050565b7f4d61726b6574696e6720666565206f6e2073656c6c2063616e6e6f742062652060008201527f6d6f7265207468616e2031352500000000000000000000000000000000000000602082015250565b600061302d602d8361292a565b915061303882612fd1565b604082019050919050565b6000602082019050818103600083015261305c81613020565b9050919050565b60006040820190506130786000830185612b5a565b6130856020830184612b5a565b9392505050565b600061309782612a34565b91506130a283612a34565b92508282026130b081612a34565b915082820484148315176130c7576130c6612e70565b5b5092915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061312a60398361292a565b9150613135826130ce565b604082019050919050565b600060208201905081810360008301526131598161311d565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006131bc60258361292a565b91506131c782613160565b604082019050919050565b600060208201905081810360008301526131eb816131af565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b600061324e602a8361292a565b9150613259826131f2565b604082019050919050565b6000602082019050818103600083015261327d81613241565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006132e060268361292a565b91506132eb82613284565b604082019050919050565b6000602082019050818103600083015261330f816132d3565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061337260248361292a565b915061337d82613316565b604082019050919050565b600060208201905081810360008301526133a181613365565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061340460228361292a565b915061340f826133a8565b604082019050919050565b60006020820190508181036000830152613433816133f7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061349660258361292a565b91506134a18261343a565b604082019050919050565b600060208201905081810360008301526134c581613489565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061352860238361292a565b9150613533826134cc565b604082019050919050565b600060208201905081810360008301526135578161351b565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006135ba60358361292a565b91506135c58261355e565b604082019050919050565b600060208201905081810360008301526135e9816135ad565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061362660138361292a565b9150613631826135f0565b602082019050919050565b6000602082019050818103600083015261365581613619565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006136b860368361292a565b91506136c38261365c565b604082019050919050565b600060208201905081810360008301526136e7816136ab565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061372882612a34565b915061373383612a34565b925082613743576137426136ee565b5b828204905092915050565b600061375982612a34565b915061376483612a34565b925082820390508181111561377c5761377b612e70565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006137de60268361292a565b91506137e982613782565b604082019050919050565b6000602082019050818103600083015261380d816137d1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061388181612a08565b92915050565b60006020828403121561389d5761389c6129d1565b5b60006138ab84828501613872565b91505092915050565b6000819050919050565b60006138d96138d46138cf846138b4565b612ae0565b612a34565b9050919050565b6138e9816138be565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613924816129f6565b82525050565b6000613936838361391b565b60208301905092915050565b6000602082019050919050565b600061395a826138ef565b61396481856138fa565b935061396f8361390b565b8060005b838110156139a0578151613987888261392a565b975061399283613942565b925050600181019050613973565b5085935050505092915050565b600060a0820190506139c26000830188612b5a565b6139cf60208301876138e0565b81810360408301526139e1818661394f565b90506139f06060830185612c0e565b6139fd6080830184612b5a565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000613a3d601d8361292a565b9150613a4882613a07565b602082019050919050565b60006020820190508181036000830152613a6c81613a30565b9050919050565b600081905092915050565b50565b6000613a8e600083613a73565b9150613a9982613a7e565b600082019050919050565b6000613aaf82613a81565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000613b15603a8361292a565b9150613b2082613ab9565b604082019050919050565b60006020820190508181036000830152613b4481613b08565b905091905056fea2646970667358221220d6589ae970ec589a56497465456e20f6057c8fe9212562192311358997191a6a64736f6c63430008130033