229824 | [Подлинная] (специальная книга)
Цена: 855руб. (¥47.5)
Артикул: 539384086917
Вес товара: ~0.7 кг. Указан усредненный вес, который может отличаться от фактического. Не включен в цену, оплачивается при получении.
PHA+PGltZyBjbGFzcz0iZGVzY19hbmNob3IiIGlkPSJkZXNjLW1vZHVsZS0xIiBzcmM9Imh0dHBzOi8vYXNzZXRzLmFsaWNkbi5jb20va2lzc3kvMS4wLjAvYnVpbGQvaW1nbGF6eWxvYWQvc3BhY2ViYWxsLmdpZiI+PGRpdj48aW1nIHdpZHRoPSI3OTBweCIgc3JjPSJodHRwczovL2ltZy5hbGljZG4uY29tL2ltZ2V4dHJhL2kxLzIxNzA0Mjk3Ni9PMUNOMDFQN2VPUzYxWHIzSWNZYWdral8hITIxNzA0Mjk3Ni5qcGciPjwvZGl2PjxkaXY+PGltZyBzcmM9Imh0dHBzOi8vaW1nLmFsaWNkbi5jb20vaW1nZXh0cmEvaTMvMjE3MDQyOTc2L1QyejMzVlhwQlhYWFhYWFhYWC0yMTcwNDI5NzYuanBnIiB3aWR0aD0iNzUwIiBoZWlnaHQ9IjYwIiBzdHlsZT0ibWFyZ2luLXRvcDogMTAuMHB4OyI+PC9kaXY+PHRhYmxlIHdpZHRoPSI3NTAiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBzdHlsZT0ibGluZS1oZWlnaHQ6IDIzLjBweDtmb250LXNpemU6IDE0LjBweDtjb2xvcjogIzY2NjY2NjttYXJnaW4tdG9wOiAxMC4wcHg7Ym9yZGVyOiBzb2xpZCAxLjBweCAjY2NjY2NjO2JvcmRlci13aWR0aDogMS4wcHggMCAwIDEuMHB4OyI+PHRyPjx0ZCB3aWR0aD0iMTE5IiBhbGlnbj0icmlnaHQiIGJnY29sb3I9IiNGQkZCRkIiIHN0eWxlPSJib3JkZXI6IHNvbGlkIDEuMHB4ICNjY2NjY2M7Ym9yZGVyLTEuMHB4IDEuMHB4IDA7Ij5bIOS5puWQje+8ml08L3RkPjx0ZCB3aWR0aD0iNjI4IiBzdHlsZT0iYm9yZGVyOiBzb2xpZCAxLjBweCAjY2NjY2NjO2JvcmRlci0xLjBweCAxLjBweCAwOyI+WyDjgJDmraPniYjjgJEo54m55Lu35LmmKUxpbnV45YaF5qC4QVBJ5a6M5YWo5Y+C6ICD5omL5YaMIO+8iOesrDLniYjvvIl8MjI5ODI0XTwvdGQ+PC90cj48dHI+PHRkIHdpZHRoPSIxMTkiIGFsaWduPSJyaWdodCIgYmdjb2xvcj0iI0ZCRkJGQiIgc3R5bGU9ImJvcmRlcjogc29saWQgMS4wcHggI2NjY2NjYztib3JkZXItMS4wcHggMS4wcHggMDsiPlsg5Zu+5Lmm5a6a5Lu377yaXTwvdGQ+PHRkIHdpZHRoPSI2MjgiIHN0eWxlPSJib3JkZXI6IHNvbGlkIDEuMHB4ICNjY2NjY2M7Ym9yZGVyLTEuMHB4IDEuMHB4IDA7Ij5bIDk55YWDXTwvdGQ+PC90cj48dHI+PHRkIHdpZHRoPSIxMTkiIGFsaWduPSJyaWdodCIgYmdjb2xvcj0iI0ZCRkJGQiIgc3R5bGU9ImJvcmRlcjogc29saWQgMS4wcHggI2NjY2NjYztib3JkZXItMS4wcHggMS4wcHggMDsiPlsg5Zu+5Lmm5L2c6ICF77yaXTwvdGQ+PHRkIHdpZHRoPSI2MjgiIHN0eWxlPSJib3JkZXI6IHNvbGlkIDEuMHB4ICNjY2NjY2M7Ym9yZGVyLTEuMHB4IDEuMHB4IDA7Ij5bIOmCsemTgTvlkajnjoldPC90ZD48L3RyPjx0cj48dGQgd2lkdGg9IjExOSIgYWxpZ249InJpZ2h0IiBiZ2NvbG9yPSIjRkJGQkZCIiBzdHlsZT0iYm9yZGVyOiBzb2xpZCAxLjBweCAjY2NjY2NjO2JvcmRlci0xLjBweCAxLjBweCAwOyI+WyDlh7rniYjnpL7vvJpdPC90ZD48dGQgd2lkdGg9IjYyOCIgc3R5bGU9ImJvcmRlcjogc29saWQgMS4wcHggI2NjY2NjYztib3JkZXItMS4wcHggMS4wcHggMDsiPlsg5py65qKw5bel5Lia5Ye654mI56S+XTwvdGQ+PC90cj48dHI+PHRkIHdpZHRoPSIxMTkiIGFsaWduPSJyaWdodCIgYmdjb2xvcj0iI0ZCRkJGQiIgc3R5bGU9ImJvcmRlcjogc29saWQgMS4wcHggI2NjY2NjYztib3JkZXItMS4wcHggMS4wcHggMDsiPlsg5Ye654mI5pel5pyf77yaXTwvdGQ+PHRkIHdpZHRoPSI2MjgiIHN0eWxlPSJib3JkZXI6IHNvbGlkIDEuMHB4ICNjY2NjY2M7Ym9yZGVyLTEuMHB4IDEuMHB4IDA7Ij5bIDIwMTYtMTAtMDEg5pif5pyf5YWtIDAwOjAwOjAwXTwvdGQ+PC90cj48dHI+PHRkIHdpZHRoPSIxMTkiIGFsaWduPSJyaWdodCIgYmdjb2xvcj0iI0ZCRkJGQiIgc3R5bGU9ImJvcmRlcjogc29saWQgMS4wcHggI2NjY2NjYztib3JkZXItMS4wcHggMS4wcHggMDsiPlsgSVNCTuWPt++8ml08L3RkPjx0ZCB3aWR0aD0iNjI4IiBzdHlsZT0iYm9yZGVyOiBzb2xpZCAxLjBweCAjY2NjY2NjO2JvcmRlci0xLjBweCAxLjBweCAwOyI+IDk3ODcxMTE1NDg3NzU8L3RkPjwvdHI+PHRyPjx0ZCB3aWR0aD0iMTE5IiBhbGlnbj0icmlnaHQiIGJnY29sb3I9IiNGQkZCRkIiIHN0eWxlPSJib3JkZXI6IHNvbGlkIDEuMHB4ICNjY2NjY2M7Ym9yZGVyLTEuMHB4IDEuMHB4IDA7Ij5bIOW8gOacrO+8ml08L3RkPjx0ZCBzdHlsZT0iYm9yZGVyOiBzb2xpZCAxLjBweCAjY2NjY2NjO2JvcmRlci0xLjBweCAxLjBweCAwOyI+WzE25byAXTwvdGQ+PC90cj48dHI+PHRkIHdpZHRoPSIxMTkiIGFsaWduPSJyaWdodCIgYmdjb2xvcj0iI0ZCRkJGQiIgc3R5bGU9ImJvcmRlcjogc29saWQgMS4wcHggI2NjY2NjYztib3JkZXItMS4wcHggMS4wcHggMDsiPlsg6aG15pWw77yaXTwvdGQ+PHRkIHN0eWxlPSJib3JkZXI6IHNvbGlkIDEuMHB4ICNjY2NjY2M7Ym9yZGVyLTEuMHB4IDEuMHB4IDA7Ij4wPC90ZD48L3RyPjx0cj48dGQgd2lkdGg9IjExOSIgYWxpZ249InJpZ2h0IiBiZ2NvbG9yPSIjRkJGQkZCIiBzdHlsZT0iYm9yZGVyOiBzb2xpZCAxLjBweCAjY2NjY2NjO2JvcmRlci0xLjBweCAxLjBweCAwOyI+WyDniYjmrKHvvJpdPC90ZD48dGQgc3R5bGU9ImJvcmRlcjogc29saWQgMS4wcHggI2NjY2NjYztib3JkZXItMS4wcHggMS4wcHggMDsiPjItMTwvdGQ+PC90cj48L3RhYmxlPjx0YWJsZSB3aWR0aD0iNzUwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgc3R5bGU9ImJvcmRlcjogMS4wcHggc29saWQgI2NjY2NjYzttYXJnaW4tdG9wOiAxMC4wcHg7bGluZS1oZWlnaHQ6IDIzLjBweDtmb250LXNpemU6IDE0LjBweDtjb2xvcjogIzY2NjY2NjsiPjx0cj48dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDEuMHB4IGRhc2hlZCAjY2NjY2NjO2JhY2tncm91bmQtY29sb3I6ICNmYmZiZmI7Zm9udC13ZWlnaHQ6IGJvbGQ7Y29sb3I6ICM5OTAwMDA7Ij5bIOWGheWuueeugOS7i108L3RkPjwvdHI+PHRyPjx0ZCBzdHlsZT0icGFkZGluZzogMTAuMHB4OyI+W+acrOS5puWfuuS6jnp1aeaWsOeahExpbnV45YaF5qC45rqQ5Luj56CBMy4xOS4z54mI5pys77yM5a+55bi455So55qE5YaF5qC4QVBJ5L2c5LqG57O757uf5b2S57qz77yM5bm257yW5YaZ5LqG5YW45Z6L6aqM6K+B56iL5bqP77yM5L2/55CG6K665YiG5p6Q5LiO5a6e6ZmF57yW56iL5YGa5Yiw5LqG57uf5LiA44CC5YiG5p6Q55qE5YaF5qC4QVBJ5qih5Z2X5YyF5ous77ya5qih5Z2X5py65Yi25YaF5qC4QVBJ44CB6L+b56iL566h55CG5YaF5qC4QVBJ44CB6L+b56iL6LCD5bqm5YaF5qC4QVBJ44CB5Lit5pat5LiO5byC5bi45py65Yi25YaF5qC4QVBJ44CB5pe26Ze05LiO5a6a5pe25py65Yi25YaF5qC4QVBJ44CB5YaF5a2Y566h55CG5YaF5qC4QVBJ44CB5YaF5qC45ZCM5q2l5py65Yi2QVBJ44CB5paH5Lu257O757uf5YaF5qC4QVBJ5ZKM6K6+5aSH6amx5Yqo5LiO6K6+5aSH566h55CG5qih5Z2X5YaF5qC4QVBJ44CCIF08L3RkPjwvdHI+PC90YWJsZT48dGFibGUgd2lkdGg9Ijc1MCIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHN0eWxlPSJib3JkZXI6IDEuMHB4IHNvbGlkICNjY2NjY2M7bWFyZ2luLXRvcDogMTAuMHB4O2xpbmUtaGVpZ2h0OiAyMy4wcHg7Zm9udC1zaXplOiAxNC4wcHg7Y29sb3I6ICM2NjY2NjY7Ij48dHI+PHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxLjBweCBkYXNoZWQgI2NjY2NjYztiYWNrZ3JvdW5kLWNvbG9yOiAjZmJmYmZiO2ZvbnQtd2VpZ2h0OiBib2xkO2NvbG9yOiAjOTkwMDAwOyI+WyDnm67lvZVdPC90ZD48L3RyPjx0cj48dGQgc3R5bGU9InBhZGRpbmc6IDEwLjBweDsiPltDb250ZW50c+ebruOAgOOAgOW9leWJjeOAgOiogOesrDHnq6DjgIBMaW51eOWGheaguEFQSeWIhuaekOW/heWkh+efpeivhiAgMTEuMeOAgExpbnV45YaF5qC457yW56iL5rOo5oSP5LqL6aG5ICAxMS4y44CA5pys5Lmm5Lit5qih5Z2X57yW6K+RTWFrZWZpbGXmqKHmnb8gIDIxLjPjgIDlhoXmoLjosIPor5Xlh73mlbBwcmludGsgIDMxLjTjgIDlhoXmoLjnvJbor5HkuI7lrprliLYgIDUxLjQuMeOAgOiOt+W+l0xpbnV45YaF5qC45LiO6KGl5LiBICA1MS40LjLjgIDlh4blpIfnvJbor5HpnIDopoHnmoTlt6XlhbcgIDUxLjQuM+OAgOino+WOi+WGheaguCAgNjEuNC4044CA57uZ5YaF5qC45omT6KGl5LiBICA2MS40LjXjgIDorr7lrprnvJbor5HpgInpobkgIDcxLjQuNuOAgOe8luivkeS4juWuieijheWGheaguCAgOTEuNC4344CA5Yib5bu6aW5pdHJhbWZzICAxMDEuNC4444CA6K6+572uZ3J1YiAgMTExLjQuOeOAgOWQr+WKqOmAiemhuSAgMTIxLjXjgIDmuKnppqjmj5DnpLogIDEy5pys56ug5Y+C6ICD5paH54yuICAxM+esrDLnq6DjgIDlhoXmoLjmqKHlnZfmnLrliLZBUEkgIDE0Mi4x44CA5Ye95pWw77yaX19tb2R1bGVfYWRkcmVzcyggKSAgMTQyLjLjgIDlh73mlbDvvJpfX21vZHVsZV90ZXh0X2FkZHJlc3MoICkgIDE2Mi4z44CA5Ye95pWw77yaX19wcmludF9zeW1ib2woICkgIDE5Mi4044CA5Ye95pWw77yaX19zeW1ib2xfZ2V0KCApICAyMjIuNeOAgOWHveaVsO+8ml9fc3ltYm9sX3B1dCggKSAgMjUyLjbjgIDlh73mlbDvvJpmaW5kX21vZHVsZSggKSAgMjcyLjfjgIDlh73mlbDvvJpmaW5kX3N5bWJvbCggKSAgMzEyLjjjgIDlh73mlbDvvJptb2R1bGVfaXNfbGl2ZSggKSAgMzYyLjnjgIDlh73mlbDvvJptb2R1bGVfcHV0KCApICAzODIuMTDjgIDlh73mlbDvvJptb2R1bGVfcmVmY291bnQoICkgIDQwMi4xMeOAgOWHveaVsO+8mnNwcmludF9zeW1ib2woICkgIDQyMi4xMuOAgOWHveaVsO+8mnN5bWJvbF9wdXRfYWRkciggKSAgNDUyLjEz44CA5Ye95pWw77yadHJ5X21vZHVsZV9nZXQoICkgIDQ45pys56ug5Y+C6ICD5paH54yuICA1MOesrDPnq6DjgIBMaW51eOi/m+eoi+euoeeQhuWGheaguEFQSSAgNTEzLjHjgIDlh73mlbDvvJpfX3Rhc2tfcGlkX25yX25zKCApICA1MTMuMuOAgOWHveaVsO+8mmZpbmRfZ2V0X3BpZCggKSAgNTQzLjPjgIDlh73mlbDvvJpmaW5kX3BpZF9ucyggKSAgNTYzLjTjgIDlh73mlbDvvJpmaW5kX3ZwaWQoICkgIDU4My4144CA5Ye95pWw77yaZ2V0X3BpZCggKSAgNjAzLjbjgIDlh73mlbDvvJpnZXRfdGFza19tbSggKSAgNjIzLjfjgIDlh73mlbDvvJptbXB1dCggKSAgNjYzLjjjgIDlh73mlbDvvJpuc19vZl9waWQoICkgIDY4My4544CA5Ye95pWw77yacGlkX25yKCApICA3MDMuMTDjgIDlh73mlbDvvJpwaWRfdGFzayggKSAgNzIzLjEx44CA5Ye95pWw77yacGlkX3ZuciggKSAgNzQzLjEy44CA5Ye95pWw77yacHV0X3BpZCggKSAgNzYzLjEz44CA5Ye95pWw77yadGFza19hY3RpdmVfcGlkX25zKCApICA3ODMuMTTjgIDlh73mlbDvvJp0YXNrX3RnaWRfbnJfbnMoICkgIDgw5pys56ug5Y+C6ICD5paH54yuICA4MuesrDTnq6DjgIBMaW51eCDov5vnqIvosIPluqblhoXmoLhBUEkgIDgzNC4x44CA5Ye95pWw77yaX193YWtlX3VwKCApICA4MzQuMuOAgOWHveaVsO+8ml9fd2FrZV91cF9zeW5jKCApICA4ODQuM+OAgOWHveaVsO+8ml9fd2FrZV91cF9zeW5jX2tleSggKSAgOTE0LjTjgIDlh73mlbDvvJphYm9ydF9leGNsdXNpdmVfd2FpdCggKSAgOTQ0LjXjgIDlh73mlbDvvJphZGRfd2FpdF9xdWV1ZSggKSAgOTk0LjbjgIDlh73mlbDvvJphZGRfd2FpdF9xdWV1ZV9leGNsdXNpdmUoICkgIDEwMjQuN+OAgOWHveaVsO+8mmF1dG9yZW1vdmVfd2FrZV9mdW5jdGlvbiggKSAgMTA1NC4444CA5Ye95pWw77yaY29tcGxldGUoICkgIDEwOTQuOeOAgOWHveaVsO+8mmNvbXBsZXRlX2FsbCggKSAgMTEyNC4xMOOAgOWHveaVsO+8mmNvbXBsZXRpb25fZG9uZSggKSAgMTE1NC4xMeOAgOWHveaVsO+8mmN1cnJlbnRfdGhyZWFkX2luZm8oICkgIDExODQuMTLjgIDlh73mlbDvvJpkZWZhdWx0X3dha2VfZnVuY3Rpb24oICkgIDEyMTQuMTPjgIDlh73mlbDvvJpkb19leGl0KCApICAxMjQ0LjE044CA5Ye95pWw77yaZmluaXNoX3dhaXQoICkgIDEyNjQuMTXjgIDlh73mlbDvvJppbml0X3dhaXRxdWV1ZV9lbnRyeSggKSAgMTMwNC4xNuOAgOWHveaVsO+8mmluaXRfd2FpdHF1ZXVlX2hlYWQoICkgIDEzMjQuMTfjgIDlh73mlbDvvJprdGhyZWFkX2NyZWF0ZV9vbl9ub2RlKCApICAxMzQ0LjE444CA5Ye95pWw77yaa3RocmVhZF9zdG9wKCApICAxMzY0LjE544CA5Ye95pWw77yacHJlcGFyZV90b193YWl0KCApICAxMzg0LjIw44CA5Ye95pWw77yacHJlcGFyZV90b193YWl0X2V4Y2x1c2l2ZSggKSAgMTQyNC4yMeOAgOWHveaVsO+8mnJlbW92ZV93YWl0X3F1ZXVlKCApICAxNDc0LjIy44CA5Ye95pWw77yac2NoZWRfc2V0c2NoZWR1bGVyKCApICAxNTA0LjIz44CA5Ye95pWw77yac2V0X2NwdXNfYWxsb3dlZF9wdHIoICkgIDE1NDQuMjTjgIDlh73mlbDvvJpzZXRfdXNlcl9uaWNlKCApICAxNTc0LjI144CA5Ye95pWw77yadGFza19uaWNlKCApICAxNjA0LjI244CA5Ye95pWw77yadHJ5X3dhaXRfZm9yX2NvbXBsZXRpb24oICkgIDE2MjQuMjfjgIDlh73mlbDvvJp3YWl0X2Zvcl9jb21wbGV0aW9uKCApICAxNjY0LjI444CA5Ye95pWw77yad2FpdF9mb3JfY29tcGxldGlvbl9pbnRlcnJ1cHRpYmxlX3RpbWVvdXQoICkgIDE2OTQuMjnjgIDlh73mlbDvvJp3YWl0X2Zvcl9jb21wbGV0aW9uX2tpbGxhYmxlKCApICAxNzM0LjMw44CA5Ye95pWw77yad2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KCApICAxNzc0LjMx44CA5Ye95pWw77yad2FrZV91cF9wcm9jZXNzKCApICAxODA0LjMy44CA5Ye95pWw77yaeWllbGQoICkgIDE4M+acrOeroOWPguiAg+aWh+eMriAgMTg156ysNeeroOOAgExpbnV45Lit5pat5py65Yi25YaF5qC4QVBJICAxODc1LjHjgIDlh73mlbDvvJpfX3Rhc2tsZXRfaGlfc2NoZWR1bGUoICkgIDE4NzUuMuOAgOWHveaVsO+8ml9fdGFza2xldF9zY2hlZHVsZSggKSAgMTkwNS4z44CA5Ye95pWw77yaZGlzYWJsZV9pcnEoICkgIDE5MzUuNOOAgOWHveaVsO+8mmRpc2FibGVfaXJxX25vc3luYyggKSAgMTkzNS4144CA5Ye95pWw77yaZGlzYWJsZV9pcnFfd2FrZSggKSAgMTk2NS4244CA5Ye95pWw77yaZW5hYmxlX2lycSggKSAgMTk5NS4344CA5Ye95pWw77yaZW5hYmxlX2lycV93YWtlKCApICAyMDE1LjjjgIDlh73mlbDvvJpmcmVlX2lycSggKSAgMjA0NS4544CA5Ye95pWw77yaaXJxX3NldF9jaGlwKCApICAyMDU1LjEw44CA5Ye95pWw77yaaXJxX3NldF9jaGlwX2RhdGEoICkgIDIwOTUuMTHjgIDlh73mlbDvvJppcnFfc2V0X2lycV90eXBlKCApICAyMTI1LjEy44CA5Ye95pWw77yaaXJxX3NldF9pcnFfd2FrZSggKSAgMjE0NS4xM+OAgOWHveaVsO+8mnJlbW92ZV9pcnEoICkgIDIxNzUuMTTjgIDlh73mlbDvvJpyZXF1ZXN0X2lycSggKSAgMjIxNS4xNeOAgOWHveaVsO+8mnJlcXVlc3RfdGhyZWFkZWRfaXJxKCApICAyMjU1LjE244CA5Ye95pWw77yac2V0dXBfaXJxKCApICAyMjk1LjE344CA5Ye95pWw77yadGFza2xldF9kaXNhYmxlKCApICAyMzI1LjE444CA5Ye95pWw77yadGFza2xldF9kaXNhYmxlX25vc3luYyggKSAgMjM0NS4xOeOAgOWHveaVsO+8mnRhc2tsZXRfZW5hYmxlKCApICAyMzY1LjIw44CA5Ye95pWw77yadGFza2xldF9oaV9zY2hlZHVsZSggKSAgMjM3NS4yMeOAgOWHveaVsO+8mnRhc2tsZXRfaW5pdCggKSAgMjQxNS4yMuOAgOWHveaVsO+8mnRhc2tsZXRfa2lsbCggKSAgMjQzNS4yM+OAgOWHveaVsO+8mnRhc2tsZXRfc2NoZWR1bGUoICkgIDI0NTUuMjTjgIDlh73mlbDvvJp0YXNrbGV0X3RyeWxvY2soICkgIDI0NzUuMjXjgIDlh73mlbDvvJp0YXNrbGV0X3VubG9jayggKSAgMjQ45pys56ug5Y+C6ICD5paH54yuICAyNTHnrKw256ug44CATGludXjlhoXlrZjnrqHnkIblhoXmoLhBUEkgIDI1MjYuMeOAgOWHveaVsO+8ml9fZnJlZV9wYWdlcyggKSAgMjUyNi4y44CA5Ye95pWw77yaX19nZXRfZnJlZV9wYWdlcyggKSAgMjUzNi4z44CA5Ye95pWw77yaX19nZXRfdm1fYXJlYSggKSAgMjU1Ni4044CA5Ye95pWw77yaX19rcmVhbGxvYyggKSAgMjU4Ni4144CA5Ye95pWw77yaYWxsb2NfcGFnZXMoICkgIDI2MTYuNuOAgOWHveaVsO+8mmFsbG9jX3BhZ2VzX2V4YWN0KCApICAyNjQ2LjfjgIDlh73mlbDvvJpmaW5kX3ZtYSggKSAgMjY2Ni4444CA5Ye95pWw77yaZmluZF92bWFfaW50ZXJzZWN0aW9uKCApICAyNzA2LjnjgIDlh73mlbDvvJpmcmVlX3BhZ2VzKCApICAyNzI2LjEw44CA5Ye95pWw77yaZnJlZV9wYWdlc19leGFjdCggKSAgMjczNi4xMeOAgOWHveaVsO+8mmdldF91bm1hcHBlZF9hcmVhKCApICAyNzQ2LjEy44CA5Ye95pWw77yaZ2V0X3plcm9lZF9wYWdlKCApICAyNzY2LjEz44CA5Ye95pWw77yaa2NhbGxvYyggKSAgMjc4Ni4xNOOAgOWHveaVsO+8mmtmcmVlKCApICAyODA2LjE144CA5Ye95pWw77yaa21hbGxvYyggKSAgMjgxNi4xNuOAgOWHveaVsO+8mmttZW1fY2FjaGVfYWxsb2MoICkgIDI4MzYuMTfjgIDlh73mlbDvvJprbWVtX2NhY2hlX2NyZWF0ZSggKSAgMjg1Ni4xOOOAgOWHveaVsO+8mmttZW1fY2FjaGVfZGVzdHJveSggKSAgMjg4Ni4xOeOAgOWHveaVsO+8mmttZW1fY2FjaGVfZnJlZSggKSAgMjg5Ni4yMOOAgOWHveaVsO+8mmttZW1fY2FjaGVfemFsbG9jKCApICAyOTA2LjIx44CA5Ye95pWw77yaa21lbWR1cCggKSAgMjkyNi4yMuOAgOWHveaVsO+8mmtzaXplKCApICAyOTU2LjIz44CA5Ye95pWw77yaa3N0cmR1cCggKSAgMjk4Ni4yNOOAgOWHveaVsO+8mmtzdHJuZHVwKCApICAyOTk2LjI144CA5Ye95pWw77yaa3phbGxvYyggKSAgMzAxNi4yNuOAgOWHveaVsO+8mm1lbWR1cF91c2VyKCApICAzMDM2LjI344CA5Ye95pWw77yabWVtcG9vbF9hbGxvYyggKSAgMzA2Ni4yOOOAgOWHveaVsO+8mm1lbXBvb2xfYWxsb2NfcGFnZXMoICkgIDMwODYuMjnjgIDlh73mlbDvvJptZW1wb29sX2FsbG9jX3NsYWIoICkgIDMxMTYuMzDjgIDlh73mlbDvvJptZW1wb29sX2NyZWF0ZSggKSAgMzEzNi4zMeOAgOWHveaVsO+8mm1lbXBvb2xfZGVzdHJveSggKSAgMzE2Ni4zMuOAgOWHveaVsO+8mm1lbXBvb2xfZnJlZSggKSAgMzE3Ni4zM+OAgOWHveaVsO+8mm1lbXBvb2xfZnJlZV9wYWdlcyggKSAgMzE4Ni4zNOOAgOWHveaVsO+8mm1lbXBvb2xfZnJlZV9zbGFiKCApICAzMTg2LjM144CA5Ye95pWw77yabWVtcG9vbF9rZnJlZSggKSAgMzE5Ni4zNuOAgOWHveaVsO+8mm1lbXBvb2xfa21hbGxvYyggKSAgMzIwNi4zN+OAgOWHveaVsO+8mm1lbXBvb2xfcmVzaXplKCApICAzMjI2LjM444CA5Ye95pWw77yabnJfZnJlZV9idWZmZXJfcGFnZXMoICkgIDMyNTYuMznjgIDlro/vvJpwYWdlX2FkZHJlc3MoICkgIDMyNjYuNDDjgIDlro/vvJpwYWdlX2NhY2hlX2dldCggKSAgMzI4Ni40MeOAgOWuj++8mnBhZ2VfY2FjaGVfcmVsZWFzZSggKSAgMzMwNi40MuOAgOWHveaVsO+8mnBhZ2Vfem9uZSggKSAgMzMxNi40M+OAgOWuj++8mnByb2JlX2tlcm5lbF9hZGRyZXNzKCApICAzMzQ2LjQ044CA5Ye95pWw77yacHJvYmVfa2VybmVsX3JlYWQoICkgIDMzNjYuNDXjgIDlh73mlbDvvJp2ZnJlZSggKSAgMzM4Ni40NuOAgOWHveaVsO+8mnZtYV9wYWdlcyggKSAgMzM5Ni40N+OAgOWHveaVsO+8mnZtYWxsb2MoICkgIDM0MTYuNDjjgIDlh73mlbDvvJp2bWFsbG9jX3RvX3BhZ2UoICkgIDM0MzYuNDnjgIDlh73mlbDvvJp2bWFsbG9jX3RvX3BmbiggKSAgMzQ1Ni41MOOAgOWHveaVsO+8mnZtYWxsb2NfdXNlciggKSAgMzQ35pys56ug5Y+C6ICD5paH54yuICAzNDnnrKw356ug44CATGludXjlhoXmoLjlrprml7bmnLrliLZBUEkgIDM1MDcuMeOAgOWHveaVsO+8ml9fcm91bmRfamlmZmllcyggKSAgMzUwNy4y44CA5Ye95pWw77yaX19yb3VuZF9qaWZmaWVzX3JlbGF0aXZlKCApICAzNTI3LjPjgIDlh73mlbDvvJpfX3JvdW5kX2ppZmZpZXNfdXAoICkgIDM1NDcuNOOAgOWHveaVsO+8ml9fcm91bmRfamlmZmllc191cF9yZWxhdGl2ZSggKSAgMzU2Ny4144CA5Ye95pWw77yaYWRkX3RpbWVyKCApICAzNTg3LjbjgIDlh73mlbDvvJpjdXJyZW50X2tlcm5lbF90aW1lKCApICAzNTk3LjfjgIDlh73mlbDvvJpkZWxfdGltZXIoICkgIDM2MTcuOOOAgOWHveaVsO+8mmRlbF90aW1lcl9zeW5jKCApICAzNjQ3LjnjgIDlh73mlbDvvJpkb19nZXR0aW1lb2ZkYXkoICkgIDM2NzcuMTDjgIDlh73mlbDvvJpkb19zZXR0aW1lb2ZkYXkoICkgIDM2OTcuMTHjgIDlh73mlbDvvJpnZXRfc2Vjb25kcyggKSAgMzcyNy4xMuOAgOWHveaVsO+8mmdldG5zdGltZW9mZGF5KCApICAzNzQ3LjEz44CA5Ye95pWw77yaaW5pdF90aW1lciggKSAgMzc2Ny4xNOOAgOWHveaVsO+8mmluaXRfdGltZXJfZGVmZXJyYWJsZSggKSAgMzc4Ny4xNeOAgOWHveaVsO+8mmluaXRfdGltZXJfa2V5KCApICAzODA3LjE244CA5Ye95pWw77yaaW5pdF90aW1lcl9vbl9zdGFjayggKSAgMzgyNy4xN+OAgOWHveaVsO+8mmluaXRfdGltZXJfb25fc3RhY2tfa2V5KCApICAzODU3LjE444CA5Ye95pWw77yabWt0aW1lKCApICAzODc3LjE544CA5Ye95pWw77yabW9kX3RpbWVyKCApICAzODk3LjIw44CA5Ye95pWw77yabW9kX3RpbWVyX3BlbmRpbmcoICkgIDM5MjcuMjHjgIDlh73mlbDvvJpuc190b190aW1lc3BlYyggKSAgMzk0Ny4yMuOAgOWHveaVsO+8mm5zX3RvX3RpbWV2YWwoICkgIDM5NjcuMjPjgIDlh73mlbDvvJpyb3VuZF9qaWZmaWVzKCApICAzOTg3LjI044CA5Ye95pWw77yacm91bmRfamlmZmllc19yZWxhdGl2ZSggKSAgNDAxNy4yNeOAgOWHveaVsO+8mnJvdW5kX2ppZmZpZXNfdXAoICkgIDQwNDcuMjbjgIDlh73mlbDvvJpyb3VuZF9qaWZmaWVzX3VwX3JlbGF0aXZlKCApICA0MDY3LjI344CA5Ye95pWw77yac2V0X25vcm1hbGl6ZWRfdGltZXNwZWMoICkgIDQwOTcuMjjjgIDlh73mlbDvvJpzZXR1cF90aW1lciggKSAgNDExNy4yOeOAgOWHveaVsO+8mnNldHVwX3RpbWVyX29uX3N0YWNrKCApICA0MTM3LjMw44CA5Ye95pWw77yadGltZXJfcGVuZGluZyggKSAgNDE1Ny4zMeOAgOWHveaVsO+8mnRpbWVzcGVjX2FkZF9ucyggKSAgNDE3Ny4zMuOAgOWHveaVsO+8mnRpbWVzcGVjX2NvbXBhcmUoICkgIDQyMDcuMzPjgIDlh73mlbDvvJp0aW1lc3BlY19lcXVhbCggKSAgNDIyNy4zNOOAgOWHveaVsO+8mnRpbWVzcGVjX3N1YiggKSAgNDI0Ny4zNeOAgOWHveaVsO+8mnRpbWVzcGVjX3RvX25zKCApICA0MjY3LjM244CA5Ye95pWw77yadGltZXZhbF9jb21wYXJlKCApICA0Mjg3LjM344CA5Ye95pWw77yadGltZXZhbF90b19ucyggKSAgNDMxNy4zOOOAgOWHveaVsO+8mnRyeV90b19kZWxfdGltZXJfc3luYyggKSAgNDMz5pys56ug5Y+C6ICD5paH54yuICA0MzXnrKw456ug44CATGludXjlhoXmoLjlkIzmraXmnLrliLZBUEkgIDQzNjguMeOAgOWHveaVsO+8mmF0b21pY19hZGQoICkgIDQzNjguMuOAgOWHveaVsO+8mmF0b21pY19hZGRfbmVnYXRpdmUoICkgIDQzODguM+OAgOWHveaVsO+8mmF0b21pY19hZGRfcmV0dXJuKCApICA0NDA4LjTjgIDlh73mlbDvvJphdG9taWNfYWRkX3VubGVzcyggKSAgNDQyOC4144CA5Ye95pWw77yaYXRvbWljX2NtcHhjaGcoICkgIDQ0NDguNuOAgOWHveaVsO+8mmF0b21pY19kZWMoICkgIDQ0NjguN+OAgOWHveaVsO+8mmF0b21pY19kZWNfYW5kX3Rlc3QoICkgIDQ0ODguOOOAgOWHveaVsO+8mmF0b21pY19pbmMoICkgIDQ0OTguOeOAgOWHveaVsO+8mmF0b21pY19pbmNfYW5kX3Rlc3QoICkgIDQ1MTguMTDjgIDlh73mlbDvvJphdG9taWNfcmVhZCggKSAgNDUzOC4xMeOAgOWHveaVsO+8mmF0b21pY19zZXQoICkgIDQ1MzguMTLjgIDlh73mlbDvvJphdG9taWNfc3ViKCApICA0NTU4LjEz44CA5Ye95pWw77yaYXRvbWljX3N1Yl9hbmRfdGVzdCggKSAgNDU3OC4xNOOAgOWHveaVsO+8mmF0b21pY19zdWJfcmV0dXJuKCApICA0NTk4LjE144CA5Ye95pWw77yaZG93biggKSAgNDYxOC4xNuOAgOWHveaVsO+8mmRvd25faW50ZXJydXB0aWJsZSggKSAgNDYzOC4xN+OAgOWHveaVsO+8mmRvd25fa2lsbGFibGUoICkgIDQ2NTguMTjjgIDlh73mlbDvvJpkb3duX3JlYWQoICkgIDQ2ODguMTnjgIDlh73mlbDvvJpkb3duX3JlYWRfdHJ5bG9jayggKSAgNDcwOC4yMOOAgOWHveaVsO+8mmRvd25fdGltZW91dCggKSAgNDcyOC4yMeOAgOWHveaVsO+8mmRvd25fdHJ5bG9jayggKSAgNDc0OC4yMuOAgOWHveaVsO+8mmRvd25fd3JpdGUoICkgIDQ3NjguMjPjgIDlh73mlbDvvJpkb3duX3dyaXRlX3RyeWxvY2soICkgIDQ3OTguMjTjgIDlh73mlbDvvJpkb3duZ3JhZGVfd3JpdGUoICkgIDQ4MTguMjXjgIDlro/vvJppbml0X3J3c2VtKCApICA0ODM4LjI244CA5Ye95pWw77yacmVhZF9zZXFiZWdpbiggKSAgNDg2OC4yN+OAgOWHveaVsO+8mnJlYWRfc2VxcmV0cnkoICkgIDQ4ODguMjjjgIDlh73mlbDvvJpzZW1hX2luaXQoICkgIDQ5MDguMjnjgIDlro/vvJpzZXFsb2NrX2luaXQoICkgIDQ5MjguMzDjgIDlh73mlbDvvJp1cCggKSAgNDk0OC4zMeOAgOWHveaVsO+8mnVwX3JlYWQoICkgIDQ5NjguMzLjgIDlh73mlbDvvJp1cF93cml0ZSggKSAgNDk3OC4zM+OAgOWHveaVsO+8mndyaXRlX3NlcWxvY2soICkgIDQ5ODguMzTjgIDlh73mlbDvvJp3cml0ZV9zZXF1bmxvY2soICkgIDQ5OOacrOeroOWPguiAg+aWh+eMriAgNDk556ysOeeroOOAgExpbnV45paH5Lu257O757uf5YaF5qC4QVBJICA1MDA5LjHjgIDlh73mlbDvvJpfX21udF9pc19yZWFkb25seSggKSAgNTAwOS4y44CA5Ye95pWw77yaY3VycmVudF91bWFzayggKSAgNTAyOS4z44CA5Ye95pWw77yaZF9hbGxvYyggKSAgNTA0OS4044CA5Ye95pWw77yaZF9maW5kX2FsaWFzKCApICA1MDc5LjXjgIDlh73mlbDvvJpkcHV0KCApICA1MTA5LjbjgIDlh73mlbDvvJpmZ2V0KCApICA1MTI5LjfjgIDlh73mlbDvvJpnZW5lcmljX2ZpbGxhdHRyKCApICA1MTU5LjjjgIDlh73mlbDvvJpnZXRfZnNfdHlwZSggKSAgNTE3OS4544CA5Ye95pWw77yaZ2V0X21heF9maWxlcyggKSAgNTIwOS4xMOOAgOWHveaVsO+8mmdldF9zdXBlciggKSAgNTIyOS4xMeOAgOWHveaVsO+8mmhhdmVfc3VibW91bnRzKCApICA1MjU5LjEy44CA5Ye95pWw77yaSV9CREVWKCApICA1Mjc5LjEz44CA5Ye95pWw77yaaW5vZGVfYWRkX2J5dGVzKCApICA1Mjk5LjE044CA5Ye95pWw77yaaW5vZGVfZ2V0X2J5dGVzKCApICA1MzE5LjE144CA5Ye95pWw77yaaW5vZGVfc2V0X2J5dGVzKCApICA1MzM5LjE244CA5Ye95pWw77yaaW5vZGVfc3ViX2J5dGVzKCApICA1MzU5LjE344CA5Ye95pWw77yaaXNfYmFkX2lub2RlKCApICA1Mzc5LjE444CA5Ye95pWw77yabWFrZV9iYWRfaW5vZGUoICkgIDUzODkuMTnjgIDlh73mlbDvvJptYXlfdW1vdW50KCApICA1NDA5LjIw44CA5Ye95pWw77yabWF5X3Vtb3VudF90cmVlKCApICA1NDI5LjIx44CA5Ye95pWw77yabW50X3dhbnRfd3JpdGUoICkgIDU0NDkuMjLjgIDlh73mlbDvvJpub3RpZnlfY2hhbmdlKCApICA1NDU5LjIz44CA5Ye95pWw77yacHV0X3VudXNlZF9mZCggKSAgNTQ3OS4yNOOAgOWHveaVsO+8mnVuc2hhcmVfZnNfc3RydWN0KCApICA1NDk5LjI144CA5Ye95pWw77yadmZzX2ZzdGF0KCApICA1NTE5LjI244CA5Ye95pWw77yadmZzX2dldGF0dHIoICkgIDU1MzkuMjfjgIDlh73mlbDvvJp2ZnNfc3RhdGZzKCApICA1NTbmnKznq6Dlj4LogIPmlofnjK4gIDU1OeesrDEw56ug44CATGludXgg6K6+5aSH6amx5Yqo5Y+K6K6+5aSH566h55CGQVBJICA1NjAxMC4x44CA5Ye95pWw77yaX19jbGFzc19jcmVhdGUoICkgIDU2MDEwLjLjgIDlh73mlbDvvJpfX2NsYXNzX3JlZ2lzdGVyKCApICA1NjIxMC4z44CA5Ye95pWw77yaY2Rldl9hZGQoICkgIDU2MzEwLjTjgIDlh73mlbDvvJpjZGV2X2FsbG9jKCApICA1NjQxMC4144CA5Ye95pWw77yaY2Rldl9kZWwoICkgIDU2NjEwLjbjgIDlh73mlbDvvJpjZGV2X2luaXQoICkgIDU3MjEwLjfjgIDlro/vvJpjbGFzc19jcmVhdGUoICkgIDU3NzEwLjjjgIDlh73mlbDvvJpjbGFzc19kZXN0cm95KCApICA1NzgxMC4544CA5a6P77yaY2xhc3NfcmVnaXN0ZXIoICkgIDU4MTEwLjEw44CA5Ye95pWw77yaY2xhc3NfdW5yZWdpc3RlciggKSAgNTgyMTAuMTHjgIDlh73mlbDvvJpkZXZpY2VfYWRkKCApICA1ODkxMC4xMuOAgOWHveaVsO+8mmRldmljZV9jcmVhdGUoICkgIDU4OTEwLjEz44CA5Ye95pWw77yaZGV2aWNlX2RlbCggKSAgNTkyMTAuMTTjgIDlh73mlbDvvJpkZXZpY2VfZGVzdHJveSggKSAgNTkyMTAuMTXjgIDlh73mlbDvvJpkZXZpY2VfaW5pdGlhbGl6ZSggKSAgNTk5MTAuMTbjgIDlh73mlbDvvJpkZXZpY2VfcmVnaXN0ZXIoICkgIDYwNjEwLjE344CA5Ye95pWw77yaZGV2aWNlX3JlbmFtZSggKSAgNjA3MTAuMTjjgIDlh73mlbDvvJpkZXZpY2VfdW5yZWdpc3RlciggKSAgNjEzMTAuMTnjgIDlh73mlbDvvJpnZXRfZGV2aWNlKCApICA2MjAxMC4yMOOAgOWHveaVsO+8mnB1dF9kZXZpY2UoICkgIDYyMTEwLjIx44CA5Ye95pWw77yacmVnaXN0ZXJfY2hyZGV2KCApICA2MjUxMC4yMuOAgOWHveaVsO+8mnVucmVnaXN0ZXJfY2hyZGV2KCApICA2MjYxMC4yM+OAgOmDqOWIhuebuOWFs+WHveaVsOivtOaYjiAgNjM05pys56ug5Y+C6ICD5paH54yuICA2MzXpmYTlvZXjgIBMaW51eOWGheaguEFQSeW/q+mAn+ajgOe0ouihqCAgNjM2XTxicj48L3RkPjwvdHI+PC90YWJsZT48dGFibGUgd2lkdGg9Ijc1MCIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHN0eWxlPSJib3JkZXI6IDEuMHB4IHNvbGlkICNjY2NjY2M7bWFyZ2luLXRvcDogMTAuMHB4O2xpbmUtaGVpZ2h0OiAyMy4wcHg7Zm9udC1zaXplOiAxNC4wcHg7Y29sb3I6ICM2NjY2NjY7Ij48dHI+PHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxLjBweCBkYXNoZWQgI2NjY2NjYztiYWNrZ3JvdW5kLWNvbG9yOiAjZmJmYmZiO2ZvbnQtd2VpZ2h0OiBib2xkO2NvbG9yOiAjOTkwMDAwOyI+PGltZyBzcmM9Imh0dHBzOi8vaW1nLmFsaWNkbi5jb20vaW1nZXh0cmEvaTEvMjE3MDQyOTc2L1RCMjJfNkF3MUdTQnVOalNzcGJYWGNpaXBYYV8hITIxNzA0Mjk3Ni5qcGciPjwvdGQ+PC90cj48dHI+PHRkIHN0eWxlPSJwYWRkaW5nOiAxMC4wcHg7Y29sb3I6ICMwMDAwMDA7Ij5bIFByZWZhY2U/5YmN44CA44CA6KiA6L+b5YWlMjHkuJbnuqrku6XmnaXvvIxJVOaKgOacr+S7peWJjeaJgOacquacieeahOmAn+W6puWQkeWJjeWPkeWxleOAgkxpbnV45L2c5Li65rqQ56CB5byA5pS+55qE5pON5L2c57O757uf77yM5Zyo5LyX5aSa55qE54ix5aW96ICF5ZKM572R57uc6buR5a6i55qE5YWx5ZCM5Yqq5Yqb5LiL77yM5LiN5pat5oiQ6ZW/5bm26LaL5LqO5a6M5ZaE44CC55Sx5LqOR05V6K6h5YiS5omA5byA5Y+R55qE5ZCE56eN57uE5Lu25ZKM57O757uf5Y+R6KGM54mI5omA5b+F5aSH55qE6L2v5Lu25Y+v5Lul6L+Q6KGM5LqOTGludXjlhoXmoLjkuYvkuIrvvIzmlbTkuKrlhoXmoLjnrKblkIhHTlXpgJrnlKjlhazlhbHorrjlj6/or4HvvIhHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZe+8ie+8jOS9v+W+l0xpbnV45ZyoUEPjgIHmnI3liqHlmajku6Xlj4rltYzlhaXlvI/ns7vnu5/lvIDlj5HnrYnpoobln5/lvpfliLDkuoblub/ms5vnmoTlupTnlKjjgIIgICAg5L2c6ICF5Zyo6ZW/5pyf55qETGludXjlhoXmoLjlvIDlj5HkuK3lj5HnjrDvvIzlvZPliY3ku4vnu43lhoXmoLhBUEnmlrnpnaLnmoTkuabnsY3lvojlsJHjgILnm67liY3luILpnaLnmoTlhbPkuo5MaW51eOWGheaguOe8lueoi+W8gOWPkeaWuemdoueahOS5puWPr+S7peWIhuS4uuS4ieexu++8muesrOS4gOexu++8jExpbnV45YaF5qC45YiG5p6Q77yM5omA5YiG5p6Q55qE5YaF5qC45rqQ5Luj56CB54mI5pys5LiA6Iis55u45a+56L6D5pep77yM6ICM5a+55LqO5pyA5paw54mI5pys55qE5YaF5qC45rqQ5Luj56CB5b6I5bCR5o+Q5Y+K77yb56ys5LqM57G777yMTGludXjnvJbnqIvnsbvvvIzkuLvopoHmmK/ku6XnlKjmiLflsYLpnaLkuIrnmoTnvJbnqIvkuLrkuLvvvIzkuIDoiKzmtonlj4rnlKjmiLdBUEnvvJvnrKzkuInnsbvvvIzltYzlhaXlvI9MaW51eOW8gOWPke+8jOebuOWvueS6jueJueWumueahOehrOS7tuW5s+WPsO+8jOWPquWvueaJgOeUqOWIsOeahOeJueWumuWGheaguEFQSei/m+ihjOeugOimgeivtOaYjuOAguWvueS6jkxpbnV45YaF5qC457yW56iL5byA5Y+R77yM6ZyA6KaB5YWo6Z2i5LqG6Kej5YaF5qC4QVBJ77yM6ICM55uu5YmN5biC6Z2i5LiK5om+5LiN5Yiw5LiA5pys6IO95aSf5YWo6Z2i5LuL57uN5pyA5paw55qETGludXjlhoXmoLhBUEnnmoTlm77kuabvvIzov5nkuZ/mraPmmK/mnKzkuablhpnkvZznmoTnm67nmoTmiYDlnKjjgIIgICAg5pys5Lmm55qE57yW5YaZ5bel5L2c5LuOMjAxNeW5tDbmnIjlvIDlp4vvvIzmiYDmnInnmoTlhoXmoLhBUEnpqozor4Hlrp7kvovln7rkuo7mnIDmlrDnmoRMaW51eOWGheaguOa6kOS7o+eggTMuMTkuM+eJiOacrOOAgue7j+i/h+i/keWNgeS4gOS4quaciOeahOa6kOS7o+eggeWIhuaekOOAgee8lueoi+Wunui3teS4juWunuS+i+mqjOivge+8jOWvueW4uOeUqOeahOWGheaguEFQSei/m+ihjOezu+e7n+W9kue6s++8jOW5tue8luWGmeS6huWFuOWei+mqjOivgeeoi+W6j++8jOS9v+eQhuiuuuWIhuaekOS4juWunumZhee8lueoi+WunueOsOe7n+S4gOOAguWIhuaekOeahOWGheaguEFQSeaooeWdl+WMheaLrO+8muWGheaguOaooeWdl+acuuWItkFQSeOAgei/m+eoi+euoeeQhuWGheaguEFQSeOAgei/m+eoi+iwg+W6puWGheaguEFQSeOAgeS4reaWreacuuWItuWGheaguEFQSeOAgeaXtumXtOS4juWumuaXtuacuuWItuWGheaguEFQSeOAgeWGheWtmOeuoeeQhuWGheaguEFQSeOAgeWGheaguOWQjOatpeacuuWItkFQSeOAgeaWh+S7tuezu+e7n+WGheaguEFQSeWSjOiuvuWkh+mpseWKqOWPiuiuvuWkh+euoeeQhuaooeWdl+WGheaguEFQSeOAgiAgICDlnKjlrp7kvovnvJblhpnov4fnqIvkuK3vvIzmhJ/osKLpgpPojrnojrnlj4LkuI7kuobpg6jliIblrp7kvovnmoTpqozor4HvvIzku6Xlj4rmnLrmorDlt6XkuJrlh7rniYjnpL7ljY7nq6Dlhazlj7jnvJbovpHkuLrmnKzkuabnmoTlh7rniYjmiYDlgZrnmoTlt6XkvZzjgILlj6blpJbvvIznrJTogIXlkKzlj5bkuoblkIzkuovjgIHlkIzooYzkuJPlrrbmhI/op4Hlkozlu7rorq7vvIzlubblj4LpmIXkuoblpKfph4/kuK3mlofjgIHlpJbmlofmlofnjK7lkoznvZHnu5zorrrlnZvnmoTnsr7ljY7otYTmlpnvvIznibnliKvmmK/mtLvot4PlnKjlvIDmlL7mupDku6PnoIHnpL7ljLrnmoRMaW51eOeIseWlveiAhe+8jOWcqOatpOWQkeS7luS7rOihqOekuuaEn+iwouOAgiAgICDnlLHkuo5MaW51eOabtOaWsOmAn+W6pui+g+W/q++8jOWGjeWKoOS4iue8luiAheaJgOWFt+Wkh+efpeivhueahOW5v+W6puWSjOa3seW6puaJgOmZkO+8jOS5puS4reWtmOWcqOeahOmUmeivr+S4juS4jeW9k+S5i+WkhOivt+WQhOS9jeWQjOS7geaJueivhOaMh+ato+OAguWvueS6juS5puS4reeahOmXrumimO+8jOivu+iAheWPr+S7peWPkemAgeWIsEUtbWFpbO+8mnFpdXRpZUBpZWVlLm9yZ++8jOiDveWkn+WPiuaXtuS4jueslOiAheS6pOa1ge+8jOS7peS+v+WGjeeJiOaXtuabtOato+S4juWujOWWhOOAgiAgICDnvJbogIUyMDE25bm0NeaciDHml6Xkuo7lpKfov54gXTwvdGQ+PC90cj48L3RhYmxlPjxkaXYgc3R5bGU9Im1hcmdpbi10b3A6IDEwLjBweDsiPjxpbWcgc3JjPSJodHRwczovL2ltZy5hbGljZG4uY29tL2ltZ2V4dHJhL2kyLzIxNzA0Mjk3Ni9UMjJZa09YdXBhWFhYWFhYWFgtMjE3MDQyOTc2LmdpZiIgd2lkdGg9Ijc1MCIgaGVpZ2h0PSI0NyI+Li48L2Rpdj48ZGl2IGNsYXNzPSJobGdfcmFuZF8xMDcxNjY4NTY3IiBzdHlsZT0ib3BhY2l0eTogMDsiPjIwMTkwNDY2MDk8L2Rpdj48aW1nIGNsYXNzPSJkZXNjX2FuY2hvciIgaWQ9ImRlc2MtbW9kdWxlLTIiIHNyYz0iaHR0cHM6Ly9hc3NldHMuYWxpY2RuLmNvbS9raXNzeS8xLjAuMC9idWlsZC9pbWdsYXp5bG9hZC9zcGFjZWJhbGwuZ2lmIj48cD48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAzNi4wcHg7Y29sb3I6ICNjYzAwMDA7Ij48c3Ryb25nPlvmnKzlupfmiYDllK7lm77kuablnYfkuLrmraPniYjkuabnsY1dPC9zdHJvbmc+PC9zcGFuPjwvcD48ZGl2IGNsYXNzPSJobGdfcmFuZF8xMDcxNjY4NTY3IiBzdHlsZT0ib3BhY2l0eTogMDsiPjIwMTkwNDY2MDk8L2Rpdj48L3A+
Продавец:奥维博世图书专营店
Адрес:Пекин
Рейтинг:
Всего отзывов:0
Положительных:0
Добавить в корзину
- Информация о товаре
- Фотографии
[ 书名:] | [ 【正版】(特价书)Linux内核API完全参考手册 (第2版)|229824] |
[ 图书定价:] | [ 99元] |
[ 图书作者:] | [ 邱铁;周玉] |
[ 出版社:] | [ 机械工业出版社] |
[ 出版日期:] | [ 2016-10-01 星期六 00:00:00] |
[ ISBN号:] | 9787111548775 |
[ 开本:] | [16开] |
[ 页数:] | 0 |
[ 版次:] | 2-1 |
[ 内容简介] |
[本书基于zui新的Linux内核源代码3.19.3版本,对常用的内核API作了系统归纳,并编写了典型验证程序,使理论分析与实际编程做到了统一。分析的内核API模块包括:模块机制内核API、进程管理内核API、进程调度内核API、中断与异常机制内核API、时间与定时机制内核API、内存管理内核API、内核同步机制API、文件系统内核API和设备驱动与设备管理模块内核API。 ] |
[ 目录] |
[Contents目 录前 言第1章 Linux内核API分析必备知识 11.1 Linux内核编程注意事项 11.2 本书中模块编译Makefile模板 21.3 内核调试函数printk 31.4 内核编译与定制 51.4.1 获得Linux内核与补丁 51.4.2 准备编译需要的工具 51.4.3 解压内核 61.4.4 给内核打补丁 61.4.5 设定编译选项 71.4.6 编译与安装内核 91.4.7 创建initramfs 101.4.8 设置grub 111.4.9 启动选项 121.5 温馨提示 12本章参考文献 13第2章 内核模块机制API 142.1 函数:__module_address( ) 142.2 函数:__module_text_address( ) 162.3 函数:__print_symbol( ) 192.4 函数:__symbol_get( ) 222.5 函数:__symbol_put( ) 252.6 函数:find_module( ) 272.7 函数:find_symbol( ) 312.8 函数:module_is_live( ) 362.9 函数:module_put( ) 382.10 函数:module_refcount( ) 402.11 函数:sprint_symbol( ) 422.12 函数:symbol_put_addr( ) 452.13 函数:try_module_get( ) 48本章参考文献 50第3章 Linux进程管理内核API 513.1 函数:__task_pid_nr_ns( ) 513.2 函数:find_get_pid( ) 543.3 函数:find_pid_ns( ) 563.4 函数:find_vpid( ) 583.5 函数:get_pid( ) 603.6 函数:get_task_mm( ) 623.7 函数:mmput( ) 663.8 函数:ns_of_pid( ) 683.9 函数:pid_nr( ) 703.10 函数:pid_task( ) 723.11 函数:pid_vnr( ) 743.12 函数:put_pid( ) 763.13 函数:task_active_pid_ns( ) 783.14 函数:task_tgid_nr_ns( ) 80本章参考文献 82第4章 Linux 进程调度内核API 834.1 函数:__wake_up( ) 834.2 函数:__wake_up_sync( ) 884.3 函数:__wake_up_sync_key( ) 914.4 函数:abort_exclusive_wait( ) 944.5 函数:add_wait_queue( ) 994.6 函数:add_wait_queue_exclusive( ) 1024.7 函数:autoremove_wake_function( ) 1054.8 函数:complete( ) 1094.9 函数:complete_all( ) 1124.10 函数:completion_done( ) 1154.11 函数:current_thread_info( ) 1184.12 函数:default_wake_function( ) 1214.13 函数:do_exit( ) 1244.14 函数:finish_wait( ) 1264.15 函数:init_waitqueue_entry( ) 1304.16 函数:init_waitqueue_head( ) 1324.17 函数:kthread_create_on_node( ) 1344.18 函数:kthread_stop( ) 1364.19 函数:prepare_to_wait( ) 1384.20 函数:prepare_to_wait_exclusive( ) 1424.21 函数:remove_wait_queue( ) 1474.22 函数:sched_setscheduler( ) 1504.23 函数:set_cpus_allowed_ptr( ) 1544.24 函数:set_user_nice( ) 1574.25 函数:task_nice( ) 1604.26 函数:try_wait_for_completion( ) 1624.27 函数:wait_for_completion( ) 1664.28 函数:wait_for_completion_interruptible_timeout( ) 1694.29 函数:wait_for_completion_killable( ) 1734.30 函数:wait_for_completion_timeout( ) 1774.31 函数:wake_up_process( ) 1804.32 函数:yield( ) 183本章参考文献 185第5章 Linux中断机制内核API 1875.1 函数:__tasklet_hi_schedule( ) 1875.2 函数:__tasklet_schedule( ) 1905.3 函数:disable_irq( ) 1935.4 函数:disable_irq_nosync( ) 1935.5 函数:disable_irq_wake( ) 1965.6 函数:enable_irq( ) 1995.7 函数:enable_irq_wake( ) 2015.8 函数:free_irq( ) 2045.9 函数:irq_set_chip( ) 2055.10 函数:irq_set_chip_data( ) 2095.11 函数:irq_set_irq_type( ) 2125.12 函数:irq_set_irq_wake( ) 2145.13 函数:remove_irq( ) 2175.14 函数:request_irq( ) 2215.15 函数:request_threaded_irq( ) 2255.16 函数:setup_irq( ) 2295.17 函数:tasklet_disable( ) 2325.18 函数:tasklet_disable_nosync( ) 2345.19 函数:tasklet_enable( ) 2365.20 函数:tasklet_hi_schedule( ) 2375.21 函数:tasklet_init( ) 2415.22 函数:tasklet_kill( ) 2435.23 函数:tasklet_schedule( ) 2455.24 函数:tasklet_trylock( ) 2475.25 函数:tasklet_unlock( ) 248本章参考文献 251第6章 Linux内存管理内核API 2526.1 函数:__free_pages( ) 2526.2 函数:__get_free_pages( ) 2536.3 函数:__get_vm_area( ) 2556.4 函数:__krealloc( ) 2586.5 函数:alloc_pages( ) 2616.6 函数:alloc_pages_exact( ) 2646.7 函数:find_vma( ) 2666.8 函数:find_vma_intersection( ) 2706.9 函数:free_pages( ) 2726.10 函数:free_pages_exact( ) 2736.11 函数:get_unmapped_area( ) 2746.12 函数:get_zeroed_page( ) 2766.13 函数:kcalloc( ) 2786.14 函数:kfree( ) 2806.15 函数:kmalloc( ) 2816.16 函数:kmem_cache_alloc( ) 2836.17 函数:kmem_cache_create( ) 2856.18 函数:kmem_cache_destroy( ) 2886.19 函数:kmem_cache_free( ) 2896.20 函数:kmem_cache_zalloc( ) 2906.21 函数:kmemdup( ) 2926.22 函数:ksize( ) 2956.23 函数:kstrdup( ) 2986.24 函数:kstrndup( ) 2996.25 函数:kzalloc( ) 3016.26 函数:memdup_user( ) 3036.27 函数:mempool_alloc( ) 3066.28 函数:mempool_alloc_pages( ) 3086.29 函数:mempool_alloc_slab( ) 3116.30 函数:mempool_create( ) 3136.31 函数:mempool_destroy( ) 3166.32 函数:mempool_free( ) 3176.33 函数:mempool_free_pages( ) 3186.34 函数:mempool_free_slab( ) 3186.35 函数:mempool_kfree( ) 3196.36 函数:mempool_kmalloc( ) 3206.37 函数:mempool_resize( ) 3226.38 函数:nr_free_buffer_pages( ) 3256.39 宏:page_address( ) 3266.40 宏:page_cache_get( ) 3286.41 宏:page_cache_release( ) 3306.42 函数:page_zone( ) 3316.43 宏:probe_kernel_address( ) 3346.44 函数:probe_kernel_read( ) 3366.45 函数:vfree( ) 3386.46 函数:vma_pages( ) 3396.47 函数:vmalloc( ) 3416.48 函数:vmalloc_to_page( ) 3436.49 函数:vmalloc_to_pfn( ) 3456.50 函数:vmalloc_user( ) 347本章参考文献 349第7章 Linux内核定时机制API 3507.1 函数:__round_jiffies( ) 3507.2 函数:__round_jiffies_relative( ) 3527.3 函数:__round_jiffies_up( ) 3547.4 函数:__round_jiffies_up_relative( ) 3567.5 函数:add_timer( ) 3587.6 函数:current_kernel_time( ) 3597.7 函数:del_timer( ) 3617.8 函数:del_timer_sync( ) 3647.9 函数:do_gettimeofday( ) 3677.10 函数:do_settimeofday( ) 3697.11 函数:get_seconds( ) 3727.12 函数:getnstimeofday( ) 3747.13 函数:init_timer( ) 3767.14 函数:init_timer_deferrable( ) 3787.15 函数:init_timer_key( ) 3807.16 函数:init_timer_on_stack( ) 3827.17 函数:init_timer_on_stack_key( ) 3857.18 函数:mktime( ) 3877.19 函数:mod_timer( ) 3897.20 函数:mod_timer_pending( ) 3927.21 函数:ns_to_timespec( ) 3947.22 函数:ns_to_timeval( ) 3967.23 函数:round_jiffies( ) 3987.24 函数:round_jiffies_relative( ) 4017.25 函数:round_jiffies_up( ) 4047.26 函数:round_jiffies_up_relative( ) 4067.27 函数:set_normalized_timespec( ) 4097.28 函数:setup_timer( ) 4117.29 函数:setup_timer_on_stack( ) 4137.30 函数:timer_pending( ) 4157.31 函数:timespec_add_ns( ) 4177.32 函数:timespec_compare( ) 4207.33 函数:timespec_equal( ) 4227.34 函数:timespec_sub( ) 4247.35 函数:timespec_to_ns( ) 4267.36 函数:timeval_compare( ) 4287.37 函数:timeval_to_ns( ) 4317.38 函数:try_to_del_timer_sync( ) 433本章参考文献 435第8章 Linux内核同步机制API 4368.1 函数:atomic_add( ) 4368.2 函数:atomic_add_negative( ) 4388.3 函数:atomic_add_return( ) 4408.4 函数:atomic_add_unless( ) 4428.5 函数:atomic_cmpxchg( ) 4448.6 函数:atomic_dec( ) 4468.7 函数:atomic_dec_and_test( ) 4488.8 函数:atomic_inc( ) 4498.9 函数:atomic_inc_and_test( ) 4518.10 函数:atomic_read( ) 4538.11 函数:atomic_set( ) 4538.12 函数:atomic_sub( ) 4558.13 函数:atomic_sub_and_test( ) 4578.14 函数:atomic_sub_return( ) 4598.15 函数:down( ) 4618.16 函数:down_interruptible( ) 4638.17 函数:down_killable( ) 4658.18 函数:down_read( ) 4688.19 函数:down_read_trylock( ) 4708.20 函数:down_timeout( ) 4728.21 函数:down_trylock( ) 4748.22 函数:down_write( ) 4768.23 函数:down_write_trylock( ) 4798.24 函数:downgrade_write( ) 4818.25 宏:init_rwsem( ) 4838.26 函数:read_seqbegin( ) 4868.27 函数:read_seqretry( ) 4888.28 函数:sema_init( ) 4908.29 宏:seqlock_init( ) 4928.30 函数:up( ) 4948.31 函数:up_read( ) 4968.32 函数:up_write( ) 4978.33 函数:write_seqlock( ) 4988.34 函数:write_sequnlock( ) 498本章参考文献 499第9章 Linux文件系统内核API 5009.1 函数:__mnt_is_readonly( ) 5009.2 函数:current_umask( ) 5029.3 函数:d_alloc( ) 5049.4 函数:d_find_alias( ) 5079.5 函数:dput( ) 5109.6 函数:fget( ) 5129.7 函数:generic_fillattr( ) 5159.8 函数:get_fs_type( ) 5179.9 函数:get_max_files( ) 5209.10 函数:get_super( ) 5229.11 函数:have_submounts( ) 5259.12 函数:I_BDEV( ) 5279.13 函数:inode_add_bytes( ) 5299.14 函数:inode_get_bytes( ) 5319.15 函数:inode_set_bytes( ) 5339.16 函数:inode_sub_bytes( ) 5359.17 函数:is_bad_inode( ) 5379.18 函数:make_bad_inode( ) 5389.19 函数:may_umount( ) 5409.20 函数:may_umount_tree( ) 5429.21 函数:mnt_want_write( ) 5449.22 函数:notify_change( ) 5459.23 函数:put_unused_fd( ) 5479.24 函数:unshare_fs_struct( ) 5499.25 函数:vfs_fstat( ) 5519.26 函数:vfs_getattr( ) 5539.27 函数:vfs_statfs( ) 556本章参考文献 559第10章 Linux 设备驱动及设备管理API 56010.1 函数:__class_create( ) 56010.2 函数:__class_register( ) 56210.3 函数:cdev_add( ) 56310.4 函数:cdev_alloc( ) 56410.5 函数:cdev_del( ) 56610.6 函数:cdev_init( ) 57210.7 宏:class_create( ) 57710.8 函数:class_destroy( ) 57810.9 宏:class_register( ) 58110.10 函数:class_unregister( ) 58210.11 函数:device_add( ) 58910.12 函数:device_create( ) 58910.13 函数:device_del( ) 59210.14 函数:device_destroy( ) 59210.15 函数:device_initialize( ) 59910.16 函数:device_register( ) 60610.17 函数:device_rename( ) 60710.18 函数:device_unregister( ) 61310.19 函数:get_device( ) 62010.20 函数:put_device( ) 62110.21 函数:register_chrdev( ) 62510.22 函数:unregister_chrdev( ) 62610.23 部分相关函数说明 634本章参考文献 635附录 Linux内核API快速检索表 636] |
[ Preface?前 言进入21世纪以来,IT技术以前所未有的速度向前发展。Linux作为源码开放的操作系统,在众多的爱好者和网络黑客的共同努力下,不断成长并趋于完善。由于GNU计划所开发的各种组件和系统发行版所必备的软件可以运行于Linux内核之上,整个内核符合GNU通用公共许可证(GNU General Public License),使得Linux在PC、服务器以及嵌入式系统开发等领域得到了广泛的应用。 作者在长期的Linux内核开发中发现,当前介绍内核API方面的书籍很少。目前市面的关于Linux内核编程开发方面的书可以分为三类:第一类,Linux内核分析,所分析的内核源代码版本一般相对较早,而对于最新版本的内核源代码很少提及;第二类,Linux编程类,主要是以用户层面上的编程为主,一般涉及用户API;第三类,嵌入式Linux开发,相对于特定的硬件平台,只对所用到的特定内核API进行简要说明。对于Linux内核编程开发,需要全面了解内核API,而目前市面上找不到一本能够全面介绍最新的Linux内核API的图书,这也正是本书写作的目的所在。 本书的编写工作从2015年6月开始,所有的内核API验证实例基于最新的Linux内核源代码3.19.3版本。经过近十一个月的源代码分析、编程实践与实例验证,对常用的内核API进行系统归纳,并编写了典型验证程序,使理论分析与实际编程实现统一。分析的内核API模块包括:内核模块机制API、进程管理内核API、进程调度内核API、中断机制内核API、时间与定时机制内核API、内存管理内核API、内核同步机制API、文件系统内核API和设备驱动及设备管理模块内核API。 在实例编写过程中,感谢邓莹莹参与了部分实例的验证,以及机械工业出版社华章公司编辑为本书的出版所做的工作。另外,笔者听取了同事、同行专家意见和建议,并参阅了大量中文、外文文献和网络论坛的精华资料,特别是活跃在开放源代码社区的Linux爱好者,在此向他们表示感谢。 由于Linux更新速度较快,再加上编者所具备知识的广度和深度所限,书中存在的错误与不当之处请各位同仁批评指正。对于书中的问题,读者可以发送到E-mail:qiutie@ieee.org,能够及时与笔者交流,以便再版时更正与完善。 编者2016年5月1日于大连 ] |
..
2019046609
[本店所售图书均为正版书籍]
2019046609