61012060405261271060809081525066470de4df820000600b556000600c60006101000a81548160ff0219169083151502179055506101f4600f60146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555073c4cc35f9d0e4c86b78e15e37c06646453a8ab3cd601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601060146101000a81548160ff021916908315150217905550348015620000e457600080fd5b5060405162004cb638038062004cb683398181016040528101906200010a91906200044a565b6040518060400160405280600681526020017f5175696d465400000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f5146540000000000000000000000000000000000000000000000000000000000815250816002908162000187919062000742565b50806003908162000199919062000742565b50620001aa6200027560201b60201c565b6000819055505050620001d2620001c66200027a60201b60201c565b6200028260201b60201c565b8460a081815250508360c081815250508260e081815250508177ffffffffffffffffffffffffffffffffffffffffffffffff19166101008177ffffffffffffffffffffffffffffffffffffffffffffffff19168152505080600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505062000829565b600090565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b6000819050919050565b62000362816200034d565b81146200036e57600080fd5b50565b600081519050620003828162000357565b92915050565b60007fffffffffffffffff00000000000000000000000000000000000000000000000082169050919050565b620003bf8162000388565b8114620003cb57600080fd5b50565b600081519050620003df81620003b4565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200041282620003e5565b9050919050565b620004248162000405565b81146200043057600080fd5b50565b600081519050620004448162000419565b92915050565b600080600080600060a0868803121562000469576200046862000348565b5b6000620004798882890162000371565b95505060206200048c8882890162000371565b94505060406200049f8882890162000371565b9350506060620004b288828901620003ce565b9250506080620004c58882890162000433565b9150509295509295909350565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200055457607f821691505b6020821081036200056a57620005696200050c565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620005d47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000595565b620005e0868362000595565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620006236200061d62000617846200034d565b620005f8565b6200034d565b9050919050565b6000819050919050565b6200063f8362000602565b620006576200064e826200062a565b848454620005a2565b825550505050565b600090565b6200066e6200065f565b6200067b81848462000634565b505050565b5b81811015620006a3576200069760008262000664565b60018101905062000681565b5050565b601f821115620006f257620006bc8162000570565b620006c78462000585565b81016020851015620006d7578190505b620006ef620006e68562000585565b83018262000680565b50505b505050565b600082821c905092915050565b60006200071760001984600802620006f7565b1980831691505092915050565b600062000732838362000704565b9150826002028217905092915050565b6200074d82620004d2565b67ffffffffffffffff811115620007695762000768620004dd565b5b6200077582546200053b565b62000782828285620006a7565b600060209050601f831160018114620007ba5760008415620007a5578287015190505b620007b1858262000724565b86555062000821565b601f198416620007ca8662000570565b60005b82811015620007f457848901518255600182019150602085019450602081019050620007cd565b8683101562000814578489015162000810601f89168262000704565b8355505b6001600288020188555050505b505050505050565b60805160a05160c05160e0516101005161441e6200089860003960008181611d0a0152611f61015260008181611c6401526120d8015260008181611c0a01526120fc015260008181610d3601526118310152600081816115e601528181611b9e01526120b4015261441e6000f3fe6080604052600436106102515760003560e01c80636c0360eb11610139578063a76393ab116100b6578063c87b56dd1161007a578063c87b56dd14610805578063d5abeb0114610842578063d7dca52e1461086d578063e283f3ae14610898578063e985e9c5146108c3578063f2fde38b1461090057610251565b8063a76393ab1461074c578063ad2f852a14610768578063b032531f14610793578063b88d4fde146107be578063b8997a97146107da57610251565b806391b7f5ed116100fd57806391b7f5ed1461067b57806395d89b41146106a457806399755624146106cf578063a035b1fe146106f8578063a22cb4651461072357610251565b80636c0360eb146105ba57806370a08231146105e5578063715018a614610622578063895fc788146106395780638da5cb5b1461065057610251565b806331faafb4116101d25780635a2569d1116101965780635a2569d1146104b55780635b2a55e4146104e05780635b7633d01461050b5780636352211e1461053657806367ae503b1461057357806368428a1b1461058f57610251565b806331faafb4146104195780633ccfd60b1461044257806342842e0e1461045957806355f804b3146104755780635a13dd291461049e57610251565b8063095ea7b311610219578063095ea7b31461034d5780630cff0ce71461036957806318160ddd1461039457806323b872dd146103bf5780632a55205a146103db57610251565b806301ffc9a714610256578063046dc1661461029357806306d254da146102bc57806306fdde03146102e5578063081812fc14610310575b600080fd5b34801561026257600080fd5b5061027d60048036038101906102789190612fca565b610929565b60405161028a9190613012565b60405180910390f35b34801561029f57600080fd5b506102ba60048036038101906102b5919061308b565b61094b565b005b3480156102c857600080fd5b506102e360048036038101906102de919061308b565b6109f2565b005b3480156102f157600080fd5b506102fa610adf565b6040516103079190613148565b60405180910390f35b34801561031c57600080fd5b50610337600480360381019061033291906131a0565b610b71565b60405161034491906131dc565b60405180910390f35b610367600480360381019061036291906131f7565b610bf0565b005b34801561037557600080fd5b5061037e610d34565b60405161038b9190613246565b60405180910390f35b3480156103a057600080fd5b506103a9610d58565b6040516103b69190613246565b60405180910390f35b6103d960048036038101906103d49190613261565b610d6f565b005b3480156103e757600080fd5b5061040260048036038101906103fd91906132b4565b611091565b6040516104109291906132f4565b60405180910390f35b34801561042557600080fd5b50610440600480360381019061043b9190613361565b61127b565b005b34801561044e57600080fd5b50610457611350565b005b610473600480360381019061046e9190613261565b6113a1565b005b34801561048157600080fd5b5061049c600480360381019061049791906133f3565b6113c1565b005b3480156104aa57600080fd5b506104b361141b565b005b3480156104c157600080fd5b506104ca6114a7565b6040516104d79190613012565b60405180910390f35b3480156104ec57600080fd5b506104f56114ba565b60405161050291906131dc565b60405180910390f35b34801561051757600080fd5b506105206114e0565b60405161052d91906131dc565b60405180910390f35b34801561054257600080fd5b5061055d600480360381019061055891906131a0565b611506565b60405161056a91906131dc565b60405180910390f35b61058d600480360381019061058891906131f7565b611518565b005b34801561059b57600080fd5b506105a461165e565b6040516105b19190613012565b60405180910390f35b3480156105c657600080fd5b506105cf611671565b6040516105dc9190613148565b60405180910390f35b3480156105f157600080fd5b5061060c6004803603810190610607919061308b565b6116ff565b6040516106199190613246565b60405180910390f35b34801561062e57600080fd5b506106376117b7565b005b34801561064557600080fd5b5061064e6117cb565b005b34801561065c57600080fd5b50610665611857565b60405161067291906131dc565b60405180910390f35b34801561068757600080fd5b506106a2600480360381019061069d91906131a0565b611881565b005b3480156106b057600080fd5b506106b96118c7565b6040516106c69190613148565b60405180910390f35b3480156106db57600080fd5b506106f660048036038101906106f1919061308b565b611959565b005b34801561070457600080fd5b5061070d611a00565b60405161071a9190613246565b60405180910390f35b34801561072f57600080fd5b5061074a6004803603810190610745919061346c565b611a06565b005b61076660048036038101906107619190613652565b611b11565b005b34801561077457600080fd5b5061077d611f39565b60405161078a91906131dc565b60405180910390f35b34801561079f57600080fd5b506107a8611f5f565b6040516107b59190613710565b60405180910390f35b6107d860048036038101906107d3919061372b565b611f83565b005b3480156107e657600080fd5b506107ef611ff6565b6040516107fc91906137bd565b60405180910390f35b34801561081157600080fd5b5061082c600480360381019061082791906131a0565b612014565b6040516108399190613148565b60405180910390f35b34801561084e57600080fd5b506108576120b2565b6040516108649190613246565b60405180910390f35b34801561087957600080fd5b506108826120d6565b60405161088f9190613246565b60405180910390f35b3480156108a457600080fd5b506108ad6120fa565b6040516108ba9190613246565b60405180910390f35b3480156108cf57600080fd5b506108ea60048036038101906108e591906137d8565b61211e565b6040516108f79190613012565b60405180910390f35b34801561090c57600080fd5b506109276004803603810190610922919061308b565b6121b2565b005b600061093482612235565b806109445750610943826122c7565b5b9050919050565b610953612341565b7f6f0f485d006cead4463b27451847babb02a4aa468b0ba3f64645c2af3a111517600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826040516109a6929190613818565b60405180910390a180600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6109fa612341565b7f8b99633a77bfdc917da4499b5d0d7f69d46baba48a6ec57f793d96a17d0cde06601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682604051610a4d929190613818565b60405180910390a180601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610adc601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f60149054906101000a90046bffffffffffffffffffffffff166123bf565b50565b606060028054610aee90613870565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1a90613870565b8015610b675780601f10610b3c57610100808354040283529160200191610b67565b820191906000526020600020905b815481529060010190602001808311610b4a57829003601f168201915b5050505050905090565b6000610b7c82612554565b610bb2576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610bfb82611506565b90508073ffffffffffffffffffffffffffffffffffffffff16610c1c6125b3565b73ffffffffffffffffffffffffffffffffffffffff1614610c7f57610c4881610c436125b3565b61211e565b610c7e576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b826006600084815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610d626125bb565b6001546000540303905090565b6000610d7a826125c0565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610de1576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080610ded8461268c565b91509150610e038187610dfe6125b3565b6126b3565b610e4f57610e1886610e136125b3565b61211e565b610e4e576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603610eb5576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ec286868660016126f7565b8015610ecd57600082555b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546001900391905081905550600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815460010191905081905550610f9b85610f778888876126fd565b7c020000000000000000000000000000000000000000000000000000000017612725565b600460008681526020019081526020016000208190555060007c0200000000000000000000000000000000000000000000000000000000841603611021576000600185019050600060046000838152602001908152602001600020540361101f57600054811461101e578360046000838152602001908152602001600020819055505b5b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46110898686866001612750565b505050505050565b6000806000600960008681526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036112265760086040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152505090505b6000611230612756565b6bffffffffffffffffffffffff1682602001516bffffffffffffffffffffffff168661125c91906138d0565b6112669190613941565b90508160000151819350935050509250929050565b611283612341565b7fbcc5312d93da63735ef53f5090c999ccdcc844be6111102107adfe521d5724ec600f60149054906101000a90046bffffffffffffffffffffffff16826040516112ce929190613972565b60405180910390a180600f60146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555061134d601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f60149054906101000a90046bffffffffffffffffffffffff166123bf565b50565b611358612341565b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561139e573d6000803e3d6000fd5b50565b6113bc83838360405180602001604052806000815250611f83565b505050565b6113c9612341565b7fdcdc3fc0b0f5e288772004d344e668fd687d938ca5134914149e590efbdcaeee600d83836040516113fd93929190613a61565b60405180910390a18181600d9182611416929190613c3c565b505050565b611423612341565b600c60009054906101000a900460ff1615600c60006101000a81548160ff0219169083151502179055507f9e39bae774ff90097331b71c864042695ebc9928f75c18b5480be6071fc30944600c60009054906101000a900460ff1615600c60009054906101000a900460ff1660405161149d929190613d0c565b60405180910390a1565b601060149054906101000a900460ff1681565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611511826125c0565b9050919050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461159f576040517f87e7a21a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600b546115ad91906138d0565b34146115e4576040517ebfc92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000008161160e610d58565b6116189190613d35565b1115611650576040517f52df9fe500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61165a8282612760565b5050565b600c60009054906101000a900460ff1681565b600d805461167e90613870565b80601f01602080910402602001604051908101604052809291908181526020018280546116aa90613870565b80156116f75780601f106116cc576101008083540402835291602001916116f7565b820191906000526020600020905b8154815290600101906020018083116116da57829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611766576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054169050919050565b6117bf612341565b6117c9600061291b565b565b6117d3612341565b601060149054906101000a900460ff16611819576040517f44fd146600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601060146101000a81549060ff0219169055611855337f0000000000000000000000000000000000000000000000000000000000000000612760565b565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611889612341565b7fc3ae4d05a23526d863c1db9f30859dec463447da15d77d1345daec3ed995d3c1600b54826040516118bc929190613d69565b60405180910390a150565b6060600380546118d690613870565b80601f016020809104026020016040519081016040528092919081815260200182805461190290613870565b801561194f5780601f106119245761010080835404028352916020019161194f565b820191906000526020600020905b81548152906001019060200180831161193257829003601f168201915b5050505050905090565b611961612341565b7fed7bdd21f4a3444f70a5f9e8e27b44dafd5dd2ced4f5a926f1305e71b35a89b9600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826040516119b4929190613818565b60405180910390a180600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b5481565b8060076000611a136125b3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611ac06125b3565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611b059190613012565b60405180910390a35050565b600c60009054906101000a900460ff16611b57576040517fcd0f0cc500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600b54611b6591906138d0565b3414611b9c576040517ebfc92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081611bc6610d58565b611bd09190613d35565b1115611c08576040517f52df9fe500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000811115611c62576040517f1419abfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cce9190613d35565b1115611d06576040517f909863ef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f0000000000000000000000000000000000000000000000000000000000000000338385604051602001611d3f9493929190613e52565b6040516020818303038152906040529050600081805190602001209050858103611d95576040517f0af806e000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d9f81866129e1565b73ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611e25576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601260008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611e91576040517f900bb2c900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ee09190613d35565b925050819055506001601260008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611f313384612760565b505050505050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b611f8e848484610d6f565b60008373ffffffffffffffffffffffffffffffffffffffff163b14611ff057611fb984848484612a08565b611fef576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b600f60149054906101000a90046bffffffffffffffffffffffff1681565b606061201f82612554565b612055576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061205f612b58565b9050600081510361207f57604051806020016040528060008152506120aa565b8061208984612bea565b60405160200161209a929190613edc565b6040516020818303038152906040525b915050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6121ba612341565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222090613f72565b60405180910390fd5b6122328161291b565b50565b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061229057506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806122c05750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b60007f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061233a575061233982612c3a565b5b9050919050565b612349612ca4565b73ffffffffffffffffffffffffffffffffffffffff16612367611857565b73ffffffffffffffffffffffffffffffffffffffff16146123bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b490613fde565b60405180910390fd5b565b6123c7612756565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff161115612425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241c90614070565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612494576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248b906140dc565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff16815250600860008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050505050565b60008161255f6125bb565b1115801561256e575060005482105b80156125ac575060007c0100000000000000000000000000000000000000000000000000000000600460008581526020019081526020016000205416145b9050919050565b600033905090565b600090565b600080829050806125cf6125bb565b11612655576000548110156126545760006004600083815260200190815260200160002054905060007c0100000000000000000000000000000000000000000000000000000000821603612652575b6000810361264857600460008360019003935083815260200190815260200160002054905061261e565b8092505050612687565b505b5b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b60008060006006600085815260200190815260200160002090508092508254915050915091565b600073ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b50505050565b60008060e883901c905060e8612714868684612cac565b62ffffff16901b9150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b6000612710905090565b600080549050600082036127a0576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6127ad60008483856126f7565b600160406001901b178202600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506128248361281560008660006126fd565b61281e85612cb5565b17612725565b6004600083815260200190815260200160002081905550600080838301905073ffffffffffffffffffffffffffffffffffffffff85169150828260007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600183015b8181146128c557808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a460018101905061288a565b5060008203612900576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060008190555050506129166000848385612750565b505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060006129f08585612cc5565b915091506129fd81612d16565b819250505092915050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612a2e6125b3565b8786866040518563ffffffff1660e01b8152600401612a509493929190614151565b6020604051808303816000875af1925050508015612a8c57506040513d601f19601f82011682018060405250810190612a8991906141b2565b60015b612b05573d8060008114612abc576040519150601f19603f3d011682016040523d82523d6000602084013e612ac1565b606091505b506000815103612afd576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b6060600d8054612b6790613870565b80601f0160208091040260200160405190810160405280929190818152602001828054612b9390613870565b8015612be05780601f10612bb557610100808354040283529160200191612be0565b820191906000526020600020905b815481529060010190602001808311612bc357829003601f168201915b5050505050905090565b606060a060405101806040526020810391506000825281835b600115612c2557600184039350600a81066030018453600a8104905080612c03575b50828103602084039350808452505050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b60009392505050565b60006001821460e11b9050919050565b6000806041835103612d065760008060006020860151925060408601519150606086015160001a9050612cfa87828585612e7c565b94509450505050612d0f565b60006002915091505b9250929050565b60006004811115612d2a57612d296141df565b5b816004811115612d3d57612d3c6141df565b5b0315612e795760016004811115612d5757612d566141df565b5b816004811115612d6a57612d696141df565b5b03612daa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612da19061425a565b60405180910390fd5b60026004811115612dbe57612dbd6141df565b5b816004811115612dd157612dd06141df565b5b03612e11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e08906142c6565b60405180910390fd5b60036004811115612e2557612e246141df565b5b816004811115612e3857612e376141df565b5b03612e78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6f90614358565b60405180910390fd5b5b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08360001c1115612eb7576000600391509150612f55565b600060018787878760405160008152602001604052604051612edc94939291906143a3565b6020604051602081039080840390855afa158015612efe573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612f4c57600060019250925050612f55565b80600092509250505b94509492505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612fa781612f72565b8114612fb257600080fd5b50565b600081359050612fc481612f9e565b92915050565b600060208284031215612fe057612fdf612f68565b5b6000612fee84828501612fb5565b91505092915050565b60008115159050919050565b61300c81612ff7565b82525050565b60006020820190506130276000830184613003565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006130588261302d565b9050919050565b6130688161304d565b811461307357600080fd5b50565b6000813590506130858161305f565b92915050565b6000602082840312156130a1576130a0612f68565b5b60006130af84828501613076565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156130f25780820151818401526020810190506130d7565b60008484015250505050565b6000601f19601f8301169050919050565b600061311a826130b8565b61312481856130c3565b93506131348185602086016130d4565b61313d816130fe565b840191505092915050565b60006020820190508181036000830152613162818461310f565b905092915050565b6000819050919050565b61317d8161316a565b811461318857600080fd5b50565b60008135905061319a81613174565b92915050565b6000602082840312156131b6576131b5612f68565b5b60006131c48482850161318b565b91505092915050565b6131d68161304d565b82525050565b60006020820190506131f160008301846131cd565b92915050565b6000806040838503121561320e5761320d612f68565b5b600061321c85828601613076565b925050602061322d8582860161318b565b9150509250929050565b6132408161316a565b82525050565b600060208201905061325b6000830184613237565b92915050565b60008060006060848603121561327a57613279612f68565b5b600061328886828701613076565b935050602061329986828701613076565b92505060406132aa8682870161318b565b9150509250925092565b600080604083850312156132cb576132ca612f68565b5b60006132d98582860161318b565b92505060206132ea8582860161318b565b9150509250929050565b600060408201905061330960008301856131cd565b6133166020830184613237565b9392505050565b60006bffffffffffffffffffffffff82169050919050565b61333e8161331d565b811461334957600080fd5b50565b60008135905061335b81613335565b92915050565b60006020828403121561337757613376612f68565b5b60006133858482850161334c565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126133b3576133b261338e565b5b8235905067ffffffffffffffff8111156133d0576133cf613393565b5b6020830191508360018202830111156133ec576133eb613398565b5b9250929050565b6000806020838503121561340a57613409612f68565b5b600083013567ffffffffffffffff81111561342857613427612f6d565b5b6134348582860161339d565b92509250509250929050565b61344981612ff7565b811461345457600080fd5b50565b60008135905061346681613440565b92915050565b6000806040838503121561348357613482612f68565b5b600061349185828601613076565b92505060206134a285828601613457565b9150509250929050565b6000819050919050565b6134bf816134ac565b81146134ca57600080fd5b50565b6000813590506134dc816134b6565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61351f826130fe565b810181811067ffffffffffffffff8211171561353e5761353d6134e7565b5b80604052505050565b6000613551612f5e565b905061355d8282613516565b919050565b600067ffffffffffffffff82111561357d5761357c6134e7565b5b613586826130fe565b9050602081019050919050565b82818337600083830152505050565b60006135b56135b084613562565b613547565b9050828152602081018484840111156135d1576135d06134e2565b5b6135dc848285613593565b509392505050565b600082601f8301126135f9576135f861338e565b5b81356136098482602086016135a2565b91505092915050565b600067ffffffffffffffff82169050919050565b61362f81613612565b811461363a57600080fd5b50565b60008135905061364c81613626565b92915050565b6000806000806080858703121561366c5761366b612f68565b5b600061367a878288016134cd565b945050602085013567ffffffffffffffff81111561369b5761369a612f6d565b5b6136a7878288016135e4565b93505060406136b88782880161363d565b92505060606136c98782880161318b565b91505092959194509250565b60007fffffffffffffffff00000000000000000000000000000000000000000000000082169050919050565b61370a816136d5565b82525050565b60006020820190506137256000830184613701565b92915050565b6000806000806080858703121561374557613744612f68565b5b600061375387828801613076565b945050602061376487828801613076565b93505060406137758782880161318b565b925050606085013567ffffffffffffffff81111561379657613795612f6d565b5b6137a2878288016135e4565b91505092959194509250565b6137b78161331d565b82525050565b60006020820190506137d260008301846137ae565b92915050565b600080604083850312156137ef576137ee612f68565b5b60006137fd85828601613076565b925050602061380e85828601613076565b9150509250929050565b600060408201905061382d60008301856131cd565b61383a60208301846131cd565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061388857607f821691505b60208210810361389b5761389a613841565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006138db8261316a565b91506138e68361316a565b92508282026138f48161316a565b9150828204841483151761390b5761390a6138a1565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061394c8261316a565b91506139578361316a565b92508261396757613966613912565b5b828204905092915050565b600060408201905061398760008301856137ae565b61399460208301846137ae565b9392505050565b60008190508160005260206000209050919050565b600081546139bd81613870565b6139c781866130c3565b945060018216600081146139e257600181146139f857613a2b565b60ff198316865281151560200286019350613a2b565b613a018561399b565b60005b83811015613a2357815481890152600182019150602081019050613a04565b808801955050505b50505092915050565b6000613a4083856130c3565b9350613a4d838584613593565b613a56836130fe565b840190509392505050565b60006040820190508181036000830152613a7b81866139b0565b90508181036020830152613a90818486613a34565b9050949350505050565b600082905092915050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302613af27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613ab5565b613afc8683613ab5565b95508019841693508086168417925050509392505050565b6000819050919050565b6000613b39613b34613b2f8461316a565b613b14565b61316a565b9050919050565b6000819050919050565b613b5383613b1e565b613b67613b5f82613b40565b848454613ac2565b825550505050565b600090565b613b7c613b6f565b613b87818484613b4a565b505050565b5b81811015613bab57613ba0600082613b74565b600181019050613b8d565b5050565b601f821115613bf057613bc18161399b565b613bca84613aa5565b81016020851015613bd9578190505b613bed613be585613aa5565b830182613b8c565b50505b505050565b600082821c905092915050565b6000613c1360001984600802613bf5565b1980831691505092915050565b6000613c2c8383613c02565b9150826002028217905092915050565b613c468383613a9a565b67ffffffffffffffff811115613c5f57613c5e6134e7565b5b613c698254613870565b613c74828285613baf565b6000601f831160018114613ca35760008415613c91578287013590505b613c9b8582613c20565b865550613d03565b601f198416613cb18661399b565b60005b82811015613cd957848901358255600182019150602085019450602081019050613cb4565b86831015613cf65784890135613cf2601f891682613c02565b8355505b6001600288020188555050505b50505050505050565b6000604082019050613d216000830185613003565b613d2e6020830184613003565b9392505050565b6000613d408261316a565b9150613d4b8361316a565b9250828201905080821115613d6357613d626138a1565b5b92915050565b6000604082019050613d7e6000830185613237565b613d8b6020830184613237565b9392505050565b6000819050919050565b613dad613da8826136d5565b613d92565b82525050565b60008160601b9050919050565b6000613dcb82613db3565b9050919050565b6000613ddd82613dc0565b9050919050565b613df5613df08261304d565b613dd2565b82525050565b6000819050919050565b613e16613e118261316a565b613dfb565b82525050565b60008160c01b9050919050565b6000613e3482613e1c565b9050919050565b613e4c613e4782613612565b613e29565b82525050565b6000613e5e8287613d9c565b600882019150613e6e8286613de4565b601482019150613e7e8285613e05565b602082019150613e8e8284613e3b565b60088201915081905095945050505050565b600081905092915050565b6000613eb6826130b8565b613ec08185613ea0565b9350613ed08185602086016130d4565b80840191505092915050565b6000613ee88285613eab565b9150613ef48284613eab565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613f5c6026836130c3565b9150613f6782613f00565b604082019050919050565b60006020820190508181036000830152613f8b81613f4f565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613fc86020836130c3565b9150613fd382613f92565b602082019050919050565b60006020820190508181036000830152613ff781613fbb565b9050919050565b7f455243323938313a20726f79616c7479206665652077696c6c2065786365656460008201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b600061405a602a836130c3565b915061406582613ffe565b604082019050919050565b600060208201905081810360008301526140898161404d565b9050919050565b7f455243323938313a20696e76616c696420726563656976657200000000000000600082015250565b60006140c66019836130c3565b91506140d182614090565b602082019050919050565b600060208201905081810360008301526140f5816140b9565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000614123826140fc565b61412d8185614107565b935061413d8185602086016130d4565b614146816130fe565b840191505092915050565b600060808201905061416660008301876131cd565b61417360208301866131cd565b6141806040830185613237565b81810360608301526141928184614118565b905095945050505050565b6000815190506141ac81612f9e565b92915050565b6000602082840312156141c8576141c7612f68565b5b60006141d68482850161419d565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f45434453413a20696e76616c6964207369676e61747572650000000000000000600082015250565b60006142446018836130c3565b915061424f8261420e565b602082019050919050565b6000602082019050818103600083015261427381614237565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265206c656e67746800600082015250565b60006142b0601f836130c3565b91506142bb8261427a565b602082019050919050565b600060208201905081810360008301526142df816142a3565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b60006143426022836130c3565b915061434d826142e6565b604082019050919050565b6000602082019050818103600083015261437181614335565b9050919050565b614381816134ac565b82525050565b600060ff82169050919050565b61439d81614387565b82525050565b60006080820190506143b86000830187614378565b6143c56020830186614394565b6143d26040830185614378565b6143df6060830184614378565b9594505050505056fea2646970667358221220bf827cbe9e8653fb0a3c04155f5d03e6eba920dd7c7cef13e0b9393e1875f8a164736f6c634300081300330000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001467a95d40d901ae1a000000000000000000000000000000000000000000000000000000000000000000000000d5f0a9a2f4dafb45c61a2536ab8febb25a501162