608060405234801562000010575f80fd5b50336040518060800160405280605581526020016200407e605591396200003d81620001c460201b60201c565b505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000b1575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000a8919062000d51565b60405180910390fd5b620000c281620001d960201b60201c565b505f61271062015f90424433604051602001620000e29392919062000de6565b604051602081830303815290604052805190602001205f1c62000106919062000e55565b62000112919062000eb9565b905062000125816200029c60201b60201c565b60405160200162000137919062000fb5565b604051602081830303815290604052600490816200015691906200122b565b5062000168816200029c60201b60201c565b6040516020016200017a919062000fb5565b604051602081830303815290604052600590816200019991906200122b565b50620001bd335f600160405180602001604052805f8152506200041360201b60201c565b506200174a565b8060029081620001d591906200122b565b5050565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60605f8203620002e4576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506200040e565b5f8290505f5b5f821462000319578080620002ff906200130f565b915050600a826200031191906200135b565b9150620002ea565b5f8167ffffffffffffffff81111562000337576200033662000fda565b5b6040519080825280601f01601f1916602001820160405280156200036a5781602001600182028036833780820191505090505b5090505f8290505b5f8614620004065760018162000389919062001392565b9050600a866200039a919062000e55565b6030620003a8919062000eb9565b60f81b828281518110620003c157620003c0620013cc565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600a86620003fe91906200135b565b955062000372565b819450505050505b919050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160362000486575f6040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016200047d919062000d51565b60405180910390fd5b5f806200049a8585620004bb60201b60201c565b91509150620004b35f87848487620004eb60201b60201c565b505050505050565b60608060405191506001825283602083015260408201905060018152826020820152604081016040529250929050565b620004ff85858585620005be60201b60201c565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614620005b7575f620005446200097860201b60201c565b905060018451036200059e575f620005665f866200097f60201b90919060201c565b90505f6200057e5f866200097f60201b90919060201c565b9050620005968389898585896200099260201b60201c565b5050620005b5565b620005b481878787878762000b5060201b60201c565b5b505b5050505050565b80518251146200060b57815181516040517f5b059991000000000000000000000000000000000000000000000000000000008152600401620006029291906200140a565b60405180910390fd5b5f6200061c6200097860201b60201c565b90505f5b83518110156200082d575f6200064082866200097f60201b90919060201c565b90505f6200065883866200097f60201b90919060201c565b90505f73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146200077f575f805f8481526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156200072b57888183856040517f03dee4c500000000000000000000000000000000000000000000000000000000815260040162000722949392919062001435565b60405180910390fd5b8181035f808581526020019081526020015f205f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16146200081757805f808481526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546200080f919062000eb9565b925050819055505b50508062000825906200130f565b905062000620565b506001835103620008f0575f6200084e5f856200097f60201b90919060201c565b90505f620008665f856200097f60201b90919060201c565b90508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628585604051620008e09291906200140a565b60405180910390a4505062000971565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb86866040516200096892919062001547565b60405180910390a45b5050505050565b5f33905090565b5f60208202602084010151905092915050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b111562000b48578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401620009f5959493929190620015ea565b6020604051808303815f875af192505050801562000a3357506040513d601f19601f8201168201806040525081019062000a309190620016aa565b60015b62000aba573d805f811462000a64576040519150601f19603f3d011682016040523d82523d5f602084013e62000a69565b606091505b505f81510362000ab257846040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040162000aa9919062000d51565b60405180910390fd5b805181602001fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161462000b4657846040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040162000b3d919062000d51565b60405180910390fd5b505b505050505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b111562000d06578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b815260040162000bb3959493929190620016da565b6020604051808303815f875af192505050801562000bf157506040513d601f19601f8201168201806040525081019062000bee9190620016aa565b60015b62000c78573d805f811462000c22576040519150601f19603f3d011682016040523d82523d5f602084013e62000c27565b606091505b505f81510362000c7057846040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040162000c67919062000d51565b60405180910390fd5b805181602001fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161462000d0457846040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040162000cfb919062000d51565b60405180910390fd5b505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000d398262000d0e565b9050919050565b62000d4b8162000d2d565b82525050565b5f60208201905062000d665f83018462000d40565b92915050565b5f819050919050565b5f819050919050565b62000d9362000d8d8262000d6c565b62000d75565b82525050565b5f8160601b9050919050565b5f62000db18262000d99565b9050919050565b5f62000dc48262000da5565b9050919050565b62000de062000dda8262000d2d565b62000db8565b82525050565b5f62000df3828662000d7e565b60208201915062000e05828562000d7e565b60208201915062000e17828462000dcb565b601482019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000e618262000d6c565b915062000e6e8362000d6c565b92508262000e815762000e8062000e28565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000ec58262000d6c565b915062000ed28362000d6c565b925082820190508082111562000eed5762000eec62000e8c565b5b92915050565b5f81905092915050565b7f215b215d212023000000000000000000000000000000000000000000000000005f82015250565b5f62000f3360078362000ef3565b915062000f408262000efd565b600782019050919050565b5f81519050919050565b5f5b8381101562000f7457808201518184015260208101905062000f57565b5f8484015250505050565b5f62000f8b8262000f4b565b62000f97818562000ef3565b935062000fa981856020860162000f55565b80840191505092915050565b5f62000fc18262000f25565b915062000fcf828462000f7f565b915081905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200104c57607f821691505b60208210810362001062576200106162001007565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620010c67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262001089565b620010d2868362001089565b95508019841693508086168417925050509392505050565b5f819050919050565b5f620011136200110d620011078462000d6c565b620010ea565b62000d6c565b9050919050565b5f819050919050565b6200112e83620010f3565b620011466200113d826200111a565b84845462001095565b825550505050565b5f90565b6200115c6200114e565b6200116981848462001123565b505050565b5b818110156200119057620011845f8262001152565b6001810190506200116f565b5050565b601f821115620011df57620011a98162001068565b620011b4846200107a565b81016020851015620011c4578190505b620011dc620011d3856200107a565b8301826200116e565b50505b505050565b5f82821c905092915050565b5f620012015f1984600802620011e4565b1980831691505092915050565b5f6200121b8383620011f0565b9150826002028217905092915050565b620012368262000f4b565b67ffffffffffffffff81111562001252576200125162000fda565b5b6200125e825462001034565b6200126b82828562001194565b5f60209050601f831160018114620012a1575f84156200128c578287015190505b6200129885826200120e565b86555062001307565b601f198416620012b18662001068565b5f5b82811015620012da57848901518255600182019150602085019450602081019050620012b3565b86831015620012fa5784890151620012f6601f891682620011f0565b8355505b6001600288020188555050505b505050505050565b5f6200131b8262000d6c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362001350576200134f62000e8c565b5b600182019050919050565b5f620013678262000d6c565b9150620013748362000d6c565b92508262001387576200138662000e28565b5b828204905092915050565b5f6200139e8262000d6c565b9150620013ab8362000d6c565b9250828203905081811115620013c657620013c562000e8c565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b620014048162000d6c565b82525050565b5f6040820190506200141f5f830185620013f9565b6200142e6020830184620013f9565b9392505050565b5f6080820190506200144a5f83018762000d40565b620014596020830186620013f9565b620014686040830185620013f9565b620014776060830184620013f9565b95945050505050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b620014b48162000d6c565b82525050565b5f620014c78383620014a9565b60208301905092915050565b5f602082019050919050565b5f620014eb8262001480565b620014f781856200148a565b935062001504836200149a565b805f5b838110156200153a5781516200151e8882620014ba565b97506200152b83620014d3565b92505060018101905062001507565b5085935050505092915050565b5f6040820190508181035f830152620015618185620014df565b90508181036020830152620015778184620014df565b90509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f601f19601f8301169050919050565b5f620015b68262001580565b620015c281856200158a565b9350620015d481856020860162000f55565b620015df816200159a565b840191505092915050565b5f60a082019050620015ff5f83018862000d40565b6200160e602083018762000d40565b6200161d6040830186620013f9565b6200162c6060830185620013f9565b8181036080830152620016408184620015aa565b90509695505050505050565b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b620016868162001650565b811462001691575f80fd5b50565b5f81519050620016a4816200167b565b92915050565b5f60208284031215620016c257620016c16200164c565b5b5f620016d18482850162001694565b91505092915050565b5f60a082019050620016ef5f83018862000d40565b620016fe602083018762000d40565b8181036040830152620017128186620014df565b90508181036060830152620017288185620014df565b905081810360808301526200173e8184620015aa565b90509695505050505050565b61292680620017585f395ff3fe608060405234801561000f575f80fd5b50600436106100fd575f3560e01c80634e1273f411610095578063a22cb46511610064578063a22cb46514610295578063e985e9c5146102b1578063f242432a146102e1578063f2fde38b146102fd576100fd565b80634e1273f41461021f578063715018a61461024f5780638da5cb5b1461025957806395d89b4114610277576100fd565b80630e89341c116100d15780630e89341c1461019b5780632eb2c2d6146101cb57806343807e58146101e7578063441ff99814610203576100fd565b8062fdd58e1461010157806301ffc9a71461013157806302fe53051461016157806306fdde031461017d575b5f80fd5b61011b600480360381019061011691906118da565b610319565b6040516101289190611927565b60405180910390f35b61014b60048036038101906101469190611995565b61036e565b60405161015891906119da565b60405180910390f35b61017b60048036038101906101769190611b2f565b61044f565b005b610185610463565b6040516101929190611bf0565b60405180910390f35b6101b560048036038101906101b09190611c10565b6104f3565b6040516101c29190611bf0565b60405180910390f35b6101e560048036038101906101e09190611d9d565b610585565b005b61020160048036038101906101fc9190611ec1565b61062c565b005b61021d60048036038101906102189190611ec1565b61069c565b005b61023960048036038101906102349190611fcc565b61076f565b60405161024691906120f9565b60405180910390f35b61025761087c565b005b61026161088f565b60405161026e9190612128565b60405180910390f35b61027f6108b7565b60405161028c9190611bf0565b60405180910390f35b6102af60048036038101906102aa919061216b565b610947565b005b6102cb60048036038101906102c691906121a9565b61095d565b6040516102d891906119da565b60405180910390f35b6102fb60048036038101906102f691906121e7565b6109eb565b005b6103176004803603810190610312919061227a565b610a92565b005b5f805f8381526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f7fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061043857507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610448575061044782610b16565b5b9050919050565b610457610b7f565b61046081610c06565b50565b606060048054610472906122d2565b80601f016020809104026020016040519081016040528092919081815260200182805461049e906122d2565b80156104e95780601f106104c0576101008083540402835291602001916104e9565b820191905f5260205f20905b8154815290600101906020018083116104cc57829003601f168201915b5050505050905090565b606060028054610502906122d2565b80601f016020809104026020016040519081016040528092919081815260200182805461052e906122d2565b80156105795780601f1061055057610100808354040283529160200191610579565b820191905f5260205f20905b81548152906001019060200180831161055c57829003601f168201915b50505050509050919050565b5f61058e610c19565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156105d357506105d1868261095d565b155b156106175780866040517fe237d92200000000000000000000000000000000000000000000000000000000815260040161060e929190612302565b60405180910390fd5b6106248686868686610c20565b505050505050565b610634610b7f565b5f5b82829050811015610697576106843384848481811061065857610657612329565b5b905060200201602081019061066d919061227a565b5f600160405180602001604052805f8152506109eb565b808061068f90612383565b915050610636565b505050565b6106a4610b7f565b5f5b8282905081101561076a578282828181106106c4576106c3612329565b5b90506020020160208101906106d9919061227a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f625f600160405161074f929190612445565b60405180910390a4808061076290612383565b9150506106a6565b505050565b606081518351146107bb57815183516040517f5b0599910000000000000000000000000000000000000000000000000000000081526004016107b292919061246c565b60405180910390fd5b5f835167ffffffffffffffff8111156107d7576107d6611a0b565b5b6040519080825280602002602001820160405280156108055781602001602082028036833780820191505090505b5090505f5b8451811015610871576108416108298287610d1490919063ffffffff16565b61083c8387610d2790919063ffffffff16565b610319565b82828151811061085457610853612329565b5b6020026020010181815250508061086a90612383565b905061080a565b508091505092915050565b610884610b7f565b61088d5f610d3a565b565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600580546108c6906122d2565b80601f01602080910402602001604051908101604052809291908181526020018280546108f2906122d2565b801561093d5780601f106109145761010080835404028352916020019161093d565b820191905f5260205f20905b81548152906001019060200180831161092057829003601f168201915b5050505050905090565b610959610952610c19565b8383610dfd565b5050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f6109f4610c19565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015610a395750610a37868261095d565b155b15610a7d5780866040517fe237d922000000000000000000000000000000000000000000000000000000008152600401610a74929190612302565b60405180910390fd5b610a8a8686868686610f66565b505050505050565b610a9a610b7f565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b0a575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610b019190612128565b60405180910390fd5b610b1381610d3a565b50565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610b87610c19565b73ffffffffffffffffffffffffffffffffffffffff16610ba561088f565b73ffffffffffffffffffffffffffffffffffffffff1614610c0457610bc8610c19565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610bfb9190612128565b60405180910390fd5b565b8060029081610c159190612627565b5050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610c90575f6040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401610c879190612128565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603610d00575f6040517f01a83514000000000000000000000000000000000000000000000000000000008152600401610cf79190612128565b60405180910390fd5b610d0d858585858561106c565b5050505050565b5f60208202602084010151905092915050565b5f60208202602084010151905092915050565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e6d575f6040517fced3e100000000000000000000000000000000000000000000000000000000008152600401610e649190612128565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610f5991906119da565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610fd6575f6040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401610fcd9190612128565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611046575f6040517f01a8351400000000000000000000000000000000000000000000000000000000815260040161103d9190612128565b60405180910390fd5b5f806110528585611118565b91509150611063878784848761106c565b50505050505050565b61107885858585611148565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611111575f6110b4610c19565b90506001845103611100575f6110d35f86610d2790919063ffffffff16565b90505f6110e95f86610d2790919063ffffffff16565b90506110f98389898585896114de565b505061110f565b61110e81878787878761168d565b5b505b5050505050565b60608060405191506001825283602083015260408201905060018152826020820152604081016040529250929050565b805182511461119257815181516040517f5b05999100000000000000000000000000000000000000000000000000000000815260040161118992919061246c565b60405180910390fd5b5f61119b610c19565b90505f5b835181101561139d575f6111bc8286610d2790919063ffffffff16565b90505f6111d28386610d2790919063ffffffff16565b90505f73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146112f5575f805f8481526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156112a157888183856040517f03dee4c500000000000000000000000000000000000000000000000000000000815260040161129894939291906126f6565b60405180910390fd5b8181035f808581526020019081526020015f205f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161461138a57805f808481526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546113829190612739565b925050819055505b50508061139690612383565b905061119f565b506001835103611458575f6113bb5f85610d2790919063ffffffff16565b90505f6113d15f85610d2790919063ffffffff16565b90508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62858560405161144992919061246c565b60405180910390a450506114d7565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb86866040516114ce92919061276c565b60405180910390a45b5050505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b1115611685578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b815260040161153e9594939291906127f3565b6020604051808303815f875af192505050801561157957506040513d601f19601f82011682018060405250810190611576919061285f565b60015b6115fa573d805f81146115a7576040519150601f19603f3d011682016040523d82523d5f602084013e6115ac565b606091505b505f8151036115f257846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016115e99190612128565b60405180910390fd5b805181602001fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461168357846040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040161167a9190612128565b60405180910390fd5b505b505050505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b1115611834578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b81526004016116ed95949392919061288a565b6020604051808303815f875af192505050801561172857506040513d601f19601f82011682018060405250810190611725919061285f565b60015b6117a9573d805f8114611756576040519150601f19603f3d011682016040523d82523d5f602084013e61175b565b606091505b505f8151036117a157846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016117989190612128565b60405180910390fd5b805181602001fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461183257846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016118299190612128565b60405180910390fd5b505b505050505050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6118768261184d565b9050919050565b6118868161186c565b8114611890575f80fd5b50565b5f813590506118a18161187d565b92915050565b5f819050919050565b6118b9816118a7565b81146118c3575f80fd5b50565b5f813590506118d4816118b0565b92915050565b5f80604083850312156118f0576118ef611845565b5b5f6118fd85828601611893565b925050602061190e858286016118c6565b9150509250929050565b611921816118a7565b82525050565b5f60208201905061193a5f830184611918565b92915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61197481611940565b811461197e575f80fd5b50565b5f8135905061198f8161196b565b92915050565b5f602082840312156119aa576119a9611845565b5b5f6119b784828501611981565b91505092915050565b5f8115159050919050565b6119d4816119c0565b82525050565b5f6020820190506119ed5f8301846119cb565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611a41826119fb565b810181811067ffffffffffffffff82111715611a6057611a5f611a0b565b5b80604052505050565b5f611a7261183c565b9050611a7e8282611a38565b919050565b5f67ffffffffffffffff821115611a9d57611a9c611a0b565b5b611aa6826119fb565b9050602081019050919050565b828183375f83830152505050565b5f611ad3611ace84611a83565b611a69565b905082815260208101848484011115611aef57611aee6119f7565b5b611afa848285611ab3565b509392505050565b5f82601f830112611b1657611b156119f3565b5b8135611b26848260208601611ac1565b91505092915050565b5f60208284031215611b4457611b43611845565b5b5f82013567ffffffffffffffff811115611b6157611b60611849565b5b611b6d84828501611b02565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611bad578082015181840152602081019050611b92565b5f8484015250505050565b5f611bc282611b76565b611bcc8185611b80565b9350611bdc818560208601611b90565b611be5816119fb565b840191505092915050565b5f6020820190508181035f830152611c088184611bb8565b905092915050565b5f60208284031215611c2557611c24611845565b5b5f611c32848285016118c6565b91505092915050565b5f67ffffffffffffffff821115611c5557611c54611a0b565b5b602082029050602081019050919050565b5f80fd5b5f611c7c611c7784611c3b565b611a69565b90508083825260208201905060208402830185811115611c9f57611c9e611c66565b5b835b81811015611cc85780611cb488826118c6565b845260208401935050602081019050611ca1565b5050509392505050565b5f82601f830112611ce657611ce56119f3565b5b8135611cf6848260208601611c6a565b91505092915050565b5f67ffffffffffffffff821115611d1957611d18611a0b565b5b611d22826119fb565b9050602081019050919050565b5f611d41611d3c84611cff565b611a69565b905082815260208101848484011115611d5d57611d5c6119f7565b5b611d68848285611ab3565b509392505050565b5f82601f830112611d8457611d836119f3565b5b8135611d94848260208601611d2f565b91505092915050565b5f805f805f60a08688031215611db657611db5611845565b5b5f611dc388828901611893565b9550506020611dd488828901611893565b945050604086013567ffffffffffffffff811115611df557611df4611849565b5b611e0188828901611cd2565b935050606086013567ffffffffffffffff811115611e2257611e21611849565b5b611e2e88828901611cd2565b925050608086013567ffffffffffffffff811115611e4f57611e4e611849565b5b611e5b88828901611d70565b9150509295509295909350565b5f80fd5b5f8083601f840112611e8157611e806119f3565b5b8235905067ffffffffffffffff811115611e9e57611e9d611e68565b5b602083019150836020820283011115611eba57611eb9611c66565b5b9250929050565b5f8060208385031215611ed757611ed6611845565b5b5f83013567ffffffffffffffff811115611ef457611ef3611849565b5b611f0085828601611e6c565b92509250509250929050565b5f67ffffffffffffffff821115611f2657611f25611a0b565b5b602082029050602081019050919050565b5f611f49611f4484611f0c565b611a69565b90508083825260208201905060208402830185811115611f6c57611f6b611c66565b5b835b81811015611f955780611f818882611893565b845260208401935050602081019050611f6e565b5050509392505050565b5f82601f830112611fb357611fb26119f3565b5b8135611fc3848260208601611f37565b91505092915050565b5f8060408385031215611fe257611fe1611845565b5b5f83013567ffffffffffffffff811115611fff57611ffe611849565b5b61200b85828601611f9f565b925050602083013567ffffffffffffffff81111561202c5761202b611849565b5b61203885828601611cd2565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612074816118a7565b82525050565b5f612085838361206b565b60208301905092915050565b5f602082019050919050565b5f6120a782612042565b6120b1818561204c565b93506120bc8361205c565b805f5b838110156120ec5781516120d3888261207a565b97506120de83612091565b9250506001810190506120bf565b5085935050505092915050565b5f6020820190508181035f830152612111818461209d565b905092915050565b6121228161186c565b82525050565b5f60208201905061213b5f830184612119565b92915050565b61214a816119c0565b8114612154575f80fd5b50565b5f8135905061216581612141565b92915050565b5f806040838503121561218157612180611845565b5b5f61218e85828601611893565b925050602061219f85828601612157565b9150509250929050565b5f80604083850312156121bf576121be611845565b5b5f6121cc85828601611893565b92505060206121dd85828601611893565b9150509250929050565b5f805f805f60a08688031215612200576121ff611845565b5b5f61220d88828901611893565b955050602061221e88828901611893565b945050604061222f888289016118c6565b9350506060612240888289016118c6565b925050608086013567ffffffffffffffff81111561226157612260611849565b5b61226d88828901611d70565b9150509295509295909350565b5f6020828403121561228f5761228e611845565b5b5f61229c84828501611893565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806122e957607f821691505b6020821081036122fc576122fb6122a5565b5b50919050565b5f6040820190506123155f830185612119565b6123226020830184612119565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61238d826118a7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036123bf576123be612356565b5b600182019050919050565b5f819050919050565b5f819050919050565b5f6123f66123f16123ec846123ca565b6123d3565b6118a7565b9050919050565b612406816123dc565b82525050565b5f819050919050565b5f61242f61242a6124258461240c565b6123d3565b6118a7565b9050919050565b61243f81612415565b82525050565b5f6040820190506124585f8301856123fd565b6124656020830184612436565b9392505050565b5f60408201905061247f5f830185611918565b61248c6020830184611918565b9392505050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026124ef7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826124b4565b6124f986836124b4565b95508019841693508086168417925050509392505050565b5f61252b612526612521846118a7565b6123d3565b6118a7565b9050919050565b5f819050919050565b61254483612511565b61255861255082612532565b8484546124c0565b825550505050565b5f90565b61256c612560565b61257781848461253b565b505050565b5b8181101561259a5761258f5f82612564565b60018101905061257d565b5050565b601f8211156125df576125b081612493565b6125b9846124a5565b810160208510156125c8578190505b6125dc6125d4856124a5565b83018261257c565b50505b505050565b5f82821c905092915050565b5f6125ff5f19846008026125e4565b1980831691505092915050565b5f61261783836125f0565b9150826002028217905092915050565b61263082611b76565b67ffffffffffffffff81111561264957612648611a0b565b5b61265382546122d2565b61265e82828561259e565b5f60209050601f83116001811461268f575f841561267d578287015190505b612687858261260c565b8655506126ee565b601f19841661269d86612493565b5f5b828110156126c45784890151825560018201915060208501945060208101905061269f565b868310156126e157848901516126dd601f8916826125f0565b8355505b6001600288020188555050505b505050505050565b5f6080820190506127095f830187612119565b6127166020830186611918565b6127236040830185611918565b6127306060830184611918565b95945050505050565b5f612743826118a7565b915061274e836118a7565b925082820190508082111561276657612765612356565b5b92915050565b5f6040820190508181035f830152612784818561209d565b90508181036020830152612798818461209d565b90509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f6127c5826127a1565b6127cf81856127ab565b93506127df818560208601611b90565b6127e8816119fb565b840191505092915050565b5f60a0820190506128065f830188612119565b6128136020830187612119565b6128206040830186611918565b61282d6060830185611918565b818103608083015261283f81846127bb565b90509695505050505050565b5f815190506128598161196b565b92915050565b5f6020828403121561287457612873611845565b5b5f6128818482850161284b565b91505092915050565b5f60a08201905061289d5f830188612119565b6128aa6020830187612119565b81810360408301526128bc818661209d565b905081810360608301526128d0818561209d565b905081810360808301526128e481846127bb565b9050969550505050505056fea26469706673582212204818ab62d8f0509e2d132057bf851b6aa9de15aa5552ab3bbd0992b3d00823e864736f6c6343000814003368747470733a2f2f6261666b72656964347679716d766b666f73647a33677965696573326a743637636575656e32786132666a32646d33347071773363637164616d752e697066732e666c6b2d697066732e78797a