diff --git a/src/.output/xdp_filter.bpf.o b/src/.output/xdp_filter.bpf.o index 960e898..db0c2af 100644 Binary files a/src/.output/xdp_filter.bpf.o and b/src/.output/xdp_filter.bpf.o differ diff --git a/src/.output/xdp_filter.o b/src/.output/xdp_filter.o index c1b25ed..262ee53 100644 Binary files a/src/.output/xdp_filter.o and b/src/.output/xdp_filter.o differ diff --git a/src/.output/xdp_filter.skel.h b/src/.output/xdp_filter.skel.h index 8e2f942..d81f46f 100644 --- a/src/.output/xdp_filter.skel.h +++ b/src/.output/xdp_filter.skel.h @@ -30,30 +30,26 @@ struct xdp_filter_bpf { char xdp_receive_____fmt_7[54]; char xdp_receive_____fmt_8[2]; char xdp_receive_____fmt_9[31]; - char xdp_receive_____fmt_10[38]; + char xdp_receive_____fmt_10[46]; char xdp_receive_____fmt_11[38]; char xdp_receive_____fmt_12[38]; - char xdp_receive_____fmt_13[19]; - char xdp_receive_____fmt_14[38]; + char xdp_receive_____fmt_13[38]; + char xdp_receive_____fmt_14[31]; char xdp_receive_____fmt_15[38]; - char xdp_receive_____fmt_16[53]; - char xdp_receive_____fmt_17[38]; - char xdp_receive_____fmt_18[41]; - char xdp_receive_____fmt_19[31]; - char xdp_receive_____fmt_20[42]; + char xdp_receive_____fmt_16[38]; + char xdp_receive_____fmt_17[53]; + char xdp_receive_____fmt_18[38]; + char xdp_receive_____fmt_19[41]; + char xdp_receive_____fmt_20[31]; + char xdp_receive_____fmt_21[42]; char expand_tcp_packet_payload_____fmt[52]; - char expand_tcp_packet_payload_____fmt_21[38]; char expand_tcp_packet_payload_____fmt_22[38]; char expand_tcp_packet_payload_____fmt_23[38]; - char expand_tcp_packet_payload_____fmt_24[25]; - char expand_tcp_packet_payload_____fmt_25[24]; - char ipv4_csum_____fmt[10]; - char ipv4_csum_____fmt_26[10]; - char ipv4_csum_____fmt_27[10]; - char csum_fold_helper_____fmt[11]; - char csum_fold_helper_____fmt_28[11]; - char csum_fold_helper_____fmt_29[13]; - char csum_fold_helper_____fmt_30[18]; + char expand_tcp_packet_payload_____fmt_24[38]; + char expand_tcp_packet_payload_____fmt_25[25]; + char expand_tcp_packet_payload_____fmt_26[24]; + char ipv4_csum_____fmt[42]; + char ipv4_csum_____fmt_27[9]; } *rodata; }; @@ -164,14 +160,14 @@ xdp_filter_bpf__create_skeleton(struct xdp_filter_bpf *obj) s->progs[0].prog = &obj->progs.xdp_receive; s->progs[0].link = &obj->links.xdp_receive; - s->data_sz = 20840; + s->data_sz = 21072; s->data = (void *)"\ \x7f\x45\x4c\x46\x02\x01\x01\0\0\0\0\0\0\0\0\0\x01\0\xf7\0\x01\0\0\0\0\0\0\0\0\ -\0\0\0\0\0\0\0\0\0\0\0\x28\x4e\0\0\0\0\0\0\0\0\0\0\x40\0\0\0\0\0\x40\0\x0d\0\ -\x0c\0\xbf\x16\0\0\0\0\0\0\x61\x64\x04\0\0\0\0\0\x61\x67\0\0\0\0\0\0\xbf\x79\0\ -\0\0\0\0\0\x07\x09\0\0\x0e\0\0\0\x3d\x94\x04\0\0\0\0\0\x18\x01\0\0\0\0\0\0\0\0\ -\0\0\0\0\0\0\xb7\x02\0\0\x13\0\0\0\x05\0\x11\0\0\0\0\0\xbf\x78\0\0\0\0\0\0\x07\ -\x08\0\0\x22\0\0\0\x3d\x84\x03\0\0\0\0\0\x18\x01\0\0\x13\0\0\0\0\0\0\0\0\0\0\0\ +\0\0\0\0\0\0\0\0\0\0\0\x10\x4f\0\0\0\0\0\0\0\0\0\0\x40\0\0\0\0\0\x40\0\x0d\0\ +\x0c\0\xbf\x16\0\0\0\0\0\0\x61\x64\x04\0\0\0\0\0\x61\x67\0\0\0\0\0\0\xbf\x78\0\ +\0\0\0\0\0\x07\x08\0\0\x0e\0\0\0\x3d\x84\x04\0\0\0\0\0\x18\x01\0\0\0\0\0\0\0\0\ +\0\0\0\0\0\0\xb7\x02\0\0\x13\0\0\0\x05\0\x11\0\0\0\0\0\xbf\x79\0\0\0\0\0\0\x07\ +\x09\0\0\x22\0\0\0\x3d\x94\x03\0\0\0\0\0\x18\x01\0\0\x13\0\0\0\0\0\0\0\0\0\0\0\ \x05\0\x0a\0\0\0\0\0\x71\x71\x17\0\0\0\0\0\x15\x01\x03\0\x06\0\0\0\x18\x01\0\0\ \x15\0\0\0\0\0\0\0\0\0\0\0\x05\0\x05\0\0\0\0\0\xbf\x71\0\0\0\0\0\0\x07\x01\0\0\ \x36\0\0\0\x3d\x14\x06\0\0\0\0\0\x18\x01\0\0\x17\0\0\0\0\0\0\0\0\0\0\0\xb7\x02\ @@ -182,7 +178,7 @@ xdp_filter_bpf__create_skeleton(struct xdp_filter_bpf *obj) \x69\x72\x10\0\0\0\0\0\xdc\x02\0\0\x10\0\0\0\x1f\x12\0\0\0\0\0\0\x71\x73\x0e\0\ \0\0\0\0\x67\x03\0\0\x02\0\0\0\x57\x03\0\0\x3c\0\0\0\x1f\x32\0\0\0\0\0\0\x15\ \x02\x03\0\x04\0\0\0\x18\x01\0\0\x1f\0\0\0\0\0\0\0\0\0\0\0\x05\0\xe6\xff\0\0\0\ -\0\xbf\x83\0\0\0\0\0\0\x0f\x13\0\0\0\0\0\0\xbf\x31\0\0\0\0\0\0\x07\x01\0\0\x04\ +\0\xbf\x93\0\0\0\0\0\0\x0f\x13\0\0\0\0\0\0\xbf\x31\0\0\0\0\0\0\x07\x01\0\0\x04\ \0\0\0\x3d\x14\x03\0\0\0\0\0\x18\x01\0\0\x21\0\0\0\0\0\0\0\0\0\0\0\x05\0\xde\ \xff\0\0\0\0\x7b\x4a\xb0\xff\0\0\0\0\x18\x01\0\0\x23\0\0\0\0\0\0\0\0\0\0\0\xb7\ \x02\0\0\x36\0\0\0\xb7\x04\0\0\x04\0\0\0\x7b\x3a\xb8\xff\0\0\0\0\x85\0\0\0\x06\ @@ -201,433 +197,455 @@ xdp_filter_bpf__create_skeleton(struct xdp_filter_bpf *obj) \0\0\0\0\x71\x72\x05\0\0\0\0\0\x67\x02\0\0\x08\0\0\0\x71\x73\x04\0\0\0\0\0\x4f\ \x32\0\0\0\0\0\0\x71\x73\x06\0\0\0\0\0\x71\x74\x07\0\0\0\0\0\x67\x04\0\0\x08\0\ \0\0\x4f\x34\0\0\0\0\0\0\x67\x04\0\0\x10\0\0\0\x4f\x24\0\0\0\0\0\0\x67\x04\0\0\ -\x20\0\0\0\x4f\x14\0\0\0\0\0\0\x7b\x4a\xf0\xff\0\0\0\0\x61\x91\x0c\0\0\0\0\0\ -\x67\x01\0\0\x20\0\0\0\x61\x92\x08\0\0\0\0\0\x4f\x21\0\0\0\0\0\0\x61\x92\x10\0\ -\0\0\0\0\x63\x2a\xe8\xff\0\0\0\0\x7b\x1a\xe0\xff\0\0\0\0\x61\x91\0\0\0\0\0\0\ -\x61\x92\x04\0\0\0\0\0\x67\x02\0\0\x20\0\0\0\x4f\x12\0\0\0\0\0\0\x7b\x2a\xd8\ -\xff\0\0\0\0\x61\x81\x04\0\0\0\0\0\x67\x01\0\0\x20\0\0\0\x61\x82\0\0\0\0\0\0\ -\x4f\x21\0\0\0\0\0\0\x61\x82\x10\0\0\0\0\0\x63\x2a\xd0\xff\0\0\0\0\x7b\x1a\xc0\ -\xff\0\0\0\0\x61\x81\x08\0\0\0\0\0\x61\x82\x0c\0\0\0\0\0\x67\x02\0\0\x20\0\0\0\ +\x20\0\0\0\x4f\x14\0\0\0\0\0\0\x7b\x4a\xf0\xff\0\0\0\0\x61\x81\x0c\0\0\0\0\0\ +\x67\x01\0\0\x20\0\0\0\x61\x82\x08\0\0\0\0\0\x4f\x21\0\0\0\0\0\0\x61\x82\x10\0\ +\0\0\0\0\x63\x2a\xe8\xff\0\0\0\0\x7b\x1a\xe0\xff\0\0\0\0\x61\x81\0\0\0\0\0\0\ +\x61\x82\x04\0\0\0\0\0\x67\x02\0\0\x20\0\0\0\x4f\x12\0\0\0\0\0\0\x7b\x2a\xd8\ +\xff\0\0\0\0\x61\x91\x04\0\0\0\0\0\x67\x01\0\0\x20\0\0\0\x61\x92\0\0\0\0\0\0\ +\x4f\x21\0\0\0\0\0\0\x61\x92\x10\0\0\0\0\0\x63\x2a\xd0\xff\0\0\0\0\x7b\x1a\xc0\ +\xff\0\0\0\0\x61\x91\x08\0\0\0\0\0\x61\x92\x0c\0\0\0\0\0\x67\x02\0\0\x20\0\0\0\ \x4f\x12\0\0\0\0\0\0\x7b\x2a\xc8\xff\0\0\0\0\xbf\x61\0\0\0\0\0\0\xb7\x02\0\0\ -\x02\0\0\0\x85\0\0\0\x41\0\0\0\x15\0\x06\0\0\0\0\0\x18\x01\0\0\x18\x02\0\0\0\0\ +\x02\0\0\0\x85\0\0\0\x41\0\0\0\x15\0\x09\0\0\0\0\0\x18\x01\0\0\x52\x02\0\0\0\0\ \0\0\0\0\0\0\xb7\x02\0\0\x34\0\0\0\xb7\x03\0\0\x02\0\0\0\x85\0\0\0\x06\0\0\0\ -\x05\0\x17\0\0\0\0\0\x61\x63\0\0\0\0\0\0\x61\x61\x04\0\0\0\0\0\xbf\x39\0\0\0\0\ -\0\0\x07\x09\0\0\x0e\0\0\0\x3d\x91\x03\0\0\0\0\0\x18\x01\0\0\x4c\x02\0\0\0\0\0\ -\0\0\0\0\0\x05\0\x0d\0\0\0\0\0\xbf\x32\0\0\0\0\0\0\x07\x02\0\0\x22\0\0\0\x7b\ -\x2a\xa8\xff\0\0\0\0\x3d\x21\x03\0\0\0\0\0\x18\x01\0\0\x72\x02\0\0\0\0\0\0\0\0\ -\0\0\x05\0\x06\0\0\0\0\0\x7b\x3a\xa0\xff\0\0\0\0\xbf\x32\0\0\0\0\0\0\x07\x02\0\ -\0\x36\0\0\0\x3d\x21\x1d\0\0\0\0\0\x18\x01\0\0\x98\x02\0\0\0\0\0\0\0\0\0\0\xb7\ -\x02\0\0\x26\0\0\0\x85\0\0\0\x06\0\0\0\x18\x01\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\ -\xb7\x02\0\0\x26\0\0\0\x85\0\0\0\x06\0\0\0\xbf\x78\0\0\0\0\0\0\x79\xa3\xb0\xff\ -\0\0\0\0\xbf\x39\0\0\0\0\0\0\x1f\x73\0\0\0\0\0\0\xbf\x94\0\0\0\0\0\0\x1f\x84\0\ -\0\0\0\0\0\x18\x01\0\0\xa6\x01\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\x29\0\0\0\x85\0\ -\0\0\x06\0\0\0\x18\x01\0\0\xcf\x01\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\x1f\0\0\0\ -\xbf\x93\0\0\0\0\0\0\x79\xa4\xb8\xff\0\0\0\0\x85\0\0\0\x06\0\0\0\x61\x63\x04\0\ -\0\0\0\0\x18\x01\0\0\xee\x01\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\x2a\0\0\0\x05\0\ -\x57\xff\0\0\0\0\x69\xa1\xfc\xff\0\0\0\0\x79\xa8\xa0\xff\0\0\0\0\x73\x18\x0c\0\ -\0\0\0\0\x77\x01\0\0\x08\0\0\0\x73\x18\x0d\0\0\0\0\0\x61\xa1\xf8\xff\0\0\0\0\ -\xbf\x12\0\0\0\0\0\0\x77\x02\0\0\x18\0\0\0\x73\x28\x0b\0\0\0\0\0\xbf\x12\0\0\0\ -\0\0\0\x77\x02\0\0\x10\0\0\0\x73\x28\x0a\0\0\0\0\0\x73\x18\x08\0\0\0\0\0\x77\ -\x01\0\0\x08\0\0\0\x73\x18\x09\0\0\0\0\0\x79\xa1\xf0\xff\0\0\0\0\xbf\x12\0\0\0\ -\0\0\0\x77\x02\0\0\x38\0\0\0\x73\x28\x07\0\0\0\0\0\xbf\x12\0\0\0\0\0\0\x77\x02\ -\0\0\x30\0\0\0\x73\x28\x06\0\0\0\0\0\xbf\x12\0\0\0\0\0\0\x77\x02\0\0\x28\0\0\0\ -\x73\x28\x05\0\0\0\0\0\xbf\x12\0\0\0\0\0\0\x77\x02\0\0\x20\0\0\0\x73\x28\x04\0\ -\0\0\0\0\xbf\x12\0\0\0\0\0\0\x77\x02\0\0\x18\0\0\0\x73\x28\x03\0\0\0\0\0\xbf\ -\x12\0\0\0\0\0\0\x77\x02\0\0\x10\0\0\0\x73\x28\x02\0\0\0\0\0\x73\x18\0\0\0\0\0\ -\0\x77\x01\0\0\x08\0\0\0\x73\x18\x01\0\0\0\0\0\x61\xa1\xe8\xff\0\0\0\0\x63\x19\ -\x10\0\0\0\0\0\x79\xa1\xe0\xff\0\0\0\0\x63\x19\x08\0\0\0\0\0\x77\x01\0\0\x20\0\ -\0\0\x63\x19\x0c\0\0\0\0\0\x79\xa1\xd8\xff\0\0\0\0\x63\x19\0\0\0\0\0\0\x77\x01\ -\0\0\x20\0\0\0\x63\x19\x04\0\0\0\0\0\x61\xa1\xd0\xff\0\0\0\0\x79\xa2\xa8\xff\0\ -\0\0\0\x63\x12\x10\0\0\0\0\0\x79\xa1\xc8\xff\0\0\0\0\x63\x12\x08\0\0\0\0\0\x77\ -\x01\0\0\x20\0\0\0\x63\x12\x0c\0\0\0\0\0\x79\xa1\xc0\xff\0\0\0\0\x63\x12\0\0\0\ -\0\0\0\x77\x01\0\0\x20\0\0\0\x63\x12\x04\0\0\0\0\0\x69\x84\x18\0\0\0\0\0\x69\ -\x83\x10\0\0\0\0\0\x18\x01\0\0\xbe\x02\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\x19\0\0\ -\0\x85\0\0\0\x06\0\0\0\x69\x81\x10\0\0\0\0\0\xdc\x01\0\0\x10\0\0\0\x07\x01\0\0\ -\x02\0\0\0\xdc\x01\0\0\x10\0\0\0\x6b\x18\x10\0\0\0\0\0\x18\x01\0\0\xef\x02\0\0\ -\0\0\0\0\0\0\0\0\xb7\x02\0\0\x0a\0\0\0\xb7\x03\0\0\0\0\0\0\x85\0\0\0\x06\0\0\0\ -\xb7\x01\0\0\0\0\0\0\xb7\x02\0\0\0\0\0\0\xbf\x93\0\0\0\0\0\0\xb7\x04\0\0\x14\0\ -\0\0\xb7\x05\0\0\0\0\0\0\x85\0\0\0\x1c\0\0\0\xbf\x09\0\0\0\0\0\0\x18\x01\0\0\ -\xf9\x02\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\x0a\0\0\0\xbf\x93\0\0\0\0\0\0\x85\0\0\ -\0\x06\0\0\0\xbf\x98\0\0\0\0\0\0\x57\x08\0\0\xff\xff\0\0\x18\x01\0\0\x0d\x03\0\ -\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\x0b\0\0\0\xbf\x83\0\0\0\0\0\0\x85\0\0\0\x06\0\0\ -\0\x7b\x9a\xb8\xff\0\0\0\0\x77\x09\0\0\x10\0\0\0\x57\x09\0\0\xff\xff\0\0\x18\ -\x01\0\0\x18\x03\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\x0b\0\0\0\xbf\x93\0\0\0\0\0\0\ -\x85\0\0\0\x06\0\0\0\x0f\x98\0\0\0\0\0\0\x18\x01\0\0\x23\x03\0\0\0\0\0\0\0\0\0\ -\0\xb7\x02\0\0\x0d\0\0\0\xbf\x83\0\0\0\0\0\0\x85\0\0\0\x06\0\0\0\x7b\x8a\x98\ -\xff\0\0\0\0\xa7\x08\0\0\xff\xff\xff\xff\x18\x01\0\0\x30\x03\0\0\0\0\0\0\0\0\0\ -\0\xb7\x02\0\0\x12\0\0\0\xbf\x83\0\0\0\0\0\0\x85\0\0\0\x06\0\0\0\x15\x09\x02\0\ -\0\0\0\0\x79\xa1\x98\xff\0\0\0\0\x7b\x1a\xb8\xff\0\0\0\0\x79\xa1\xb8\xff\0\0\0\ -\0\x77\x01\0\0\x10\0\0\0\x57\x01\0\0\xff\xff\0\0\x15\x01\x04\0\0\0\0\0\x79\xa2\ -\xb8\xff\0\0\0\0\x57\x02\0\0\xff\xff\0\0\x0f\x12\0\0\0\0\0\0\x7b\x2a\xb8\xff\0\ -\0\0\0\x79\xa1\xb8\xff\0\0\0\0\x77\x01\0\0\x10\0\0\0\x57\x01\0\0\xff\xff\0\0\ -\x15\x01\x04\0\0\0\0\0\x79\xa2\xb8\xff\0\0\0\0\x57\x02\0\0\xff\xff\0\0\x0f\x12\ -\0\0\0\0\0\0\x7b\x2a\xb8\xff\0\0\0\0\x18\x01\0\0\0\0\xff\xff\0\0\0\0\0\0\0\0\ -\x79\xa2\xb8\xff\0\0\0\0\xbf\x29\0\0\0\0\0\0\x5f\x19\0\0\0\0\0\0\x77\x09\0\0\ -\x10\0\0\0\x0f\x29\0\0\0\0\0\0\xa7\x09\0\0\xff\xff\xff\xff\xbf\x98\0\0\0\0\0\0\ -\x57\x08\0\0\xff\xff\0\0\x18\x01\0\0\x03\x03\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\ -\x0a\0\0\0\xbf\x83\0\0\0\0\0\0\x85\0\0\0\x06\0\0\0\x79\xa1\xa0\xff\0\0\0\0\x6b\ -\x91\x18\0\0\0\0\0\x69\x13\x10\0\0\0\0\0\xbf\x19\0\0\0\0\0\0\x18\x01\0\0\xd7\ -\x02\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\x18\0\0\0\xbf\x84\0\0\0\0\0\0\x85\0\0\0\ -\x06\0\0\0\xbf\x91\0\0\0\0\0\0\x07\x01\0\0\x0e\0\0\0\x61\x62\x04\0\0\0\0\0\xbf\ -\x29\0\0\0\0\0\0\x3d\x12\x03\0\0\0\0\0\x18\x01\0\0\x7a\0\0\0\0\0\0\0\0\0\0\0\ -\x05\0\x0b\0\0\0\0\0\x79\xa1\xa0\xff\0\0\0\0\x07\x01\0\0\x22\0\0\0\x3d\x19\x03\ -\0\0\0\0\0\x18\x01\0\0\xa0\0\0\0\0\0\0\0\0\0\0\0\x05\0\x05\0\0\0\0\0\x79\xa1\ -\xa0\xff\0\0\0\0\x07\x01\0\0\x36\0\0\0\x3d\x19\x04\0\0\0\0\0\x18\x01\0\0\xc6\0\ -\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\x26\0\0\0\x05\0\x9c\xfe\0\0\0\0\x79\xa2\xa0\ -\xff\0\0\0\0\x69\x21\x2e\0\0\0\0\0\x77\x01\0\0\x02\0\0\0\x57\x01\0\0\x3c\0\0\0\ -\x69\x25\x10\0\0\0\0\0\xdc\x05\0\0\x10\0\0\0\x1f\x15\0\0\0\0\0\0\x71\x22\x0e\0\ -\0\0\0\0\x67\x02\0\0\x02\0\0\0\x57\x02\0\0\x3c\0\0\0\x1f\x25\0\0\0\0\0\0\xbf\ -\x52\0\0\0\0\0\0\x67\x02\0\0\x20\0\0\0\x77\x02\0\0\x20\0\0\0\xb7\x03\0\0\x39\ -\x5b\x01\0\x2d\x23\x03\0\0\0\0\0\x18\x01\0\0\xec\0\0\0\0\0\0\0\0\0\0\0\x05\0\ -\x76\xfe\0\0\0\0\x79\xa2\xa8\xff\0\0\0\0\x0f\x12\0\0\0\0\0\0\xbf\x91\0\0\0\0\0\ -\0\xbf\x23\0\0\0\0\0\0\x1f\x21\0\0\0\0\0\0\xbf\x52\0\0\0\0\0\0\x07\x02\0\0\xff\ -\xff\xff\xff\x67\x02\0\0\x20\0\0\0\x77\x02\0\0\x20\0\0\0\x6d\x21\x80\xfe\0\0\0\ -\0\xbf\x31\0\0\0\0\0\0\x07\x01\0\0\x06\0\0\0\x3d\x19\x03\0\0\0\0\0\x18\x01\0\0\ -\xff\0\0\0\0\0\0\0\0\0\0\0\x05\0\xdb\xff\0\0\0\0\xbf\x51\0\0\0\0\0\0\x67\x01\0\ -\0\x20\0\0\0\x77\x01\0\0\x20\0\0\0\xbf\x32\0\0\0\0\0\0\x0f\x12\0\0\0\0\0\0\x3d\ -\x29\x03\0\0\0\0\0\x18\x01\0\0\x25\x01\0\0\0\0\0\0\0\0\0\0\x05\0\xd2\xff\0\0\0\ -\0\x61\x68\0\0\0\0\0\0\xb7\x01\0\0\x61\0\0\0\xbf\x34\0\0\0\0\0\0\x7b\x4a\xa8\ -\xff\0\0\0\0\x73\x14\x05\0\0\0\0\0\x18\x01\0\0\x4b\x01\0\0\0\0\0\0\0\0\0\0\xb7\ -\x02\0\0\x35\0\0\0\xb7\x03\0\0\0\0\0\0\x85\0\0\0\x06\0\0\0\x79\xa1\xa8\xff\0\0\ -\0\0\x7b\x1a\xb8\xff\0\0\0\0\x79\xa3\xb0\xff\0\0\0\0\x05\0\x02\xff\0\0\0\0\x44\ -\x75\x61\x6c\x20\x42\x53\x44\x2f\x47\x50\x4c\0\x42\x6f\x75\x6e\x64\x20\x63\x68\ -\x65\x63\x6b\x20\x66\x61\x69\x6c\x20\x41\0\x42\0\x43\0\x44\0\x45\x20\x25\x69\ -\x0a\0\x46\0\x47\0\x52\x65\x63\x65\x69\x76\x65\x64\x20\x76\x61\x6c\x69\x64\x20\ -\x54\x43\x50\x20\x70\x61\x63\x6b\x65\x74\x20\x77\x69\x74\x68\x20\x70\x61\x79\ -\x6c\x6f\x61\x64\x20\x25\x73\x20\x6f\x66\x20\x73\x69\x7a\x65\x20\x25\x69\x0a\0\ -\x48\0\x4f\x4c\x44\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x3a\x20\x25\x69\x2c\x20\ -\x70\x61\x79\x6c\x6f\x61\x64\x3a\x20\x25\x69\x0a\0\x42\x6f\x75\x6e\x64\x20\x63\ -\x68\x65\x63\x6b\x20\x41\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x68\x69\x6c\x65\ -\x20\x65\x78\x70\x61\x6e\x64\x69\x6e\x67\x0a\0\x42\x6f\x75\x6e\x64\x20\x63\x68\ -\x65\x63\x6b\x20\x42\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x68\x69\x6c\x65\x20\ +\x18\x09\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0\xb7\x08\0\0\0\0\0\0\x05\0\x1a\0\0\ +\0\0\0\x61\x68\0\0\0\0\0\0\xbf\x82\0\0\0\0\0\0\x07\x02\0\0\x22\0\0\0\x61\x61\ +\x04\0\0\0\0\0\x7b\x8a\xa8\xff\0\0\0\0\x07\x08\0\0\x0e\0\0\0\x7b\x2a\x98\xff\0\ +\0\0\0\x7b\x8a\xa0\xff\0\0\0\0\x3d\x81\x03\0\0\0\0\0\x18\x01\0\0\x86\x02\0\0\0\ +\0\0\0\0\0\0\0\x05\0\x09\0\0\0\0\0\x3d\x21\x03\0\0\0\0\0\x18\x01\0\0\xac\x02\0\ +\0\0\0\0\0\0\0\0\0\x05\0\x05\0\0\0\0\0\x79\xa2\xa8\xff\0\0\0\0\x07\x02\0\0\x36\ +\0\0\0\x3d\x21\x53\0\0\0\0\0\x18\x01\0\0\xd2\x02\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\ +\0\x26\0\0\0\x85\0\0\0\x06\0\0\0\x18\x09\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0\ +\xb7\x08\0\0\0\0\0\0\x18\x01\0\0\x7a\0\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\x2e\0\0\ +\0\xbf\x93\0\0\0\0\0\0\x85\0\0\0\x06\0\0\0\x15\x08\x08\0\0\0\0\0\xbf\x93\0\0\0\ +\0\0\0\x61\x69\x04\0\0\0\0\0\x79\xa1\xa8\xff\0\0\0\0\x07\x01\0\0\x0e\0\0\0\x3d\ +\x19\x1f\0\0\0\0\0\x18\x01\0\0\xa8\0\0\0\0\0\0\0\0\0\0\0\x05\0\x27\0\0\0\0\0\ +\x18\x01\0\0\xba\x01\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\x26\0\0\0\x85\0\0\0\x06\0\ +\0\0\x79\xa8\xb8\xff\0\0\0\0\xbf\x71\0\0\0\0\0\0\x79\xa3\xb0\xff\0\0\0\0\xbf\ +\x39\0\0\0\0\0\0\x1f\x73\0\0\0\0\0\0\xbf\x94\0\0\0\0\0\0\x1f\x14\0\0\0\0\0\0\ +\x18\x01\0\0\xe0\x01\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\x29\0\0\0\x85\0\0\0\x06\0\ +\0\0\x18\x01\0\0\x09\x02\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\x1f\0\0\0\xbf\x93\0\0\ +\0\0\0\0\xbf\x84\0\0\0\0\0\0\x85\0\0\0\x06\0\0\0\x61\x63\x04\0\0\0\0\0\x18\x01\ +\0\0\x28\x02\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\x2a\0\0\0\xbf\x84\0\0\0\0\0\0\x85\ +\0\0\0\x06\0\0\0\x05\0\x38\xff\0\0\0\0\x79\xa1\xa0\xff\0\0\0\0\x07\x01\0\0\x14\ +\0\0\0\x3d\x19\x03\0\0\0\0\0\x18\x01\0\0\xce\0\0\0\0\0\0\0\0\0\0\0\x05\0\x05\0\ +\0\0\0\0\x79\xa1\x98\xff\0\0\0\0\x07\x01\0\0\x14\0\0\0\x3d\x19\x04\0\0\0\0\0\ +\x18\x01\0\0\xf4\0\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\x26\0\0\0\x05\0\x2a\xff\0\0\ +\0\0\x79\xa1\x98\xff\0\0\0\0\x69\x11\x0c\0\0\0\0\0\x77\x01\0\0\x02\0\0\0\x57\ +\x01\0\0\x3c\0\0\0\x79\xa8\xa0\xff\0\0\0\0\x69\x85\x02\0\0\0\0\0\xdc\x05\0\0\ +\x10\0\0\0\x1f\x15\0\0\0\0\0\0\x71\x82\0\0\0\0\0\0\x67\x02\0\0\x02\0\0\0\x57\ +\x02\0\0\x3c\0\0\0\x1f\x25\0\0\0\0\0\0\xbf\x52\0\0\0\0\0\0\x67\x02\0\0\x20\0\0\ +\0\x77\x02\0\0\x20\0\0\0\xb7\x04\0\0\x39\x5b\x01\0\x2d\x24\xf5\0\0\0\0\0\x18\ +\x01\0\0\x1a\x01\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\x1f\0\0\0\x05\0\x15\xff\0\0\0\ +\0\x69\xa1\xfc\xff\0\0\0\0\x79\xa9\xa8\xff\0\0\0\0\x73\x19\x0c\0\0\0\0\0\x77\ +\x01\0\0\x08\0\0\0\x73\x19\x0d\0\0\0\0\0\x61\xa1\xf8\xff\0\0\0\0\xbf\x12\0\0\0\ +\0\0\0\x77\x02\0\0\x18\0\0\0\x73\x29\x0b\0\0\0\0\0\xbf\x12\0\0\0\0\0\0\x77\x02\ +\0\0\x10\0\0\0\x73\x29\x0a\0\0\0\0\0\x73\x19\x08\0\0\0\0\0\x77\x01\0\0\x08\0\0\ +\0\x73\x19\x09\0\0\0\0\0\x79\xa1\xf0\xff\0\0\0\0\xbf\x12\0\0\0\0\0\0\x77\x02\0\ +\0\x38\0\0\0\x73\x29\x07\0\0\0\0\0\xbf\x12\0\0\0\0\0\0\x77\x02\0\0\x30\0\0\0\ +\x73\x29\x06\0\0\0\0\0\xbf\x12\0\0\0\0\0\0\x77\x02\0\0\x28\0\0\0\x73\x29\x05\0\ +\0\0\0\0\xbf\x12\0\0\0\0\0\0\x77\x02\0\0\x20\0\0\0\x73\x29\x04\0\0\0\0\0\xbf\ +\x12\0\0\0\0\0\0\x77\x02\0\0\x18\0\0\0\x73\x29\x03\0\0\0\0\0\xbf\x12\0\0\0\0\0\ +\0\x77\x02\0\0\x10\0\0\0\x73\x29\x02\0\0\0\0\0\x73\x19\0\0\0\0\0\0\x77\x01\0\0\ +\x08\0\0\0\x73\x19\x01\0\0\0\0\0\x61\xa1\xe8\xff\0\0\0\0\x79\xa8\xa0\xff\0\0\0\ +\0\x63\x18\x10\0\0\0\0\0\x79\xa1\xe0\xff\0\0\0\0\x63\x18\x08\0\0\0\0\0\x77\x01\ +\0\0\x20\0\0\0\x63\x18\x0c\0\0\0\0\0\x79\xa1\xd8\xff\0\0\0\0\x63\x18\0\0\0\0\0\ +\0\x77\x01\0\0\x20\0\0\0\x63\x18\x04\0\0\0\0\0\x61\xa1\xd0\xff\0\0\0\0\x79\xa2\ +\x98\xff\0\0\0\0\x63\x12\x10\0\0\0\0\0\x79\xa1\xc8\xff\0\0\0\0\x63\x12\x08\0\0\ +\0\0\0\x77\x01\0\0\x20\0\0\0\x63\x12\x0c\0\0\0\0\0\x79\xa1\xc0\xff\0\0\0\0\x63\ +\x12\0\0\0\0\0\0\x77\x01\0\0\x20\0\0\0\x63\x12\x04\0\0\0\0\0\x69\x94\x18\0\0\0\ +\0\0\x69\x93\x10\0\0\0\0\0\x18\x01\0\0\xf8\x02\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\ +\x19\0\0\0\x85\0\0\0\x06\0\0\0\x69\x91\x10\0\0\0\0\0\xdc\x01\0\0\x10\0\0\0\x07\ +\x01\0\0\x02\0\0\0\xdc\x01\0\0\x10\0\0\0\x6b\x19\x10\0\0\0\0\0\xb7\x01\0\0\0\0\ +\0\0\x6b\x19\x18\0\0\0\0\0\x18\x01\0\0\x29\x03\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\ +\x2a\0\0\0\xb7\x03\0\0\0\0\0\0\xbf\x84\0\0\0\0\0\0\xb7\x05\0\0\x14\0\0\0\x85\0\ +\0\0\x06\0\0\0\x71\x94\x0e\0\0\0\0\0\x18\x01\0\0\x53\x03\0\0\0\0\0\0\0\0\0\0\ +\xb7\x02\0\0\x09\0\0\0\xb7\x03\0\0\0\0\0\0\x85\0\0\0\x06\0\0\0\x71\x94\x0f\0\0\ +\0\0\0\x18\x01\0\0\x53\x03\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\x09\0\0\0\xb7\x03\0\ +\0\x01\0\0\0\x85\0\0\0\x06\0\0\0\x71\x94\x10\0\0\0\0\0\x18\x01\0\0\x53\x03\0\0\ +\0\0\0\0\0\0\0\0\xb7\x02\0\0\x09\0\0\0\xb7\x03\0\0\x02\0\0\0\x85\0\0\0\x06\0\0\ +\0\x71\x94\x11\0\0\0\0\0\x18\x01\0\0\x53\x03\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\ +\x09\0\0\0\xb7\x03\0\0\x03\0\0\0\x85\0\0\0\x06\0\0\0\x71\x94\x12\0\0\0\0\0\x18\ +\x01\0\0\x53\x03\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\x09\0\0\0\xb7\x03\0\0\x04\0\0\ +\0\x85\0\0\0\x06\0\0\0\x71\x94\x13\0\0\0\0\0\x18\x01\0\0\x53\x03\0\0\0\0\0\0\0\ +\0\0\0\xb7\x02\0\0\x09\0\0\0\xb7\x03\0\0\x05\0\0\0\x85\0\0\0\x06\0\0\0\x71\x94\ +\x14\0\0\0\0\0\x18\x01\0\0\x53\x03\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\x09\0\0\0\ +\xb7\x03\0\0\x06\0\0\0\x85\0\0\0\x06\0\0\0\x71\x94\x15\0\0\0\0\0\x18\x01\0\0\ +\x53\x03\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\x09\0\0\0\xb7\x03\0\0\x07\0\0\0\x85\0\ +\0\0\x06\0\0\0\x71\x94\x16\0\0\0\0\0\x18\x01\0\0\x53\x03\0\0\0\0\0\0\0\0\0\0\ +\xb7\x02\0\0\x09\0\0\0\xb7\x03\0\0\x08\0\0\0\x85\0\0\0\x06\0\0\0\x71\x94\x17\0\ +\0\0\0\0\x18\x01\0\0\x53\x03\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\x09\0\0\0\xb7\x03\ +\0\0\x09\0\0\0\x85\0\0\0\x06\0\0\0\x71\x94\x18\0\0\0\0\0\x18\x01\0\0\x53\x03\0\ +\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\x09\0\0\0\xb7\x03\0\0\x0a\0\0\0\x85\0\0\0\x06\0\ +\0\0\x71\x94\x19\0\0\0\0\0\x18\x01\0\0\x53\x03\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\ +\x09\0\0\0\xb7\x03\0\0\x0b\0\0\0\x85\0\0\0\x06\0\0\0\x71\x94\x1a\0\0\0\0\0\x18\ +\x01\0\0\x53\x03\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\x09\0\0\0\xb7\x03\0\0\x0c\0\0\ +\0\x85\0\0\0\x06\0\0\0\x71\x94\x1b\0\0\0\0\0\x18\x01\0\0\x53\x03\0\0\0\0\0\0\0\ +\0\0\0\xb7\x02\0\0\x09\0\0\0\xb7\x03\0\0\x0d\0\0\0\x85\0\0\0\x06\0\0\0\x71\x94\ +\x1c\0\0\0\0\0\x18\x01\0\0\x53\x03\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\x09\0\0\0\ +\xb7\x03\0\0\x0e\0\0\0\x85\0\0\0\x06\0\0\0\x71\x94\x1d\0\0\0\0\0\x18\x01\0\0\ +\x53\x03\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\x09\0\0\0\xb7\x03\0\0\x0f\0\0\0\x85\0\ +\0\0\x06\0\0\0\x71\x94\x1e\0\0\0\0\0\x18\x01\0\0\x53\x03\0\0\0\0\0\0\0\0\0\0\ +\xb7\x02\0\0\x09\0\0\0\xb7\x03\0\0\x10\0\0\0\x85\0\0\0\x06\0\0\0\x71\x94\x1f\0\ +\0\0\0\0\x18\x01\0\0\x53\x03\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\x09\0\0\0\xb7\x03\ +\0\0\x11\0\0\0\x85\0\0\0\x06\0\0\0\x71\x94\x20\0\0\0\0\0\x18\x01\0\0\x53\x03\0\ +\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\x09\0\0\0\xb7\x03\0\0\x12\0\0\0\x85\0\0\0\x06\0\ +\0\0\x71\x94\x21\0\0\0\0\0\x18\x01\0\0\x53\x03\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\ +\x09\0\0\0\xb7\x03\0\0\x13\0\0\0\x85\0\0\0\x06\0\0\0\xb7\x01\0\0\0\0\0\0\xb7\ +\x02\0\0\0\0\0\0\xbf\x83\0\0\0\0\0\0\xb7\x04\0\0\x14\0\0\0\xb7\x05\0\0\0\0\0\0\ +\x85\0\0\0\x1c\0\0\0\xbf\x01\0\0\0\0\0\0\x77\x01\0\0\x10\0\0\0\x57\x01\0\0\xff\ +\xff\0\0\x15\x01\x02\0\0\0\0\0\x57\0\0\0\xff\xff\0\0\x0f\x10\0\0\0\0\0\0\xbf\ +\x01\0\0\0\0\0\0\x77\x01\0\0\x10\0\0\0\x57\x01\0\0\xff\xff\0\0\x15\x01\x02\0\0\ +\0\0\0\x57\0\0\0\xff\xff\0\0\x0f\x10\0\0\0\0\0\0\xbf\x01\0\0\0\0\0\0\x77\x01\0\ +\0\x10\0\0\0\x57\x01\0\0\xff\xff\0\0\x15\x01\x02\0\0\0\0\0\x57\0\0\0\xff\xff\0\ +\0\x0f\x10\0\0\0\0\0\0\x18\x01\0\0\0\0\xff\xff\0\0\0\0\0\0\0\0\xbf\x04\0\0\0\0\ +\0\0\x5f\x14\0\0\0\0\0\0\x77\x04\0\0\x10\0\0\0\x0f\x04\0\0\0\0\0\0\xa7\x04\0\0\ +\xff\xff\xff\xff\x79\xa1\xa8\xff\0\0\0\0\x6b\x41\x18\0\0\0\0\0\x57\x04\0\0\xff\ +\xff\0\0\x69\x13\x10\0\0\0\0\0\x18\x01\0\0\x11\x03\0\0\0\0\0\0\0\0\0\0\xb7\x02\ +\0\0\x18\0\0\0\x85\0\0\0\x06\0\0\0\xb7\x09\0\0\0\0\0\0\xb7\x08\0\0\x01\0\0\0\ +\x05\0\xc3\xfe\0\0\0\0\x79\xa2\x98\xff\0\0\0\0\x0f\x12\0\0\0\0\0\0\xbf\x28\0\0\ +\0\0\0\0\xbf\x21\0\0\0\0\0\0\x07\x01\0\0\x06\0\0\0\x3d\x19\x03\0\0\0\0\0\x18\ +\x01\0\0\x39\x01\0\0\0\0\0\0\0\0\0\0\x05\0\xef\xfe\0\0\0\0\xbf\x51\0\0\0\0\0\0\ +\x67\x01\0\0\x20\0\0\0\x77\x01\0\0\x20\0\0\0\xbf\x82\0\0\0\0\0\0\x0f\x12\0\0\0\ +\0\0\0\x3d\x29\x03\0\0\0\0\0\x18\x01\0\0\x5f\x01\0\0\0\0\0\0\0\0\0\0\x05\0\xe6\ +\xfe\0\0\0\0\x61\x61\0\0\0\0\0\0\x7b\x1a\xb8\xff\0\0\0\0\xb7\x01\0\0\0\0\0\0\ +\x73\x18\x05\0\0\0\0\0\xb7\x01\0\0\x61\0\0\0\x73\x18\x04\0\0\0\0\0\x18\x01\0\0\ +\x85\x01\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\x35\0\0\0\xbf\x84\0\0\0\0\0\0\x85\0\0\ +\0\x06\0\0\0\x79\xa1\xb8\xff\0\0\0\0\x79\xa3\xb0\xff\0\0\0\0\x05\0\xb9\xfe\0\0\ +\0\0\x44\x75\x61\x6c\x20\x42\x53\x44\x2f\x47\x50\x4c\0\x42\x6f\x75\x6e\x64\x20\ +\x63\x68\x65\x63\x6b\x20\x66\x61\x69\x6c\x20\x41\0\x42\0\x43\0\x44\0\x45\x20\ +\x25\x69\x0a\0\x46\0\x47\0\x52\x65\x63\x65\x69\x76\x65\x64\x20\x76\x61\x6c\x69\ +\x64\x20\x54\x43\x50\x20\x70\x61\x63\x6b\x65\x74\x20\x77\x69\x74\x68\x20\x70\ +\x61\x79\x6c\x6f\x61\x64\x20\x25\x73\x20\x6f\x66\x20\x73\x69\x7a\x65\x20\x25\ +\x69\x0a\0\x48\0\x4f\x4c\x44\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x3a\x20\x25\ +\x69\x2c\x20\x70\x61\x79\x6c\x6f\x61\x64\x3a\x20\x25\x69\x0a\0\x43\x6f\x6e\x74\ +\x72\x6f\x6c\x20\x62\x61\x63\x6b\x20\x74\x6f\x20\x6d\x61\x69\x6e\x20\x70\x72\ +\x6f\x67\x72\x61\x6d\x20\x77\x69\x74\x68\x20\x72\x65\x74\x63\x6f\x64\x65\x20\ +\x25\x69\x0a\0\x42\x6f\x75\x6e\x64\x20\x63\x68\x65\x63\x6b\x20\x41\x20\x66\x61\ +\x69\x6c\x65\x64\x20\x77\x68\x69\x6c\x65\x20\x65\x78\x70\x61\x6e\x64\x69\x6e\ +\x67\x0a\0\x42\x6f\x75\x6e\x64\x20\x63\x68\x65\x63\x6b\x20\x42\x20\x66\x61\x69\ +\x6c\x65\x64\x20\x77\x68\x69\x6c\x65\x20\x65\x78\x70\x61\x6e\x64\x69\x6e\x67\ +\x0a\0\x42\x6f\x75\x6e\x64\x20\x63\x68\x65\x63\x6b\x20\x44\x20\x66\x61\x69\x6c\ +\x65\x64\x20\x77\x68\x69\x6c\x65\x20\x65\x78\x70\x61\x6e\x64\x69\x6e\x67\x0a\0\ +\x55\x6e\x6c\x69\x6b\x65\x6c\x79\x20\x79\x6f\x75\x20\x61\x72\x65\x20\x68\x65\ +\x72\x65\x2c\x20\x62\x75\x74\x20\x4f\x4b\x0a\0\x42\x6f\x75\x6e\x64\x20\x63\x68\ +\x65\x63\x6b\x20\x45\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x68\x69\x6c\x65\x20\ \x65\x78\x70\x61\x6e\x64\x69\x6e\x67\x0a\0\x42\x6f\x75\x6e\x64\x20\x63\x68\x65\ -\x63\x6b\x20\x44\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x68\x69\x6c\x65\x20\x65\ -\x78\x70\x61\x6e\x64\x69\x6e\x67\x0a\0\x65\x78\x70\x6c\x6f\x64\x69\x6e\x67\x20\ -\x68\x65\x61\x76\x69\x6c\x79\x0a\0\x42\x6f\x75\x6e\x64\x20\x63\x68\x65\x63\x6b\ -\x20\x45\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x68\x69\x6c\x65\x20\x65\x78\x70\ -\x61\x6e\x64\x69\x6e\x67\x0a\0\x42\x6f\x75\x6e\x64\x20\x63\x68\x65\x63\x6b\x20\ -\x46\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x68\x69\x6c\x65\x20\x65\x78\x70\x61\ -\x6e\x64\x69\x6e\x67\x0a\0\x42\x50\x46\x20\x66\x69\x6e\x69\x73\x68\x65\x64\x20\ -\x77\x69\x74\x68\x20\x72\x65\x74\x20\x25\x69\x20\x61\x6e\x64\x20\x70\x61\x79\ -\x6c\x6f\x61\x64\x20\x25\x73\x20\x6f\x66\x20\x73\x69\x7a\x65\x20\x25\x69\x0a\ -\x20\0\x42\x50\x46\x20\x66\x69\x6e\x69\x73\x68\x65\x64\x20\x77\x69\x74\x68\x20\ -\x65\x72\x72\x6f\x72\x20\x6f\x6e\x20\x65\x78\x70\x61\x6e\x73\x69\x6f\x6e\x0a\0\ -\x50\x72\x65\x76\x69\x6f\x75\x73\x20\x6c\x65\x6e\x67\x74\x68\x3a\x20\x25\x69\ -\x2c\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x6c\x65\x6e\x67\x74\x68\x3a\x20\x25\ -\x69\x0a\0\x4e\x45\x57\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x3a\x20\x25\x69\x2c\ -\x20\x70\x61\x79\x6c\x6f\x61\x64\x3a\x20\x25\x69\x0a\0\x41\x6e\x64\x20\x6f\x6e\ -\x20\x4e\x45\x57\x20\x43\x54\x58\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x3a\x20\ -\x25\x69\x2c\x20\x70\x61\x79\x6c\x6f\x61\x64\x3a\x20\x25\x69\x0a\0\x46\x61\x69\ -\x6c\x65\x64\x20\x74\x6f\x20\x65\x78\x70\x61\x6e\x64\x20\x61\x20\x74\x63\x70\ -\x20\x70\x61\x63\x6b\x65\x74\x20\x72\x65\x73\x65\x72\x76\x65\x64\x20\x62\x79\ -\x74\x65\x73\x20\x62\x79\x20\x25\x69\x0a\0\x42\x6f\x75\x6e\x64\x20\x63\x68\x65\ -\x63\x6b\x20\x41\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x68\x69\x6c\x65\x20\x65\ -\x78\x70\x61\x6e\x64\x69\x6e\x67\x0a\0\x42\x6f\x75\x6e\x64\x20\x63\x68\x65\x63\ -\x6b\x20\x42\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x68\x69\x6c\x65\x20\x65\x78\ -\x70\x61\x6e\x64\x69\x6e\x67\x0a\0\x42\x6f\x75\x6e\x64\x20\x63\x68\x65\x63\x6b\ -\x20\x43\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x68\x69\x6c\x65\x20\x65\x78\x70\ -\x61\x6e\x64\x69\x6e\x67\x0a\0\x62\x65\x66\x6f\x72\x65\x3a\x20\x25\x69\x2c\x20\ -\x63\x68\x65\x63\x6b\x73\x75\x6d\x20\x25\x75\x0a\0\x61\x66\x74\x65\x72\x3a\x20\ -\x25\x69\x2c\x20\x63\x68\x65\x63\x6b\x73\x75\x6d\x20\x25\x75\x0a\0\x63\x73\x75\ -\x6d\x3a\x20\x25\x75\x0a\0\x63\x73\x75\x6d\x3a\x20\x25\x75\x0a\0\x63\x73\x75\ -\x6d\x3a\x20\x25\x75\x0a\0\x63\x73\x75\x6d\x41\x3a\x20\x25\x75\x0a\0\x63\x73\ -\x75\x6d\x42\x3a\x20\x25\x75\x0a\0\x63\x73\x75\x6d\x41\x2b\x42\x3a\x20\x25\x75\ -\x0a\0\x63\x73\x75\x6d\x4e\x45\x47\x28\x41\x2b\x42\x29\x3a\x20\x25\x75\x0a\0\ -\x9f\xeb\x01\0\x18\0\0\0\0\0\0\0\x5c\x06\0\0\x5c\x06\0\0\x48\x16\0\0\0\0\0\0\0\ -\0\0\x02\x02\0\0\0\x01\0\0\0\x06\0\0\x04\x18\0\0\0\x08\0\0\0\x03\0\0\0\0\0\0\0\ -\x0d\0\0\0\x03\0\0\0\x20\0\0\0\x16\0\0\0\x03\0\0\0\x40\0\0\0\x20\0\0\0\x03\0\0\ -\0\x60\0\0\0\x30\0\0\0\x03\0\0\0\x80\0\0\0\x3f\0\0\0\x03\0\0\0\xa0\0\0\0\x4e\0\ -\0\0\0\0\0\x08\x04\0\0\0\x54\0\0\0\0\0\0\x01\x04\0\0\0\x20\0\0\0\0\0\0\0\x01\0\ -\0\x0d\x06\0\0\0\x61\0\0\0\x01\0\0\0\x65\0\0\0\0\0\0\x01\x04\0\0\0\x20\0\0\x01\ -\x69\0\0\0\x01\0\0\x0c\x05\0\0\0\xbc\x12\0\0\0\0\0\x01\x01\0\0\0\x08\0\0\x01\0\ -\0\0\0\0\0\0\x03\0\0\0\0\x08\0\0\0\x0a\0\0\0\x0d\0\0\0\xc1\x12\0\0\0\0\0\x01\ -\x04\0\0\0\x20\0\0\0\xd5\x12\0\0\0\0\0\x0e\x09\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\ -\x0a\x08\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\x0c\0\0\0\x0a\0\0\0\x13\0\0\0\xdd\x12\ -\0\0\0\0\0\x0e\x0d\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\x0c\0\0\0\x0a\0\0\0\ -\x02\0\0\0\xf1\x12\0\0\0\0\0\x0e\x0f\0\0\0\0\0\0\0\x07\x13\0\0\0\0\0\x0e\x0f\0\ -\0\0\0\0\0\0\x1d\x13\0\0\0\0\0\x0e\x0f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\ -\x0c\0\0\0\x0a\0\0\0\x06\0\0\0\x33\x13\0\0\0\0\0\x0e\x13\0\0\0\0\0\0\0\x49\x13\ -\0\0\0\0\0\x0e\x0f\0\0\0\0\0\0\0\x5f\x13\0\0\0\0\0\x0e\x0f\0\0\0\0\0\0\0\0\0\0\ -\0\0\0\0\x03\0\0\0\0\x0c\0\0\0\x0a\0\0\0\x36\0\0\0\x75\x13\0\0\0\0\0\x0e\x17\0\ -\0\0\0\0\0\0\x8b\x13\0\0\0\0\0\x0e\x0f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\ -\x0c\0\0\0\x0a\0\0\0\x1f\0\0\0\xa1\x13\0\0\0\0\0\x0e\x1a\0\0\0\0\0\0\0\0\0\0\0\ -\0\0\0\x03\0\0\0\0\x0c\0\0\0\x0a\0\0\0\x26\0\0\0\xb7\x13\0\0\0\0\0\x0e\x1c\0\0\ -\0\0\0\0\0\xce\x13\0\0\0\0\0\x0e\x1c\0\0\0\0\0\0\0\xe5\x13\0\0\0\0\0\x0e\x1c\0\ -\0\0\0\0\0\0\xfc\x13\0\0\0\0\0\x0e\x0d\0\0\0\0\0\0\0\x13\x14\0\0\0\0\0\x0e\x1c\ -\0\0\0\0\0\0\0\x2a\x14\0\0\0\0\0\x0e\x1c\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\ -\0\x0c\0\0\0\x0a\0\0\0\x35\0\0\0\x41\x14\0\0\0\0\0\x0e\x23\0\0\0\0\0\0\0\x58\ -\x14\0\0\0\0\0\x0e\x1c\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\x0c\0\0\0\x0a\0\ -\0\0\x29\0\0\0\x6f\x14\0\0\0\0\0\x0e\x26\0\0\0\0\0\0\0\x86\x14\0\0\0\0\0\x0e\ -\x1a\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\x0c\0\0\0\x0a\0\0\0\x2a\0\0\0\x9d\ -\x14\0\0\0\0\0\x0e\x29\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\x0c\0\0\0\x0a\0\ -\0\0\x34\0\0\0\xb4\x14\0\0\0\0\0\x0e\x2b\0\0\0\0\0\0\0\xd6\x14\0\0\0\0\0\x0e\ -\x1c\0\0\0\0\0\0\0\xfb\x14\0\0\0\0\0\x0e\x1c\0\0\0\0\0\0\0\x20\x15\0\0\0\0\0\ -\x0e\x1c\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\x0c\0\0\0\x0a\0\0\0\x19\0\0\0\ -\x45\x15\0\0\0\0\0\x0e\x30\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\x0c\0\0\0\ -\x0a\0\0\0\x18\0\0\0\x6a\x15\0\0\0\0\0\x0e\x32\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\ -\0\0\0\0\x0c\0\0\0\x0a\0\0\0\x0a\0\0\0\x8f\x15\0\0\0\0\0\x0e\x34\0\0\0\0\0\0\0\ -\xa1\x15\0\0\0\0\0\x0e\x34\0\0\0\0\0\0\0\xb6\x15\0\0\0\0\0\x0e\x34\0\0\0\0\0\0\ -\0\0\0\0\0\0\0\0\x03\0\0\0\0\x0c\0\0\0\x0a\0\0\0\x0b\0\0\0\xcb\x15\0\0\0\0\0\ -\x0e\x38\0\0\0\0\0\0\0\xe4\x15\0\0\0\0\0\x0e\x38\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ -\x03\0\0\0\0\x0c\0\0\0\x0a\0\0\0\x0d\0\0\0\0\x16\0\0\0\0\0\x0e\x3b\0\0\0\0\0\0\ -\0\0\0\0\0\0\0\0\x03\0\0\0\0\x0c\0\0\0\x0a\0\0\0\x12\0\0\0\x1c\x16\0\0\0\0\0\ -\x0e\x3d\0\0\0\0\0\0\0\x38\x16\0\0\x22\0\0\x0f\0\0\0\0\x0e\0\0\0\0\0\0\0\x13\0\ -\0\0\x10\0\0\0\x13\0\0\0\x02\0\0\0\x11\0\0\0\x15\0\0\0\x02\0\0\0\x12\0\0\0\x17\ -\0\0\0\x02\0\0\0\x14\0\0\0\x19\0\0\0\x06\0\0\0\x15\0\0\0\x1f\0\0\0\x02\0\0\0\ -\x16\0\0\0\x21\0\0\0\x02\0\0\0\x18\0\0\0\x23\0\0\0\x36\0\0\0\x19\0\0\0\x59\0\0\ -\0\x02\0\0\0\x1b\0\0\0\x5b\0\0\0\x1f\0\0\0\x1d\0\0\0\x7a\0\0\0\x26\0\0\0\x1e\0\ -\0\0\xa0\0\0\0\x26\0\0\0\x1f\0\0\0\xc6\0\0\0\x26\0\0\0\x20\0\0\0\xec\0\0\0\x13\ -\0\0\0\x21\0\0\0\xff\0\0\0\x26\0\0\0\x22\0\0\0\x25\x01\0\0\x26\0\0\0\x24\0\0\0\ -\x4b\x01\0\0\x35\0\0\0\x25\0\0\0\x80\x01\0\0\x26\0\0\0\x27\0\0\0\xa6\x01\0\0\ -\x29\0\0\0\x28\0\0\0\xcf\x01\0\0\x1f\0\0\0\x2a\0\0\0\xee\x01\0\0\x2a\0\0\0\x2c\ -\0\0\0\x18\x02\0\0\x34\0\0\0\x2d\0\0\0\x4c\x02\0\0\x26\0\0\0\x2e\0\0\0\x72\x02\ -\0\0\x26\0\0\0\x2f\0\0\0\x98\x02\0\0\x26\0\0\0\x31\0\0\0\xbe\x02\0\0\x19\0\0\0\ -\x33\0\0\0\xd7\x02\0\0\x18\0\0\0\x35\0\0\0\xef\x02\0\0\x0a\0\0\0\x36\0\0\0\xf9\ -\x02\0\0\x0a\0\0\0\x37\0\0\0\x03\x03\0\0\x0a\0\0\0\x39\0\0\0\x0d\x03\0\0\x0b\0\ -\0\0\x3a\0\0\0\x18\x03\0\0\x0b\0\0\0\x3c\0\0\0\x23\x03\0\0\x0d\0\0\0\x3e\0\0\0\ -\x30\x03\0\0\x12\0\0\0\x40\x16\0\0\x01\0\0\x0f\0\0\0\0\x0b\0\0\0\0\0\0\0\x0d\0\ -\0\0\0\x78\x64\x70\x5f\x6d\x64\0\x64\x61\x74\x61\0\x64\x61\x74\x61\x5f\x65\x6e\ -\x64\0\x64\x61\x74\x61\x5f\x6d\x65\x74\x61\0\x69\x6e\x67\x72\x65\x73\x73\x5f\ -\x69\x66\x69\x6e\x64\x65\x78\0\x72\x78\x5f\x71\x75\x65\x75\x65\x5f\x69\x6e\x64\ -\x65\x78\0\x65\x67\x72\x65\x73\x73\x5f\x69\x66\x69\x6e\x64\x65\x78\0\x5f\x5f\ -\x75\x33\x32\0\x75\x6e\x73\x69\x67\x6e\x65\x64\x20\x69\x6e\x74\0\x63\x74\x78\0\ -\x69\x6e\x74\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\0\x78\x64\x70\x5f\ -\x70\x72\x6f\x67\0\x2f\x68\x6f\x6d\x65\x2f\x6f\x73\x62\x6f\x78\x65\x73\x2f\x54\ -\x46\x47\x2f\x73\x72\x63\x2f\x65\x62\x70\x66\x2f\x78\x64\x70\x5f\x66\x69\x6c\ -\x74\x65\x72\x2e\x62\x70\x66\x2e\x63\0\x69\x6e\x74\x20\x78\x64\x70\x5f\x72\x65\ -\x63\x65\x69\x76\x65\x28\x73\x74\x72\x75\x63\x74\x20\x78\x64\x70\x5f\x6d\x64\ -\x20\x2a\x63\x74\x78\x29\0\x20\x20\x20\x20\x76\x6f\x69\x64\x20\x2a\x64\x61\x74\ -\x61\x5f\x65\x6e\x64\x20\x3d\x20\x28\x76\x6f\x69\x64\x20\x2a\x29\x28\x6c\x6f\ -\x6e\x67\x29\x63\x74\x78\x2d\x3e\x64\x61\x74\x61\x5f\x65\x6e\x64\x3b\0\x20\x20\ -\x20\x20\x76\x6f\x69\x64\x20\x2a\x64\x61\x74\x61\x20\x3d\x20\x28\x76\x6f\x69\ -\x64\x20\x2a\x29\x28\x6c\x6f\x6e\x67\x29\x63\x74\x78\x2d\x3e\x64\x61\x74\x61\ -\x3b\0\x2f\x68\x6f\x6d\x65\x2f\x6f\x73\x62\x6f\x78\x65\x73\x2f\x54\x46\x47\x2f\ -\x73\x72\x63\x2f\x69\x6e\x63\x6c\x75\x64\x65\x2f\x70\x61\x63\x6b\x65\x74\x2f\ -\x70\x61\x63\x6b\x65\x74\x5f\x6d\x61\x6e\x61\x67\x65\x72\x2e\x68\0\x20\x20\x20\ -\x20\x69\x66\x20\x28\x28\x76\x6f\x69\x64\x20\x2a\x29\x65\x74\x68\x20\x2b\x20\ -\x73\x69\x7a\x65\x6f\x66\x28\x73\x74\x72\x75\x63\x74\x20\x65\x74\x68\x68\x64\ -\x72\x29\x20\x3e\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x29\x7b\0\x20\x20\x20\x20\ -\x69\x66\x28\x65\x74\x68\x65\x72\x6e\x65\x74\x5f\x68\x65\x61\x64\x65\x72\x5f\ -\x62\x6f\x75\x6e\x64\x5f\x63\x68\x65\x63\x6b\x28\x65\x74\x68\x2c\x20\x64\x61\ -\x74\x61\x5f\x65\x6e\x64\x29\x3c\x30\x29\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\ -\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x42\x6f\x75\x6e\x64\x20\x63\ -\x68\x65\x63\x6b\x20\x66\x61\x69\x6c\x20\x41\x22\x29\x3b\0\x20\x20\x20\x20\x69\ -\x66\x20\x28\x28\x76\x6f\x69\x64\x20\x2a\x29\x69\x70\x20\x2b\x20\x73\x69\x7a\ -\x65\x6f\x66\x28\x2a\x69\x70\x29\x20\x3e\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\ -\x29\x7b\0\x20\x20\x20\x20\x69\x66\x20\x28\x69\x70\x5f\x68\x65\x61\x64\x65\x72\ -\x5f\x62\x6f\x75\x6e\x64\x5f\x63\x68\x65\x63\x6b\x28\x69\x70\x2c\x20\x64\x61\ -\x74\x61\x5f\x65\x6e\x64\x29\x3c\x30\x29\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\ -\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x42\x22\x29\x3b\0\x20\x20\x20\ -\x20\x73\x77\x69\x74\x63\x68\x28\x69\x70\x2d\x3e\x70\x72\x6f\x74\x6f\x63\x6f\ -\x6c\x29\x7b\0\x20\x20\x20\x20\x69\x66\x20\x28\x67\x65\x74\x5f\x70\x72\x6f\x74\ -\x6f\x63\x6f\x6c\x28\x64\x61\x74\x61\x29\x20\x21\x3d\x20\x49\x50\x50\x52\x4f\ -\x54\x4f\x5f\x54\x43\x50\x29\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x62\x70\x66\ -\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x43\x22\x29\x3b\0\x20\x20\x20\x20\x69\x66\ -\x20\x28\x28\x76\x6f\x69\x64\x20\x2a\x29\x74\x63\x70\x20\x2b\x20\x73\x69\x7a\ -\x65\x6f\x66\x28\x2a\x74\x63\x70\x29\x20\x3e\x20\x64\x61\x74\x61\x5f\x65\x6e\ -\x64\x29\x7b\0\x20\x20\x20\x20\x69\x66\x20\x28\x74\x63\x70\x5f\x68\x65\x61\x64\ -\x65\x72\x5f\x62\x6f\x75\x6e\x64\x5f\x63\x68\x65\x63\x6b\x28\x74\x63\x70\x2c\ -\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x29\x29\x7b\0\x20\x20\x20\x20\x20\x20\x20\ -\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x44\x22\x29\x3b\0\x7d\0\ -\x2f\x68\x6f\x6d\x65\x2f\x6f\x73\x62\x6f\x78\x65\x73\x2f\x54\x46\x47\x2f\x73\ -\x72\x63\x2f\x69\x6e\x63\x6c\x75\x64\x65\x2f\x70\x61\x63\x6b\x65\x74\x2f\x70\ -\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x74\x63\x70\x5f\x68\x65\x6c\x70\x65\x72\x2e\ -\x68\0\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x6e\x74\x6f\x68\x73\x28\x74\ -\x63\x70\x2d\x3e\x64\x65\x73\x74\x29\x3b\0\x20\x20\x20\x20\x69\x66\x20\x28\x67\ -\x65\x74\x5f\x74\x63\x70\x5f\x64\x65\x73\x74\x5f\x70\x6f\x72\x74\x28\x74\x63\ -\x70\x29\x20\x21\x3d\x20\x53\x45\x43\x52\x45\x54\x5f\x50\x41\x43\x4b\x45\x54\ -\x5f\x44\x45\x53\x54\x5f\x50\x4f\x52\x54\x29\x7b\0\x20\x20\x20\x20\x20\x20\x20\ -\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x45\x20\x25\x69\x5c\x6e\ -\x22\x2c\x20\x6e\x74\x6f\x68\x73\x28\x74\x63\x70\x2d\x3e\x64\x65\x73\x74\x29\ -\x29\x3b\0\x20\x20\x20\x20\x70\x61\x79\x6c\x6f\x61\x64\x5f\x73\x69\x7a\x65\x20\ -\x3d\x20\x6e\x74\x6f\x68\x73\x28\x69\x70\x2d\x3e\x74\x6f\x74\x5f\x6c\x65\x6e\ -\x29\x20\x2d\x20\x28\x74\x63\x70\x2d\x3e\x64\x6f\x66\x66\x20\x2a\x20\x34\x29\ -\x20\x2d\x20\x28\x69\x70\x2d\x3e\x69\x68\x6c\x20\x2a\x20\x34\x29\x3b\0\x20\x20\ -\x20\x20\x69\x66\x20\x28\x70\x61\x79\x6c\x6f\x61\x64\x5f\x73\x69\x7a\x65\x20\ -\x21\x3d\x20\x73\x69\x7a\x65\x6f\x66\x28\x6d\x61\x74\x63\x68\x5f\x70\x61\x74\ -\x74\x65\x72\x6e\x29\x20\x2d\x20\x31\x29\x20\x7b\0\x20\x20\x20\x20\x20\x20\x20\ -\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x46\x22\x29\x3b\0\x20\x20\ -\x20\x20\x69\x66\x20\x28\x28\x76\x6f\x69\x64\x2a\x29\x70\x61\x79\x6c\x6f\x61\ -\x64\x20\x2b\x20\x70\x61\x79\x6c\x6f\x61\x64\x5f\x73\x69\x7a\x65\x20\x3e\x20\ -\x64\x61\x74\x61\x5f\x65\x6e\x64\x29\x7b\0\x20\x20\x20\x20\x69\x66\x20\x28\x74\ -\x63\x70\x5f\x70\x61\x79\x6c\x6f\x61\x64\x5f\x62\x6f\x75\x6e\x64\x5f\x63\x68\ -\x65\x63\x6b\x28\x70\x61\x79\x6c\x6f\x61\x64\x2c\x20\x70\x61\x79\x6c\x6f\x61\ -\x64\x5f\x73\x69\x7a\x65\x2c\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x29\x29\x7b\0\ +\x63\x6b\x20\x46\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x68\x69\x6c\x65\x20\x65\ +\x78\x70\x61\x6e\x64\x69\x6e\x67\x0a\0\x42\x50\x46\x20\x66\x69\x6e\x69\x73\x68\ +\x65\x64\x20\x77\x69\x74\x68\x20\x72\x65\x74\x20\x25\x69\x20\x61\x6e\x64\x20\ +\x70\x61\x79\x6c\x6f\x61\x64\x20\x25\x73\x20\x6f\x66\x20\x73\x69\x7a\x65\x20\ +\x25\x69\x0a\x20\0\x42\x50\x46\x20\x66\x69\x6e\x69\x73\x68\x65\x64\x20\x77\x69\ +\x74\x68\x20\x65\x72\x72\x6f\x72\x20\x6f\x6e\x20\x65\x78\x70\x61\x6e\x73\x69\ +\x6f\x6e\x0a\0\x50\x72\x65\x76\x69\x6f\x75\x73\x20\x6c\x65\x6e\x67\x74\x68\x3a\ +\x20\x25\x69\x2c\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x6c\x65\x6e\x67\x74\x68\ +\x3a\x20\x25\x69\x0a\0\x4e\x45\x57\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x3a\x20\ +\x25\x69\x2c\x20\x70\x61\x79\x6c\x6f\x61\x64\x3a\x20\x25\x69\x0a\0\x41\x6e\x64\ +\x20\x6f\x6e\x20\x4e\x45\x57\x20\x43\x54\x58\x20\x64\x61\x74\x61\x5f\x65\x6e\ +\x64\x3a\x20\x25\x69\x2c\x20\x70\x61\x79\x6c\x6f\x61\x64\x3a\x20\x25\x69\x0a\0\ +\x46\x61\x69\x6c\x65\x64\x20\x74\x6f\x20\x65\x78\x70\x61\x6e\x64\x20\x61\x20\ +\x74\x63\x70\x20\x70\x61\x63\x6b\x65\x74\x20\x72\x65\x73\x65\x72\x76\x65\x64\ +\x20\x62\x79\x74\x65\x73\x20\x62\x79\x20\x25\x69\x0a\0\x42\x6f\x75\x6e\x64\x20\ +\x63\x68\x65\x63\x6b\x20\x41\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x68\x69\x6c\ +\x65\x20\x65\x78\x70\x61\x6e\x64\x69\x6e\x67\x0a\0\x42\x6f\x75\x6e\x64\x20\x63\ +\x68\x65\x63\x6b\x20\x42\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x68\x69\x6c\x65\ +\x20\x65\x78\x70\x61\x6e\x64\x69\x6e\x67\x0a\0\x42\x6f\x75\x6e\x64\x20\x63\x68\ +\x65\x63\x6b\x20\x43\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x68\x69\x6c\x65\x20\ +\x65\x78\x70\x61\x6e\x64\x69\x6e\x67\x0a\0\x62\x65\x66\x6f\x72\x65\x3a\x20\x25\ +\x69\x2c\x20\x63\x68\x65\x63\x6b\x73\x75\x6d\x20\x25\x75\x0a\0\x61\x66\x74\x65\ +\x72\x3a\x20\x25\x69\x2c\x20\x63\x68\x65\x63\x6b\x73\x75\x6d\x20\x25\x75\x0a\0\ +\x63\x73\x75\x6d\x3a\x20\x25\x75\x20\x66\x6f\x72\x20\x64\x61\x74\x61\x5f\x73\ +\x74\x61\x72\x74\x20\x25\x75\x2c\x20\x64\x61\x74\x61\x5f\x73\x69\x7a\x65\x20\ +\x25\x69\x0a\0\x42\x25\x69\x3a\x20\x25\x78\x0a\0\x9f\xeb\x01\0\x18\0\0\0\0\0\0\ +\0\xbc\x05\0\0\xbc\x05\0\0\xe8\x15\0\0\0\0\0\0\0\0\0\x02\x02\0\0\0\x01\0\0\0\ +\x06\0\0\x04\x18\0\0\0\x08\0\0\0\x03\0\0\0\0\0\0\0\x0d\0\0\0\x03\0\0\0\x20\0\0\ +\0\x16\0\0\0\x03\0\0\0\x40\0\0\0\x20\0\0\0\x03\0\0\0\x60\0\0\0\x30\0\0\0\x03\0\ +\0\0\x80\0\0\0\x3f\0\0\0\x03\0\0\0\xa0\0\0\0\x4e\0\0\0\0\0\0\x08\x04\0\0\0\x54\ +\0\0\0\0\0\0\x01\x04\0\0\0\x20\0\0\0\0\0\0\0\x01\0\0\x0d\x06\0\0\0\x61\0\0\0\ +\x01\0\0\0\x65\0\0\0\0\0\0\x01\x04\0\0\0\x20\0\0\x01\x69\0\0\0\x01\0\0\x0c\x05\ +\0\0\0\xc7\x12\0\0\0\0\0\x01\x01\0\0\0\x08\0\0\x01\0\0\0\0\0\0\0\x03\0\0\0\0\ +\x08\0\0\0\x0a\0\0\0\x0d\0\0\0\xcc\x12\0\0\0\0\0\x01\x04\0\0\0\x20\0\0\0\xe0\ +\x12\0\0\0\0\0\x0e\x09\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\x0a\x08\0\0\0\0\0\0\0\0\0\ +\0\x03\0\0\0\0\x0c\0\0\0\x0a\0\0\0\x13\0\0\0\xe8\x12\0\0\0\0\0\x0e\x0d\0\0\0\0\ +\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\x0c\0\0\0\x0a\0\0\0\x02\0\0\0\xfc\x12\0\0\0\0\ +\0\x0e\x0f\0\0\0\0\0\0\0\x12\x13\0\0\0\0\0\x0e\x0f\0\0\0\0\0\0\0\x28\x13\0\0\0\ +\0\0\x0e\x0f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\x0c\0\0\0\x0a\0\0\0\x06\0\ +\0\0\x3e\x13\0\0\0\0\0\x0e\x13\0\0\0\0\0\0\0\x54\x13\0\0\0\0\0\x0e\x0f\0\0\0\0\ +\0\0\0\x6a\x13\0\0\0\0\0\x0e\x0f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\x0c\0\ +\0\0\x0a\0\0\0\x36\0\0\0\x80\x13\0\0\0\0\0\x0e\x17\0\0\0\0\0\0\0\x96\x13\0\0\0\ +\0\0\x0e\x0f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\x0c\0\0\0\x0a\0\0\0\x1f\0\ +\0\0\xac\x13\0\0\0\0\0\x0e\x1a\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\x0c\0\0\ +\0\x0a\0\0\0\x2e\0\0\0\xc2\x13\0\0\0\0\0\x0e\x1c\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ +\x03\0\0\0\0\x0c\0\0\0\x0a\0\0\0\x26\0\0\0\xd9\x13\0\0\0\0\0\x0e\x1e\0\0\0\0\0\ +\0\0\xf0\x13\0\0\0\0\0\x0e\x1e\0\0\0\0\0\0\0\x07\x14\0\0\0\0\0\x0e\x1e\0\0\0\0\ +\0\0\0\x1e\x14\0\0\0\0\0\x0e\x1a\0\0\0\0\0\0\0\x35\x14\0\0\0\0\0\x0e\x1e\0\0\0\ +\0\0\0\0\x4c\x14\0\0\0\0\0\x0e\x1e\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\x0c\ +\0\0\0\x0a\0\0\0\x35\0\0\0\x63\x14\0\0\0\0\0\x0e\x25\0\0\0\0\0\0\0\x7a\x14\0\0\ +\0\0\0\x0e\x1e\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\x0c\0\0\0\x0a\0\0\0\x29\ +\0\0\0\x91\x14\0\0\0\0\0\x0e\x28\0\0\0\0\0\0\0\xa8\x14\0\0\0\0\0\x0e\x1a\0\0\0\ +\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\x0c\0\0\0\x0a\0\0\0\x2a\0\0\0\xbf\x14\0\0\0\ +\0\0\x0e\x2b\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\x0c\0\0\0\x0a\0\0\0\x34\0\ +\0\0\xd6\x14\0\0\0\0\0\x0e\x2d\0\0\0\0\0\0\0\xf8\x14\0\0\0\0\0\x0e\x1e\0\0\0\0\ +\0\0\0\x1d\x15\0\0\0\0\0\x0e\x1e\0\0\0\0\0\0\0\x42\x15\0\0\0\0\0\x0e\x1e\0\0\0\ +\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\x0c\0\0\0\x0a\0\0\0\x19\0\0\0\x67\x15\0\0\0\ +\0\0\x0e\x32\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\x0c\0\0\0\x0a\0\0\0\x18\0\ +\0\0\x8c\x15\0\0\0\0\0\x0e\x34\0\0\0\0\0\0\0\xb1\x15\0\0\0\0\0\x0e\x2b\0\0\0\0\ +\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\x0c\0\0\0\x0a\0\0\0\x09\0\0\0\xc3\x15\0\0\0\0\ +\0\x0e\x37\0\0\0\0\0\0\0\xd8\x15\0\0\x1e\0\0\x0f\0\0\0\0\x0e\0\0\0\0\0\0\0\x13\ +\0\0\0\x10\0\0\0\x13\0\0\0\x02\0\0\0\x11\0\0\0\x15\0\0\0\x02\0\0\0\x12\0\0\0\ +\x17\0\0\0\x02\0\0\0\x14\0\0\0\x19\0\0\0\x06\0\0\0\x15\0\0\0\x1f\0\0\0\x02\0\0\ +\0\x16\0\0\0\x21\0\0\0\x02\0\0\0\x18\0\0\0\x23\0\0\0\x36\0\0\0\x19\0\0\0\x59\0\ +\0\0\x02\0\0\0\x1b\0\0\0\x5b\0\0\0\x1f\0\0\0\x1d\0\0\0\x7a\0\0\0\x2e\0\0\0\x1f\ +\0\0\0\xa8\0\0\0\x26\0\0\0\x20\0\0\0\xce\0\0\0\x26\0\0\0\x21\0\0\0\xf4\0\0\0\ +\x26\0\0\0\x22\0\0\0\x1a\x01\0\0\x1f\0\0\0\x23\0\0\0\x39\x01\0\0\x26\0\0\0\x24\ +\0\0\0\x5f\x01\0\0\x26\0\0\0\x26\0\0\0\x85\x01\0\0\x35\0\0\0\x27\0\0\0\xba\x01\ +\0\0\x26\0\0\0\x29\0\0\0\xe0\x01\0\0\x29\0\0\0\x2a\0\0\0\x09\x02\0\0\x1f\0\0\0\ +\x2c\0\0\0\x28\x02\0\0\x2a\0\0\0\x2e\0\0\0\x52\x02\0\0\x34\0\0\0\x2f\0\0\0\x86\ +\x02\0\0\x26\0\0\0\x30\0\0\0\xac\x02\0\0\x26\0\0\0\x31\0\0\0\xd2\x02\0\0\x26\0\ +\0\0\x33\0\0\0\xf8\x02\0\0\x19\0\0\0\x35\0\0\0\x11\x03\0\0\x18\0\0\0\x36\0\0\0\ +\x29\x03\0\0\x2a\0\0\0\x38\0\0\0\x53\x03\0\0\x09\0\0\0\xe0\x15\0\0\x01\0\0\x0f\ +\0\0\0\0\x0b\0\0\0\0\0\0\0\x0d\0\0\0\0\x78\x64\x70\x5f\x6d\x64\0\x64\x61\x74\ +\x61\0\x64\x61\x74\x61\x5f\x65\x6e\x64\0\x64\x61\x74\x61\x5f\x6d\x65\x74\x61\0\ +\x69\x6e\x67\x72\x65\x73\x73\x5f\x69\x66\x69\x6e\x64\x65\x78\0\x72\x78\x5f\x71\ +\x75\x65\x75\x65\x5f\x69\x6e\x64\x65\x78\0\x65\x67\x72\x65\x73\x73\x5f\x69\x66\ +\x69\x6e\x64\x65\x78\0\x5f\x5f\x75\x33\x32\0\x75\x6e\x73\x69\x67\x6e\x65\x64\ +\x20\x69\x6e\x74\0\x63\x74\x78\0\x69\x6e\x74\0\x78\x64\x70\x5f\x72\x65\x63\x65\ +\x69\x76\x65\0\x78\x64\x70\x5f\x70\x72\x6f\x67\0\x2f\x68\x6f\x6d\x65\x2f\x6f\ +\x73\x62\x6f\x78\x65\x73\x2f\x54\x46\x47\x2f\x73\x72\x63\x2f\x65\x62\x70\x66\ +\x2f\x78\x64\x70\x5f\x66\x69\x6c\x74\x65\x72\x2e\x62\x70\x66\x2e\x63\0\x69\x6e\ +\x74\x20\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x28\x73\x74\x72\x75\x63\ +\x74\x20\x78\x64\x70\x5f\x6d\x64\x20\x2a\x63\x74\x78\x29\0\x20\x20\x20\x20\x76\ +\x6f\x69\x64\x20\x2a\x64\x61\x74\x61\x5f\x65\x6e\x64\x20\x3d\x20\x28\x76\x6f\ +\x69\x64\x20\x2a\x29\x28\x6c\x6f\x6e\x67\x29\x63\x74\x78\x2d\x3e\x64\x61\x74\ +\x61\x5f\x65\x6e\x64\x3b\0\x20\x20\x20\x20\x76\x6f\x69\x64\x20\x2a\x64\x61\x74\ +\x61\x20\x3d\x20\x28\x76\x6f\x69\x64\x20\x2a\x29\x28\x6c\x6f\x6e\x67\x29\x63\ +\x74\x78\x2d\x3e\x64\x61\x74\x61\x3b\0\x2f\x68\x6f\x6d\x65\x2f\x6f\x73\x62\x6f\ +\x78\x65\x73\x2f\x54\x46\x47\x2f\x73\x72\x63\x2f\x69\x6e\x63\x6c\x75\x64\x65\ +\x2f\x70\x61\x63\x6b\x65\x74\x2f\x70\x61\x63\x6b\x65\x74\x5f\x6d\x61\x6e\x61\ +\x67\x65\x72\x2e\x68\0\x20\x20\x20\x20\x69\x66\x20\x28\x28\x76\x6f\x69\x64\x20\ +\x2a\x29\x65\x74\x68\x20\x2b\x20\x73\x69\x7a\x65\x6f\x66\x28\x73\x74\x72\x75\ +\x63\x74\x20\x65\x74\x68\x68\x64\x72\x29\x20\x3e\x20\x64\x61\x74\x61\x5f\x65\ +\x6e\x64\x29\x7b\0\x20\x20\x20\x20\x69\x66\x28\x65\x74\x68\x65\x72\x6e\x65\x74\ +\x5f\x68\x65\x61\x64\x65\x72\x5f\x62\x6f\x75\x6e\x64\x5f\x63\x68\x65\x63\x6b\ +\x28\x65\x74\x68\x2c\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x29\x3c\x30\x29\x7b\0\ \x20\x20\x20\x20\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\ -\x22\x47\x22\x29\x3b\0\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\ -\x28\x22\x52\x65\x63\x65\x69\x76\x65\x64\x20\x76\x61\x6c\x69\x64\x20\x54\x43\ -\x50\x20\x70\x61\x63\x6b\x65\x74\x20\x77\x69\x74\x68\x20\x70\x61\x79\x6c\x6f\ -\x61\x64\x20\x25\x73\x20\x6f\x66\x20\x73\x69\x7a\x65\x20\x25\x69\x5c\x6e\x22\ -\x2c\x20\x70\x61\x79\x6c\x6f\x61\x64\x2c\x20\x70\x61\x79\x6c\x6f\x61\x64\x5f\ -\x73\x69\x7a\x65\x29\x3b\0\x2f\x68\x6f\x6d\x65\x2f\x6f\x73\x62\x6f\x78\x65\x73\ -\x2f\x54\x46\x47\x2f\x73\x72\x63\x2f\x69\x6e\x63\x6c\x75\x64\x65\x2f\x63\x6f\ -\x6d\x6d\x6f\x6e\x2f\x63\x6f\x6d\x6d\x6f\x6e\x5f\x75\x74\x69\x6c\x73\x2e\x68\0\ -\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x73\x74\x72\x31\x5b\x69\x69\ -\x5d\x20\x21\x3d\x20\x73\x74\x72\x32\x5b\x69\x69\x5d\x29\x7b\0\x20\x20\x20\x20\ -\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x48\x22\x29\ -\x3b\0\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x4f\x4c\ -\x44\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x3a\x20\x25\x69\x2c\x20\x70\x61\x79\ -\x6c\x6f\x61\x64\x3a\x20\x25\x69\x5c\x6e\x22\x2c\x20\x64\x61\x74\x61\x5f\x65\ -\x6e\x64\x2c\x20\x70\x61\x79\x6c\x6f\x61\x64\x29\x3b\0\x2f\x68\x6f\x6d\x65\x2f\ -\x6f\x73\x62\x6f\x78\x65\x73\x2f\x54\x46\x47\x2f\x73\x72\x63\x2f\x69\x6e\x63\ -\x6c\x75\x64\x65\x2f\x78\x64\x70\x2f\x78\x64\x70\x5f\x68\x65\x6c\x70\x65\x72\ -\x2e\x68\0\x20\x20\x20\x20\x5f\x5f\x62\x75\x69\x6c\x74\x69\x6e\x5f\x6d\x65\x6d\ -\x63\x70\x79\x28\x26\x65\x74\x68\x5f\x63\x6f\x70\x79\x2c\x20\x65\x74\x68\x2c\ -\x20\x73\x69\x7a\x65\x6f\x66\x28\x73\x74\x72\x75\x63\x74\x20\x65\x74\x68\x68\ -\x64\x72\x29\x29\x3b\0\x20\x20\x20\x20\x5f\x5f\x62\x75\x69\x6c\x74\x69\x6e\x5f\ -\x6d\x65\x6d\x63\x70\x79\x28\x26\x69\x70\x5f\x63\x6f\x70\x79\x2c\x20\x69\x70\ -\x2c\x20\x73\x69\x7a\x65\x6f\x66\x28\x73\x74\x72\x75\x63\x74\x20\x69\x70\x68\ -\x64\x72\x29\x29\x3b\0\x20\x20\x20\x20\x5f\x5f\x62\x75\x69\x6c\x74\x69\x6e\x5f\ -\x6d\x65\x6d\x63\x70\x79\x28\x26\x74\x63\x70\x5f\x63\x6f\x70\x79\x2c\x20\x74\ -\x63\x70\x2c\x20\x73\x69\x7a\x65\x6f\x66\x28\x73\x74\x72\x75\x63\x74\x20\x74\ -\x63\x70\x68\x64\x72\x29\x29\x3b\0\x20\x20\x20\x20\x69\x66\x20\x28\x62\x70\x66\ -\x5f\x78\x64\x70\x5f\x61\x64\x6a\x75\x73\x74\x5f\x74\x61\x69\x6c\x28\x63\x74\ -\x78\x2c\x20\x28\x69\x6e\x74\x29\x28\x73\x69\x7a\x65\x6f\x66\x28\x63\x68\x61\ -\x72\x29\x2a\x6d\x6f\x72\x65\x5f\x62\x79\x74\x65\x73\x29\x29\x20\x21\x3d\x20\ -\x30\x29\0\x20\x20\x20\x20\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\ -\x6b\x28\x22\x46\x61\x69\x6c\x65\x64\x20\x74\x6f\x20\x65\x78\x70\x61\x6e\x64\ -\x20\x61\x20\x74\x63\x70\x20\x70\x61\x63\x6b\x65\x74\x20\x72\x65\x73\x65\x72\ -\x76\x65\x64\x20\x62\x79\x74\x65\x73\x20\x62\x79\x20\x25\x69\x5c\x6e\x22\x2c\ -\x20\x6d\x6f\x72\x65\x5f\x62\x79\x74\x65\x73\x29\x3b\0\x20\x20\x20\x20\x72\x65\ -\x74\x2e\x65\x74\x68\x20\x3d\x20\x28\x76\x6f\x69\x64\x2a\x29\x28\x6c\x6f\x6e\ -\x67\x29\x63\x74\x78\x2d\x3e\x64\x61\x74\x61\x3b\0\x20\x20\x20\x20\x76\x6f\x69\ -\x64\x2a\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x20\x3d\x20\x28\x76\x6f\x69\x64\ -\x2a\x29\x28\x6c\x6f\x6e\x67\x29\x63\x74\x78\x2d\x3e\x64\x61\x74\x61\x5f\x65\ -\x6e\x64\x3b\0\x20\x20\x20\x20\x72\x65\x74\x2e\x69\x70\x20\x3d\x20\x28\x76\x6f\ -\x69\x64\x20\x2a\x29\x72\x65\x74\x2e\x65\x74\x68\x20\x2b\x20\x73\x69\x7a\x65\ -\x6f\x66\x28\x73\x74\x72\x75\x63\x74\x20\x65\x74\x68\x68\x64\x72\x29\x3b\0\x20\ -\x20\x20\x20\x69\x66\x28\x65\x74\x68\x65\x72\x6e\x65\x74\x5f\x68\x65\x61\x64\ -\x65\x72\x5f\x62\x6f\x75\x6e\x64\x5f\x63\x68\x65\x63\x6b\x28\x72\x65\x74\x2e\ -\x65\x74\x68\x2c\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x29\x3c\x30\x29\x7b\0\x20\ -\x20\x20\x20\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\ -\x42\x6f\x75\x6e\x64\x20\x63\x68\x65\x63\x6b\x20\x41\x20\x66\x61\x69\x6c\x65\ -\x64\x20\x77\x68\x69\x6c\x65\x20\x65\x78\x70\x61\x6e\x64\x69\x6e\x67\x5c\x6e\ -\x22\x29\x3b\0\x20\x20\x20\x20\x69\x66\x20\x28\x69\x70\x5f\x68\x65\x61\x64\x65\ -\x72\x5f\x62\x6f\x75\x6e\x64\x5f\x63\x68\x65\x63\x6b\x28\x72\x65\x74\x2e\x69\ -\x70\x2c\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x29\x3c\x30\x29\x7b\0\x20\x20\x20\ -\x20\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x42\x6f\ -\x75\x6e\x64\x20\x63\x68\x65\x63\x6b\x20\x42\x20\x66\x61\x69\x6c\x65\x64\x20\ -\x77\x68\x69\x6c\x65\x20\x65\x78\x70\x61\x6e\x64\x69\x6e\x67\x5c\x6e\x22\x29\ -\x3b\0\x20\x20\x20\x20\x69\x66\x20\x28\x74\x63\x70\x5f\x68\x65\x61\x64\x65\x72\ -\x5f\x62\x6f\x75\x6e\x64\x5f\x63\x68\x65\x63\x6b\x28\x72\x65\x74\x2e\x74\x63\ -\x70\x2c\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x29\x29\x7b\0\x20\x20\x20\x20\x20\ -\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x42\x6f\x75\x6e\ -\x64\x20\x63\x68\x65\x63\x6b\x20\x43\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x68\ -\x69\x6c\x65\x20\x65\x78\x70\x61\x6e\x64\x69\x6e\x67\x5c\x6e\x22\x29\x3b\0\x20\ -\x20\x20\x20\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\ -\x42\x50\x46\x20\x66\x69\x6e\x69\x73\x68\x65\x64\x20\x77\x69\x74\x68\x20\x65\ -\x72\x72\x6f\x72\x20\x6f\x6e\x20\x65\x78\x70\x61\x6e\x73\x69\x6f\x6e\x5c\x6e\ -\x22\x29\x3b\0\x20\x20\x20\x20\x64\x61\x74\x61\x5f\x6c\x65\x6e\x5f\x6e\x65\x78\ -\x74\x20\x3d\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x2d\x64\x61\x74\x61\x3b\0\x20\ -\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x50\x72\x65\x76\ -\x69\x6f\x75\x73\x20\x6c\x65\x6e\x67\x74\x68\x3a\x20\x25\x69\x2c\x20\x63\x75\ -\x72\x72\x65\x6e\x74\x20\x6c\x65\x6e\x67\x74\x68\x3a\x20\x25\x69\x5c\x6e\x22\ -\x2c\x20\x64\x61\x74\x61\x5f\x6c\x65\x6e\x5f\x70\x72\x65\x76\x2c\x20\x64\x61\ -\x74\x61\x5f\x6c\x65\x6e\x5f\x6e\x65\x78\x74\x29\x3b\0\x20\x20\x20\x20\x62\x70\ -\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x4e\x45\x57\x20\x64\x61\x74\x61\x5f\ -\x65\x6e\x64\x3a\x20\x25\x69\x2c\x20\x70\x61\x79\x6c\x6f\x61\x64\x3a\x20\x25\ -\x69\x5c\x6e\x22\x2c\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x2c\x20\x70\x61\x79\ -\x6c\x6f\x61\x64\x29\x3b\0\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\ -\x6b\x28\x22\x41\x6e\x64\x20\x6f\x6e\x20\x4e\x45\x57\x20\x43\x54\x58\x20\x64\ -\x61\x74\x61\x5f\x65\x6e\x64\x3a\x20\x25\x69\x2c\x20\x70\x61\x79\x6c\x6f\x61\ -\x64\x3a\x20\x25\x69\x5c\x6e\x22\x2c\x20\x63\x74\x78\x2d\x3e\x64\x61\x74\x61\ -\x5f\x65\x6e\x64\x29\x3b\0\x20\x20\x20\x20\x5f\x5f\x62\x75\x69\x6c\x74\x69\x6e\ -\x5f\x6d\x65\x6d\x63\x70\x79\x28\x28\x72\x65\x74\x2e\x65\x74\x68\x29\x2c\x20\ -\x26\x65\x74\x68\x5f\x63\x6f\x70\x79\x2c\x20\x73\x69\x7a\x65\x6f\x66\x28\x73\ -\x74\x72\x75\x63\x74\x20\x65\x74\x68\x68\x64\x72\x29\x29\x3b\0\x20\x20\x20\x20\ -\x5f\x5f\x62\x75\x69\x6c\x74\x69\x6e\x5f\x6d\x65\x6d\x63\x70\x79\x28\x28\x72\ -\x65\x74\x2e\x69\x70\x29\x2c\x20\x26\x69\x70\x5f\x63\x6f\x70\x79\x2c\x20\x73\ -\x69\x7a\x65\x6f\x66\x28\x73\x74\x72\x75\x63\x74\x20\x69\x70\x68\x64\x72\x29\ -\x29\x3b\0\x20\x20\x20\x20\x5f\x5f\x62\x75\x69\x6c\x74\x69\x6e\x5f\x6d\x65\x6d\ -\x63\x70\x79\x28\x28\x72\x65\x74\x2e\x74\x63\x70\x29\x2c\x20\x26\x74\x63\x70\ -\x5f\x63\x6f\x70\x79\x2c\x20\x73\x69\x7a\x65\x6f\x66\x28\x73\x74\x72\x75\x63\ -\x74\x20\x74\x63\x70\x68\x64\x72\x29\x29\x3b\x20\x20\0\x20\x20\x20\x20\x62\x70\ -\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x62\x65\x66\x6f\x72\x65\x3a\x20\x25\ -\x69\x2c\x20\x63\x68\x65\x63\x6b\x73\x75\x6d\x20\x25\x75\x5c\x6e\x22\x2c\x20\ -\x72\x65\x74\x2e\x69\x70\x2d\x3e\x74\x6f\x74\x5f\x6c\x65\x6e\x2c\x20\x72\x65\ -\x74\x2e\x69\x70\x2d\x3e\x63\x68\x65\x63\x6b\x29\x3b\0\x20\x20\x20\x20\x72\x65\ -\x74\x2e\x69\x70\x2d\x3e\x74\x6f\x74\x5f\x6c\x65\x6e\x20\x3d\x20\x68\x74\x6f\ -\x6e\x73\x28\x6e\x74\x6f\x68\x73\x28\x72\x65\x74\x2e\x69\x70\x2d\x3e\x74\x6f\ -\x74\x5f\x6c\x65\x6e\x29\x20\x2b\x20\x6d\x6f\x72\x65\x5f\x62\x79\x74\x65\x73\ +\x22\x42\x6f\x75\x6e\x64\x20\x63\x68\x65\x63\x6b\x20\x66\x61\x69\x6c\x20\x41\ +\x22\x29\x3b\0\x20\x20\x20\x20\x69\x66\x20\x28\x28\x76\x6f\x69\x64\x20\x2a\x29\ +\x69\x70\x20\x2b\x20\x73\x69\x7a\x65\x6f\x66\x28\x2a\x69\x70\x29\x20\x3e\x20\ +\x64\x61\x74\x61\x5f\x65\x6e\x64\x29\x7b\0\x20\x20\x20\x20\x69\x66\x20\x28\x69\ +\x70\x5f\x68\x65\x61\x64\x65\x72\x5f\x62\x6f\x75\x6e\x64\x5f\x63\x68\x65\x63\ +\x6b\x28\x69\x70\x2c\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x29\x3c\x30\x29\x7b\0\ +\x20\x20\x20\x20\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\ +\x22\x42\x22\x29\x3b\0\x20\x20\x20\x20\x73\x77\x69\x74\x63\x68\x28\x69\x70\x2d\ +\x3e\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x29\x7b\0\x20\x20\x20\x20\x69\x66\x20\x28\ +\x67\x65\x74\x5f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x28\x64\x61\x74\x61\x29\x20\ +\x21\x3d\x20\x49\x50\x50\x52\x4f\x54\x4f\x5f\x54\x43\x50\x29\x7b\0\x20\x20\x20\ +\x20\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x43\x22\ +\x29\x3b\0\x20\x20\x20\x20\x69\x66\x20\x28\x28\x76\x6f\x69\x64\x20\x2a\x29\x74\ +\x63\x70\x20\x2b\x20\x73\x69\x7a\x65\x6f\x66\x28\x2a\x74\x63\x70\x29\x20\x3e\ +\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x29\x7b\0\x20\x20\x20\x20\x69\x66\x20\x28\ +\x74\x63\x70\x5f\x68\x65\x61\x64\x65\x72\x5f\x62\x6f\x75\x6e\x64\x5f\x63\x68\ +\x65\x63\x6b\x28\x74\x63\x70\x2c\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x29\x29\ +\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\ +\x28\x22\x44\x22\x29\x3b\0\x7d\0\x2f\x68\x6f\x6d\x65\x2f\x6f\x73\x62\x6f\x78\ +\x65\x73\x2f\x54\x46\x47\x2f\x73\x72\x63\x2f\x69\x6e\x63\x6c\x75\x64\x65\x2f\ +\x70\x61\x63\x6b\x65\x74\x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x74\x63\x70\ +\x5f\x68\x65\x6c\x70\x65\x72\x2e\x68\0\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\ +\x20\x6e\x74\x6f\x68\x73\x28\x74\x63\x70\x2d\x3e\x64\x65\x73\x74\x29\x3b\0\x20\ +\x20\x20\x20\x69\x66\x20\x28\x67\x65\x74\x5f\x74\x63\x70\x5f\x64\x65\x73\x74\ +\x5f\x70\x6f\x72\x74\x28\x74\x63\x70\x29\x20\x21\x3d\x20\x53\x45\x43\x52\x45\ +\x54\x5f\x50\x41\x43\x4b\x45\x54\x5f\x44\x45\x53\x54\x5f\x50\x4f\x52\x54\x29\ +\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\ +\x28\x22\x45\x20\x25\x69\x5c\x6e\x22\x2c\x20\x6e\x74\x6f\x68\x73\x28\x74\x63\ +\x70\x2d\x3e\x64\x65\x73\x74\x29\x29\x3b\0\x20\x20\x20\x20\x70\x61\x79\x6c\x6f\ +\x61\x64\x5f\x73\x69\x7a\x65\x20\x3d\x20\x6e\x74\x6f\x68\x73\x28\x69\x70\x2d\ +\x3e\x74\x6f\x74\x5f\x6c\x65\x6e\x29\x20\x2d\x20\x28\x74\x63\x70\x2d\x3e\x64\ +\x6f\x66\x66\x20\x2a\x20\x34\x29\x20\x2d\x20\x28\x69\x70\x2d\x3e\x69\x68\x6c\ +\x20\x2a\x20\x34\x29\x3b\0\x20\x20\x20\x20\x69\x66\x20\x28\x70\x61\x79\x6c\x6f\ +\x61\x64\x5f\x73\x69\x7a\x65\x20\x21\x3d\x20\x73\x69\x7a\x65\x6f\x66\x28\x6d\ +\x61\x74\x63\x68\x5f\x70\x61\x74\x74\x65\x72\x6e\x29\x20\x2d\x20\x31\x29\x20\ +\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\ +\x28\x22\x46\x22\x29\x3b\0\x20\x20\x20\x20\x69\x66\x20\x28\x28\x76\x6f\x69\x64\ +\x2a\x29\x70\x61\x79\x6c\x6f\x61\x64\x20\x2b\x20\x70\x61\x79\x6c\x6f\x61\x64\ +\x5f\x73\x69\x7a\x65\x20\x3e\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x29\x7b\0\x20\ +\x20\x20\x20\x69\x66\x20\x28\x74\x63\x70\x5f\x70\x61\x79\x6c\x6f\x61\x64\x5f\ +\x62\x6f\x75\x6e\x64\x5f\x63\x68\x65\x63\x6b\x28\x70\x61\x79\x6c\x6f\x61\x64\ +\x2c\x20\x70\x61\x79\x6c\x6f\x61\x64\x5f\x73\x69\x7a\x65\x2c\x20\x64\x61\x74\ +\x61\x5f\x65\x6e\x64\x29\x29\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x62\x70\x66\ +\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x47\x22\x29\x3b\0\x20\x20\x20\x20\x62\x70\ +\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x52\x65\x63\x65\x69\x76\x65\x64\x20\ +\x76\x61\x6c\x69\x64\x20\x54\x43\x50\x20\x70\x61\x63\x6b\x65\x74\x20\x77\x69\ +\x74\x68\x20\x70\x61\x79\x6c\x6f\x61\x64\x20\x25\x73\x20\x6f\x66\x20\x73\x69\ +\x7a\x65\x20\x25\x69\x5c\x6e\x22\x2c\x20\x70\x61\x79\x6c\x6f\x61\x64\x2c\x20\ +\x70\x61\x79\x6c\x6f\x61\x64\x5f\x73\x69\x7a\x65\x29\x3b\0\x2f\x68\x6f\x6d\x65\ +\x2f\x6f\x73\x62\x6f\x78\x65\x73\x2f\x54\x46\x47\x2f\x73\x72\x63\x2f\x69\x6e\ +\x63\x6c\x75\x64\x65\x2f\x63\x6f\x6d\x6d\x6f\x6e\x2f\x63\x6f\x6d\x6d\x6f\x6e\ +\x5f\x75\x74\x69\x6c\x73\x2e\x68\0\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\ +\x28\x73\x74\x72\x31\x5b\x69\x69\x5d\x20\x21\x3d\x20\x73\x74\x72\x32\x5b\x69\ +\x69\x5d\x29\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\ +\x6e\x74\x6b\x28\x22\x48\x22\x29\x3b\0\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\ +\x69\x6e\x74\x6b\x28\x22\x4f\x4c\x44\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x3a\ +\x20\x25\x69\x2c\x20\x70\x61\x79\x6c\x6f\x61\x64\x3a\x20\x25\x69\x5c\x6e\x22\ +\x2c\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x2c\x20\x70\x61\x79\x6c\x6f\x61\x64\ \x29\x3b\0\x2f\x68\x6f\x6d\x65\x2f\x6f\x73\x62\x6f\x78\x65\x73\x2f\x54\x46\x47\ +\x2f\x73\x72\x63\x2f\x69\x6e\x63\x6c\x75\x64\x65\x2f\x78\x64\x70\x2f\x78\x64\ +\x70\x5f\x68\x65\x6c\x70\x65\x72\x2e\x68\0\x20\x20\x20\x20\x5f\x5f\x62\x75\x69\ +\x6c\x74\x69\x6e\x5f\x6d\x65\x6d\x63\x70\x79\x28\x26\x65\x74\x68\x5f\x63\x6f\ +\x70\x79\x2c\x20\x65\x74\x68\x2c\x20\x73\x69\x7a\x65\x6f\x66\x28\x73\x74\x72\ +\x75\x63\x74\x20\x65\x74\x68\x68\x64\x72\x29\x29\x3b\0\x20\x20\x20\x20\x5f\x5f\ +\x62\x75\x69\x6c\x74\x69\x6e\x5f\x6d\x65\x6d\x63\x70\x79\x28\x26\x69\x70\x5f\ +\x63\x6f\x70\x79\x2c\x20\x69\x70\x2c\x20\x73\x69\x7a\x65\x6f\x66\x28\x73\x74\ +\x72\x75\x63\x74\x20\x69\x70\x68\x64\x72\x29\x29\x3b\0\x20\x20\x20\x20\x5f\x5f\ +\x62\x75\x69\x6c\x74\x69\x6e\x5f\x6d\x65\x6d\x63\x70\x79\x28\x26\x74\x63\x70\ +\x5f\x63\x6f\x70\x79\x2c\x20\x74\x63\x70\x2c\x20\x73\x69\x7a\x65\x6f\x66\x28\ +\x73\x74\x72\x75\x63\x74\x20\x74\x63\x70\x68\x64\x72\x29\x29\x3b\0\x20\x20\x20\ +\x20\x69\x66\x20\x28\x62\x70\x66\x5f\x78\x64\x70\x5f\x61\x64\x6a\x75\x73\x74\ +\x5f\x74\x61\x69\x6c\x28\x63\x74\x78\x2c\x20\x28\x69\x6e\x74\x29\x28\x73\x69\ +\x7a\x65\x6f\x66\x28\x63\x68\x61\x72\x29\x2a\x6d\x6f\x72\x65\x5f\x62\x79\x74\ +\x65\x73\x29\x29\x20\x21\x3d\x20\x30\x29\0\x20\x20\x20\x20\x20\x20\x20\x20\x62\ +\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x46\x61\x69\x6c\x65\x64\x20\x74\ +\x6f\x20\x65\x78\x70\x61\x6e\x64\x20\x61\x20\x74\x63\x70\x20\x70\x61\x63\x6b\ +\x65\x74\x20\x72\x65\x73\x65\x72\x76\x65\x64\x20\x62\x79\x74\x65\x73\x20\x62\ +\x79\x20\x25\x69\x5c\x6e\x22\x2c\x20\x6d\x6f\x72\x65\x5f\x62\x79\x74\x65\x73\ +\x29\x3b\0\x20\x20\x20\x20\x72\x65\x74\x2e\x65\x74\x68\x20\x3d\x20\x28\x76\x6f\ +\x69\x64\x2a\x29\x28\x6c\x6f\x6e\x67\x29\x63\x74\x78\x2d\x3e\x64\x61\x74\x61\ +\x3b\0\x20\x20\x20\x20\x72\x65\x74\x2e\x74\x63\x70\x20\x3d\x20\x28\x76\x6f\x69\ +\x64\x20\x2a\x29\x72\x65\x74\x2e\x69\x70\x20\x2b\x20\x73\x69\x7a\x65\x6f\x66\ +\x28\x73\x74\x72\x75\x63\x74\x20\x69\x70\x68\x64\x72\x29\x3b\0\x20\x20\x20\x20\ +\x76\x6f\x69\x64\x2a\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x20\x3d\x20\x28\x76\ +\x6f\x69\x64\x2a\x29\x28\x6c\x6f\x6e\x67\x29\x63\x74\x78\x2d\x3e\x64\x61\x74\ +\x61\x5f\x65\x6e\x64\x3b\0\x20\x20\x20\x20\x72\x65\x74\x2e\x69\x70\x20\x3d\x20\ +\x28\x76\x6f\x69\x64\x20\x2a\x29\x72\x65\x74\x2e\x65\x74\x68\x20\x2b\x20\x73\ +\x69\x7a\x65\x6f\x66\x28\x73\x74\x72\x75\x63\x74\x20\x65\x74\x68\x68\x64\x72\ +\x29\x3b\0\x20\x20\x20\x20\x69\x66\x28\x65\x74\x68\x65\x72\x6e\x65\x74\x5f\x68\ +\x65\x61\x64\x65\x72\x5f\x62\x6f\x75\x6e\x64\x5f\x63\x68\x65\x63\x6b\x28\x72\ +\x65\x74\x2e\x65\x74\x68\x2c\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x29\x3c\x30\ +\x29\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\ +\x6b\x28\x22\x42\x6f\x75\x6e\x64\x20\x63\x68\x65\x63\x6b\x20\x41\x20\x66\x61\ +\x69\x6c\x65\x64\x20\x77\x68\x69\x6c\x65\x20\x65\x78\x70\x61\x6e\x64\x69\x6e\ +\x67\x5c\x6e\x22\x29\x3b\0\x20\x20\x20\x20\x69\x66\x20\x28\x69\x70\x5f\x68\x65\ +\x61\x64\x65\x72\x5f\x62\x6f\x75\x6e\x64\x5f\x63\x68\x65\x63\x6b\x28\x72\x65\ +\x74\x2e\x69\x70\x2c\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x29\x3c\x30\x29\x7b\0\ +\x20\x20\x20\x20\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\ +\x22\x42\x6f\x75\x6e\x64\x20\x63\x68\x65\x63\x6b\x20\x42\x20\x66\x61\x69\x6c\ +\x65\x64\x20\x77\x68\x69\x6c\x65\x20\x65\x78\x70\x61\x6e\x64\x69\x6e\x67\x5c\ +\x6e\x22\x29\x3b\0\x20\x20\x20\x20\x69\x66\x20\x28\x74\x63\x70\x5f\x68\x65\x61\ +\x64\x65\x72\x5f\x62\x6f\x75\x6e\x64\x5f\x63\x68\x65\x63\x6b\x28\x72\x65\x74\ +\x2e\x74\x63\x70\x2c\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x29\x29\x7b\0\x20\x20\ +\x20\x20\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x42\ +\x6f\x75\x6e\x64\x20\x63\x68\x65\x63\x6b\x20\x43\x20\x66\x61\x69\x6c\x65\x64\ +\x20\x77\x68\x69\x6c\x65\x20\x65\x78\x70\x61\x6e\x64\x69\x6e\x67\x5c\x6e\x22\ +\x29\x3b\0\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x43\ +\x6f\x6e\x74\x72\x6f\x6c\x20\x62\x61\x63\x6b\x20\x74\x6f\x20\x6d\x61\x69\x6e\ +\x20\x70\x72\x6f\x67\x72\x61\x6d\x20\x77\x69\x74\x68\x20\x72\x65\x74\x63\x6f\ +\x64\x65\x20\x25\x69\x5c\x6e\x22\x2c\x20\x72\x65\x74\x2e\x63\x6f\x64\x65\x29\ +\x3b\0\x20\x20\x20\x20\x69\x66\x28\x72\x65\x74\x2e\x63\x6f\x64\x65\x20\x3d\x3d\ +\x20\x30\x29\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x64\x61\x74\x61\x5f\x65\x6e\ +\x64\x20\x3d\x20\x28\x76\x6f\x69\x64\x2a\x29\x28\x6c\x6f\x6e\x67\x29\x72\x65\ +\x74\x2e\x72\x65\x74\x5f\x6d\x64\x2d\x3e\x64\x61\x74\x61\x5f\x65\x6e\x64\x3b\0\ +\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x28\x65\x74\x68\x65\x72\x6e\x65\x74\ +\x5f\x68\x65\x61\x64\x65\x72\x5f\x62\x6f\x75\x6e\x64\x5f\x63\x68\x65\x63\x6b\ +\x28\x65\x74\x68\x2c\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x29\x3c\x30\x29\x7b\0\ +\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\ +\x6e\x74\x6b\x28\x22\x42\x6f\x75\x6e\x64\x20\x63\x68\x65\x63\x6b\x20\x41\x20\ +\x66\x61\x69\x6c\x65\x64\x20\x77\x68\x69\x6c\x65\x20\x65\x78\x70\x61\x6e\x64\ +\x69\x6e\x67\x5c\x6e\x22\x29\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x62\x70\x66\ +\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x42\x50\x46\x20\x66\x69\x6e\x69\x73\x68\ +\x65\x64\x20\x77\x69\x74\x68\x20\x65\x72\x72\x6f\x72\x20\x6f\x6e\x20\x65\x78\ +\x70\x61\x6e\x73\x69\x6f\x6e\x5c\x6e\x22\x29\x3b\0\x20\x20\x20\x20\x64\x61\x74\ +\x61\x5f\x6c\x65\x6e\x5f\x6e\x65\x78\x74\x20\x3d\x20\x64\x61\x74\x61\x5f\x65\ +\x6e\x64\x2d\x64\x61\x74\x61\x3b\0\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\ +\x6e\x74\x6b\x28\x22\x50\x72\x65\x76\x69\x6f\x75\x73\x20\x6c\x65\x6e\x67\x74\ +\x68\x3a\x20\x25\x69\x2c\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x6c\x65\x6e\x67\ +\x74\x68\x3a\x20\x25\x69\x5c\x6e\x22\x2c\x20\x64\x61\x74\x61\x5f\x6c\x65\x6e\ +\x5f\x70\x72\x65\x76\x2c\x20\x64\x61\x74\x61\x5f\x6c\x65\x6e\x5f\x6e\x65\x78\ +\x74\x29\x3b\0\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\ +\x4e\x45\x57\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x3a\x20\x25\x69\x2c\x20\x70\ +\x61\x79\x6c\x6f\x61\x64\x3a\x20\x25\x69\x5c\x6e\x22\x2c\x20\x64\x61\x74\x61\ +\x5f\x65\x6e\x64\x2c\x20\x70\x61\x79\x6c\x6f\x61\x64\x29\x3b\0\x20\x20\x20\x20\ +\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x41\x6e\x64\x20\x6f\x6e\x20\ +\x4e\x45\x57\x20\x43\x54\x58\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x3a\x20\x25\ +\x69\x2c\x20\x70\x61\x79\x6c\x6f\x61\x64\x3a\x20\x25\x69\x5c\x6e\x22\x2c\x20\ +\x63\x74\x78\x2d\x3e\x64\x61\x74\x61\x5f\x65\x6e\x64\x2c\x20\x70\x61\x79\x6c\ +\x6f\x61\x64\x29\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x69\x70\ +\x5f\x68\x65\x61\x64\x65\x72\x5f\x62\x6f\x75\x6e\x64\x5f\x63\x68\x65\x63\x6b\ +\x28\x69\x70\x2c\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x29\x3c\x30\x29\x7b\0\x20\ +\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\ +\x74\x6b\x28\x22\x42\x6f\x75\x6e\x64\x20\x63\x68\x65\x63\x6b\x20\x42\x20\x66\ +\x61\x69\x6c\x65\x64\x20\x77\x68\x69\x6c\x65\x20\x65\x78\x70\x61\x6e\x64\x69\ +\x6e\x67\x5c\x6e\x22\x29\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\ +\x74\x63\x70\x5f\x68\x65\x61\x64\x65\x72\x5f\x62\x6f\x75\x6e\x64\x5f\x63\x68\ +\x65\x63\x6b\x28\x74\x63\x70\x2c\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x29\x29\ +\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\ +\x69\x6e\x74\x6b\x28\x22\x42\x6f\x75\x6e\x64\x20\x63\x68\x65\x63\x6b\x20\x44\ +\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x68\x69\x6c\x65\x20\x65\x78\x70\x61\x6e\ +\x64\x69\x6e\x67\x5c\x6e\x22\x29\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x70\x61\ +\x79\x6c\x6f\x61\x64\x5f\x73\x69\x7a\x65\x20\x3d\x20\x6e\x74\x6f\x68\x73\x28\ +\x69\x70\x2d\x3e\x74\x6f\x74\x5f\x6c\x65\x6e\x29\x20\x2d\x20\x28\x74\x63\x70\ +\x2d\x3e\x64\x6f\x66\x66\x20\x2a\x20\x34\x29\x20\x2d\x20\x28\x69\x70\x2d\x3e\ +\x69\x68\x6c\x20\x2a\x20\x34\x29\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\ +\x28\x70\x61\x79\x6c\x6f\x61\x64\x5f\x73\x69\x7a\x65\x20\x3c\x20\x30\x7c\x7c\ +\x20\x70\x61\x79\x6c\x6f\x61\x64\x5f\x73\x69\x7a\x65\x3e\x38\x38\x38\x38\x38\ +\x29\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x62\x70\x66\x5f\x70\ +\x72\x69\x6e\x74\x6b\x28\x22\x55\x6e\x6c\x69\x6b\x65\x6c\x79\x20\x79\x6f\x75\ +\x20\x61\x72\x65\x20\x68\x65\x72\x65\x2c\x20\x62\x75\x74\x20\x4f\x4b\x5c\x6e\ +\x22\x29\x3b\0\x20\x20\x20\x20\x5f\x5f\x62\x75\x69\x6c\x74\x69\x6e\x5f\x6d\x65\ +\x6d\x63\x70\x79\x28\x28\x72\x65\x74\x2e\x65\x74\x68\x29\x2c\x20\x26\x65\x74\ +\x68\x5f\x63\x6f\x70\x79\x2c\x20\x73\x69\x7a\x65\x6f\x66\x28\x73\x74\x72\x75\ +\x63\x74\x20\x65\x74\x68\x68\x64\x72\x29\x29\x3b\0\x20\x20\x20\x20\x5f\x5f\x62\ +\x75\x69\x6c\x74\x69\x6e\x5f\x6d\x65\x6d\x63\x70\x79\x28\x28\x72\x65\x74\x2e\ +\x69\x70\x29\x2c\x20\x26\x69\x70\x5f\x63\x6f\x70\x79\x2c\x20\x73\x69\x7a\x65\ +\x6f\x66\x28\x73\x74\x72\x75\x63\x74\x20\x69\x70\x68\x64\x72\x29\x29\x3b\0\x20\ +\x20\x20\x20\x5f\x5f\x62\x75\x69\x6c\x74\x69\x6e\x5f\x6d\x65\x6d\x63\x70\x79\ +\x28\x28\x72\x65\x74\x2e\x74\x63\x70\x29\x2c\x20\x26\x74\x63\x70\x5f\x63\x6f\ +\x70\x79\x2c\x20\x73\x69\x7a\x65\x6f\x66\x28\x73\x74\x72\x75\x63\x74\x20\x74\ +\x63\x70\x68\x64\x72\x29\x29\x3b\x20\x20\0\x20\x20\x20\x20\x62\x70\x66\x5f\x70\ +\x72\x69\x6e\x74\x6b\x28\x22\x62\x65\x66\x6f\x72\x65\x3a\x20\x25\x69\x2c\x20\ +\x63\x68\x65\x63\x6b\x73\x75\x6d\x20\x25\x75\x5c\x6e\x22\x2c\x20\x72\x65\x74\ +\x2e\x69\x70\x2d\x3e\x74\x6f\x74\x5f\x6c\x65\x6e\x2c\x20\x72\x65\x74\x2e\x69\ +\x70\x2d\x3e\x63\x68\x65\x63\x6b\x29\x3b\0\x20\x20\x20\x20\x72\x65\x74\x2e\x69\ +\x70\x2d\x3e\x74\x6f\x74\x5f\x6c\x65\x6e\x20\x3d\x20\x68\x74\x6f\x6e\x73\x28\ +\x6e\x74\x6f\x68\x73\x28\x72\x65\x74\x2e\x69\x70\x2d\x3e\x74\x6f\x74\x5f\x6c\ +\x65\x6e\x29\x20\x2b\x20\x6d\x6f\x72\x65\x5f\x62\x79\x74\x65\x73\x29\x3b\0\x20\ +\x20\x20\x20\x72\x65\x74\x2e\x69\x70\x2d\x3e\x63\x68\x65\x63\x6b\x20\x3d\x20\ +\x30\x3b\0\x2f\x68\x6f\x6d\x65\x2f\x6f\x73\x62\x6f\x78\x65\x73\x2f\x54\x46\x47\ \x2f\x73\x72\x63\x2f\x69\x6e\x63\x6c\x75\x64\x65\x2f\x70\x61\x63\x6b\x65\x74\ \x2f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x69\x70\x5f\x68\x65\x6c\x70\x65\x72\ \x2e\x68\0\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x63\ -\x73\x75\x6d\x3a\x20\x25\x75\x5c\x6e\x22\x2c\x20\x2a\x63\x73\x75\x6d\x29\x3b\0\ -\x09\x2a\x63\x73\x75\x6d\x20\x3d\x20\x62\x70\x66\x5f\x63\x73\x75\x6d\x5f\x64\ -\x69\x66\x66\x28\x30\x2c\x20\x30\x2c\x20\x64\x61\x74\x61\x5f\x73\x74\x61\x72\ -\x74\x2c\x20\x64\x61\x74\x61\x5f\x73\x69\x7a\x65\x2c\x20\x2a\x63\x73\x75\x6d\ -\x29\x3b\0\x09\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x63\x73\x75\x6d\ -\x3a\x20\x25\x75\x5c\x6e\x22\x2c\x20\x2a\x63\x73\x75\x6d\x29\x3b\0\x20\x20\x20\ -\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x63\x73\x75\x6d\x41\x3a\ -\x20\x25\x75\x5c\x6e\x22\x2c\x20\x63\x73\x75\x6d\x20\x26\x20\x30\x78\x66\x66\ -\x66\x66\x29\x3b\0\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\ -\x22\x63\x73\x75\x6d\x42\x3a\x20\x25\x75\x5c\x6e\x22\x2c\x20\x63\x73\x75\x6d\ -\x20\x3e\x3e\x20\x31\x36\x29\x3b\0\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\ -\x6e\x74\x6b\x28\x22\x63\x73\x75\x6d\x41\x2b\x42\x3a\x20\x25\x75\x5c\x6e\x22\ -\x2c\x20\x28\x63\x73\x75\x6d\x20\x26\x20\x30\x78\x66\x66\x66\x66\x29\x20\x2b\ -\x20\x28\x63\x73\x75\x6d\x20\x3e\x3e\x20\x31\x36\x29\x29\x3b\0\x20\x20\x20\x20\ -\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x63\x73\x75\x6d\x4e\x45\x47\ -\x28\x41\x2b\x42\x29\x3a\x20\x25\x75\x5c\x6e\x22\x2c\x20\x7e\x28\x28\x63\x73\ -\x75\x6d\x20\x26\x20\x30\x78\x66\x66\x66\x66\x29\x20\x2b\x20\x28\x63\x73\x75\ -\x6d\x20\x3e\x3e\x20\x31\x36\x29\x29\x29\x3b\0\x20\x20\x20\x20\x69\x66\x20\x28\ -\x63\x73\x75\x6d\x20\x3e\x3e\x20\x31\x36\x29\0\x20\x20\x20\x20\x2a\x63\x73\x75\ -\x6d\x20\x3d\x20\x63\x73\x75\x6d\x5f\x66\x6f\x6c\x64\x5f\x68\x65\x6c\x70\x65\ -\x72\x28\x2a\x63\x73\x75\x6d\x29\x3b\0\x09\x72\x65\x74\x2e\x69\x70\x2d\x3e\x63\ -\x68\x65\x63\x6b\x20\x3d\x20\x63\x73\x75\x6d\x3b\0\x20\x20\x20\x20\x62\x70\x66\ -\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x61\x66\x74\x65\x72\x3a\x20\x25\x69\x2c\ -\x20\x63\x68\x65\x63\x6b\x73\x75\x6d\x20\x25\x75\x5c\x6e\x22\x2c\x20\x72\x65\ -\x74\x2e\x69\x70\x2d\x3e\x74\x6f\x74\x5f\x6c\x65\x6e\x2c\x20\x72\x65\x74\x2e\ -\x69\x70\x2d\x3e\x63\x68\x65\x63\x6b\x29\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\ -\x64\x61\x74\x61\x5f\x65\x6e\x64\x20\x3d\x20\x28\x76\x6f\x69\x64\x2a\x29\x28\ -\x6c\x6f\x6e\x67\x29\x72\x65\x74\x2e\x72\x65\x74\x5f\x6d\x64\x2d\x3e\x64\x61\ -\x74\x61\x5f\x65\x6e\x64\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x28\x65\ -\x74\x68\x65\x72\x6e\x65\x74\x5f\x68\x65\x61\x64\x65\x72\x5f\x62\x6f\x75\x6e\ -\x64\x5f\x63\x68\x65\x63\x6b\x28\x65\x74\x68\x2c\x20\x64\x61\x74\x61\x5f\x65\ -\x6e\x64\x29\x3c\x30\x29\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ -\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x42\x6f\x75\x6e\x64\x20\x63\ -\x68\x65\x63\x6b\x20\x41\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x68\x69\x6c\x65\ -\x20\x65\x78\x70\x61\x6e\x64\x69\x6e\x67\x5c\x6e\x22\x29\x3b\0\x20\x20\x20\x20\ -\x20\x20\x20\x20\x69\x66\x20\x28\x69\x70\x5f\x68\x65\x61\x64\x65\x72\x5f\x62\ -\x6f\x75\x6e\x64\x5f\x63\x68\x65\x63\x6b\x28\x69\x70\x2c\x20\x64\x61\x74\x61\ -\x5f\x65\x6e\x64\x29\x3c\x30\x29\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ -\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x42\x6f\x75\x6e\x64\ -\x20\x63\x68\x65\x63\x6b\x20\x42\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x68\x69\ -\x6c\x65\x20\x65\x78\x70\x61\x6e\x64\x69\x6e\x67\x5c\x6e\x22\x29\x3b\0\x20\x20\ -\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x74\x63\x70\x5f\x68\x65\x61\x64\x65\ -\x72\x5f\x62\x6f\x75\x6e\x64\x5f\x63\x68\x65\x63\x6b\x28\x74\x63\x70\x2c\x20\ -\x64\x61\x74\x61\x5f\x65\x6e\x64\x29\x29\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\ -\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x42\x6f\x75\ -\x6e\x64\x20\x63\x68\x65\x63\x6b\x20\x44\x20\x66\x61\x69\x6c\x65\x64\x20\x77\ -\x68\x69\x6c\x65\x20\x65\x78\x70\x61\x6e\x64\x69\x6e\x67\x5c\x6e\x22\x29\x3b\0\ -\x20\x20\x20\x20\x20\x20\x20\x20\x70\x61\x79\x6c\x6f\x61\x64\x5f\x73\x69\x7a\ -\x65\x20\x3d\x20\x6e\x74\x6f\x68\x73\x28\x69\x70\x2d\x3e\x74\x6f\x74\x5f\x6c\ -\x65\x6e\x29\x20\x2d\x20\x28\x74\x63\x70\x2d\x3e\x64\x6f\x66\x66\x20\x2a\x20\ -\x34\x29\x20\x2d\x20\x28\x69\x70\x2d\x3e\x69\x68\x6c\x20\x2a\x20\x34\x29\x3b\0\ -\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x28\x70\x61\x79\x6c\x6f\x61\x64\x5f\ -\x73\x69\x7a\x65\x20\x3c\x20\x30\x7c\x7c\x20\x70\x61\x79\x6c\x6f\x61\x64\x5f\ -\x73\x69\x7a\x65\x3e\x38\x38\x38\x38\x38\x29\x7b\0\x20\x20\x20\x20\x20\x20\x20\ -\x20\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x65\x78\ -\x70\x6c\x6f\x64\x69\x6e\x67\x20\x68\x65\x61\x76\x69\x6c\x79\x5c\x6e\x22\x29\ -\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x28\x70\x61\x79\x6c\x6f\x61\x64\ -\x5f\x73\x69\x7a\x65\x20\x2d\x31\x20\x3c\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\ -\x20\x2d\x20\x28\x76\x6f\x69\x64\x2a\x29\x70\x61\x79\x6c\x6f\x61\x64\x20\x29\ -\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x28\x28\x76\x6f\x69\x64\x2a\x29\ -\x70\x61\x79\x6c\x6f\x61\x64\x20\x2b\x20\x73\x69\x7a\x65\x6f\x66\x28\x53\x45\ -\x43\x52\x45\x54\x5f\x50\x41\x43\x4b\x45\x54\x5f\x50\x41\x59\x4c\x4f\x41\x44\ -\x29\x20\x2b\x31\x20\x3e\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x29\x7b\0\x20\x20\ -\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\ -\x6b\x28\x22\x42\x6f\x75\x6e\x64\x20\x63\x68\x65\x63\x6b\x20\x45\x20\x66\x61\ -\x69\x6c\x65\x64\x20\x77\x68\x69\x6c\x65\x20\x65\x78\x70\x61\x6e\x64\x69\x6e\ -\x67\x5c\x6e\x22\x29\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x74\ -\x63\x70\x5f\x70\x61\x79\x6c\x6f\x61\x64\x5f\x62\x6f\x75\x6e\x64\x5f\x63\x68\ -\x65\x63\x6b\x28\x70\x61\x79\x6c\x6f\x61\x64\x2c\x20\x70\x61\x79\x6c\x6f\x61\ -\x64\x5f\x73\x69\x7a\x65\x2c\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x29\x29\x7b\0\ -\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\ -\x6e\x74\x6b\x28\x22\x42\x6f\x75\x6e\x64\x20\x63\x68\x65\x63\x6b\x20\x46\x20\ -\x66\x61\x69\x6c\x65\x64\x20\x77\x68\x69\x6c\x65\x20\x65\x78\x70\x61\x6e\x64\ -\x69\x6e\x67\x5c\x6e\x22\x29\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x70\x61\x79\ -\x6c\x6f\x61\x64\x5b\x35\x5d\x20\x3d\x20\x27\x61\x27\x3b\0\x20\x20\x20\x20\x20\ +\x73\x75\x6d\x3a\x20\x25\x75\x20\x66\x6f\x72\x20\x64\x61\x74\x61\x5f\x73\x74\ +\x61\x72\x74\x20\x25\x75\x2c\x20\x64\x61\x74\x61\x5f\x73\x69\x7a\x65\x20\x25\ +\x69\x5c\x6e\x22\x2c\x20\x2a\x63\x73\x75\x6d\x2c\x20\x64\x61\x74\x61\x5f\x73\ +\x74\x61\x72\x74\x2c\x20\x64\x61\x74\x61\x5f\x73\x69\x7a\x65\x29\x3b\0\x20\x20\ +\x20\x20\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x42\ +\x25\x69\x3a\x20\x25\x78\x5c\x6e\x22\x2c\x20\x69\x69\x2c\x20\x70\x5b\x69\x69\ +\x5d\x29\x3b\0\x20\x20\x20\x20\x2a\x63\x73\x75\x6d\x20\x3d\x20\x62\x70\x66\x5f\ +\x63\x73\x75\x6d\x5f\x64\x69\x66\x66\x28\x30\x2c\x20\x30\x2c\x20\x64\x61\x74\ +\x61\x5f\x73\x74\x61\x72\x74\x2c\x20\x64\x61\x74\x61\x5f\x73\x69\x7a\x65\x2c\ +\x20\x2a\x63\x73\x75\x6d\x29\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\ +\x28\x63\x73\x75\x6d\x20\x3e\x3e\x20\x31\x36\x29\x7b\0\x09\x72\x65\x74\x2e\x69\ +\x70\x2d\x3e\x63\x68\x65\x63\x6b\x20\x3d\x20\x63\x73\x75\x6d\x3b\0\x20\x20\x20\ +\x20\x2a\x63\x73\x75\x6d\x20\x3d\x20\x63\x73\x75\x6d\x5f\x66\x6f\x6c\x64\x5f\ +\x68\x65\x6c\x70\x65\x72\x28\x2a\x63\x73\x75\x6d\x29\x3b\0\x20\x20\x20\x20\x62\ +\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x61\x66\x74\x65\x72\x3a\x20\x25\ +\x69\x2c\x20\x63\x68\x65\x63\x6b\x73\x75\x6d\x20\x25\x75\x5c\x6e\x22\x2c\x20\ +\x72\x65\x74\x2e\x69\x70\x2d\x3e\x74\x6f\x74\x5f\x6c\x65\x6e\x2c\x20\x72\x65\ +\x74\x2e\x69\x70\x2d\x3e\x63\x68\x65\x63\x6b\x29\x3b\0\x20\x20\x20\x20\x20\x20\ +\x20\x20\x69\x66\x28\x28\x76\x6f\x69\x64\x2a\x29\x70\x61\x79\x6c\x6f\x61\x64\ +\x20\x2b\x20\x73\x69\x7a\x65\x6f\x66\x28\x53\x45\x43\x52\x45\x54\x5f\x50\x41\ +\x43\x4b\x45\x54\x5f\x50\x41\x59\x4c\x4f\x41\x44\x29\x20\x2b\x31\x20\x3e\x20\ +\x64\x61\x74\x61\x5f\x65\x6e\x64\x29\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\ +\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x42\x6f\x75\x6e\ +\x64\x20\x63\x68\x65\x63\x6b\x20\x45\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x68\ +\x69\x6c\x65\x20\x65\x78\x70\x61\x6e\x64\x69\x6e\x67\x5c\x6e\x22\x29\x3b\0\x20\ +\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x74\x63\x70\x5f\x70\x61\x79\x6c\ +\x6f\x61\x64\x5f\x62\x6f\x75\x6e\x64\x5f\x63\x68\x65\x63\x6b\x28\x70\x61\x79\ +\x6c\x6f\x61\x64\x2c\x20\x70\x61\x79\x6c\x6f\x61\x64\x5f\x73\x69\x7a\x65\x2c\ +\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x29\x29\x7b\0\x20\x20\x20\x20\x20\x20\x20\ +\x20\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x42\x6f\ +\x75\x6e\x64\x20\x63\x68\x65\x63\x6b\x20\x46\x20\x66\x61\x69\x6c\x65\x64\x20\ +\x77\x68\x69\x6c\x65\x20\x65\x78\x70\x61\x6e\x64\x69\x6e\x67\x5c\x6e\x22\x29\ +\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x70\x61\x79\x6c\x6f\x61\x64\x5b\x35\x5d\ +\x20\x3d\x20\x27\x5c\x30\x27\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x70\x61\x79\ +\x6c\x6f\x61\x64\x5b\x34\x5d\x20\x3d\x20\x27\x61\x27\x3b\0\x20\x20\x20\x20\x20\ \x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x42\x50\x46\x20\ \x66\x69\x6e\x69\x73\x68\x65\x64\x20\x77\x69\x74\x68\x20\x72\x65\x74\x20\x25\ \x69\x20\x61\x6e\x64\x20\x70\x61\x79\x6c\x6f\x61\x64\x20\x25\x73\x20\x6f\x66\ @@ -658,345 +676,328 @@ xdp_filter_bpf__create_skeleton(struct xdp_filter_bpf *obj) \x66\x6d\x74\x2e\x31\x37\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\ \x5f\x5f\x5f\x66\x6d\x74\x2e\x31\x38\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\ \x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x31\x39\0\x78\x64\x70\x5f\x72\x65\x63\ -\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x32\x30\0\x65\x78\x70\x61\ -\x6e\x64\x5f\x74\x63\x70\x5f\x70\x61\x63\x6b\x65\x74\x5f\x70\x61\x79\x6c\x6f\ -\x61\x64\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\0\x65\x78\x70\x61\x6e\x64\x5f\x74\x63\ -\x70\x5f\x70\x61\x63\x6b\x65\x74\x5f\x70\x61\x79\x6c\x6f\x61\x64\x2e\x5f\x5f\ -\x5f\x5f\x66\x6d\x74\x2e\x32\x31\0\x65\x78\x70\x61\x6e\x64\x5f\x74\x63\x70\x5f\ -\x70\x61\x63\x6b\x65\x74\x5f\x70\x61\x79\x6c\x6f\x61\x64\x2e\x5f\x5f\x5f\x5f\ -\x66\x6d\x74\x2e\x32\x32\0\x65\x78\x70\x61\x6e\x64\x5f\x74\x63\x70\x5f\x70\x61\ -\x63\x6b\x65\x74\x5f\x70\x61\x79\x6c\x6f\x61\x64\x2e\x5f\x5f\x5f\x5f\x66\x6d\ -\x74\x2e\x32\x33\0\x65\x78\x70\x61\x6e\x64\x5f\x74\x63\x70\x5f\x70\x61\x63\x6b\ -\x65\x74\x5f\x70\x61\x79\x6c\x6f\x61\x64\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\ -\x32\x34\0\x65\x78\x70\x61\x6e\x64\x5f\x74\x63\x70\x5f\x70\x61\x63\x6b\x65\x74\ -\x5f\x70\x61\x79\x6c\x6f\x61\x64\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x32\x35\0\ -\x69\x70\x76\x34\x5f\x63\x73\x75\x6d\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\0\x69\x70\ -\x76\x34\x5f\x63\x73\x75\x6d\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x32\x36\0\x69\ -\x70\x76\x34\x5f\x63\x73\x75\x6d\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x32\x37\0\ -\x63\x73\x75\x6d\x5f\x66\x6f\x6c\x64\x5f\x68\x65\x6c\x70\x65\x72\x2e\x5f\x5f\ -\x5f\x5f\x66\x6d\x74\0\x63\x73\x75\x6d\x5f\x66\x6f\x6c\x64\x5f\x68\x65\x6c\x70\ -\x65\x72\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x32\x38\0\x63\x73\x75\x6d\x5f\x66\ -\x6f\x6c\x64\x5f\x68\x65\x6c\x70\x65\x72\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\ -\x32\x39\0\x63\x73\x75\x6d\x5f\x66\x6f\x6c\x64\x5f\x68\x65\x6c\x70\x65\x72\x2e\ -\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x33\x30\0\x2e\x72\x6f\x64\x61\x74\x61\0\x6c\ -\x69\x63\x65\x6e\x73\x65\0\x9f\xeb\x01\0\x20\0\0\0\0\0\0\0\x14\0\0\0\x14\0\0\0\ -\x0c\x08\0\0\x20\x08\0\0\0\0\0\0\x08\0\0\0\x75\0\0\0\x01\0\0\0\0\0\0\0\x07\0\0\ -\0\x10\0\0\0\x75\0\0\0\x80\0\0\0\0\0\0\0\x7e\0\0\0\xaa\0\0\0\0\xe4\0\0\x08\0\0\ -\0\x7e\0\0\0\xce\0\0\0\x29\xf4\0\0\x10\0\0\0\x7e\0\0\0\0\x01\0\0\x25\xf8\0\0\ -\x18\0\0\0\x2a\x01\0\0\x60\x01\0\0\x15\x2c\0\0\x28\0\0\0\x7e\0\0\0\x99\x01\0\0\ -\x08\x24\x01\0\x30\0\0\0\x7e\0\0\0\xcf\x01\0\0\x09\x28\x01\0\x40\0\0\0\x7e\0\0\ -\0\0\0\0\0\0\0\0\0\x50\0\0\0\x2a\x01\0\0\xf9\x01\0\0\x14\x48\0\0\x60\0\0\0\x7e\ -\0\0\0\x27\x02\0\0\x09\x3c\x01\0\x68\0\0\0\x7e\0\0\0\x57\x02\0\0\x09\x40\x01\0\ -\x80\0\0\0\x2a\x01\0\0\x70\x02\0\0\x10\xb4\0\0\x88\0\0\0\x7e\0\0\0\x8a\x02\0\0\ -\x09\x50\x01\0\x90\0\0\0\x7e\0\0\0\xb6\x02\0\0\x09\x54\x01\0\xa8\0\0\0\x2a\x01\ -\0\0\xcf\x02\0\0\x15\x64\0\0\xb8\0\0\0\x7e\0\0\0\xff\x02\0\0\x09\x68\x01\0\xc0\ -\0\0\0\x7e\0\0\0\x2f\x03\0\0\x09\x6c\x01\0\xd0\0\0\0\x7e\0\0\0\0\0\0\0\0\0\0\0\ -\xe0\0\0\0\x7e\0\0\0\x48\x03\0\0\x01\x4c\x03\0\xf0\0\0\0\x4a\x03\0\0\x85\x03\0\ -\0\x0c\x34\0\0\xf8\0\0\0\x7e\0\0\0\xa2\x03\0\0\x09\x7c\x01\0\x08\x01\0\0\x7e\0\ -\0\0\xde\x03\0\0\x09\x80\x01\0\x20\x01\0\0\x7e\0\0\0\0\0\0\0\0\0\0\0\x30\x01\0\ -\0\x7e\0\0\0\x0e\x04\0\0\x2f\x90\x01\0\x38\x01\0\0\x7e\0\0\0\x0e\x04\0\0\x34\ -\x90\x01\0\x48\x01\0\0\x7e\0\0\0\x0e\x04\0\0\x14\x90\x01\0\x58\x01\0\0\x7e\0\0\ -\0\x0e\x04\0\0\x27\x90\x01\0\x60\x01\0\0\x7e\0\0\0\x0e\x04\0\0\x40\x90\x01\0\ -\x68\x01\0\0\x7e\0\0\0\x0e\x04\0\0\x44\x90\x01\0\x78\x01\0\0\x7e\0\0\0\x0e\x04\ -\0\0\x39\x90\x01\0\x80\x01\0\0\x7e\0\0\0\x57\x04\0\0\x09\xa0\x01\0\x88\x01\0\0\ -\x7e\0\0\0\x8c\x04\0\0\x09\xa4\x01\0\xa0\x01\0\0\x7e\0\0\0\0\0\0\0\0\0\0\0\xb0\ -\x01\0\0\x2a\x01\0\0\xa5\x04\0\0\x18\x80\0\0\xc0\x01\0\0\x7e\0\0\0\xd8\x04\0\0\ -\x09\xb4\x01\0\xc8\x01\0\0\x7e\0\0\0\x1b\x05\0\0\x09\xb8\x01\0\xe8\x01\0\0\x7e\ -\0\0\0\x34\x05\0\0\x05\xc8\x01\0\x20\x02\0\0\x95\x05\0\0\xc9\x05\0\0\x0d\x6c\0\ -\0\x28\x02\0\0\x95\x05\0\0\xc9\x05\0\0\x0d\x6c\0\0\x30\x02\0\0\x7e\0\0\0\xec\ -\x05\0\0\x09\xd4\x01\0\x48\x02\0\0\x95\x05\0\0\xc9\x05\0\0\x0d\x6c\0\0\x50\x02\ -\0\0\x95\x05\0\0\xc9\x05\0\0\x0d\x6c\0\0\x58\x02\0\0\x95\x05\0\0\xc9\x05\0\0\ -\x0d\x6c\0\0\x60\x02\0\0\x95\x05\0\0\xc9\x05\0\0\x0d\x6c\0\0\x68\x02\0\0\x95\ -\x05\0\0\xc9\x05\0\0\x0d\x6c\0\0\x70\x02\0\0\x95\x05\0\0\xc9\x05\0\0\x0d\x6c\0\ -\0\x78\x02\0\0\x7e\0\0\0\x05\x06\0\0\x05\xec\x01\0\xa0\x02\0\0\x4b\x06\0\0\x7a\ -\x06\0\0\x05\xa4\0\0\xd8\x03\0\0\x4b\x06\0\0\xb7\x06\0\0\x05\xa8\0\0\x38\x04\0\ -\0\x4b\x06\0\0\xf1\x06\0\0\x05\xac\0\0\x98\x04\0\0\x4b\x06\0\0\x2e\x07\0\0\x09\ -\xb4\0\0\xb0\x04\0\0\x4b\x06\0\0\x2e\x07\0\0\x09\xb4\0\0\xb8\x04\0\0\x4b\x06\0\ -\0\x75\x07\0\0\x09\xc0\0\0\xe8\x04\0\0\x4b\x06\0\0\xcd\x07\0\0\x21\xd8\0\0\xf0\ -\x04\0\0\x4b\x06\0\0\xf3\x07\0\0\x28\xe8\0\0\xf8\x04\0\0\x4b\x06\0\0\x24\x08\0\ -\0\x1e\xdc\0\0\x08\x05\0\0\x4b\x06\0\0\x5a\x08\0\0\x08\xec\0\0\x10\x05\0\0\x4b\ -\x06\0\0\x94\x08\0\0\x09\xf0\0\0\x28\x05\0\0\x4b\x06\0\0\0\0\0\0\0\0\0\0\x40\ -\x05\0\0\x4b\x06\0\0\xd2\x08\0\0\x09\x04\x01\0\x48\x05\0\0\x4b\x06\0\0\x06\x09\ -\0\0\x09\x08\x01\0\x68\x05\0\0\x2a\x01\0\0\xcf\x02\0\0\x15\x64\0\0\x78\x05\0\0\ -\x4b\x06\0\0\x44\x09\0\0\x09\x1c\x01\0\x80\x05\0\0\x4b\x06\0\0\x78\x09\0\0\x09\ -\x20\x01\0\x90\x05\0\0\x4b\x06\0\0\0\0\0\0\0\0\0\0\xa0\x05\0\0\x7e\0\0\0\xb6\ -\x09\0\0\x09\xdc\x02\0\xc0\x05\0\0\x7e\0\0\0\0\0\0\0\0\0\0\0\xe0\x05\0\0\x7e\0\ -\0\0\xf4\x09\0\0\x1d\xe4\x02\0\xf0\x05\0\0\x7e\0\0\0\x17\x0a\0\0\x05\xe8\x02\0\ -\x10\x06\0\0\x7e\0\0\0\x72\x0a\0\0\x05\xec\x02\0\x40\x06\0\0\x7e\0\0\0\xb8\x0a\ -\0\0\x05\xf0\x02\0\x68\x06\0\0\x4b\x06\0\0\x05\x0b\0\0\x05\x40\x01\0\x90\x07\0\ -\0\x4b\x06\0\0\x48\x0b\0\0\x05\x44\x01\0\xe0\x07\0\0\x4b\x06\0\0\x88\x0b\0\0\ -\x05\x48\x01\0\x38\x08\0\0\x4b\x06\0\0\xcd\x0b\0\0\x05\x58\x01\0\x68\x08\0\0\ -\x4b\x06\0\0\x1a\x0c\0\0\x17\x5c\x01\0\x88\x08\0\0\x4b\x06\0\0\x1a\x0c\0\0\x15\ -\x5c\x01\0\x90\x08\0\0\x5c\x0c\0\0\x96\x0c\0\0\x05\xe0\0\0\xb8\x08\0\0\x5c\x0c\ -\0\0\xbb\x0c\0\0\x0a\xe4\0\0\xf0\x08\0\0\x5c\x0c\0\0\xf7\x0c\0\0\x02\xe8\0\0\ -\x18\x09\0\0\x5c\x0c\0\0\x19\x0d\0\0\x05\x9c\0\0\x58\x09\0\0\x5c\x0c\0\0\x47\ -\x0d\0\0\x05\xa0\0\0\x90\x09\0\0\x5c\x0c\0\0\x72\x0d\0\0\x05\xa4\0\0\xc8\x09\0\ -\0\x5c\x0c\0\0\xb3\x0d\0\0\x05\xa8\0\0\xf8\x09\0\0\x5c\x0c\0\0\xfc\x0d\0\0\x09\ -\xb4\0\0\x10\x0a\0\0\x5c\x0c\0\0\xfc\x0d\0\0\x0e\xb4\0\0\x28\x0a\0\0\x5c\x0c\0\ -\0\xfc\x0d\0\0\x09\xb4\0\0\x50\x0a\0\0\x5c\x0c\0\0\xfc\x0d\0\0\x0e\xb4\0\0\x68\ -\x0a\0\0\x5c\x0c\0\0\xfc\x0d\0\0\x09\xb4\0\0\xb8\x0a\0\0\x5c\x0c\0\0\xfc\x0d\0\ -\0\x0e\xb4\0\0\xc0\x0a\0\0\x5c\x0c\0\0\xfc\x0d\0\0\x09\xb4\0\0\xd0\x0a\0\0\x5c\ -\x0c\0\0\x10\x0e\0\0\x0d\xec\0\0\xe0\x0a\0\0\x5c\x0c\0\0\x96\x0c\0\0\x05\xf0\0\ -\0\x10\x0b\0\0\x4b\x06\0\0\x35\x0e\0\0\x10\x68\x01\0\x18\x0b\0\0\x4b\x06\0\0\ -\x4c\x0e\0\0\x05\x6c\x01\0\x50\x0b\0\0\x2a\x01\0\0\x60\x01\0\0\x15\x2c\0\0\x60\ -\x0b\0\0\x7e\0\0\0\x98\x0e\0\0\x2d\x04\x02\0\x70\x0b\0\0\x7e\0\0\0\xce\x0e\0\0\ -\x0c\x0c\x02\0\x78\x0b\0\0\x7e\0\0\0\x08\x0f\0\0\x0d\x10\x02\0\x90\x0b\0\0\x2a\ -\x01\0\0\xf9\x01\0\0\x14\x48\0\0\xa0\x0b\0\0\x7e\0\0\0\x4a\x0f\0\0\x0d\x24\x02\ -\0\xa8\x0b\0\0\x7e\0\0\0\x7e\x0f\0\0\x0d\x28\x02\0\xc0\x0b\0\0\x2a\x01\0\0\xcf\ -\x02\0\0\x15\x64\0\0\xd0\x0b\0\0\x7e\0\0\0\xc0\x0f\0\0\x0d\x50\x02\0\xd8\x0b\0\ -\0\x7e\0\0\0\xf4\x0f\0\0\x0d\x54\x02\0\xe8\x0b\0\0\x7e\0\0\0\0\0\0\0\0\0\0\0\0\ -\x0c\0\0\x7e\0\0\0\x36\x10\0\0\x33\x64\x02\0\x08\x0c\0\0\x7e\0\0\0\x36\x10\0\0\ -\x38\x64\x02\0\x18\x0c\0\0\x7e\0\0\0\x36\x10\0\0\x18\x64\x02\0\x28\x0c\0\0\x7e\ -\0\0\0\x36\x10\0\0\x2b\x64\x02\0\x30\x0c\0\0\x7e\0\0\0\x36\x10\0\0\x44\x64\x02\ -\0\x38\x0c\0\0\x7e\0\0\0\x36\x10\0\0\x48\x64\x02\0\x48\x0c\0\0\x7e\0\0\0\x36\ -\x10\0\0\x3d\x64\x02\0\x70\x0c\0\0\x7e\0\0\0\x83\x10\0\0\x1c\x78\x02\0\x78\x0c\ -\0\0\x7e\0\0\0\xb6\x10\0\0\x0d\x7c\x02\0\x98\x0c\0\0\x7e\0\0\0\0\0\0\0\0\0\0\0\ -\xa0\x0c\0\0\x7e\0\0\0\xe5\x10\0\0\x27\x88\x02\0\xb8\x0c\0\0\x7e\0\0\0\xe5\x10\ -\0\0\x19\x88\x02\0\xc8\x0c\0\0\x7e\0\0\0\xe5\x10\0\0\x0c\x88\x02\0\xd8\x0c\0\0\ -\x7e\0\0\0\xe5\x10\0\0\x0c\x88\x02\0\xe0\x0c\0\0\x7e\0\0\0\x1f\x11\0\0\x3b\xa4\ -\x02\0\xf0\x0c\0\0\x7e\0\0\0\x1f\x11\0\0\x0c\xa4\x02\0\xf8\x0c\0\0\x7e\0\0\0\ -\x69\x11\0\0\x0d\xa8\x02\0\x10\x0d\0\0\x2a\x01\0\0\xa5\x04\0\0\x18\x80\0\0\x38\ -\x0d\0\0\x7e\0\0\0\xab\x11\0\0\x0d\xb8\x02\0\x40\x0d\0\0\x7e\0\0\0\xf2\x11\0\0\ -\x0d\xbc\x02\0\x70\x0d\0\0\x7e\0\0\0\x34\x12\0\0\x14\xcc\x02\0\x80\x0d\0\0\x7e\ -\0\0\0\x4e\x12\0\0\x09\xd4\x02\0\xa8\x0d\0\0\x7e\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ -\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9b\x04\0\0\0\0\x02\0\xd8\0\ -\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x1b\x04\0\0\0\0\x02\0\xe0\0\0\0\0\0\0\0\0\0\0\0\0\ -\0\0\0\xb1\x03\0\0\0\0\x02\0\xf0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd7\x02\0\0\0\0\ -\x02\0\x20\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x75\x02\0\0\0\0\x02\0\x30\x01\0\0\0\ -\0\0\0\0\0\0\0\0\0\0\0\xb2\x01\0\0\0\0\x02\0\xa0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\ -\0\xf8\0\0\0\0\0\x02\0\xe0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7d\x03\0\0\0\0\x02\ -\0\x40\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7c\x04\0\0\0\0\x02\0\x30\x02\0\0\0\0\0\0\ -\0\0\0\0\0\0\0\0\xee\x03\0\0\0\0\x02\0\x48\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xe7\ -\x01\0\0\0\0\x02\0\xe8\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x35\x01\0\0\0\0\x02\0\ -\x28\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x0c\x03\0\0\0\0\x02\0\x50\0\0\0\0\0\0\0\0\ -\0\0\0\0\0\0\0\x58\x04\0\0\0\0\x02\0\x60\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84\ -\x03\0\0\0\0\x02\0\x90\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x23\x03\0\0\0\0\x02\0\ -\xa0\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xaa\x02\0\0\0\0\x02\0\xd8\x05\0\0\0\0\0\0\ -\0\0\0\0\0\0\0\0\x48\x02\0\0\0\0\x02\0\x68\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x95\ -\x01\0\0\0\0\x02\0\x10\x0a\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd4\0\0\0\0\0\x02\0\x50\ -\x0a\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xe6\x03\0\0\0\0\x02\0\x90\x0a\0\0\0\0\0\0\0\0\ -\0\0\0\0\0\0\x1b\x03\0\0\0\0\x02\0\x90\x0b\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x40\x02\ -\0\0\0\0\x02\0\xc0\x0b\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8d\x01\0\0\0\0\x02\0\xe8\ -\x0b\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x2d\x01\0\0\0\0\x02\0\xf8\x0b\0\0\0\0\0\0\0\0\ -\0\0\0\0\0\0\x31\x02\0\0\0\0\x02\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x50\x04\0\ -\0\0\0\x02\0\x90\x0c\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x13\x03\0\0\0\0\x02\0\x10\x0d\ -\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x38\x02\0\0\0\0\x02\0\x58\x0d\0\0\0\0\0\0\0\0\0\0\ -\0\0\0\0\x86\x01\0\0\0\0\x02\0\xa8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcd\0\0\0\0\0\ -\x02\0\xd0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x14\0\0\0\x01\0\x04\0\x0d\x03\0\0\0\0\ -\0\0\x0b\0\0\0\0\0\0\0\x3d\x01\0\0\x01\0\x04\0\x18\x03\0\0\0\0\0\0\x0b\0\0\0\0\ -\0\0\0\xdc\0\0\0\x01\0\x04\0\x23\x03\0\0\0\0\0\0\x0d\0\0\0\0\0\0\0\x60\x04\0\0\ -\x01\0\x04\0\x30\x03\0\0\0\0\0\0\x12\0\0\0\0\0\0\0\x53\0\0\0\x01\0\x04\0\x18\ -\x02\0\0\0\0\0\0\x34\0\0\0\0\0\0\0\xf6\x03\0\0\x01\0\x04\0\x4c\x02\0\0\0\0\0\0\ -\x26\0\0\0\0\0\0\0\x8c\x03\0\0\x01\0\x04\0\x72\x02\0\0\0\0\0\0\x26\0\0\0\0\0\0\ -\0\x2b\x03\0\0\x01\0\x04\0\x98\x02\0\0\0\0\0\0\x26\0\0\0\0\0\0\0\xb2\x02\0\0\ -\x01\0\x04\0\xbe\x02\0\0\0\0\0\0\x19\0\0\0\0\0\0\0\x50\x02\0\0\x01\0\x04\0\xd7\ -\x02\0\0\0\0\0\0\x18\0\0\0\0\0\0\0\x2d\0\0\0\x01\0\x04\0\xef\x02\0\0\0\0\0\0\ -\x0a\0\0\0\0\0\0\0\xef\x01\0\0\x01\0\x04\0\xf9\x02\0\0\0\0\0\0\x0a\0\0\0\0\0\0\ -\0\x9d\x01\0\0\x01\0\x04\0\x03\x03\0\0\0\0\0\0\x0a\0\0\0\0\0\0\0\x3f\0\0\0\x01\ -\0\x04\0\0\0\0\0\0\0\0\0\x13\0\0\0\0\0\0\0\x3a\x04\0\0\x01\0\x04\0\x13\0\0\0\0\ -\0\0\0\x02\0\0\0\0\0\0\0\xa3\x04\0\0\x01\0\x04\0\x7a\0\0\0\0\0\0\0\x26\0\0\0\0\ -\0\0\0\x23\x04\0\0\x01\0\x04\0\xa0\0\0\0\0\0\0\0\x26\0\0\0\0\0\0\0\xb9\x03\0\0\ -\x01\0\x04\0\xc6\0\0\0\0\0\0\0\x26\0\0\0\0\0\0\0\x50\x03\0\0\x01\0\x04\0\xec\0\ -\0\0\0\0\0\0\x13\0\0\0\0\0\0\0\xdf\x02\0\0\x01\0\x04\0\xff\0\0\0\0\0\0\0\x26\0\ -\0\0\0\0\0\0\x7d\x02\0\0\x01\0\x04\0\x25\x01\0\0\0\0\0\0\x26\0\0\0\0\0\0\0\x04\ -\x02\0\0\x01\0\x04\0\x4b\x01\0\0\0\0\0\0\x35\0\0\0\0\0\0\0\xba\x01\0\0\x01\0\ -\x04\0\x80\x01\0\0\0\0\0\0\x26\0\0\0\0\0\0\0\x59\x01\0\0\x01\0\x04\0\xa6\x01\0\ -\0\0\0\0\0\x29\0\0\0\0\0\0\0\0\x01\0\0\x01\0\x04\0\xcf\x01\0\0\0\0\0\0\x1f\0\0\ -\0\0\0\0\0\xd0\x03\0\0\x01\0\x04\0\x15\0\0\0\0\0\0\0\x02\0\0\0\0\0\0\0\x84\x04\ -\0\0\x01\0\x04\0\xee\x01\0\0\0\0\0\0\x2a\0\0\0\0\0\0\0\x67\x03\0\0\x01\0\x04\0\ -\x17\0\0\0\0\0\0\0\x02\0\0\0\0\0\0\0\xf6\x02\0\0\x01\0\x04\0\x19\0\0\0\0\0\0\0\ -\x06\0\0\0\0\0\0\0\x94\x02\0\0\x01\0\x04\0\x1f\0\0\0\0\0\0\0\x02\0\0\0\0\0\0\0\ -\x1b\x02\0\0\x01\0\x04\0\x21\0\0\0\0\0\0\0\x02\0\0\0\0\0\0\0\xd1\x01\0\0\x01\0\ -\x04\0\x23\0\0\0\0\0\0\0\x36\0\0\0\0\0\0\0\x70\x01\0\0\x01\0\x04\0\x59\0\0\0\0\ -\0\0\0\x02\0\0\0\0\0\0\0\x17\x01\0\0\x01\0\x04\0\x5b\0\0\0\0\0\0\0\x1f\0\0\0\0\ -\0\0\0\0\0\0\0\x03\0\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\x04\0\ -\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc5\0\0\0\x11\0\x03\0\0\0\0\0\0\0\0\0\x0d\0\0\ -\0\0\0\0\0\x90\0\0\0\x12\0\x02\0\0\0\0\0\0\0\0\0\xc8\x0d\0\0\0\0\0\0\x30\0\0\0\ -\0\0\0\0\x01\0\0\0\x43\0\0\0\x68\0\0\0\0\0\0\0\x01\0\0\0\x43\0\0\0\x90\0\0\0\0\ -\0\0\0\x01\0\0\0\x43\0\0\0\xc0\0\0\0\0\0\0\0\x01\0\0\0\x43\0\0\0\x08\x01\0\0\0\ -\0\0\0\x01\0\0\0\x43\0\0\0\x88\x01\0\0\0\0\0\0\x01\0\0\0\x43\0\0\0\xc8\x01\0\0\ -\0\0\0\0\x01\0\0\0\x43\0\0\0\xe8\x01\0\0\0\0\0\0\x01\0\0\0\x43\0\0\0\x30\x02\0\ -\0\0\0\0\0\x01\0\0\0\x43\0\0\0\x78\x02\0\0\0\0\0\0\x01\0\0\0\x43\0\0\0\xb8\x04\ -\0\0\0\0\0\0\x01\0\0\0\x43\0\0\0\x10\x05\0\0\0\0\0\0\x01\0\0\0\x43\0\0\0\x48\ -\x05\0\0\0\0\0\0\x01\0\0\0\x43\0\0\0\x80\x05\0\0\0\0\0\0\x01\0\0\0\x43\0\0\0\ -\xa0\x05\0\0\0\0\0\0\x01\0\0\0\x43\0\0\0\xf0\x05\0\0\0\0\0\0\x01\0\0\0\x43\0\0\ -\0\x10\x06\0\0\0\0\0\0\x01\0\0\0\x43\0\0\0\x48\x06\0\0\0\0\0\0\x01\0\0\0\x43\0\ -\0\0\x48\x08\0\0\0\0\0\0\x01\0\0\0\x43\0\0\0\x90\x08\0\0\0\0\0\0\x01\0\0\0\x43\ -\0\0\0\xf0\x08\0\0\0\0\0\0\x01\0\0\0\x43\0\0\0\x28\x09\0\0\0\0\0\0\x01\0\0\0\ -\x43\0\0\0\x68\x09\0\0\0\0\0\0\x01\0\0\0\x43\0\0\0\x98\x09\0\0\0\0\0\0\x01\0\0\ -\0\x43\0\0\0\xd0\x09\0\0\0\0\0\0\x01\0\0\0\x43\0\0\0\xe0\x0a\0\0\0\0\0\0\x01\0\ -\0\0\x43\0\0\0\x28\x0b\0\0\0\0\0\0\x01\0\0\0\x43\0\0\0\x78\x0b\0\0\0\0\0\0\x01\ -\0\0\0\x43\0\0\0\xa8\x0b\0\0\0\0\0\0\x01\0\0\0\x43\0\0\0\xd8\x0b\0\0\0\0\0\0\ -\x01\0\0\0\x43\0\0\0\x78\x0c\0\0\0\0\0\0\x01\0\0\0\x43\0\0\0\xf8\x0c\0\0\0\0\0\ -\0\x01\0\0\0\x43\0\0\0\x40\x0d\0\0\0\0\0\0\x01\0\0\0\x43\0\0\0\x80\x0d\0\0\0\0\ -\0\0\x01\0\0\0\x43\0\0\0\xc8\x04\0\0\0\0\0\0\x0a\0\0\0\x43\0\0\0\xd4\x04\0\0\0\ -\0\0\0\x0a\0\0\0\x43\0\0\0\xe0\x04\0\0\0\0\0\0\x0a\0\0\0\x43\0\0\0\xec\x04\0\0\ -\0\0\0\0\x0a\0\0\0\x43\0\0\0\xf8\x04\0\0\0\0\0\0\x0a\0\0\0\x43\0\0\0\x04\x05\0\ -\0\0\0\0\0\x0a\0\0\0\x43\0\0\0\x10\x05\0\0\0\0\0\0\x0a\0\0\0\x43\0\0\0\x1c\x05\ -\0\0\0\0\0\0\x0a\0\0\0\x43\0\0\0\x28\x05\0\0\0\0\0\0\x0a\0\0\0\x43\0\0\0\x34\ -\x05\0\0\0\0\0\0\x0a\0\0\0\x43\0\0\0\x40\x05\0\0\0\0\0\0\x0a\0\0\0\x43\0\0\0\ -\x4c\x05\0\0\0\0\0\0\x0a\0\0\0\x43\0\0\0\x58\x05\0\0\0\0\0\0\x0a\0\0\0\x43\0\0\ -\0\x64\x05\0\0\0\0\0\0\x0a\0\0\0\x43\0\0\0\x70\x05\0\0\0\0\0\0\x0a\0\0\0\x43\0\ -\0\0\x7c\x05\0\0\0\0\0\0\x0a\0\0\0\x43\0\0\0\x88\x05\0\0\0\0\0\0\x0a\0\0\0\x43\ -\0\0\0\x94\x05\0\0\0\0\0\0\x0a\0\0\0\x43\0\0\0\xa0\x05\0\0\0\0\0\0\x0a\0\0\0\ -\x43\0\0\0\xac\x05\0\0\0\0\0\0\x0a\0\0\0\x43\0\0\0\xb8\x05\0\0\0\0\0\0\x0a\0\0\ -\0\x43\0\0\0\xc4\x05\0\0\0\0\0\0\x0a\0\0\0\x43\0\0\0\xd0\x05\0\0\0\0\0\0\x0a\0\ -\0\0\x43\0\0\0\xdc\x05\0\0\0\0\0\0\x0a\0\0\0\x43\0\0\0\xe8\x05\0\0\0\0\0\0\x0a\ -\0\0\0\x43\0\0\0\xf4\x05\0\0\0\0\0\0\x0a\0\0\0\x43\0\0\0\0\x06\0\0\0\0\0\0\x0a\ -\0\0\0\x43\0\0\0\x0c\x06\0\0\0\0\0\0\x0a\0\0\0\x43\0\0\0\x18\x06\0\0\0\0\0\0\ -\x0a\0\0\0\x43\0\0\0\x24\x06\0\0\0\0\0\0\x0a\0\0\0\x43\0\0\0\x30\x06\0\0\0\0\0\ -\0\x0a\0\0\0\x43\0\0\0\x3c\x06\0\0\0\0\0\0\x0a\0\0\0\x43\0\0\0\x48\x06\0\0\0\0\ -\0\0\x0a\0\0\0\x43\0\0\0\x54\x06\0\0\0\0\0\0\x0a\0\0\0\x43\0\0\0\x6c\x06\0\0\0\ -\0\0\0\0\0\0\0\x44\0\0\0\x2c\0\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x40\0\0\0\0\0\0\0\ -\0\0\0\0\x42\0\0\0\x50\0\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x60\0\0\0\0\0\0\0\0\0\0\ -\0\x42\0\0\0\x70\0\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\x42\ -\0\0\0\x90\0\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\xa0\0\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\ -\xb0\0\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\xc0\0\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\xd0\0\ -\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\xe0\0\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\xf0\0\0\0\0\ -\0\0\0\0\0\0\0\x42\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x10\x01\0\0\0\0\0\ -\0\0\0\0\0\x42\0\0\0\x20\x01\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x30\x01\0\0\0\0\0\0\ -\0\0\0\0\x42\0\0\0\x40\x01\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x50\x01\0\0\0\0\0\0\0\ -\0\0\0\x42\0\0\0\x60\x01\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x70\x01\0\0\0\0\0\0\0\0\ -\0\0\x42\0\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x90\x01\0\0\0\0\0\0\0\0\0\ -\0\x42\0\0\0\xa0\x01\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\xb0\x01\0\0\0\0\0\0\0\0\0\0\ -\x42\0\0\0\xc0\x01\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\xd0\x01\0\0\0\0\0\0\0\0\0\0\ -\x42\0\0\0\xe0\x01\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\xf0\x01\0\0\0\0\0\0\0\0\0\0\ -\x42\0\0\0\0\x02\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x10\x02\0\0\0\0\0\0\0\0\0\0\x42\ -\0\0\0\x20\x02\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x30\x02\0\0\0\0\0\0\0\0\0\0\x42\0\ -\0\0\x40\x02\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x50\x02\0\0\0\0\0\0\0\0\0\0\x42\0\0\ -\0\x60\x02\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x70\x02\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\ -\x80\x02\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x90\x02\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\ -\xa0\x02\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\xb0\x02\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\ -\xc0\x02\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\xd0\x02\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\ -\xe0\x02\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\xf0\x02\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\0\ -\x03\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x10\x03\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x20\ -\x03\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x30\x03\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x40\ -\x03\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x50\x03\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x60\ -\x03\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x70\x03\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x80\ -\x03\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x90\x03\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\xa0\ -\x03\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\xb0\x03\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\xc0\ -\x03\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\xd0\x03\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\xe0\ -\x03\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\xf0\x03\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\0\x04\ -\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x10\x04\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x20\x04\0\ -\0\0\0\0\0\0\0\0\0\x42\0\0\0\x30\x04\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x40\x04\0\0\ -\0\0\0\0\0\0\0\0\x42\0\0\0\x50\x04\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x60\x04\0\0\0\ -\0\0\0\0\0\0\0\x42\0\0\0\x70\x04\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x80\x04\0\0\0\0\ -\0\0\0\0\0\0\x42\0\0\0\x90\x04\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\xa0\x04\0\0\0\0\0\ -\0\0\0\0\0\x42\0\0\0\xb0\x04\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\xc0\x04\0\0\0\0\0\0\ -\0\0\0\0\x42\0\0\0\xd0\x04\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\xe0\x04\0\0\0\0\0\0\0\ -\0\0\0\x42\0\0\0\xf0\x04\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\0\x05\0\0\0\0\0\0\0\0\0\ -\0\x42\0\0\0\x10\x05\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x20\x05\0\0\0\0\0\0\0\0\0\0\ -\x42\0\0\0\x30\x05\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x40\x05\0\0\0\0\0\0\0\0\0\0\ -\x42\0\0\0\x50\x05\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x60\x05\0\0\0\0\0\0\0\0\0\0\ -\x42\0\0\0\x70\x05\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x80\x05\0\0\0\0\0\0\0\0\0\0\ -\x42\0\0\0\x90\x05\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\xa0\x05\0\0\0\0\0\0\0\0\0\0\ -\x42\0\0\0\xb0\x05\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\xc0\x05\0\0\0\0\0\0\0\0\0\0\ -\x42\0\0\0\xd0\x05\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\xe0\x05\0\0\0\0\0\0\0\0\0\0\ -\x42\0\0\0\xf0\x05\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\0\x06\0\0\0\0\0\0\0\0\0\0\x42\ -\0\0\0\x10\x06\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x20\x06\0\0\0\0\0\0\0\0\0\0\x42\0\ -\0\0\x30\x06\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x40\x06\0\0\0\0\0\0\0\0\0\0\x42\0\0\ -\0\x50\x06\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x60\x06\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\ -\x70\x06\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x80\x06\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\ -\x90\x06\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\xa0\x06\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\ -\xb0\x06\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\xc0\x06\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\ -\xd0\x06\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\xe0\x06\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\ -\xf0\x06\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\0\x07\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x10\ -\x07\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x20\x07\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x30\ -\x07\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x40\x07\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x50\ -\x07\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x60\x07\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x70\ -\x07\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x80\x07\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x90\ -\x07\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\xa0\x07\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\xb0\ -\x07\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\xc0\x07\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\xd0\ -\x07\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\xe0\x07\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\xf0\ -\x07\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\0\x08\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x10\x08\ -\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x20\x08\0\0\0\0\0\0\0\0\0\0\x42\0\0\0\x30\x08\0\ -\0\0\0\0\0\0\0\0\0\x42\0\0\0\x4c\x4b\x2e\x2f\x3a\x3c\x3d\x3e\x3f\x40\x41\x42\ -\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3b\x25\x26\x27\x28\x29\x2a\x2b\x2c\ -\x2d\x21\x22\x23\x24\0\x2e\x74\x65\x78\x74\0\x2e\x72\x65\x6c\x2e\x42\x54\x46\ -\x2e\x65\x78\x74\0\x63\x73\x75\x6d\x5f\x66\x6f\x6c\x64\x5f\x68\x65\x6c\x70\x65\ -\x72\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\0\x69\x70\x76\x34\x5f\x63\x73\x75\x6d\x2e\ -\x5f\x5f\x5f\x5f\x66\x6d\x74\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\ -\x5f\x5f\x5f\x5f\x66\x6d\x74\0\x65\x78\x70\x61\x6e\x64\x5f\x74\x63\x70\x5f\x70\ -\x61\x63\x6b\x65\x74\x5f\x70\x61\x79\x6c\x6f\x61\x64\x2e\x5f\x5f\x5f\x5f\x66\ -\x6d\x74\0\x2e\x72\x65\x6c\x78\x64\x70\x5f\x70\x72\x6f\x67\0\x2e\x6c\x6c\x76\ -\x6d\x5f\x61\x64\x64\x72\x73\x69\x67\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\ -\x65\0\x6c\x69\x63\x65\x6e\x73\x65\0\x2e\x73\x74\x72\x74\x61\x62\0\x2e\x73\x79\ -\x6d\x74\x61\x62\0\x2e\x72\x6f\x64\x61\x74\x61\0\x2e\x72\x65\x6c\x2e\x42\x54\ -\x46\0\x4c\x49\x43\x45\x4e\x53\x45\0\x4c\x42\x42\x30\x5f\x39\0\x4c\x42\x42\x30\ -\x5f\x33\x39\0\x63\x73\x75\x6d\x5f\x66\x6f\x6c\x64\x5f\x68\x65\x6c\x70\x65\x72\ -\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x32\x39\0\x4c\x42\x42\x30\x5f\x31\x39\0\ -\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\ -\x2e\x31\x39\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\ -\x66\x6d\x74\x2e\x39\0\x4c\x42\x42\x30\x5f\x34\x38\0\x4c\x42\x42\x30\x5f\x32\ -\x38\0\x63\x73\x75\x6d\x5f\x66\x6f\x6c\x64\x5f\x68\x65\x6c\x70\x65\x72\x2e\x5f\ -\x5f\x5f\x5f\x66\x6d\x74\x2e\x32\x38\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\ -\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x31\x38\0\x78\x64\x70\x5f\x72\x65\x63\ -\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x38\0\x4c\x42\x42\x30\x5f\ -\x37\0\x4c\x42\x42\x30\x5f\x34\x37\0\x4c\x42\x42\x30\x5f\x33\x37\0\x69\x70\x76\ -\x34\x5f\x63\x73\x75\x6d\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x32\x37\0\x4c\x42\ -\x42\x30\x5f\x31\x37\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\ -\x5f\x5f\x66\x6d\x74\x2e\x31\x37\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\ -\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x37\0\x4c\x42\x42\x30\x5f\x32\x36\0\x69\ -\x70\x76\x34\x5f\x63\x73\x75\x6d\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x32\x36\0\ -\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\ -\x2e\x31\x36\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\ -\x66\x6d\x74\x2e\x36\0\x4c\x42\x42\x30\x5f\x35\0\x4c\x42\x42\x30\x5f\x35\x35\0\ -\x4c\x42\x42\x30\x5f\x34\x35\0\x4c\x42\x42\x30\x5f\x33\x35\0\x65\x78\x70\x61\ -\x6e\x64\x5f\x74\x63\x70\x5f\x70\x61\x63\x6b\x65\x74\x5f\x70\x61\x79\x6c\x6f\ -\x61\x64\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x32\x35\0\x4c\x42\x42\x30\x5f\x31\ -\x35\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\ -\x74\x2e\x31\x35\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\ -\x5f\x66\x6d\x74\x2e\x35\0\x4c\x42\x42\x30\x5f\x33\x34\0\x65\x78\x70\x61\x6e\ -\x64\x5f\x74\x63\x70\x5f\x70\x61\x63\x6b\x65\x74\x5f\x70\x61\x79\x6c\x6f\x61\ -\x64\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x32\x34\0\x4c\x42\x42\x30\x5f\x31\x34\ -\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\ -\x2e\x31\x34\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\ -\x66\x6d\x74\x2e\x34\0\x4c\x42\x42\x30\x5f\x33\0\x4c\x42\x42\x30\x5f\x35\x33\0\ -\x4c\x42\x42\x30\x5f\x34\x33\0\x4c\x42\x42\x30\x5f\x33\x33\0\x65\x78\x70\x61\ -\x6e\x64\x5f\x74\x63\x70\x5f\x70\x61\x63\x6b\x65\x74\x5f\x70\x61\x79\x6c\x6f\ -\x61\x64\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x32\x33\0\x78\x64\x70\x5f\x72\x65\ -\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x31\x33\0\x78\x64\x70\ -\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x33\0\x4c\ -\x42\x42\x30\x5f\x32\0\x4c\x42\x42\x30\x5f\x33\x32\0\x65\x78\x70\x61\x6e\x64\ +\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x32\x30\0\x78\x64\x70\x5f\ +\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x32\x31\0\x65\ +\x78\x70\x61\x6e\x64\x5f\x74\x63\x70\x5f\x70\x61\x63\x6b\x65\x74\x5f\x70\x61\ +\x79\x6c\x6f\x61\x64\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\0\x65\x78\x70\x61\x6e\x64\ \x5f\x74\x63\x70\x5f\x70\x61\x63\x6b\x65\x74\x5f\x70\x61\x79\x6c\x6f\x61\x64\ -\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x32\x32\0\x4c\x42\x42\x30\x5f\x31\x32\0\ +\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x32\x32\0\x65\x78\x70\x61\x6e\x64\x5f\x74\ +\x63\x70\x5f\x70\x61\x63\x6b\x65\x74\x5f\x70\x61\x79\x6c\x6f\x61\x64\x2e\x5f\ +\x5f\x5f\x5f\x66\x6d\x74\x2e\x32\x33\0\x65\x78\x70\x61\x6e\x64\x5f\x74\x63\x70\ +\x5f\x70\x61\x63\x6b\x65\x74\x5f\x70\x61\x79\x6c\x6f\x61\x64\x2e\x5f\x5f\x5f\ +\x5f\x66\x6d\x74\x2e\x32\x34\0\x65\x78\x70\x61\x6e\x64\x5f\x74\x63\x70\x5f\x70\ +\x61\x63\x6b\x65\x74\x5f\x70\x61\x79\x6c\x6f\x61\x64\x2e\x5f\x5f\x5f\x5f\x66\ +\x6d\x74\x2e\x32\x35\0\x65\x78\x70\x61\x6e\x64\x5f\x74\x63\x70\x5f\x70\x61\x63\ +\x6b\x65\x74\x5f\x70\x61\x79\x6c\x6f\x61\x64\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\ +\x2e\x32\x36\0\x69\x70\x76\x34\x5f\x63\x73\x75\x6d\x2e\x5f\x5f\x5f\x5f\x66\x6d\ +\x74\0\x69\x70\x76\x34\x5f\x63\x73\x75\x6d\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\ +\x32\x37\0\x2e\x72\x6f\x64\x61\x74\x61\0\x6c\x69\x63\x65\x6e\x73\x65\0\x9f\xeb\ +\x01\0\x20\0\0\0\0\0\0\0\x14\0\0\0\x14\0\0\0\x9c\x07\0\0\xb0\x07\0\0\0\0\0\0\ +\x08\0\0\0\x75\0\0\0\x01\0\0\0\0\0\0\0\x07\0\0\0\x10\0\0\0\x75\0\0\0\x79\0\0\0\ +\0\0\0\0\x7e\0\0\0\xaa\0\0\0\0\xe4\0\0\x08\0\0\0\x7e\0\0\0\xce\0\0\0\x29\xf4\0\ +\0\x10\0\0\0\x7e\0\0\0\0\x01\0\0\x25\xf8\0\0\x18\0\0\0\x2a\x01\0\0\x60\x01\0\0\ +\x15\x2c\0\0\x28\0\0\0\x7e\0\0\0\x99\x01\0\0\x08\x24\x01\0\x30\0\0\0\x7e\0\0\0\ +\xcf\x01\0\0\x09\x28\x01\0\x50\0\0\0\x2a\x01\0\0\xf9\x01\0\0\x14\x48\0\0\x60\0\ +\0\0\x7e\0\0\0\x27\x02\0\0\x09\x3c\x01\0\x68\0\0\0\x7e\0\0\0\x57\x02\0\0\x09\ +\x40\x01\0\x80\0\0\0\x2a\x01\0\0\x70\x02\0\0\x10\xb4\0\0\x88\0\0\0\x7e\0\0\0\ +\x8a\x02\0\0\x09\x50\x01\0\x90\0\0\0\x7e\0\0\0\xb6\x02\0\0\x09\x54\x01\0\xa8\0\ +\0\0\x2a\x01\0\0\xcf\x02\0\0\x15\x64\0\0\xb8\0\0\0\x7e\0\0\0\xff\x02\0\0\x09\ +\x68\x01\0\xc0\0\0\0\x7e\0\0\0\x2f\x03\0\0\x09\x6c\x01\0\xd0\0\0\0\x7e\0\0\0\0\ +\0\0\0\0\0\0\0\xe0\0\0\0\x7e\0\0\0\x48\x03\0\0\x01\x54\x03\0\xf0\0\0\0\x4a\x03\ +\0\0\x85\x03\0\0\x0c\x34\0\0\xf8\0\0\0\x7e\0\0\0\xa2\x03\0\0\x09\x7c\x01\0\x08\ +\x01\0\0\x7e\0\0\0\xde\x03\0\0\x09\x80\x01\0\x30\x01\0\0\x7e\0\0\0\x0e\x04\0\0\ +\x2f\x90\x01\0\x38\x01\0\0\x7e\0\0\0\x0e\x04\0\0\x34\x90\x01\0\x48\x01\0\0\x7e\ +\0\0\0\x0e\x04\0\0\x14\x90\x01\0\x58\x01\0\0\x7e\0\0\0\x0e\x04\0\0\x27\x90\x01\ +\0\x60\x01\0\0\x7e\0\0\0\x0e\x04\0\0\x40\x90\x01\0\x68\x01\0\0\x7e\0\0\0\x0e\ +\x04\0\0\x44\x90\x01\0\x78\x01\0\0\x7e\0\0\0\x0e\x04\0\0\x39\x90\x01\0\x80\x01\ +\0\0\x7e\0\0\0\x57\x04\0\0\x09\xa0\x01\0\x88\x01\0\0\x7e\0\0\0\x8c\x04\0\0\x09\ +\xa4\x01\0\xa0\x01\0\0\x7e\0\0\0\0\0\0\0\0\0\0\0\xb0\x01\0\0\x2a\x01\0\0\xa5\ +\x04\0\0\x18\x80\0\0\xc0\x01\0\0\x7e\0\0\0\xd8\x04\0\0\x09\xb4\x01\0\xc8\x01\0\ +\0\x7e\0\0\0\x1b\x05\0\0\x09\xb8\x01\0\xe8\x01\0\0\x7e\0\0\0\x34\x05\0\0\x05\ +\xc8\x01\0\x20\x02\0\0\x95\x05\0\0\xc9\x05\0\0\x0d\x6c\0\0\x28\x02\0\0\x95\x05\ +\0\0\xc9\x05\0\0\x0d\x6c\0\0\x30\x02\0\0\x7e\0\0\0\xec\x05\0\0\x09\xd4\x01\0\ +\x48\x02\0\0\x95\x05\0\0\xc9\x05\0\0\x0d\x6c\0\0\x50\x02\0\0\x95\x05\0\0\xc9\ +\x05\0\0\x0d\x6c\0\0\x58\x02\0\0\x95\x05\0\0\xc9\x05\0\0\x0d\x6c\0\0\x60\x02\0\ +\0\x95\x05\0\0\xc9\x05\0\0\x0d\x6c\0\0\x68\x02\0\0\x95\x05\0\0\xc9\x05\0\0\x0d\ +\x6c\0\0\x70\x02\0\0\x95\x05\0\0\xc9\x05\0\0\x0d\x6c\0\0\x78\x02\0\0\x7e\0\0\0\ +\x05\x06\0\0\x05\xec\x01\0\xa0\x02\0\0\x4b\x06\0\0\x7a\x06\0\0\x05\xa4\0\0\xd8\ +\x03\0\0\x4b\x06\0\0\xb7\x06\0\0\x05\xa8\0\0\x38\x04\0\0\x4b\x06\0\0\xf1\x06\0\ +\0\x05\xac\0\0\x98\x04\0\0\x4b\x06\0\0\x2e\x07\0\0\x09\xb4\0\0\xb0\x04\0\0\x4b\ +\x06\0\0\x2e\x07\0\0\x09\xb4\0\0\xb8\x04\0\0\x4b\x06\0\0\x75\x07\0\0\x09\xc0\0\ +\0\0\x05\0\0\x4b\x06\0\0\xcd\x07\0\0\x21\xd8\0\0\x08\x05\0\0\x4b\x06\0\0\xf3\ +\x07\0\0\x1e\xe0\0\0\x18\x05\0\0\x4b\x06\0\0\x28\x08\0\0\x28\xe8\0\0\x28\x05\0\ +\0\x4b\x06\0\0\x59\x08\0\0\x1e\xdc\0\0\x30\x05\0\0\x4b\x06\0\0\x8f\x08\0\0\x08\ +\xec\0\0\x48\x05\0\0\x4b\x06\0\0\xc9\x08\0\0\x09\xf0\0\0\x60\x05\0\0\x4b\x06\0\ +\0\x07\x09\0\0\x09\x04\x01\0\x68\x05\0\0\x4b\x06\0\0\x3b\x09\0\0\x09\x08\x01\0\ +\x80\x05\0\0\x2a\x01\0\0\xcf\x02\0\0\x15\x64\0\0\x90\x05\0\0\x4b\x06\0\0\x79\ +\x09\0\0\x09\x1c\x01\0\x98\x05\0\0\x4b\x06\0\0\xad\x09\0\0\x09\x20\x01\0\xa8\ +\x05\0\0\x4b\x06\0\0\0\0\0\0\0\0\0\0\xd0\x05\0\0\x7e\0\0\0\xeb\x09\0\0\x05\xf4\ +\x01\0\xf8\x05\0\0\x7e\0\0\0\x37\x0a\0\0\x08\xf8\x01\0\x08\x06\0\0\x7e\0\0\0\ +\x4e\x0a\0\0\x2d\x08\x02\0\x18\x06\0\0\x2a\x01\0\0\x60\x01\0\0\x15\x2c\0\0\x20\ +\x06\0\0\x7e\0\0\0\x84\x0a\0\0\x0c\x10\x02\0\x28\x06\0\0\x7e\0\0\0\xbe\x0a\0\0\ +\x0d\x14\x02\0\x40\x06\0\0\x7e\0\0\0\0\x0b\0\0\x09\xe4\x02\0\x60\x06\0\0\x7e\0\ +\0\0\0\0\0\0\0\0\0\0\x88\x06\0\0\x7e\0\0\0\x3e\x0b\0\0\x1d\xec\x02\0\x98\x06\0\ +\0\x7e\0\0\0\x61\x0b\0\0\x05\xf0\x02\0\xb8\x06\0\0\x7e\0\0\0\xbc\x0b\0\0\x05\ +\xf4\x02\0\xe8\x06\0\0\x7e\0\0\0\x02\x0c\0\0\x05\xf8\x02\0\x20\x07\0\0\x2a\x01\ +\0\0\xf9\x01\0\0\x14\x48\0\0\x30\x07\0\0\x7e\0\0\0\x58\x0c\0\0\x0d\x28\x02\0\ +\x38\x07\0\0\x7e\0\0\0\x8c\x0c\0\0\x0d\x2c\x02\0\x50\x07\0\0\x2a\x01\0\0\xcf\ +\x02\0\0\x15\x64\0\0\x60\x07\0\0\x7e\0\0\0\xce\x0c\0\0\x0d\x54\x02\0\x68\x07\0\ +\0\x7e\0\0\0\x02\x0d\0\0\x0d\x58\x02\0\x78\x07\0\0\x7e\0\0\0\0\0\0\0\0\0\0\0\ +\x88\x07\0\0\x7e\0\0\0\x44\x0d\0\0\x33\x68\x02\0\x98\x07\0\0\x7e\0\0\0\x44\x0d\ +\0\0\x38\x68\x02\0\xb0\x07\0\0\x7e\0\0\0\x44\x0d\0\0\x18\x68\x02\0\xc0\x07\0\0\ +\x7e\0\0\0\x44\x0d\0\0\x2b\x68\x02\0\xc8\x07\0\0\x7e\0\0\0\x44\x0d\0\0\x44\x68\ +\x02\0\xd0\x07\0\0\x7e\0\0\0\x44\x0d\0\0\x48\x68\x02\0\xe0\x07\0\0\x7e\0\0\0\ +\x44\x0d\0\0\x3d\x68\x02\0\x08\x08\0\0\x7e\0\0\0\x91\x0d\0\0\x1c\x7c\x02\0\x10\ +\x08\0\0\x7e\0\0\0\xc4\x0d\0\0\x0d\x80\x02\0\x30\x08\0\0\x4b\x06\0\0\xff\x0d\0\ +\0\x05\x40\x01\0\x58\x09\0\0\x4b\x06\0\0\x42\x0e\0\0\x05\x44\x01\0\xb0\x09\0\0\ +\x4b\x06\0\0\x82\x0e\0\0\x05\x48\x01\0\x08\x0a\0\0\x4b\x06\0\0\xc7\x0e\0\0\x05\ +\x58\x01\0\x38\x0a\0\0\x4b\x06\0\0\x14\x0f\0\0\x17\x5c\x01\0\x58\x0a\0\0\x4b\ +\x06\0\0\x14\x0f\0\0\x15\x5c\x01\0\x68\x0a\0\0\x4b\x06\0\0\x56\x0f\0\0\x13\x64\ +\x01\0\x70\x0a\0\0\x6d\x0f\0\0\xa7\x0f\0\0\x05\xe0\0\0\xa8\x0a\0\0\x6d\x0f\0\0\ +\x03\x10\0\0\x09\xf0\0\0\x68\x0e\0\0\x6d\x0f\0\0\x2f\x10\0\0\x0d\xfc\0\0\x98\ +\x0e\0\0\x6d\x0f\0\0\x6e\x10\0\0\x12\xac\0\0\xb0\x0e\0\0\x6d\x0f\0\0\x6e\x10\0\ +\0\x0d\xac\0\0\xc8\x0e\0\0\x6d\x0f\0\0\x6e\x10\0\0\x12\xac\0\0\xe0\x0e\0\0\x6d\ +\x0f\0\0\x6e\x10\0\0\x0d\xac\0\0\xf8\x0e\0\0\x6d\x0f\0\0\x6e\x10\0\0\x12\xac\0\ +\0\x10\x0f\0\0\x6d\x0f\0\0\x6e\x10\0\0\x0d\xac\0\0\x48\x0f\0\0\x6d\x0f\0\0\x6e\ +\x10\0\0\x12\xac\0\0\x50\x0f\0\0\x6d\x0f\0\0\x6e\x10\0\0\x0d\xac\0\0\x68\x0f\0\ +\0\x4b\x06\0\0\x87\x10\0\0\x10\x6c\x01\0\x70\x0f\0\0\x6d\x0f\0\0\x9e\x10\0\0\ +\x0d\0\x01\0\x78\x0f\0\0\x4b\x06\0\0\xc3\x10\0\0\x05\x70\x01\0\xc0\x0f\0\0\x7e\ +\0\0\0\0\0\0\0\0\0\0\0\xd0\x0f\0\0\x7e\0\0\0\x0f\x11\0\0\x3b\xa8\x02\0\xe0\x0f\ +\0\0\x7e\0\0\0\x0f\x11\0\0\x0c\xa8\x02\0\xe8\x0f\0\0\x7e\0\0\0\x59\x11\0\0\x0d\ +\xac\x02\0\0\x10\0\0\x2a\x01\0\0\xa5\x04\0\0\x18\x80\0\0\x28\x10\0\0\x7e\0\0\0\ +\x9b\x11\0\0\x0d\xbc\x02\0\x30\x10\0\0\x7e\0\0\0\xe2\x11\0\0\x0d\xc0\x02\0\x60\ +\x10\0\0\x7e\0\0\0\x24\x12\0\0\x14\xd4\x02\0\x70\x10\0\0\x7e\0\0\0\x3f\x12\0\0\ +\x14\xd0\x02\0\x78\x10\0\0\x7e\0\0\0\x59\x12\0\0\x09\xdc\x02\0\0\0\0\0\0\0\0\0\ +\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x28\x04\0\0\0\0\x02\0\xe0\0\0\0\0\0\0\0\ +\0\0\0\0\0\0\0\0\xc4\x03\0\0\0\0\x02\0\xf0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x07\ +\x03\0\0\0\0\x02\0\x30\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x34\x02\0\0\0\0\x02\0\ +\xa0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x61\x01\0\0\0\0\x02\0\xe0\x01\0\0\0\0\0\0\ +\0\0\0\0\0\0\0\0\x0f\x01\0\0\0\0\x02\0\x30\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc3\ +\0\0\0\0\0\x02\0\x48\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x3c\x03\0\0\0\0\x02\0\x50\ +\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\x02\0\0\0\0\x02\0\0\x05\0\0\0\0\0\0\0\0\0\0\ +\0\0\0\0\xa5\x01\0\0\0\0\x02\0\x60\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x07\x01\0\0\ +\0\0\x02\0\x80\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x09\x04\0\0\0\0\x02\0\xa8\x05\0\ +\0\0\0\0\0\0\0\0\0\0\0\0\0\xa5\x03\0\0\0\0\x02\0\xd0\x05\0\0\0\0\0\0\0\0\0\0\0\ +\0\0\0\x78\x02\0\0\0\0\x02\0\x40\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x07\x02\0\0\0\ +\0\x02\0\x80\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9d\x01\0\0\0\0\x02\0\x20\x07\0\0\ +\0\0\0\0\0\0\0\0\0\0\0\0\xff\0\0\0\0\0\x02\0\x50\x07\0\0\0\0\0\0\0\0\0\0\0\0\0\ +\0\x69\x02\0\0\0\0\x02\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x04\0\0\0\0\x02\ +\0\x78\x07\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9d\x03\0\0\0\0\x02\0\x88\x07\0\0\0\0\0\ +\0\0\0\0\0\0\0\0\0\xda\x02\0\0\0\0\x02\0\x30\x08\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ +\xff\x01\0\0\0\0\x02\0\xc8\x0e\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x44\x01\0\0\0\0\x02\ +\0\xf8\x0e\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xbb\0\0\0\0\0\x02\0\x28\x0f\0\0\0\0\0\0\ +\0\0\0\0\0\0\0\0\xf9\x03\0\0\0\0\x02\0\xb8\x0f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x43\ +\x03\0\0\0\0\x02\0\0\x10\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x70\x02\0\0\0\0\x02\0\x48\ +\x10\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x96\x01\0\0\0\0\x02\0\xa8\0\0\0\0\0\0\0\0\0\0\ +\0\0\0\0\0\xf8\0\0\0\0\0\x02\0\xd0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xb4\0\0\0\0\0\ +\x02\0\xd8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x3a\0\0\0\x01\0\x04\0\x52\x02\0\0\0\0\ +\0\0\x34\0\0\0\0\0\0\0\x4b\x03\0\0\x01\0\x04\0\x86\x02\0\0\0\0\0\0\x26\0\0\0\0\ +\0\0\0\xe2\x02\0\0\x01\0\x04\0\xac\x02\0\0\0\0\0\0\x26\0\0\0\0\0\0\0\x88\x02\0\ +\0\x01\0\x04\0\xd2\x02\0\0\0\0\0\0\x26\0\0\0\0\0\0\0\x0f\x02\0\0\x01\0\x04\0\ +\xf8\x02\0\0\0\0\0\0\x19\0\0\0\0\0\0\0\xad\x01\0\0\x01\0\x04\0\x11\x03\0\0\0\0\ +\0\0\x18\0\0\0\0\0\0\0\x14\0\0\0\x01\0\x04\0\x29\x03\0\0\0\0\0\0\x2a\0\0\0\0\0\ +\0\0\x4c\x01\0\0\x01\0\x04\0\x53\x03\0\0\0\0\0\0\x09\0\0\0\0\0\0\0\x26\0\0\0\ +\x01\0\x04\0\0\0\0\0\0\0\0\0\x13\0\0\0\0\0\0\0\xe3\x03\0\0\x01\0\x04\0\x13\0\0\ +\0\0\0\0\0\x02\0\0\0\0\0\0\0\x30\x04\0\0\x01\0\x04\0\x7a\0\0\0\0\0\0\0\x2e\0\0\ +\0\0\0\0\0\xcc\x03\0\0\x01\0\x04\0\xa8\0\0\0\0\0\0\0\x26\0\0\0\0\0\0\0\x70\x03\ +\0\0\x01\0\x04\0\xce\0\0\0\0\0\0\0\x26\0\0\0\0\0\0\0\x0f\x03\0\0\x01\0\x04\0\ +\xf4\0\0\0\0\0\0\0\x26\0\0\0\0\0\0\0\xad\x02\0\0\x01\0\x04\0\x1a\x01\0\0\0\0\0\ +\0\x1f\0\0\0\0\0\0\0\x3c\x02\0\0\x01\0\x04\0\x39\x01\0\0\0\0\0\0\x26\0\0\0\0\0\ +\0\0\xd2\x01\0\0\x01\0\x04\0\x5f\x01\0\0\0\0\0\0\x26\0\0\0\0\0\0\0\x69\x01\0\0\ +\x01\0\x04\0\x85\x01\0\0\0\0\0\0\x35\0\0\0\0\0\0\0\x17\x01\0\0\x01\0\x04\0\xba\ +\x01\0\0\0\0\0\0\x26\0\0\0\0\0\0\0\xcb\0\0\0\x01\0\x04\0\xe0\x01\0\0\0\0\0\0\ +\x29\0\0\0\0\0\0\0\x87\x03\0\0\x01\0\x04\0\x15\0\0\0\0\0\0\0\x02\0\0\0\0\0\0\0\ +\x11\x04\0\0\x01\0\x04\0\x09\x02\0\0\0\0\0\0\x1f\0\0\0\0\0\0\0\xad\x03\0\0\x01\ +\0\x04\0\x28\x02\0\0\0\0\0\0\x2a\0\0\0\0\0\0\0\x26\x03\0\0\x01\0\x04\0\x17\0\0\ +\0\0\0\0\0\x02\0\0\0\0\0\0\0\xc4\x02\0\0\x01\0\x04\0\x19\0\0\0\0\0\0\0\x06\0\0\ +\0\0\0\0\0\x53\x02\0\0\x01\0\x04\0\x1f\0\0\0\0\0\0\0\x02\0\0\0\0\0\0\0\xe9\x01\ +\0\0\x01\0\x04\0\x21\0\0\0\0\0\0\0\x02\0\0\0\0\0\0\0\x80\x01\0\0\x01\0\x04\0\ +\x23\0\0\0\0\0\0\0\x36\0\0\0\0\0\0\0\x2e\x01\0\0\x01\0\x04\0\x59\0\0\0\0\0\0\0\ +\x02\0\0\0\0\0\0\0\xe2\0\0\0\x01\0\x04\0\x5b\0\0\0\0\0\0\0\x1f\0\0\0\0\0\0\0\0\ +\0\0\0\x03\0\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\x04\0\0\0\0\0\ +\0\0\0\0\0\0\0\0\0\0\0\0\xac\0\0\0\x11\0\x03\0\0\0\0\0\0\0\0\0\x0d\0\0\0\0\0\0\ +\0\x77\0\0\0\x12\0\x02\0\0\0\0\0\0\0\0\0\xb8\x10\0\0\0\0\0\0\x30\0\0\0\0\0\0\0\ +\x01\0\0\0\x3e\0\0\0\x68\0\0\0\0\0\0\0\x01\0\0\0\x3e\0\0\0\x90\0\0\0\0\0\0\0\ +\x01\0\0\0\x3e\0\0\0\xc0\0\0\0\0\0\0\0\x01\0\0\0\x3e\0\0\0\x08\x01\0\0\0\0\0\0\ +\x01\0\0\0\x3e\0\0\0\x88\x01\0\0\0\0\0\0\x01\0\0\0\x3e\0\0\0\xc8\x01\0\0\0\0\0\ +\0\x01\0\0\0\x3e\0\0\0\xe8\x01\0\0\0\0\0\0\x01\0\0\0\x3e\0\0\0\x30\x02\0\0\0\0\ +\0\0\x01\0\0\0\x3e\0\0\0\x78\x02\0\0\0\0\0\0\x01\0\0\0\x3e\0\0\0\xb8\x04\0\0\0\ +\0\0\0\x01\0\0\0\x3e\0\0\0\x48\x05\0\0\0\0\0\0\x01\0\0\0\x3e\0\0\0\x68\x05\0\0\ +\0\0\0\0\x01\0\0\0\x3e\0\0\0\x98\x05\0\0\0\0\0\0\x01\0\0\0\x3e\0\0\0\xd0\x05\0\ +\0\0\0\0\0\x01\0\0\0\x3e\0\0\0\x28\x06\0\0\0\0\0\0\x01\0\0\0\x3e\0\0\0\x40\x06\ +\0\0\0\0\0\0\x01\0\0\0\x3e\0\0\0\x98\x06\0\0\0\0\0\0\x01\0\0\0\x3e\0\0\0\xb8\ +\x06\0\0\0\0\0\0\x01\0\0\0\x3e\0\0\0\xf0\x06\0\0\0\0\0\0\x01\0\0\0\x3e\0\0\0\ +\x38\x07\0\0\0\0\0\0\x01\0\0\0\x3e\0\0\0\x68\x07\0\0\0\0\0\0\x01\0\0\0\x3e\0\0\ +\0\x10\x08\0\0\0\0\0\0\x01\0\0\0\x3e\0\0\0\x18\x0a\0\0\0\0\0\0\x01\0\0\0\x3e\0\ +\0\0\x70\x0a\0\0\0\0\0\0\x01\0\0\0\x3e\0\0\0\xb0\x0a\0\0\0\0\0\0\x01\0\0\0\x3e\ +\0\0\0\xe0\x0a\0\0\0\0\0\0\x01\0\0\0\x3e\0\0\0\x10\x0b\0\0\0\0\0\0\x01\0\0\0\ +\x3e\0\0\0\x40\x0b\0\0\0\0\0\0\x01\0\0\0\x3e\0\0\0\x70\x0b\0\0\0\0\0\0\x01\0\0\ +\0\x3e\0\0\0\xa0\x0b\0\0\0\0\0\0\x01\0\0\0\x3e\0\0\0\xd0\x0b\0\0\0\0\0\0\x01\0\ +\0\0\x3e\0\0\0\0\x0c\0\0\0\0\0\0\x01\0\0\0\x3e\0\0\0\x30\x0c\0\0\0\0\0\0\x01\0\ +\0\0\x3e\0\0\0\x60\x0c\0\0\0\0\0\0\x01\0\0\0\x3e\0\0\0\x90\x0c\0\0\0\0\0\0\x01\ +\0\0\0\x3e\0\0\0\xc0\x0c\0\0\0\0\0\0\x01\0\0\0\x3e\0\0\0\xf0\x0c\0\0\0\0\0\0\ +\x01\0\0\0\x3e\0\0\0\x20\x0d\0\0\0\0\0\0\x01\0\0\0\x3e\0\0\0\x50\x0d\0\0\0\0\0\ +\0\x01\0\0\0\x3e\0\0\0\x80\x0d\0\0\0\0\0\0\x01\0\0\0\x3e\0\0\0\xb0\x0d\0\0\0\0\ +\0\0\x01\0\0\0\x3e\0\0\0\xe0\x0d\0\0\0\0\0\0\x01\0\0\0\x3e\0\0\0\x10\x0e\0\0\0\ +\0\0\0\x01\0\0\0\x3e\0\0\0\x40\x0e\0\0\0\0\0\0\x01\0\0\0\x3e\0\0\0\x80\x0f\0\0\ +\0\0\0\0\x01\0\0\0\x3e\0\0\0\xe8\x0f\0\0\0\0\0\0\x01\0\0\0\x3e\0\0\0\x30\x10\0\ +\0\0\0\0\0\x01\0\0\0\x3e\0\0\0\x78\x10\0\0\0\0\0\0\x01\0\0\0\x3e\0\0\0\x58\x04\ +\0\0\0\0\0\0\x0a\0\0\0\x3e\0\0\0\x64\x04\0\0\0\0\0\0\x0a\0\0\0\x3e\0\0\0\x70\ +\x04\0\0\0\0\0\0\x0a\0\0\0\x3e\0\0\0\x7c\x04\0\0\0\0\0\0\x0a\0\0\0\x3e\0\0\0\ +\x88\x04\0\0\0\0\0\0\x0a\0\0\0\x3e\0\0\0\x94\x04\0\0\0\0\0\0\x0a\0\0\0\x3e\0\0\ +\0\xa0\x04\0\0\0\0\0\0\x0a\0\0\0\x3e\0\0\0\xac\x04\0\0\0\0\0\0\x0a\0\0\0\x3e\0\ +\0\0\xb8\x04\0\0\0\0\0\0\x0a\0\0\0\x3e\0\0\0\xc4\x04\0\0\0\0\0\0\x0a\0\0\0\x3e\ +\0\0\0\xd0\x04\0\0\0\0\0\0\x0a\0\0\0\x3e\0\0\0\xdc\x04\0\0\0\0\0\0\x0a\0\0\0\ +\x3e\0\0\0\xe8\x04\0\0\0\0\0\0\x0a\0\0\0\x3e\0\0\0\xf4\x04\0\0\0\0\0\0\x0a\0\0\ +\0\x3e\0\0\0\0\x05\0\0\0\0\0\0\x0a\0\0\0\x3e\0\0\0\x0c\x05\0\0\0\0\0\0\x0a\0\0\ +\0\x3e\0\0\0\x18\x05\0\0\0\0\0\0\x0a\0\0\0\x3e\0\0\0\x24\x05\0\0\0\0\0\0\x0a\0\ +\0\0\x3e\0\0\0\x30\x05\0\0\0\0\0\0\x0a\0\0\0\x3e\0\0\0\x3c\x05\0\0\0\0\0\0\x0a\ +\0\0\0\x3e\0\0\0\x48\x05\0\0\0\0\0\0\x0a\0\0\0\x3e\0\0\0\x54\x05\0\0\0\0\0\0\ +\x0a\0\0\0\x3e\0\0\0\x60\x05\0\0\0\0\0\0\x0a\0\0\0\x3e\0\0\0\x6c\x05\0\0\0\0\0\ +\0\x0a\0\0\0\x3e\0\0\0\x78\x05\0\0\0\0\0\0\x0a\0\0\0\x3e\0\0\0\x84\x05\0\0\0\0\ +\0\0\x0a\0\0\0\x3e\0\0\0\x90\x05\0\0\0\0\0\0\x0a\0\0\0\x3e\0\0\0\x9c\x05\0\0\0\ +\0\0\0\x0a\0\0\0\x3e\0\0\0\xa8\x05\0\0\0\0\0\0\x0a\0\0\0\x3e\0\0\0\xb4\x05\0\0\ +\0\0\0\0\x0a\0\0\0\x3e\0\0\0\xcc\x05\0\0\0\0\0\0\0\0\0\0\x3f\0\0\0\x2c\0\0\0\0\ +\0\0\0\0\0\0\0\x3d\0\0\0\x40\0\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x50\0\0\0\0\0\0\0\ +\0\0\0\0\x3d\0\0\0\x60\0\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x70\0\0\0\0\0\0\0\0\0\0\ +\0\x3d\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x90\0\0\0\0\0\0\0\0\0\0\0\x3d\ +\0\0\0\xa0\0\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\xb0\0\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\ +\xc0\0\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\xd0\0\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\xe0\0\ +\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\xf0\0\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\0\x01\0\0\0\ +\0\0\0\0\0\0\0\x3d\0\0\0\x10\x01\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x20\x01\0\0\0\0\ +\0\0\0\0\0\0\x3d\0\0\0\x30\x01\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x40\x01\0\0\0\0\0\ +\0\0\0\0\0\x3d\0\0\0\x50\x01\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x60\x01\0\0\0\0\0\0\ +\0\0\0\0\x3d\0\0\0\x70\x01\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x80\x01\0\0\0\0\0\0\0\ +\0\0\0\x3d\0\0\0\x90\x01\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\xa0\x01\0\0\0\0\0\0\0\0\ +\0\0\x3d\0\0\0\xb0\x01\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\xc0\x01\0\0\0\0\0\0\0\0\0\ +\0\x3d\0\0\0\xd0\x01\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\xe0\x01\0\0\0\0\0\0\0\0\0\0\ +\x3d\0\0\0\xf0\x01\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\0\x02\0\0\0\0\0\0\0\0\0\0\x3d\ +\0\0\0\x10\x02\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x20\x02\0\0\0\0\0\0\0\0\0\0\x3d\0\ +\0\0\x30\x02\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x40\x02\0\0\0\0\0\0\0\0\0\0\x3d\0\0\ +\0\x50\x02\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x60\x02\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\ +\x70\x02\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x80\x02\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\ +\x90\x02\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\xa0\x02\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\ +\xb0\x02\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\xc0\x02\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\ +\xd0\x02\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\xe0\x02\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\ +\xf0\x02\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x10\ +\x03\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x20\x03\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x30\ +\x03\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x40\x03\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x50\ +\x03\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x60\x03\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x70\ +\x03\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x80\x03\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x90\ +\x03\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\xa0\x03\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\xb0\ +\x03\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\xc0\x03\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\xd0\ +\x03\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\xe0\x03\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\xf0\ +\x03\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\0\x04\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x10\x04\ +\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x20\x04\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x30\x04\0\ +\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x40\x04\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x50\x04\0\0\ +\0\0\0\0\0\0\0\0\x3d\0\0\0\x60\x04\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x70\x04\0\0\0\ +\0\0\0\0\0\0\0\x3d\0\0\0\x80\x04\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x90\x04\0\0\0\0\ +\0\0\0\0\0\0\x3d\0\0\0\xa0\x04\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\xb0\x04\0\0\0\0\0\ +\0\0\0\0\0\x3d\0\0\0\xc0\x04\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\xd0\x04\0\0\0\0\0\0\ +\0\0\0\0\x3d\0\0\0\xe0\x04\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\xf0\x04\0\0\0\0\0\0\0\ +\0\0\0\x3d\0\0\0\0\x05\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x10\x05\0\0\0\0\0\0\0\0\0\ +\0\x3d\0\0\0\x20\x05\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x30\x05\0\0\0\0\0\0\0\0\0\0\ +\x3d\0\0\0\x40\x05\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x50\x05\0\0\0\0\0\0\0\0\0\0\ +\x3d\0\0\0\x60\x05\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x70\x05\0\0\0\0\0\0\0\0\0\0\ +\x3d\0\0\0\x80\x05\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x90\x05\0\0\0\0\0\0\0\0\0\0\ +\x3d\0\0\0\xa0\x05\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\xb0\x05\0\0\0\0\0\0\0\0\0\0\ +\x3d\0\0\0\xc0\x05\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\xd0\x05\0\0\0\0\0\0\0\0\0\0\ +\x3d\0\0\0\xe0\x05\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\xf0\x05\0\0\0\0\0\0\0\0\0\0\ +\x3d\0\0\0\0\x06\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x10\x06\0\0\0\0\0\0\0\0\0\0\x3d\ +\0\0\0\x20\x06\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x30\x06\0\0\0\0\0\0\0\0\0\0\x3d\0\ +\0\0\x40\x06\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x50\x06\0\0\0\0\0\0\0\0\0\0\x3d\0\0\ +\0\x60\x06\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x70\x06\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\ +\x80\x06\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x90\x06\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\ +\xa0\x06\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\xb0\x06\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\ +\xc0\x06\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\xd0\x06\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\ +\xe0\x06\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\xf0\x06\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\0\ +\x07\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x10\x07\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x20\ +\x07\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x30\x07\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x40\ +\x07\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x50\x07\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x60\ +\x07\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x70\x07\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x80\ +\x07\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x90\x07\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\xa0\ +\x07\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\xb0\x07\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\xc0\ +\x07\0\0\0\0\0\0\0\0\0\0\x3d\0\0\0\x47\x46\x28\x29\x34\x37\x38\x39\x3a\x3b\x3c\ +\x3d\x2a\x2b\x2c\x2d\x2e\x2f\x30\x31\x32\x33\x35\x36\x20\x21\x22\x23\x24\x25\ +\x26\x27\0\x2e\x74\x65\x78\x74\0\x2e\x72\x65\x6c\x2e\x42\x54\x46\x2e\x65\x78\ +\x74\0\x69\x70\x76\x34\x5f\x63\x73\x75\x6d\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\0\ +\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\0\ +\x65\x78\x70\x61\x6e\x64\x5f\x74\x63\x70\x5f\x70\x61\x63\x6b\x65\x74\x5f\x70\ +\x61\x79\x6c\x6f\x61\x64\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\0\x2e\x72\x65\x6c\x78\ +\x64\x70\x5f\x70\x72\x6f\x67\0\x2e\x6c\x6c\x76\x6d\x5f\x61\x64\x64\x72\x73\x69\ +\x67\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\0\x6c\x69\x63\x65\x6e\x73\ +\x65\0\x2e\x73\x74\x72\x74\x61\x62\0\x2e\x73\x79\x6d\x74\x61\x62\0\x2e\x72\x6f\ +\x64\x61\x74\x61\0\x2e\x72\x65\x6c\x2e\x42\x54\x46\0\x4c\x49\x43\x45\x4e\x53\ +\x45\0\x4c\x42\x42\x30\x5f\x39\0\x4c\x42\x42\x30\x5f\x34\x39\0\x4c\x42\x42\x30\ +\x5f\x31\x39\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\ +\x66\x6d\x74\x2e\x31\x39\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\ +\x5f\x5f\x5f\x66\x6d\x74\x2e\x39\0\x4c\x42\x42\x30\x5f\x38\0\x4c\x42\x42\x30\ +\x5f\x33\x38\0\x4c\x42\x42\x30\x5f\x32\x38\0\x4c\x42\x42\x30\x5f\x31\x38\0\x78\ +\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\ +\x31\x38\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\ +\x6d\x74\x2e\x38\0\x4c\x42\x42\x30\x5f\x34\x37\0\x69\x70\x76\x34\x5f\x63\x73\ +\x75\x6d\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x32\x37\0\x4c\x42\x42\x30\x5f\x31\ +\x37\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\ +\x74\x2e\x31\x37\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\ +\x5f\x66\x6d\x74\x2e\x37\0\x4c\x42\x42\x30\x5f\x36\0\x4c\x42\x42\x30\x5f\x33\ +\x36\0\x4c\x42\x42\x30\x5f\x32\x36\0\x65\x78\x70\x61\x6e\x64\x5f\x74\x63\x70\ +\x5f\x70\x61\x63\x6b\x65\x74\x5f\x70\x61\x79\x6c\x6f\x61\x64\x2e\x5f\x5f\x5f\ +\x5f\x66\x6d\x74\x2e\x32\x36\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\ +\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x31\x36\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\ +\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x36\0\x4c\x42\x42\x30\x5f\x34\x35\ +\0\x4c\x42\x42\x30\x5f\x33\x35\0\x65\x78\x70\x61\x6e\x64\x5f\x74\x63\x70\x5f\ +\x70\x61\x63\x6b\x65\x74\x5f\x70\x61\x79\x6c\x6f\x61\x64\x2e\x5f\x5f\x5f\x5f\ +\x66\x6d\x74\x2e\x32\x35\0\x4c\x42\x42\x30\x5f\x31\x35\0\x78\x64\x70\x5f\x72\ +\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x31\x35\0\x78\x64\ +\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x35\0\ +\x4c\x42\x42\x30\x5f\x34\0\x4c\x42\x42\x30\x5f\x35\x34\0\x4c\x42\x42\x30\x5f\ +\x33\x34\0\x4c\x42\x42\x30\x5f\x32\x34\0\x65\x78\x70\x61\x6e\x64\x5f\x74\x63\ +\x70\x5f\x70\x61\x63\x6b\x65\x74\x5f\x70\x61\x79\x6c\x6f\x61\x64\x2e\x5f\x5f\ +\x5f\x5f\x66\x6d\x74\x2e\x32\x34\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\ +\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x31\x34\0\x78\x64\x70\x5f\x72\x65\x63\x65\ +\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x34\0\x4c\x42\x42\x30\x5f\x34\ +\x33\0\x65\x78\x70\x61\x6e\x64\x5f\x74\x63\x70\x5f\x70\x61\x63\x6b\x65\x74\x5f\ +\x70\x61\x79\x6c\x6f\x61\x64\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x32\x33\0\x4c\ +\x42\x42\x30\x5f\x31\x33\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\ +\x5f\x5f\x5f\x66\x6d\x74\x2e\x31\x33\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\ +\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x33\0\x4c\x42\x42\x30\x5f\x32\0\x4c\ +\x42\x42\x30\x5f\x35\x32\0\x65\x78\x70\x61\x6e\x64\x5f\x74\x63\x70\x5f\x70\x61\ +\x63\x6b\x65\x74\x5f\x70\x61\x79\x6c\x6f\x61\x64\x2e\x5f\x5f\x5f\x5f\x66\x6d\ +\x74\x2e\x32\x32\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\ +\x5f\x66\x6d\x74\x2e\x31\x32\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\ +\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x32\0\x4c\x42\x42\x30\x5f\x34\x31\0\x4c\x42\ +\x42\x30\x5f\x33\x31\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\ +\x5f\x5f\x66\x6d\x74\x2e\x32\x31\0\x4c\x42\x42\x30\x5f\x31\x31\0\x78\x64\x70\ +\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x31\x31\0\ \x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\ -\x2e\x31\x32\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\ -\x66\x6d\x74\x2e\x32\0\x4c\x42\x42\x30\x5f\x34\x31\0\x4c\x42\x42\x30\x5f\x32\ -\x31\0\x65\x78\x70\x61\x6e\x64\x5f\x74\x63\x70\x5f\x70\x61\x63\x6b\x65\x74\x5f\ -\x70\x61\x79\x6c\x6f\x61\x64\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x32\x31\0\x4c\ -\x42\x42\x30\x5f\x31\x31\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\ -\x5f\x5f\x5f\x66\x6d\x74\x2e\x31\x31\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\ -\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x31\0\x4c\x42\x42\x30\x5f\x35\x30\0\ -\x4c\x42\x42\x30\x5f\x33\x30\0\x63\x73\x75\x6d\x5f\x66\x6f\x6c\x64\x5f\x68\x65\ -\x6c\x70\x65\x72\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x33\x30\0\x4c\x42\x42\x30\ -\x5f\x32\x30\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\ -\x66\x6d\x74\x2e\x32\x30\0\x4c\x42\x42\x30\x5f\x31\x30\0\x78\x64\x70\x5f\x72\ -\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x31\x30\0\0\0\0\0\ +\x2e\x31\0\x4c\x42\x42\x30\x5f\x35\x30\0\x4c\x42\x42\x30\x5f\x34\x30\0\x4c\x42\ +\x42\x30\x5f\x33\x30\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\ +\x5f\x5f\x66\x6d\x74\x2e\x32\x30\0\x4c\x42\x42\x30\x5f\x31\x30\0\x78\x64\x70\ +\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x31\x30\0\ \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ -\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\x01\0\0\0\x06\0\0\0\0\ -\0\0\0\0\0\0\0\0\0\0\0\x40\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x04\0\ -\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x79\0\0\0\x01\0\0\0\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\ -\0\0\x40\0\0\0\0\0\0\0\xc8\x0d\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x08\0\0\0\0\0\0\0\0\ -\0\0\0\0\0\0\0\x9c\0\0\0\x01\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x08\x0e\0\ -\0\0\0\0\0\x0d\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ -\xb4\0\0\0\x01\0\0\0\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x15\x0e\0\0\0\0\0\0\x42\ -\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc0\0\0\0\ -\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x57\x11\0\0\0\0\0\0\xbc\x1c\0\0\0\0\ -\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x0b\0\0\0\x01\0\0\0\0\0\ -\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x13\x2e\0\0\0\0\0\0\x40\x08\0\0\0\0\0\0\0\0\0\0\0\ -\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xac\0\0\0\x02\0\0\0\0\0\0\0\0\0\0\0\0\ -\0\0\0\0\0\0\0\x58\x36\0\0\0\0\0\0\x90\x06\0\0\0\0\0\0\x0c\0\0\0\x44\0\0\0\x08\ -\0\0\0\0\0\0\0\x18\0\0\0\0\0\0\0\x75\0\0\0\x09\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ -\0\0\0\xe8\x3c\0\0\0\0\0\0\x20\x02\0\0\0\0\0\0\x07\0\0\0\x02\0\0\0\x08\0\0\0\0\ -\0\0\0\x10\0\0\0\0\0\0\0\xbc\0\0\0\x09\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ -\x08\x3f\0\0\0\0\0\0\x30\x02\0\0\0\0\0\0\x07\0\0\0\x05\0\0\0\x08\0\0\0\0\0\0\0\ -\x10\0\0\0\0\0\0\0\x07\0\0\0\x09\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x38\x41\ -\0\0\0\0\0\0\x10\x08\0\0\0\0\0\0\x07\0\0\0\x06\0\0\0\x08\0\0\0\0\0\0\0\x10\0\0\ -\0\0\0\0\0\x82\0\0\0\x03\x4c\xff\x6f\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\x48\x49\ -\0\0\0\0\0\0\x24\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ -\0\xa4\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x6c\x49\0\0\0\0\0\0\xba\ -\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"; +\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\x01\0\0\0\x06\0\ +\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x40\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ +\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x60\0\0\0\x01\0\0\0\x06\0\0\0\0\0\0\0\0\0\0\ +\0\0\0\0\0\x40\0\0\0\0\0\0\0\xb8\x10\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x08\0\0\0\0\0\ +\0\0\0\0\0\0\0\0\0\0\x83\0\0\0\x01\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf8\ +\x10\0\0\0\0\0\0\x0d\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\ +\0\0\0\x9b\0\0\0\x01\0\0\0\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\x11\0\0\0\0\0\ +\0\x5c\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xa7\0\ +\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x61\x14\0\0\0\0\0\0\xbc\x1b\0\0\ +\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x0b\0\0\0\x01\0\0\0\ +\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x1d\x30\0\0\0\0\0\0\xd0\x07\0\0\0\0\0\0\0\0\0\ +\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x93\0\0\0\x02\0\0\0\0\0\0\0\0\0\0\ +\0\0\0\0\0\0\0\0\0\xf0\x37\0\0\0\0\0\0\x18\x06\0\0\0\0\0\0\x0c\0\0\0\x3f\0\0\0\ +\x08\0\0\0\0\0\0\0\x18\0\0\0\0\0\0\0\x5c\0\0\0\x09\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ +\0\0\0\0\0\x08\x3e\0\0\0\0\0\0\x10\x03\0\0\0\0\0\0\x07\0\0\0\x02\0\0\0\x08\0\0\ +\0\0\0\0\0\x10\0\0\0\0\0\0\0\xa3\0\0\0\x09\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ +\0\x18\x41\0\0\0\0\0\0\xf0\x01\0\0\0\0\0\0\x07\0\0\0\x05\0\0\0\x08\0\0\0\0\0\0\ +\0\x10\0\0\0\0\0\0\0\x07\0\0\0\x09\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x08\ +\x43\0\0\0\0\0\0\xa0\x07\0\0\0\0\0\0\x07\0\0\0\x06\0\0\0\x08\0\0\0\0\0\0\0\x10\ +\0\0\0\0\0\0\0\x69\0\0\0\x03\x4c\xff\x6f\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\xa8\ +\x4a\0\0\0\0\0\0\x20\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\ +\0\0\0\x8b\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x4a\0\0\0\0\0\0\ +\x47\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"; return 0; err: diff --git a/src/bin/xdp_filter b/src/bin/xdp_filter index 00560b6..1692040 100755 Binary files a/src/bin/xdp_filter and b/src/bin/xdp_filter differ diff --git a/src/ebpf/xdp_filter.bpf.c b/src/ebpf/xdp_filter.bpf.c index 3c9d5d6..04bd304 100644 --- a/src/ebpf/xdp_filter.bpf.c +++ b/src/ebpf/xdp_filter.bpf.c @@ -122,6 +122,7 @@ int xdp_receive(struct xdp_md *ctx) bpf_printk("OLD data_end: %i, payload: %i\n", data_end, payload); struct expand_return ret = expand_tcp_packet_payload(ctx, eth, ip, tcp, 2); + bpf_printk("Control back to main program with retcode %i\n", ret.code); if(ret.code == 0){ //We must check bounds again, otherwise the verifier gets angry ctx = ret.ret_md; @@ -156,14 +157,14 @@ int xdp_receive(struct xdp_md *ctx) //Quite a trick to avoid the verifier complaining when it's clear we are OK with the payload //Line 6367 https://lxr.missinglinkelectronics.com/linux/kernel/bpf/verifier.c if(payload_size < 0|| payload_size>88888){ - bpf_printk("exploding heavily\n"); + bpf_printk("Unlikely you are here, but OK\n"); return XDP_PASS; } - if(payload_size -1 < data_end - (void*)payload ){ + /*if(payload_size -1 < data_end - (void*)payload ){ return XDP_PASS; - } + }*/ - //Revise this, the idea is to use payload_size, but th everifier keeps thinking it will go out of bounds + //Revise this, the idea is to use payload_size, but the verifier keeps thinking it will go out of bounds //Also, note that sizeof(..) is returning strlen +1, but it's ok because //we do not want to write at payload[6] if((void*)payload + sizeof(SECRET_PACKET_PAYLOAD) +1 > data_end){ @@ -176,7 +177,8 @@ int xdp_receive(struct xdp_md *ctx) return XDP_PASS; } char* temp_data = (char*)payload; - payload[5] = 'a'; + payload[4] = 'a'; + payload[5] = '\0'; bpf_printk("BPF finished with ret %i and payload %s of size %i\n ", ret.code, payload, payload_size); }else{ @@ -185,7 +187,7 @@ int xdp_receive(struct xdp_md *ctx) data_len_next = data_end-data; bpf_printk("Previous length: %i, current length: %i\n", data_len_prev, data_len_next); bpf_printk("NEW data_end: %i, payload: %i\n", data_end, payload); - bpf_printk("And on NEW CTX data_end: %i, payload: %i\n", ctx->data_end); + bpf_printk("And on NEW CTX data_end: %i, payload: %i\n", ctx->data_end, payload); char payload_to_write[] = "hello"; /*if (tcp_payload_bound_check(payload, payload_size, data_end)){ diff --git a/src/include/packet/protocol/ip_helper.h b/src/include/packet/protocol/ip_helper.h index 8f661ba..44e744b 100644 --- a/src/include/packet/protocol/ip_helper.h +++ b/src/include/packet/protocol/ip_helper.h @@ -24,7 +24,7 @@ static __always_inline unsigned short checksum(unsigned short *addr, int nbytes) if(nbytes>0){ sum +=htons((unsigned char)*addr); } - + while (sum>>16){ sum = (sum & 0xffff) + (sum >> 16); } @@ -34,30 +34,34 @@ static __always_inline unsigned short checksum(unsigned short *addr, int nbytes) } -static __always_inline uint16_t csum_fold_helper(uint32_t csum) +static __always_inline __u16 csum_fold_helper(__u32 csum) { - bpf_printk("csumA: %u\n", csum & 0xffff); - bpf_printk("csumB: %u\n", csum >> 16); - bpf_printk("csumA+B: %u\n", (csum & 0xffff) + (csum >> 16)); - bpf_printk("csumNEG(A+B): %u\n", ~((csum & 0xffff) + (csum >> 16))); + //return ~((csum & 0xffff) + (csum >> 16)); + //The following solves some errors where the last summatory overflows #pragma unroll - for (int ii = 0; ii < 4; ii++) { - if (csum >> 16) - csum = (csum & 0xffff) + (csum >> 16); + for (int i = 0; i < 4; i ++) { + if (csum >> 16){ + csum = (csum & 0xffff) + (csum >> 16); + } } - return ~csum; + return ~csum; } /** * IP checksum calculation. * Following RFC 1071, using BPFs.* */ -static __always_inline void ipv4_csum(void *data_start, int data_size, uint32_t *csum) +static __always_inline void ipv4_csum(void *data_start, int data_size, __u32 *csum) { - bpf_printk("csum: %u\n", *csum); - *csum = bpf_csum_diff(0, 0, data_start, data_size, *csum); - bpf_printk("csum: %u\n", *csum); + //WITH EBPF HELPERS + bpf_printk("csum: %u for data_start %u, data_size %i\n", *csum, data_start, data_size); + + unsigned char* p = (unsigned char*) data_start; + for(int ii = 0; ii<20; ii++){ + bpf_printk("B%i: %x\n", ii, p[ii]); + } + + *csum = bpf_csum_diff(0, 0, data_start, data_size, *csum); *csum = csum_fold_helper(*csum); - bpf_printk("csum: %u\n", *csum); } #endif \ No newline at end of file diff --git a/src/include/xdp/xdp_helper.h b/src/include/xdp/xdp_helper.h index 7f8ef0c..f99a9aa 100644 --- a/src/include/xdp/xdp_helper.h +++ b/src/include/xdp/xdp_helper.h @@ -85,7 +85,8 @@ static __always_inline struct expand_return expand_tcp_packet_payload(struct xdp //We modify the fields we care about of the headers bpf_printk("before: %i, checksum %u\n", ret.ip->tot_len, ret.ip->check); ret.ip->tot_len = htons(ntohs(ret.ip->tot_len) + more_bytes); - uint32_t csum = 0; + __u32 csum = 0; + ret.ip->check = 0; ipv4_csum(ret.ip, sizeof(struct iphdr), &csum); ret.ip->check = csum; bpf_printk("after: %i, checksum %u\n", ret.ip->tot_len, ret.ip->check); @@ -96,4 +97,8 @@ static __always_inline struct expand_return expand_tcp_packet_payload(struct xdp return ret; } + + + + #endif \ No newline at end of file