60c060405234801561000f575f80fd5b5060405161661538038061661583398181016040528101906100319190610b27565b83838383838361004561060e60201b60201c565b8484818181818d5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100bc575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100b39190610bd2565b60405180910390fd5b6100cb8161061660201b60201c565b508173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610165576040517fb586360400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60805173ffffffffffffffffffffffffffffffffffffffff1663ca5eb5e1826040518263ffffffff1660e01b81526004016101a09190610bd2565b5f604051808303815f87803b1580156101b7575f80fd5b505af11580156101c9573d5f803e3d5ffd5b50505050505050506101df6106d760201b60201c565b60ff168360ff16101561021e576040517f1e9714b000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61022c6106d760201b60201c565b836102379190610c24565b600a6102439190610d90565b60a08181525050505050816008908161025c9190610fde565b50806009908161026c9190610fde565b505050505050506102b933606460056b052b7d2dcc80cd2e4000000061029291906110c8565b61029c9190611131565b6fffffffffffffffffffffffffffffffff166106df60201b60201c565b6102ff33606460026b052b7d2dcc80cd2e400000006102d891906110c8565b6102e29190611131565b6fffffffffffffffffffffffffffffffff166106df60201b60201c565b61034533606460076b052b7d2dcc80cd2e4000000061031e91906110c8565b6103289190611131565b6fffffffffffffffffffffffffffffffff166106df60201b60201c565b61038b33606460036b052b7d2dcc80cd2e4000000061036491906110c8565b61036e9190611131565b6fffffffffffffffffffffffffffffffff166106df60201b60201c565b6103d133606460036b052b7d2dcc80cd2e400000006103aa91906110c8565b6103b49190611131565b6fffffffffffffffffffffffffffffffff166106df60201b60201c565b61041733606460026b052b7d2dcc80cd2e400000006103f091906110c8565b6103fa9190611131565b6fffffffffffffffffffffffffffffffff166106df60201b60201c565b61045d33606460036b052b7d2dcc80cd2e4000000061043691906110c8565b6104409190611131565b6fffffffffffffffffffffffffffffffff166106df60201b60201c565b6104a333606460086b052b7d2dcc80cd2e4000000061047c91906110c8565b6104869190611131565b6fffffffffffffffffffffffffffffffff166106df60201b60201c565b6104e933606460056b052b7d2dcc80cd2e400000006104c291906110c8565b6104cc9190611131565b6fffffffffffffffffffffffffffffffff166106df60201b60201c565b61052f336064600f6b052b7d2dcc80cd2e4000000061050891906110c8565b6105129190611131565b6fffffffffffffffffffffffffffffffff166106df60201b60201c565b610575336064600e6b052b7d2dcc80cd2e4000000061054e91906110c8565b6105589190611131565b6fffffffffffffffffffffffffffffffff166106df60201b60201c565b6105bd336127106102336b052b7d2dcc80cd2e4000000061059691906110c8565b6105a09190611131565b6fffffffffffffffffffffffffffffffff166106df60201b60201c565b61060533612710610ab16b052b7d2dcc80cd2e400000006105de91906110c8565b6105e89190611131565b6fffffffffffffffffffffffffffffffff166106df60201b60201c565b505050506111f1565b5f6012905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f6006905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361074f575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016107469190610bd2565b60405180910390fd5b6107605f838361076460201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107b4578060075f8282546107a89190611161565b92505081905550610884565b5f60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561083e578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610835939291906111a3565b60405180910390fd5b81810360055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108cb578060075f8282540392505081905550610916565b8060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161097391906111d8565b60405180910390a3505050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6109df82610999565b810181811067ffffffffffffffff821117156109fe576109fd6109a9565b5b80604052505050565b5f610a10610980565b9050610a1c82826109d6565b919050565b5f67ffffffffffffffff821115610a3b57610a3a6109a9565b5b610a4482610999565b9050602081019050919050565b8281835e5f83830152505050565b5f610a71610a6c84610a21565b610a07565b905082815260208101848484011115610a8d57610a8c610995565b5b610a98848285610a51565b509392505050565b5f82601f830112610ab457610ab3610991565b5b8151610ac4848260208601610a5f565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610af682610acd565b9050919050565b610b0681610aec565b8114610b10575f80fd5b50565b5f81519050610b2181610afd565b92915050565b5f805f8060808587031215610b3f57610b3e610989565b5b5f85015167ffffffffffffffff811115610b5c57610b5b61098d565b5b610b6887828801610aa0565b945050602085015167ffffffffffffffff811115610b8957610b8861098d565b5b610b9587828801610aa0565b9350506040610ba687828801610b13565b9250506060610bb787828801610b13565b91505092959194509250565b610bcc81610aec565b82525050565b5f602082019050610be55f830184610bc3565b92915050565b5f60ff82169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610c2e82610beb565b9150610c3983610beb565b9250828203905060ff811115610c5257610c51610bf7565b5b92915050565b5f8160011c9050919050565b5f808291508390505b6001851115610cad57808604811115610c8957610c88610bf7565b5b6001851615610c985780820291505b8081029050610ca685610c58565b9450610c6d565b94509492505050565b5f82610cc55760019050610d80565b81610cd2575f9050610d80565b8160018114610ce85760028114610cf257610d21565b6001915050610d80565b60ff841115610d0457610d03610bf7565b5b8360020a915084821115610d1b57610d1a610bf7565b5b50610d80565b5060208310610133831016604e8410600b8410161715610d565782820a905083811115610d5157610d50610bf7565b5b610d80565b610d638484846001610c64565b92509050818404811115610d7a57610d79610bf7565b5b81810290505b9392505050565b5f819050919050565b5f610d9a82610d87565b9150610da583610beb565b9250610dd27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610cb6565b905092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610e2857607f821691505b602082108103610e3b57610e3a610de4565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302610e9d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610e62565b610ea78683610e62565b95508019841693508086168417925050509392505050565b5f819050919050565b5f610ee2610edd610ed884610d87565b610ebf565b610d87565b9050919050565b5f819050919050565b610efb83610ec8565b610f0f610f0782610ee9565b848454610e6e565b825550505050565b5f90565b610f23610f17565b610f2e818484610ef2565b505050565b5b81811015610f5157610f465f82610f1b565b600181019050610f34565b5050565b601f821115610f9657610f6781610e41565b610f7084610e53565b81016020851015610f7f578190505b610f93610f8b85610e53565b830182610f33565b50505b505050565b5f82821c905092915050565b5f610fb65f1984600802610f9b565b1980831691505092915050565b5f610fce8383610fa7565b9150826002028217905092915050565b610fe782610dda565b67ffffffffffffffff81111561100057610fff6109a9565b5b61100a8254610e11565b611015828285610f55565b5f60209050601f831160018114611046575f8415611034578287015190505b61103e8582610fc3565b8655506110a5565b601f19841661105486610e41565b5f5b8281101561107b57848901518255600182019150602085019450602081019050611056565b868310156110985784890151611094601f891682610fa7565b8355505b6001600288020188555050505b505050505050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b5f6110d2826110ad565b91506110dd836110ad565b92508282026110eb816110ad565b91508082146110fd576110fc610bf7565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61113b826110ad565b9150611146836110ad565b92508261115657611155611104565b5b828204905092915050565b5f61116b82610d87565b915061117683610d87565b925082820190508082111561118e5761118d610bf7565b5b92915050565b61119d81610d87565b82525050565b5f6060820190506111b65f830186610bc3565b6111c36020830185611194565b6111d06040830184611194565b949350505050565b5f6020820190506111eb5f830184611194565b92915050565b60805160a0516153b661125f5f395f81816111720152818161270101528181612722015281816127c60152612b1501525f8181610bf201528181610f73015281816116f201528181611b3c015281816120540152818161243401528181612c040152612cfc01526153b65ff3fe60806040526004361061025b575f3560e01c8063715018a611610143578063bb0b6a53116100b5578063d045a0dc11610079578063d045a0dc1461091a578063d424388514610936578063dd62ed3e1461095e578063f2fde38b1461099a578063fc0c546a146109c2578063ff7bd03d146109ec5761025b565b8063bb0b6a531461082d578063bc70b35414610869578063bd815db0146108a5578063c7c7f5b3146108c1578063ca5eb5e1146108f25761025b565b806395d89b411161010757806395d89b4114610721578063963efcaa1461074b5780639f68b96414610775578063a9059cbb1461079f578063b731ea0a146107db578063b98bd070146108055761025b565b8063715018a61461063f5780637d25a05e1461065557806382413eac14610691578063857749b0146106cd5780638da5cb5b146106f75761025b565b806323b872dd116101dc57806352ae2879116101a057806352ae28791461050f5780635535d461146105395780635a0dfe4d146105755780635e280f11146105b15780636fc1b31e146105db57806370a08231146106035761025b565b806323b872dd1461041d578063313ce567146104595780633400288b146104835780633b6f743b146104ab57806342966c68146104e75761025b565b8063134d4f2511610223578063134d4f2514610349578063156a0d0f1461037357806317442b701461039e57806318160ddd146103c95780631f5e1334146103f35761025b565b806306fdde031461025f578063095ea7b3146102895780630d35b415146102c5578063111ecdad1461030357806313137d651461032d575b5f80fd5b34801561026a575f80fd5b50610273610a28565b60405161028091906131b0565b60405180910390f35b348015610294575f80fd5b506102af60048036038101906102aa919061326e565b610ab8565b6040516102bc91906132c6565b60405180910390f35b3480156102d0575f80fd5b506102eb60048036038101906102e69190613301565b610ada565b6040516102fa93929190613506565b60405180910390f35b34801561030e575f80fd5b50610317610bb4565b6040516103249190613551565b60405180910390f35b6103476004803603810190610342919061361c565b610bd9565b005b348015610354575f80fd5b5061035d610cf9565b60405161036a91906136ef565b60405180910390f35b34801561037e575f80fd5b50610387610cfe565b604051610395929190613764565b60405180910390f35b3480156103a9575f80fd5b506103b2610d2b565b6040516103c092919061378b565b60405180910390f35b3480156103d4575f80fd5b506103dd610d39565b6040516103ea91906137c1565b60405180910390f35b3480156103fe575f80fd5b50610407610d42565b60405161041491906136ef565b60405180910390f35b348015610428575f80fd5b50610443600480360381019061043e91906137da565b610d47565b60405161045091906132c6565b60405180910390f35b348015610464575f80fd5b5061046d610d75565b60405161047a9190613845565b60405180910390f35b34801561048e575f80fd5b506104a960048036038101906104a49190613897565b610d7d565b005b3480156104b6575f80fd5b506104d160048036038101906104cc91906138ff565b610d93565b6040516104de9190613986565b60405180910390f35b3480156104f2575f80fd5b5061050d6004803603810190610508919061399f565b610dfb565b005b34801561051a575f80fd5b50610523610e9b565b6040516105309190613551565b60405180910390f35b348015610544575f80fd5b5061055f600480360381019061055a91906139f4565b610ea2565b60405161056c9190613a84565b60405180910390f35b348015610580575f80fd5b5061059b60048036038101906105969190613897565b610f48565b6040516105a891906132c6565b60405180910390f35b3480156105bc575f80fd5b506105c5610f71565b6040516105d29190613aff565b60405180910390f35b3480156105e6575f80fd5b5061060160048036038101906105fc9190613b18565b610f95565b005b34801561060e575f80fd5b5061062960048036038101906106249190613b18565b611017565b60405161063691906137c1565b60405180910390f35b34801561064a575f80fd5b5061065361105d565b005b348015610660575f80fd5b5061067b60048036038101906106769190613897565b611070565b6040516106889190613b43565b60405180910390f35b34801561069c575f80fd5b506106b760048036038101906106b29190613b5c565b611077565b6040516106c491906132c6565b60405180910390f35b3480156106d8575f80fd5b506106e16110b1565b6040516106ee9190613845565b60405180910390f35b348015610702575f80fd5b5061070b6110b9565b6040516107189190613551565b60405180910390f35b34801561072c575f80fd5b506107356110e0565b60405161074291906131b0565b60405180910390f35b348015610756575f80fd5b5061075f611170565b60405161076c91906137c1565b60405180910390f35b348015610780575f80fd5b50610789611194565b60405161079691906132c6565b60405180910390f35b3480156107aa575f80fd5b506107c560048036038101906107c0919061326e565b611198565b6040516107d291906132c6565b60405180910390f35b3480156107e6575f80fd5b506107ef6111ba565b6040516107fc9190613551565b60405180910390f35b348015610810575f80fd5b5061082b60048036038101906108269190613c22565b6111df565b005b348015610838575f80fd5b50610853600480360381019061084e9190613c6d565b611200565b6040516108609190613ca7565b60405180910390f35b348015610874575f80fd5b5061088f600480360381019061088a9190613cc0565b611215565b60405161089c9190613a84565b60405180910390f35b6108bf60048036038101906108ba9190613d86565b611417565b005b6108db60048036038101906108d69190613def565b6115e3565b6040516108e9929190613ee6565b60405180910390f35b3480156108fd575f80fd5b5061091860048036038101906109139190613b18565b6116e8565b005b610934600480360381019061092f919061361c565b611779565b005b348015610941575f80fd5b5061095c60048036038101906109579190613b18565b6117f6565b005b348015610969575f80fd5b50610984600480360381019061097f9190613f0d565b611878565b60405161099191906137c1565b60405180910390f35b3480156109a5575f80fd5b506109c060048036038101906109bb9190613b18565b6118fa565b005b3480156109cd575f80fd5b506109d661197e565b6040516109e39190613551565b60405180910390f35b3480156109f7575f80fd5b50610a126004803603810190610a0d9190613f4b565b611985565b604051610a1f91906132c6565b60405180910390f35b606060088054610a3790613fa3565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6390613fa3565b8015610aae5780601f10610a8557610100808354040283529160200191610aae565b820191905f5260205f20905b815481529060010190602001808311610a9157829003601f168201915b5050505050905090565b5f80610ac26119c2565b9050610acf8185856119c9565b600191505092915050565b610ae26130ad565b6060610aec6130c5565b5f8067ffffffffffffffff8016905060405180604001604052808381526020018281525094505f67ffffffffffffffff811115610b2c57610b2b613fd3565b5b604051908082528060200260200182016040528015610b6557816020015b610b526130dd565b815260200190600190039081610b4a5790505b5093505f80610b8e886040013589606001358a5f016020810190610b899190613c6d565b6119db565b915091506040518060400160405280838152602001828152509450505050509193909250565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614610c6957336040517f91ac5e4f000000000000000000000000000000000000000000000000000000008152600401610c609190613551565b60405180910390fd5b8660200135610c88885f016020810190610c839190613c6d565b611a3a565b14610ce157865f016020810190610c9f9190613c6d565b87602001356040517fc26bebcc000000000000000000000000000000000000000000000000000000008152600401610cd892919061400f565b60405180910390fd5b610cf087878787878787611aab565b50505050505050565b600281565b5f807f02e49c2c000000000000000000000000000000000000000000000000000000006001915091509091565b5f8060016002915091509091565b5f600754905090565b600181565b5f80610d516119c2565b9050610d5e858285611c35565b610d69858585611cc7565b60019150509392505050565b5f6012905090565b610d85611db7565b610d8f8282611e3e565b5050565b610d9b6130f6565b5f610dc084604001358560600135865f016020810190610dbb9190613c6d565b6119db565b9150505f80610dcf8684611e9d565b91509150610df0865f016020810190610de89190613c6d565b83838861204a565b935050505092915050565b610e03611db7565b606460326b052b7d2dcc80cd2e40000000610e1e919061407e565b610e2891906140e7565b6fffffffffffffffffffffffffffffffff1681610e43610d39565b610e4d9190614117565b1015610e8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8590614194565b60405180910390fd5b610e98338261212b565b50565b5f30905090565b6003602052815f5260405f20602052805f5260405f205f91509150508054610ec990613fa3565b80601f0160208091040260200160405190810160405280929190818152602001828054610ef590613fa3565b8015610f405780601f10610f1757610100808354040283529160200191610f40565b820191905f5260205f20905b815481529060010190602001808311610f2357829003601f168201915b505050505081565b5f8160015f8563ffffffff1663ffffffff1681526020019081526020015f205414905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b610f9d611db7565b8060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507ff0be4f1e87349231d80c36b33f9e8639658eeaf474014dee15a3e6a4d44141978160405161100c9190613551565b60405180910390a150565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611065611db7565b61106e5f6121aa565b565b5f92915050565b5f3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050949350505050565b5f6006905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600980546110ef90613fa3565b80601f016020809104026020016040519081016040528092919081815260200182805461111b90613fa3565b80156111665780601f1061113d57610100808354040283529160200191611166565b820191905f5260205f20905b81548152906001019060200180831161114957829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f90565b5f806111a26119c2565b90506111af818585611cc7565b600191505092915050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6111e7611db7565b6111fc8282906111f791906143e3565b61226b565b5050565b6001602052805f5260405f205f915090505481565b60605f60035f8763ffffffff1663ffffffff1681526020019081526020015f205f8661ffff1661ffff1681526020019081526020015f20805461125790613fa3565b80601f016020809104026020016040519081016040528092919081815260200182805461128390613fa3565b80156112ce5780601f106112a5576101008083540402835291602001916112ce565b820191905f5260205f20905b8154815290600101906020018083116112b157829003601f168201915b505050505090505f8151036113295783838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505091505061140f565b5f848490500361133c578091505061140f565b600284849050106113d05761139384848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050612380565b80848460029080926113a7939291906143ff565b6040516020016113b993929190614497565b60405160208183030381529060405291505061140f565b83836040517f9a6d49cd0000000000000000000000000000000000000000000000000000000081526004016114069291906144e8565b60405180910390fd5b949350505050565b5f5b8282905081101561153657368383838181106114385761143761450a565b5b905060200281019061144a9190614543565b905061146f815f015f0160208101906114639190613c6d565b825f0160200135610f48565b6114795750611529565b3073ffffffffffffffffffffffffffffffffffffffff1663d045a0dc8260c00135835f018460a00135858061010001906114b3919061456b565b8760e00160208101906114c69190613b18565b888061012001906114d7919061456b565b6040518963ffffffff1660e01b81526004016114f997969594939291906146a0565b5f604051808303818588803b158015611510575f80fd5b505af1158015611522573d5f803e3d5ffd5b5050505050505b8080600101915050611419565b503373ffffffffffffffffffffffffffffffffffffffff16638e9e70996040518163ffffffff1660e01b81526004015f60405180830381865afa15801561157f573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906115a79190614771565b6040517f8351eea70000000000000000000000000000000000000000000000000000000081526004016115da9190613a84565b60405180910390fd5b6115eb61310e565b6115f36130c5565b5f8061161a33886040013589606001358a5f0160208101906116159190613c6d565b6123d9565b915091505f8061162a8984611e9d565b9150915061165c895f0160208101906116439190613c6d565b83838b8036038101906116569190614805565b8b612401565b955060405180604001604052808581526020018481525094503373ffffffffffffffffffffffffffffffffffffffff16865f01517f85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a8b5f0160208101906116c39190613c6d565b87876040516116d493929190614830565b60405180910390a350505050935093915050565b6116f0611db7565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ca5eb5e1826040518263ffffffff1660e01b81526004016117499190613551565b5f604051808303815f87803b158015611760575f80fd5b505af1158015611772573d5f803e3d5ffd5b5050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117de576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117ed87878787878787612517565b50505050505050565b6117fe611db7565b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c24277608160405161186d9190613551565b60405180910390a150565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611902611db7565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611972575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016119699190613551565b60405180910390fd5b61197b816121aa565b50565b5f30905090565b5f816020013560015f845f0160208101906119a09190613c6d565b63ffffffff1663ffffffff1681526020019081526020015f2054149050919050565b5f33905090565b6119d6838383600161252f565b505050565b5f806119e6856126fe565b915081905083811015611a325780846040517f71c4efed000000000000000000000000000000000000000000000000000000008152600401611a29929190614865565b60405180910390fd5b935093915050565b5f8060015f8463ffffffff1663ffffffff1681526020019081526020015f205490505f801b8103611aa257826040517ff6ff4fb7000000000000000000000000000000000000000000000000000000008152600401611a99919061488c565b60405180910390fd5b80915050919050565b5f611abe611ab9878761275d565b612787565b90505f611aee82611ad7611ad28a8a612792565b6127c3565b8b5f016020810190611ae99190613c6d565b612801565b9050611afa878761284f565b15611bc8575f611b388a6040016020810190611b1691906148a5565b8b5f016020810190611b289190613c6d565b84611b338c8c612862565b6128c4565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637cb59012848b5f856040518563ffffffff1660e01b8152600401611b999493929190614909565b5f604051808303815f87803b158015611bb0575f80fd5b505af1158015611bc2573d5f803e3d5ffd5b50505050505b8173ffffffffffffffffffffffffffffffffffffffff16887fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c8b5f016020810190611c139190613c6d565b84604051611c22929190614953565b60405180910390a3505050505050505050565b5f611c408484611878565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611cc15781811015611cb2578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401611ca99392919061497a565b60405180910390fd5b611cc084848484035f61252f565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d37575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611d2e9190613551565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611da7575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611d9e9190613551565b60405180910390fd5b611db28383836128f6565b505050565b611dbf6119c2565b73ffffffffffffffffffffffffffffffffffffffff16611ddd6110b9565b73ffffffffffffffffffffffffffffffffffffffff1614611e3c57611e006119c2565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401611e339190613551565b60405180910390fd5b565b8060015f8463ffffffff1663ffffffff1681526020019081526020015f20819055507f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b8282604051611e9192919061400f565b60405180910390a15050565b6060805f611f098560200135611eb286612b12565b878060a00190611ec2919061456b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050612b46565b80925081945050505f81611f1e576001611f21565b60025b9050611f4e865f016020810190611f389190613c6d565b82888060800190611f49919061456b565b611215565b92505f73ffffffffffffffffffffffffffffffffffffffff1660045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120415760045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663043a78eb85856040518363ffffffff1660e01b81526004016120009291906149af565b602060405180830381865afa15801561201b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061203f91906149f8565b505b50509250929050565b6120526130f6565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ddc28c586040518060a001604052808863ffffffff1681526020016120ae89611a3a565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b81526004016120e3929190614af4565b6040805180830381865afa1580156120fd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121219190614b83565b9050949350505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361219b575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016121929190613551565b60405180910390fd5b6121a6825f836128f6565b5050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f5b81518110156123455761229d82828151811061228c5761228b61450a565b5b602002602001015160400151612380565b8181815181106122b0576122af61450a565b5b60200260200101516040015160035f8484815181106122d2576122d161450a565b5b60200260200101515f015163ffffffff1663ffffffff1681526020019081526020015f205f84848151811061230a5761230961450a565b5b60200260200101516020015161ffff1661ffff1681526020019081526020015f2090816123379190614d42565b50808060010191505061226d565b507fbe4864a8e820971c0247f5992e2da559595f7bf076a21cb5928d443d2a13b674816040516123759190614f28565b60405180910390a150565b5f60028201519050600361ffff168161ffff16146123d557816040517f9a6d49cd0000000000000000000000000000000000000000000000000000000081526004016123cc9190613a84565b60405180910390fd5b5050565b5f806123e68585856119db565b80925081935050506123f8868361212b565b94509492505050565b61240961310e565b5f612416845f0151612bb4565b90505f84602001511115612432576124318460200151612c01565b5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632637a450826040518060a001604052808b63ffffffff16815260200161248f8c611a3a565b81526020018a81526020018981526020015f8960200151111515815250866040518463ffffffff1660e01b81526004016124ca929190614af4565b60806040518083038185885af11580156124e6573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061250b9190614fd1565b91505095945050505050565b61252687878787878787611aab565b50505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361259f575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016125969190613551565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361260f575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016126069190613551565b60405180910390fd5b8160065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080156126f8578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516126ef91906137c1565b60405180910390a35b50505050565b5f7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008361274c9190614ffc565b612756919061502c565b9050919050565b5f82825f90602060ff1692612774939291906143ff565b9061277f9190615077565b905092915050565b5f815f1c9050919050565b5f8282602060ff1690602860ff16926127ad939291906143ff565b906127b89190615100565b60c01c905092915050565b5f7f00000000000000000000000000000000000000000000000000000000000000008267ffffffffffffffff166127fa919061502c565b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361283b5761dead93505b6128458484612d47565b8290509392505050565b5f602860ff168383905011905092915050565b60608282602860ff1690809261287a939291906143ff565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050905092915050565b6060848484846040516020016128dd94939291906151e6565b6040516020818303038152906040529050949350505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612946578060075f82825461293a919061522f565b92505081905550612a16565b5f60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156129d0578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016129c79392919061497a565b60405180910390fd5b81810360055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a5d578060075f8282540392505081905550612aa8565b8060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612b0591906137c1565b60405180910390a3505050565b5f7f000000000000000000000000000000000000000000000000000000000000000082612b3f9190614ffc565b9050919050565b60605f80835111905080612b7b578484604051602001612b67929190615282565b604051602081830303815290604052612baa565b8484612b8633612dc6565b85604051602001612b9a94939291906152ad565b6040516020818303038152906040525b9150935093915050565b5f813414612bf957346040517f9f704120000000000000000000000000000000000000000000000000000000008152600401612bf091906137c1565b60405180910390fd5b819050919050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c6b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c8f919061530a565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612cf6576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612d43337f0000000000000000000000000000000000000000000000000000000000000000848473ffffffffffffffffffffffffffffffffffffffff16612de7909392919063ffffffff16565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612db7575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401612dae9190613551565b60405180910390fd5b612dc25f83836128f6565b5050565b5f8173ffffffffffffffffffffffffffffffffffffffff165f1b9050919050565b612e63848573ffffffffffffffffffffffffffffffffffffffff166323b872dd868686604051602401612e1c93929190615335565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612e69565b50505050565b5f612e93828473ffffffffffffffffffffffffffffffffffffffff16612efe90919063ffffffff16565b90505f815114158015612eb7575080806020019051810190612eb591906149f8565b155b15612ef957826040517f5274afe7000000000000000000000000000000000000000000000000000000008152600401612ef09190613551565b60405180910390fd5b505050565b6060612f0b83835f612f13565b905092915050565b606081471015612f5a57306040517fcd786059000000000000000000000000000000000000000000000000000000008152600401612f519190613551565b60405180910390fd5b5f808573ffffffffffffffffffffffffffffffffffffffff168486604051612f82919061536a565b5f6040518083038185875af1925050503d805f8114612fbc576040519150601f19603f3d011682016040523d82523d5f602084013e612fc1565b606091505b5091509150612fd1868383612fdc565b925050509392505050565b606082612ff157612fec82613069565b613061565b5f825114801561301757505f8473ffffffffffffffffffffffffffffffffffffffff163b145b1561305957836040517f9996b3150000000000000000000000000000000000000000000000000000000081526004016130509190613551565b60405180910390fd5b819050613062565b5b9392505050565b5f8151111561307b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180604001604052805f81526020015f81525090565b60405180604001604052805f81526020015f81525090565b60405180604001604052805f8152602001606081525090565b60405180604001604052805f81526020015f81525090565b60405180606001604052805f80191681526020015f67ffffffffffffffff16815260200161313a6130f6565b81525090565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61318282613140565b61318c818561314a565b935061319c81856020860161315a565b6131a581613168565b840191505092915050565b5f6020820190508181035f8301526131c88184613178565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61320a826131e1565b9050919050565b61321a81613200565b8114613224575f80fd5b50565b5f8135905061323581613211565b92915050565b5f819050919050565b61324d8161323b565b8114613257575f80fd5b50565b5f8135905061326881613244565b92915050565b5f8060408385031215613284576132836131d9565b5b5f61329185828601613227565b92505060206132a28582860161325a565b9150509250929050565b5f8115159050919050565b6132c0816132ac565b82525050565b5f6020820190506132d95f8301846132b7565b92915050565b5f80fd5b5f60e082840312156132f8576132f76132df565b5b81905092915050565b5f60208284031215613316576133156131d9565b5b5f82013567ffffffffffffffff811115613333576133326131dd565b5b61333f848285016132e3565b91505092915050565b6133518161323b565b82525050565b604082015f82015161336b5f850182613348565b50602082015161337e6020850182613348565b50505050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b6133bf816133ad565b82525050565b5f82825260208201905092915050565b5f6133df82613140565b6133e981856133c5565b93506133f981856020860161315a565b61340281613168565b840191505092915050565b5f604083015f8301516134225f8601826133b6565b506020830151848203602086015261343a82826133d5565b9150508091505092915050565b5f613452838361340d565b905092915050565b5f602082019050919050565b5f61347082613384565b61347a818561338e565b93508360208202850161348c8561339e565b805f5b858110156134c757848403895281516134a88582613447565b94506134b38361345a565b925060208a0199505060018101905061348f565b50829750879550505050505092915050565b604082015f8201516134ed5f850182613348565b5060208201516135006020850182613348565b50505050565b5f60a0820190506135195f830186613357565b818103604083015261352b8185613466565b905061353a60608301846134d9565b949350505050565b61354b81613200565b82525050565b5f6020820190506135645f830184613542565b92915050565b5f6060828403121561357f5761357e6132df565b5b81905092915050565b5f819050919050565b61359a81613588565b81146135a4575f80fd5b50565b5f813590506135b581613591565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126135dc576135db6135bb565b5b8235905067ffffffffffffffff8111156135f9576135f86135bf565b5b602083019150836001820283011115613615576136146135c3565b5b9250929050565b5f805f805f805f60e0888a031215613637576136366131d9565b5b5f6136448a828b0161356a565b97505060606136558a828b016135a7565b965050608088013567ffffffffffffffff811115613676576136756131dd565b5b6136828a828b016135c7565b955095505060a06136958a828b01613227565b93505060c088013567ffffffffffffffff8111156136b6576136b56131dd565b5b6136c28a828b016135c7565b925092505092959891949750929550565b5f61ffff82169050919050565b6136e9816136d3565b82525050565b5f6020820190506137025f8301846136e0565b92915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61373c81613708565b82525050565b5f67ffffffffffffffff82169050919050565b61375e81613742565b82525050565b5f6040820190506137775f830185613733565b6137846020830184613755565b9392505050565b5f60408201905061379e5f830185613755565b6137ab6020830184613755565b9392505050565b6137bb8161323b565b82525050565b5f6020820190506137d45f8301846137b2565b92915050565b5f805f606084860312156137f1576137f06131d9565b5b5f6137fe86828701613227565b935050602061380f86828701613227565b92505060406138208682870161325a565b9150509250925092565b5f60ff82169050919050565b61383f8161382a565b82525050565b5f6020820190506138585f830184613836565b92915050565b5f63ffffffff82169050919050565b6138768161385e565b8114613880575f80fd5b50565b5f813590506138918161386d565b92915050565b5f80604083850312156138ad576138ac6131d9565b5b5f6138ba85828601613883565b92505060206138cb858286016135a7565b9150509250929050565b6138de816132ac565b81146138e8575f80fd5b50565b5f813590506138f9816138d5565b92915050565b5f8060408385031215613915576139146131d9565b5b5f83013567ffffffffffffffff811115613932576139316131dd565b5b61393e858286016132e3565b925050602061394f858286016138eb565b9150509250929050565b604082015f82015161396d5f850182613348565b5060208201516139806020850182613348565b50505050565b5f6040820190506139995f830184613959565b92915050565b5f602082840312156139b4576139b36131d9565b5b5f6139c18482850161325a565b91505092915050565b6139d3816136d3565b81146139dd575f80fd5b50565b5f813590506139ee816139ca565b92915050565b5f8060408385031215613a0a57613a096131d9565b5b5f613a1785828601613883565b9250506020613a28858286016139e0565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f613a5682613a32565b613a608185613a3c565b9350613a7081856020860161315a565b613a7981613168565b840191505092915050565b5f6020820190508181035f830152613a9c8184613a4c565b905092915050565b5f819050919050565b5f613ac7613ac2613abd846131e1565b613aa4565b6131e1565b9050919050565b5f613ad882613aad565b9050919050565b5f613ae982613ace565b9050919050565b613af981613adf565b82525050565b5f602082019050613b125f830184613af0565b92915050565b5f60208284031215613b2d57613b2c6131d9565b5b5f613b3a84828501613227565b91505092915050565b5f602082019050613b565f830184613755565b92915050565b5f805f8060a08587031215613b7457613b736131d9565b5b5f613b818782880161356a565b945050606085013567ffffffffffffffff811115613ba257613ba16131dd565b5b613bae878288016135c7565b93509350506080613bc187828801613227565b91505092959194509250565b5f8083601f840112613be257613be16135bb565b5b8235905067ffffffffffffffff811115613bff57613bfe6135bf565b5b602083019150836020820283011115613c1b57613c1a6135c3565b5b9250929050565b5f8060208385031215613c3857613c376131d9565b5b5f83013567ffffffffffffffff811115613c5557613c546131dd565b5b613c6185828601613bcd565b92509250509250929050565b5f60208284031215613c8257613c816131d9565b5b5f613c8f84828501613883565b91505092915050565b613ca181613588565b82525050565b5f602082019050613cba5f830184613c98565b92915050565b5f805f8060608587031215613cd857613cd76131d9565b5b5f613ce587828801613883565b9450506020613cf6878288016139e0565b935050604085013567ffffffffffffffff811115613d1757613d166131dd565b5b613d23878288016135c7565b925092505092959194509250565b5f8083601f840112613d4657613d456135bb565b5b8235905067ffffffffffffffff811115613d6357613d626135bf565b5b602083019150836020820283011115613d7f57613d7e6135c3565b5b9250929050565b5f8060208385031215613d9c57613d9b6131d9565b5b5f83013567ffffffffffffffff811115613db957613db86131dd565b5b613dc585828601613d31565b92509250509250929050565b5f60408284031215613de657613de56132df565b5b81905092915050565b5f805f60808486031215613e0657613e056131d9565b5b5f84013567ffffffffffffffff811115613e2357613e226131dd565b5b613e2f868287016132e3565b9350506020613e4086828701613dd1565b9250506060613e5186828701613227565b9150509250925092565b613e6481613588565b82525050565b613e7381613742565b82525050565b604082015f820151613e8d5f850182613348565b506020820151613ea06020850182613348565b50505050565b608082015f820151613eba5f850182613e5b565b506020820151613ecd6020850182613e6a565b506040820151613ee06040850182613e79565b50505050565b5f60c082019050613ef95f830185613ea6565b613f0660808301846134d9565b9392505050565b5f8060408385031215613f2357613f226131d9565b5b5f613f3085828601613227565b9250506020613f4185828601613227565b9150509250929050565b5f60608284031215613f6057613f5f6131d9565b5b5f613f6d8482850161356a565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613fba57607f821691505b602082108103613fcd57613fcc613f76565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6140098161385e565b82525050565b5f6040820190506140225f830185614000565b61402f6020830184613c98565b9392505050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61408882614036565b915061409383614036565b92508282026140a181614036565b91508082146140b3576140b2614051565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6140f182614036565b91506140fc83614036565b92508261410c5761410b6140ba565b5b828204905092915050565b5f6141218261323b565b915061412c8361323b565b925082820390508181111561414457614143614051565b5b92915050565b7f457863656564734275726e4c696d6974000000000000000000000000000000005f82015250565b5f61417e60108361314a565b91506141898261414a565b602082019050919050565b5f6020820190508181035f8301526141ab81614172565b9050919050565b6141bb82613168565b810181811067ffffffffffffffff821117156141da576141d9613fd3565b5b80604052505050565b5f6141ec6131d0565b90506141f882826141b2565b919050565b5f67ffffffffffffffff82111561421757614216613fd3565b5b602082029050602081019050919050565b5f80fd5b5f80fd5b5f80fd5b5f67ffffffffffffffff82111561424e5761424d613fd3565b5b61425782613168565b9050602081019050919050565b828183375f83830152505050565b5f61428461427f84614234565b6141e3565b9050828152602081018484840111156142a05761429f614230565b5b6142ab848285614264565b509392505050565b5f82601f8301126142c7576142c66135bb565b5b81356142d7848260208601614272565b91505092915050565b5f606082840312156142f5576142f4614228565b5b6142ff60606141e3565b90505f61430e84828501613883565b5f830152506020614321848285016139e0565b602083015250604082013567ffffffffffffffff8111156143455761434461422c565b5b614351848285016142b3565b60408301525092915050565b5f61436f61436a846141fd565b6141e3565b90508083825260208201905060208402830185811115614392576143916135c3565b5b835b818110156143d957803567ffffffffffffffff8111156143b7576143b66135bb565b5b8086016143c489826142e0565b85526020850194505050602081019050614394565b5050509392505050565b5f6143ef36848461435d565b905092915050565b5f80fd5b5f80fd5b5f8085851115614412576144116143f7565b5b83861115614423576144226143fb565b5b6001850283019150848603905094509492505050565b5f81905092915050565b5f61444d82613a32565b6144578185614439565b935061446781856020860161315a565b80840191505092915050565b5f61447e8385614439565b935061448b838584614264565b82840190509392505050565b5f6144a28286614443565b91506144af828486614473565b9150819050949350505050565b5f6144c78385613a3c565b93506144d4838584614264565b6144dd83613168565b840190509392505050565b5f6020820190508181035f8301526145018184866144bc565b90509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f80fd5b5f80fd5b5f80fd5b5f823560016101400383360303811261455f5761455e614537565b5b80830191505092915050565b5f808335600160200384360303811261458757614586614537565b5b80840192508235915067ffffffffffffffff8211156145a9576145a861453b565b5b6020830192506001820236038313156145c5576145c461453f565b5b509250929050565b5f6145db6020840184613883565b905092915050565b6145ec8161385e565b82525050565b5f61460060208401846135a7565b905092915050565b61461181613742565b811461461b575f80fd5b50565b5f8135905061462c81614608565b92915050565b5f614640602084018461461e565b905092915050565b606082016146585f8301836145cd565b6146645f8501826145e3565b5061467260208301836145f2565b61467f6020850182613e5b565b5061468d6040830183614632565b61469a6040850182613e6a565b50505050565b5f60e0820190506146b35f83018a614648565b6146c06060830189613c98565b81810360808301526146d38187896144bc565b90506146e260a0830186613542565b81810360c08301526146f58184866144bc565b905098975050505050505050565b5f61471561471084614234565b6141e3565b90508281526020810184848401111561473157614730614230565b5b61473c84828561315a565b509392505050565b5f82601f830112614758576147576135bb565b5b8151614768848260208601614703565b91505092915050565b5f60208284031215614786576147856131d9565b5b5f82015167ffffffffffffffff8111156147a3576147a26131dd565b5b6147af84828501614744565b91505092915050565b5f604082840312156147cd576147cc614228565b5b6147d760406141e3565b90505f6147e68482850161325a565b5f8301525060206147f98482850161325a565b60208301525092915050565b5f6040828403121561481a576148196131d9565b5b5f614827848285016147b8565b91505092915050565b5f6060820190506148435f830186614000565b61485060208301856137b2565b61485d60408301846137b2565b949350505050565b5f6040820190506148785f8301856137b2565b61488560208301846137b2565b9392505050565b5f60208201905061489f5f830184614000565b92915050565b5f602082840312156148ba576148b96131d9565b5b5f6148c78482850161461e565b91505092915050565b5f819050919050565b5f6148f36148ee6148e9846148d0565b613aa4565b6136d3565b9050919050565b614903816148d9565b82525050565b5f60808201905061491c5f830187613542565b6149296020830186613c98565b61493660408301856148fa565b81810360608301526149488184613a4c565b905095945050505050565b5f6040820190506149665f830185614000565b61497360208301846137b2565b9392505050565b5f60608201905061498d5f830186613542565b61499a60208301856137b2565b6149a760408301846137b2565b949350505050565b5f6040820190508181035f8301526149c78185613a4c565b905081810360208301526149db8184613a4c565b90509392505050565b5f815190506149f2816138d5565b92915050565b5f60208284031215614a0d57614a0c6131d9565b5b5f614a1a848285016149e4565b91505092915050565b5f82825260208201905092915050565b5f614a3d82613a32565b614a478185614a23565b9350614a5781856020860161315a565b614a6081613168565b840191505092915050565b614a74816132ac565b82525050565b5f60a083015f830151614a8f5f8601826145e3565b506020830151614aa26020860182613e5b565b5060408301518482036040860152614aba8282614a33565b91505060608301518482036060860152614ad48282614a33565b9150506080830151614ae96080860182614a6b565b508091505092915050565b5f6040820190508181035f830152614b0c8185614a7a565b9050614b1b6020830184613542565b9392505050565b5f81519050614b3081613244565b92915050565b5f60408284031215614b4b57614b4a614228565b5b614b5560406141e3565b90505f614b6484828501614b22565b5f830152506020614b7784828501614b22565b60208301525092915050565b5f60408284031215614b9857614b976131d9565b5b5f614ba584828501614b36565b91505092915050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302614c0a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82614bcf565b614c148683614bcf565b95508019841693508086168417925050509392505050565b5f614c46614c41614c3c8461323b565b613aa4565b61323b565b9050919050565b5f819050919050565b614c5f83614c2c565b614c73614c6b82614c4d565b848454614bdb565b825550505050565b5f90565b614c87614c7b565b614c92818484614c56565b505050565b5b81811015614cb557614caa5f82614c7f565b600181019050614c98565b5050565b601f821115614cfa57614ccb81614bae565b614cd484614bc0565b81016020851015614ce3578190505b614cf7614cef85614bc0565b830182614c97565b50505b505050565b5f82821c905092915050565b5f614d1a5f1984600802614cff565b1980831691505092915050565b5f614d328383614d0b565b9150826002028217905092915050565b614d4b82613a32565b67ffffffffffffffff811115614d6457614d63613fd3565b5b614d6e8254613fa3565b614d79828285614cb9565b5f60209050601f831160018114614daa575f8415614d98578287015190505b614da28582614d27565b865550614e09565b601f198416614db886614bae565b5f5b82811015614ddf57848901518255600182019150602085019450602081019050614dba565b86831015614dfc5784890151614df8601f891682614d0b565b8355505b6001600288020188555050505b505050505050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614e43816136d3565b82525050565b5f606083015f830151614e5e5f8601826145e3565b506020830151614e716020860182614e3a565b5060408301518482036040860152614e898282614a33565b9150508091505092915050565b5f614ea18383614e49565b905092915050565b5f602082019050919050565b5f614ebf82614e11565b614ec98185614e1b565b935083602082028501614edb85614e2b565b805f5b85811015614f165784840389528151614ef78582614e96565b9450614f0283614ea9565b925060208a01995050600181019050614ede565b50829750879550505050505092915050565b5f6020820190508181035f830152614f408184614eb5565b905092915050565b5f81519050614f5681613591565b92915050565b5f81519050614f6a81614608565b92915050565b5f60808284031215614f8557614f84614228565b5b614f8f60606141e3565b90505f614f9e84828501614f48565b5f830152506020614fb184828501614f5c565b6020830152506040614fc584828501614b36565b60408301525092915050565b5f60808284031215614fe657614fe56131d9565b5b5f614ff384828501614f70565b91505092915050565b5f6150068261323b565b91506150118361323b565b925082615021576150206140ba565b5b828204905092915050565b5f6150368261323b565b91506150418361323b565b925082820261504f8161323b565b9150828204841483151761506657615065614051565b5b5092915050565b5f82905092915050565b5f615082838361506d565b8261508d8135613588565b925060208210156150cd576150c87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802614bcf565b831692505b505092915050565b5f7fffffffffffffffff00000000000000000000000000000000000000000000000082169050919050565b5f61510b838361506d565b8261511681356150d5565b92506008821015615156576151517fffffffffffffffff00000000000000000000000000000000000000000000000083600803600802614bcf565b831692505b505092915050565b5f8160c01b9050919050565b5f6151748261515e565b9050919050565b61518c61518782613742565b61516a565b82525050565b5f8160e01b9050919050565b5f6151a882615192565b9050919050565b6151c06151bb8261385e565b61519e565b82525050565b5f819050919050565b6151e06151db8261323b565b6151c6565b82525050565b5f6151f1828761517b565b60088201915061520182866151af565b60048201915061521182856151cf565b6020820191506152218284614443565b915081905095945050505050565b5f6152398261323b565b91506152448361323b565b925082820190508082111561525c5761525b614051565b5b92915050565b5f819050919050565b61527c61527782613588565b615262565b82525050565b5f61528d828561526b565b60208201915061529d828461517b565b6008820191508190509392505050565b5f6152b8828761526b565b6020820191506152c8828661517b565b6008820191506152d8828561526b565b6020820191506152e88284614443565b915081905095945050505050565b5f8151905061530481613211565b92915050565b5f6020828403121561531f5761531e6131d9565b5b5f61532c848285016152f6565b91505092915050565b5f6060820190506153485f830186613542565b6153556020830185613542565b61536260408301846137b2565b949350505050565b5f6153758284614443565b91508190509291505056fea264697066735822122096c141c4d4505daf4e8500f053aab3700dec35ccd6879d87951516b7cb79c9b464736f6c634300081a0033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000006edce65403992e310a62460808c4b910d972f10f0000000000000000000000001a90adac7acf5f04558348883636530d84654af80000000000000000000000000000000000000000000000000000000000000001670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016700000000000000000000000000000000000000000000000000000000000000