* [PATCH] net/tap: Modified TAP BPF program as per the Kernel-version upgrade requirements. @ 2024-01-12 13:48 madhuker.mythri 2024-01-12 16:40 ` Stephen Hemminger ` (6 more replies) 0 siblings, 7 replies; 18+ messages in thread From: madhuker.mythri @ 2024-01-12 13:48 UTC (permalink / raw) To: stephen; +Cc: dev, ferruh.yigit, Madhuker Mythri From: Madhuker Mythri <madhuker.mythri@oracle.com> When multiple queues configured, internally RSS will be enabled and thus TAP BPF RSS byte-code will be loaded on to the Kernel using BPF system calls. Here, the problem is loading the existing BPF byte-code to the Kernel-5.15 and above versions throws errors, i.e: Kernel BPF verifier not accepted this existing BPF byte-code and system calls return error code "-7" as follows: ------------------------ rss_add_actions(): Failed to load BPF section l3_l4 (7): Argument list too long ------------------------ RCA: These errors started coming after from the Kernel-5.15 version, in which lots of new BPF verification restrictions were added for safe execution of byte-code on to the Kernel, due to which existing BPF program verification does not pass. Here are the major BPF verifier restrictions observed: 1) Need to use new BPF maps structure. 2) Kernel SKB data pointer access not allowed, instead use the BPF helper functions. 3) Undefined loops were not allowed(which are bounded by a variable value). 4) unreachable instructions(like: undefined array access). After addressing all these Kernel BPF verifier restrictions able to load the BPF byte-code onto the Kernel successfully. Verified with the latest DPDK-23.11 code, using the python extracted BPF instructions able to load sucessfully on to the Kernel tap device. Bugzilla Id: 1329 Signed-off-by: Madhuker Mythri <madhuker.mythri@oracle.com> --- drivers/net/tap/bpf/Makefile | 6 +- drivers/net/tap/bpf/bpf_api.h | 276 --- drivers/net/tap/bpf/bpf_elf.h | 53 - drivers/net/tap/bpf/tap_bpf_program.c | 233 +-- drivers/net/tap/tap_bpf_api.c | 5 +- drivers/net/tap/tap_bpf_insns.h | 2300 ++++++++++++++----------- 6 files changed, 1416 insertions(+), 1457 deletions(-) delete mode 100644 drivers/net/tap/bpf/bpf_api.h delete mode 100644 drivers/net/tap/bpf/bpf_elf.h diff --git a/drivers/net/tap/bpf/Makefile b/drivers/net/tap/bpf/Makefile index 9efeeb1bc7..218aeaac45 100644 --- a/drivers/net/tap/bpf/Makefile +++ b/drivers/net/tap/bpf/Makefile @@ -6,14 +6,16 @@ CLANG=clang CLANG_OPTS=-O2 TARGET=../tap_bpf_insns.h +CLANG_BPF_SYS_INCLUDES ?= $(shell $(CLANG) -v -E - </dev/null 2>&1 \ + | sed -n '/<...> search starts here:/,/End of search list./{ s| \(/.*\)|-idirafter \1|p }') + all: $(TARGET) clean: rm tap_bpf_program.o $(TARGET) tap_bpf_program.o: tap_bpf_program.c - $(CLANG) $(CLANG_OPTS) -emit-llvm -c $< -o - | \ - llc -march=bpf -filetype=obj -o $@ + $(CLANG) $(CLANG_OPTS) $(CLANG_BPF_SYS_INCLUDES) -target bpf -c $< -g -o $@ $(TARGET): tap_bpf_program.o python3 bpf_extract.py -stap_bpf_program.c -o $@ $< diff --git a/drivers/net/tap/bpf/bpf_api.h b/drivers/net/tap/bpf/bpf_api.h deleted file mode 100644 index 2638a8a4ac..0000000000 --- a/drivers/net/tap/bpf/bpf_api.h +++ /dev/null @@ -1,276 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 or BSD-3-Clause */ - -#ifndef __BPF_API__ -#define __BPF_API__ - -/* Note: - * - * This file can be included into eBPF kernel programs. It contains - * a couple of useful helper functions, map/section ABI (bpf_elf.h), - * misc macros and some eBPF specific LLVM built-ins. - */ - -#include <stdint.h> - -#include <linux/pkt_cls.h> -#include <linux/bpf.h> -#include <linux/filter.h> - -#include <asm/byteorder.h> - -#include "bpf_elf.h" - -/** libbpf pin type. */ -enum libbpf_pin_type { - LIBBPF_PIN_NONE, - /* PIN_BY_NAME: pin maps by name (in /sys/fs/bpf by default) */ - LIBBPF_PIN_BY_NAME, -}; - -/** Type helper macros. */ - -#define __uint(name, val) int (*name)[val] -#define __type(name, val) typeof(val) *name -#define __array(name, val) typeof(val) *name[] - -/** Misc macros. */ - -#ifndef __stringify -# define __stringify(X) #X -#endif - -#ifndef __maybe_unused -# define __maybe_unused __attribute__((__unused__)) -#endif - -#ifndef offsetof -# define offsetof(TYPE, MEMBER) __builtin_offsetof(TYPE, MEMBER) -#endif - -#ifndef likely -# define likely(X) __builtin_expect(!!(X), 1) -#endif - -#ifndef unlikely -# define unlikely(X) __builtin_expect(!!(X), 0) -#endif - -#ifndef htons -# define htons(X) __constant_htons((X)) -#endif - -#ifndef ntohs -# define ntohs(X) __constant_ntohs((X)) -#endif - -#ifndef htonl -# define htonl(X) __constant_htonl((X)) -#endif - -#ifndef ntohl -# define ntohl(X) __constant_ntohl((X)) -#endif - -#ifndef __inline__ -# define __inline__ __attribute__((always_inline)) -#endif - -/** Section helper macros. */ - -#ifndef __section -# define __section(NAME) \ - __attribute__((section(NAME), used)) -#endif - -#ifndef __section_tail -# define __section_tail(ID, KEY) \ - __section(__stringify(ID) "/" __stringify(KEY)) -#endif - -#ifndef __section_xdp_entry -# define __section_xdp_entry \ - __section(ELF_SECTION_PROG) -#endif - -#ifndef __section_cls_entry -# define __section_cls_entry \ - __section(ELF_SECTION_CLASSIFIER) -#endif - -#ifndef __section_act_entry -# define __section_act_entry \ - __section(ELF_SECTION_ACTION) -#endif - -#ifndef __section_lwt_entry -# define __section_lwt_entry \ - __section(ELF_SECTION_PROG) -#endif - -#ifndef __section_license -# define __section_license \ - __section(ELF_SECTION_LICENSE) -#endif - -#ifndef __section_maps -# define __section_maps \ - __section(ELF_SECTION_MAPS) -#endif - -/** Declaration helper macros. */ - -#ifndef BPF_LICENSE -# define BPF_LICENSE(NAME) \ - char ____license[] __section_license = NAME -#endif - -/** Classifier helper */ - -#ifndef BPF_H_DEFAULT -# define BPF_H_DEFAULT -1 -#endif - -/** BPF helper functions for tc. Individual flags are in linux/bpf.h */ - -#ifndef __BPF_FUNC -# define __BPF_FUNC(NAME, ...) \ - (* NAME)(__VA_ARGS__) __maybe_unused -#endif - -#ifndef BPF_FUNC -# define BPF_FUNC(NAME, ...) \ - __BPF_FUNC(NAME, __VA_ARGS__) = (void *) BPF_FUNC_##NAME -#endif - -/* Map access/manipulation */ -static void *BPF_FUNC(map_lookup_elem, void *map, const void *key); -static int BPF_FUNC(map_update_elem, void *map, const void *key, - const void *value, uint32_t flags); -static int BPF_FUNC(map_delete_elem, void *map, const void *key); - -/* Time access */ -static uint64_t BPF_FUNC(ktime_get_ns); - -/* Debugging */ - -/* FIXME: __attribute__ ((format(printf, 1, 3))) not possible unless - * llvm bug https://llvm.org/bugs/show_bug.cgi?id=26243 gets resolved. - * It would require ____fmt to be made const, which generates a reloc - * entry (non-map). - */ -static void BPF_FUNC(trace_printk, const char *fmt, int fmt_size, ...); - -#ifndef printt -# define printt(fmt, ...) \ - ({ \ - char ____fmt[] = fmt; \ - trace_printk(____fmt, sizeof(____fmt), ##__VA_ARGS__); \ - }) -#endif - -/* Random numbers */ -static uint32_t BPF_FUNC(get_prandom_u32); - -/* Tail calls */ -static void BPF_FUNC(tail_call, struct __sk_buff *skb, void *map, - uint32_t index); - -/* System helpers */ -static uint32_t BPF_FUNC(get_smp_processor_id); -static uint32_t BPF_FUNC(get_numa_node_id); - -/* Packet misc meta data */ -static uint32_t BPF_FUNC(get_cgroup_classid, struct __sk_buff *skb); -static int BPF_FUNC(skb_under_cgroup, void *map, uint32_t index); - -static uint32_t BPF_FUNC(get_route_realm, struct __sk_buff *skb); -static uint32_t BPF_FUNC(get_hash_recalc, struct __sk_buff *skb); -static uint32_t BPF_FUNC(set_hash_invalid, struct __sk_buff *skb); - -/* Packet redirection */ -static int BPF_FUNC(redirect, int ifindex, uint32_t flags); -static int BPF_FUNC(clone_redirect, struct __sk_buff *skb, int ifindex, - uint32_t flags); - -/* Packet manipulation */ -static int BPF_FUNC(skb_load_bytes, struct __sk_buff *skb, uint32_t off, - void *to, uint32_t len); -static int BPF_FUNC(skb_store_bytes, struct __sk_buff *skb, uint32_t off, - const void *from, uint32_t len, uint32_t flags); - -static int BPF_FUNC(l3_csum_replace, struct __sk_buff *skb, uint32_t off, - uint32_t from, uint32_t to, uint32_t flags); -static int BPF_FUNC(l4_csum_replace, struct __sk_buff *skb, uint32_t off, - uint32_t from, uint32_t to, uint32_t flags); -static int BPF_FUNC(csum_diff, const void *from, uint32_t from_size, - const void *to, uint32_t to_size, uint32_t seed); -static int BPF_FUNC(csum_update, struct __sk_buff *skb, uint32_t wsum); - -static int BPF_FUNC(skb_change_type, struct __sk_buff *skb, uint32_t type); -static int BPF_FUNC(skb_change_proto, struct __sk_buff *skb, uint32_t proto, - uint32_t flags); -static int BPF_FUNC(skb_change_tail, struct __sk_buff *skb, uint32_t nlen, - uint32_t flags); - -static int BPF_FUNC(skb_pull_data, struct __sk_buff *skb, uint32_t len); - -/* Event notification */ -static int __BPF_FUNC(skb_event_output, struct __sk_buff *skb, void *map, - uint64_t index, const void *data, uint32_t size) = - (void *) BPF_FUNC_perf_event_output; - -/* Packet vlan encap/decap */ -static int BPF_FUNC(skb_vlan_push, struct __sk_buff *skb, uint16_t proto, - uint16_t vlan_tci); -static int BPF_FUNC(skb_vlan_pop, struct __sk_buff *skb); - -/* Packet tunnel encap/decap */ -static int BPF_FUNC(skb_get_tunnel_key, struct __sk_buff *skb, - struct bpf_tunnel_key *to, uint32_t size, uint32_t flags); -static int BPF_FUNC(skb_set_tunnel_key, struct __sk_buff *skb, - const struct bpf_tunnel_key *from, uint32_t size, - uint32_t flags); - -static int BPF_FUNC(skb_get_tunnel_opt, struct __sk_buff *skb, - void *to, uint32_t size); -static int BPF_FUNC(skb_set_tunnel_opt, struct __sk_buff *skb, - const void *from, uint32_t size); - -/** LLVM built-ins, mem*() routines work for constant size */ - -#ifndef lock_xadd -# define lock_xadd(ptr, val) ((void) __sync_fetch_and_add(ptr, val)) -#endif - -#ifndef memset -# define memset(s, c, n) __builtin_memset((s), (c), (n)) -#endif - -#ifndef memcpy -# define memcpy(d, s, n) __builtin_memcpy((d), (s), (n)) -#endif - -#ifndef memmove -# define memmove(d, s, n) __builtin_memmove((d), (s), (n)) -#endif - -/* FIXME: __builtin_memcmp() is not yet fully usable unless llvm bug - * https://llvm.org/bugs/show_bug.cgi?id=26218 gets resolved. Also - * this one would generate a reloc entry (non-map), otherwise. - */ -#if 0 -#ifndef memcmp -# define memcmp(a, b, n) __builtin_memcmp((a), (b), (n)) -#endif -#endif - -unsigned long long load_byte(void *skb, unsigned long long off) - asm ("llvm.bpf.load.byte"); - -unsigned long long load_half(void *skb, unsigned long long off) - asm ("llvm.bpf.load.half"); - -unsigned long long load_word(void *skb, unsigned long long off) - asm ("llvm.bpf.load.word"); - -#endif /* __BPF_API__ */ diff --git a/drivers/net/tap/bpf/bpf_elf.h b/drivers/net/tap/bpf/bpf_elf.h deleted file mode 100644 index ea8a11c95c..0000000000 --- a/drivers/net/tap/bpf/bpf_elf.h +++ /dev/null @@ -1,53 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 or BSD-3-Clause */ -#ifndef __BPF_ELF__ -#define __BPF_ELF__ - -#include <asm/types.h> - -/* Note: - * - * Below ELF section names and bpf_elf_map structure definition - * are not (!) kernel ABI. It's rather a "contract" between the - * application and the BPF loader in tc. For compatibility, the - * section names should stay as-is. Introduction of aliases, if - * needed, are a possibility, though. - */ - -/* ELF section names, etc */ -#define ELF_SECTION_LICENSE "license" -#define ELF_SECTION_MAPS "maps" -#define ELF_SECTION_PROG "prog" -#define ELF_SECTION_CLASSIFIER "classifier" -#define ELF_SECTION_ACTION "action" - -#define ELF_MAX_MAPS 64 -#define ELF_MAX_LICENSE_LEN 128 - -/* Object pinning settings */ -#define PIN_NONE 0 -#define PIN_OBJECT_NS 1 -#define PIN_GLOBAL_NS 2 - -/* ELF map definition */ -struct bpf_elf_map { - __u32 type; - __u32 size_key; - __u32 size_value; - __u32 max_elem; - __u32 flags; - __u32 id; - __u32 pinning; - __u32 inner_id; - __u32 inner_idx; -}; - -#define BPF_ANNOTATE_KV_PAIR(name, type_key, type_val) \ - struct ____btf_map_##name { \ - type_key key; \ - type_val value; \ - }; \ - struct ____btf_map_##name \ - __attribute__ ((section(".maps." #name), used)) \ - ____btf_map_##name = { } - -#endif /* __BPF_ELF__ */ diff --git a/drivers/net/tap/bpf/tap_bpf_program.c b/drivers/net/tap/bpf/tap_bpf_program.c index f05aed021c..00f224f734 100644 --- a/drivers/net/tap/bpf/tap_bpf_program.c +++ b/drivers/net/tap/bpf/tap_bpf_program.c @@ -2,67 +2,42 @@ * Copyright 2017 Mellanox Technologies, Ltd */ -#include <stdint.h> -#include <stdbool.h> -#include <sys/types.h> -#include <sys/socket.h> -#include <asm/types.h> #include <linux/in.h> -#include <linux/if.h> #include <linux/if_ether.h> #include <linux/ip.h> #include <linux/ipv6.h> -#include <linux/if_tunnel.h> -#include <linux/filter.h> - -#include "bpf_api.h" -#include "bpf_elf.h" +#include <linux/udp.h> +#include <linux/bpf.h> +#include <bpf/bpf_helpers.h> +#include <bpf/bpf_tracing.h> +#include <bpf/bpf_endian.h> +#include <linux/pkt_cls.h> #include "../tap_rss.h" -/** Create IPv4 address */ -#define IPv4(a, b, c, d) ((__u32)(((a) & 0xff) << 24) | \ - (((b) & 0xff) << 16) | \ - (((c) & 0xff) << 8) | \ - ((d) & 0xff)) - -#define PORT(a, b) ((__u16)(((a) & 0xff) << 8) | \ - ((b) & 0xff)) - /* * The queue number is offset by a unique QUEUE_OFFSET, to distinguish * packets that have gone through this rule (skb->cb[1] != 0) from others. */ #define QUEUE_OFFSET 0x7cafe800 -#define PIN_GLOBAL_NS 2 -#define KEY_IDX 0 -#define BPF_MAP_ID_KEY 1 +#define IP_MF 0x2000 /** IP header Flags **/ +#define IP_OFFSET 0x1FFF /** IP header fragment offset **/ -struct vlan_hdr { - __be16 proto; - __be16 tci; -}; -struct bpf_elf_map __attribute__((section("maps"), used)) -map_keys = { - .type = BPF_MAP_TYPE_HASH, - .id = BPF_MAP_ID_KEY, - .size_key = sizeof(__u32), - .size_value = sizeof(struct rss_key), - .max_elem = 256, - .pinning = PIN_GLOBAL_NS, -}; +struct { + __uint(type, BPF_MAP_TYPE_HASH); + __type(key, __u32); + __type(value, struct rss_key); + __uint(max_entries, 256); +} map_keys SEC(".maps"); -__section("cls_q") int -match_q(struct __sk_buff *skb) +SEC("cls_q") +int match_q(struct __sk_buff *skb) { __u32 queue = skb->cb[1]; - /* queue is set by tap_flow_bpf_cls_q() before load */ volatile __u32 q = 0xdeadbeef; __u32 match_queue = QUEUE_OFFSET + q; - /* printt("match_q$i() queue = %d\n", queue); */ - if (queue != match_queue) return TC_ACT_OK; @@ -71,7 +46,6 @@ match_q(struct __sk_buff *skb) return TC_ACT_UNSPEC; } - struct ipv4_l3_l4_tuple { __u32 src_addr; __u32 dst_addr; @@ -86,6 +60,16 @@ struct ipv6_l3_l4_tuple { __u16 sport; } __attribute__((packed)); +struct neth { + struct iphdr iph; + struct udphdr udph; +} __attribute__((packed)); + +struct net6h { + struct ipv6hdr ip6h; + struct udphdr udph; +} __attribute__((packed)); + static const __u8 def_rss_key[TAP_RSS_HASH_KEY_SIZE] = { 0xd1, 0x81, 0xc6, 0x2c, 0xf7, 0xf4, 0xdb, 0x5b, @@ -99,18 +83,18 @@ static const __u8 def_rss_key[TAP_RSS_HASH_KEY_SIZE] = { 0x2a, 0xdc, 0x1f, 0xfc, }; -static __u32 __attribute__((always_inline)) -rte_softrss_be(const __u32 *input_tuple, const uint8_t *rss_key, - __u8 input_len) +static __u64 __attribute__((always_inline)) +rte_softrss_be(const __u32 *input_tuple, __u8 input_len) { - __u32 i, j, hash = 0; -#pragma unroll + __u32 i, j; + __u64 hash = 0; +#pragma clang loop unroll(full) for (j = 0; j < input_len; j++) { -#pragma unroll +#pragma clang loop unroll(full) for (i = 0; i < 32; i++) { if (input_tuple[j] & (1U << (31 - i))) { hash ^= ((const __u32 *)def_rss_key)[j] << i | - (__u32)((uint64_t) + (__u32)((__u64) (((const __u32 *)def_rss_key)[j + 1]) >> (32 - i)); } @@ -119,137 +103,76 @@ rte_softrss_be(const __u32 *input_tuple, const uint8_t *rss_key, return hash; } -static int __attribute__((always_inline)) +SEC("l3_l4") +int __attribute__((always_inline)) rss_l3_l4(struct __sk_buff *skb) { - void *data_end = (void *)(long)skb->data_end; - void *data = (void *)(long)skb->data; - __u16 proto = (__u16)skb->protocol; + struct neth nh; + struct net6h n6h; __u32 key_idx = 0xdeadbeef; - __u32 hash; + __u64 hash; struct rss_key *rsskey; - __u64 off = ETH_HLEN; - int j; - __u8 *key = 0; + int j, k, ret; __u32 len; __u32 queue = 0; - bool mf = 0; - __u16 frag_off = 0; - rsskey = map_lookup_elem(&map_keys, &key_idx); - if (!rsskey) { - printt("hash(): rss key is not configured\n"); + rsskey = bpf_map_lookup_elem(&map_keys, &key_idx); + if (rsskey == NULL) { return TC_ACT_OK; } - key = (__u8 *)rsskey->key; - /* Get correct proto for 802.1ad */ - if (skb->vlan_present && skb->vlan_proto == htons(ETH_P_8021AD)) { - if (data + ETH_ALEN * 2 + sizeof(struct vlan_hdr) + - sizeof(proto) > data_end) - return TC_ACT_OK; - proto = *(__u16 *)(data + ETH_ALEN * 2 + - sizeof(struct vlan_hdr)); - off += sizeof(struct vlan_hdr); - } - - if (proto == htons(ETH_P_IP)) { - if (data + off + sizeof(struct iphdr) + sizeof(__u32) - > data_end) - return TC_ACT_OK; - - __u8 *src_dst_addr = data + off + offsetof(struct iphdr, saddr); - __u8 *frag_off_addr = data + off + offsetof(struct iphdr, frag_off); - __u8 *prot_addr = data + off + offsetof(struct iphdr, protocol); - __u8 *src_dst_port = data + off + sizeof(struct iphdr); + if (bpf_skb_load_bytes_relative(skb, 0, &nh, sizeof(nh), BPF_HDR_START_NET)) + return TC_ACT_OK; + if (nh.iph.version == 4) { struct ipv4_l3_l4_tuple v4_tuple = { - .src_addr = IPv4(*(src_dst_addr + 0), - *(src_dst_addr + 1), - *(src_dst_addr + 2), - *(src_dst_addr + 3)), - .dst_addr = IPv4(*(src_dst_addr + 4), - *(src_dst_addr + 5), - *(src_dst_addr + 6), - *(src_dst_addr + 7)), + .src_addr = bpf_ntohl(nh.iph.saddr), + .dst_addr = bpf_ntohl(nh.iph.daddr), .sport = 0, .dport = 0, }; - /** Fetch the L4-payer port numbers only in-case of TCP/UDP - ** and also if the packet is not fragmented. Since fragmented - ** chunks do not have L4 TCP/UDP header. - **/ - if (*prot_addr == IPPROTO_UDP || *prot_addr == IPPROTO_TCP) { - frag_off = PORT(*(frag_off_addr + 0), - *(frag_off_addr + 1)); - mf = frag_off & 0x2000; - frag_off = frag_off & 0x1fff; - if (mf == 0 && frag_off == 0) { - v4_tuple.sport = PORT(*(src_dst_port + 0), - *(src_dst_port + 1)); - v4_tuple.dport = PORT(*(src_dst_port + 2), - *(src_dst_port + 3)); + if (nh.iph.protocol == IPPROTO_UDP || nh.iph.protocol == IPPROTO_TCP) { + /** Is IP fragmented **/ + if ((nh.iph.frag_off & bpf_htons(IP_MF | IP_OFFSET)) == 0) { + v4_tuple.sport = bpf_ntohs(nh.udph.source); + v4_tuple.dport = bpf_ntohs(nh.udph.dest); } } - __u8 input_len = sizeof(v4_tuple) / sizeof(__u32); - if (rsskey->hash_fields & (1 << HASH_FIELD_IPV4_L3)) - input_len--; - hash = rte_softrss_be((__u32 *)&v4_tuple, key, 3); - } else if (proto == htons(ETH_P_IPV6)) { - if (data + off + sizeof(struct ipv6hdr) + - sizeof(__u32) > data_end) - return TC_ACT_OK; - __u8 *src_dst_addr = data + off + - offsetof(struct ipv6hdr, saddr); - __u8 *src_dst_port = data + off + - sizeof(struct ipv6hdr); - __u8 *next_hdr = data + off + - offsetof(struct ipv6hdr, nexthdr); - + hash = rte_softrss_be((__u32 *)&v4_tuple, 3); + } else if (nh.iph.version == 6) { struct ipv6_l3_l4_tuple v6_tuple; - for (j = 0; j < 4; j++) - *((uint32_t *)&v6_tuple.src_addr + j) = - __builtin_bswap32(*((uint32_t *) - src_dst_addr + j)); - for (j = 0; j < 4; j++) - *((uint32_t *)&v6_tuple.dst_addr + j) = - __builtin_bswap32(*((uint32_t *) - src_dst_addr + 4 + j)); - - /** Fetch the L4 header port-numbers only if next-header - * is TCP/UDP **/ - if (*next_hdr == IPPROTO_UDP || *next_hdr == IPPROTO_TCP) { - v6_tuple.sport = PORT(*(src_dst_port + 0), - *(src_dst_port + 1)); - v6_tuple.dport = PORT(*(src_dst_port + 2), - *(src_dst_port + 3)); - } else { + if (bpf_skb_load_bytes_relative(skb, 0, &n6h, sizeof(n6h), BPF_HDR_START_NET)) + return TC_ACT_OK; +#pragma clang loop unroll(full) + for (j = 0; j < 4; j++) { + *((__u32 *)&v6_tuple.src_addr + j) = + bpf_ntohl(n6h.ip6h.saddr.in6_u.u6_addr32[j]); + *((__u32 *)&v6_tuple.dst_addr + j) = + bpf_ntohl(n6h.ip6h.daddr.in6_u.u6_addr32[j]); + } + if (n6h.ip6h.nexthdr == IPPROTO_UDP || n6h.ip6h.nexthdr == IPPROTO_UDP) { + v6_tuple.sport = bpf_ntohs(n6h.udph.source); + v6_tuple.dport = bpf_ntohs(n6h.udph.dest); + } + else { v6_tuple.sport = 0; v6_tuple.dport = 0; } - - __u8 input_len = sizeof(v6_tuple) / sizeof(__u32); - if (rsskey->hash_fields & (1 << HASH_FIELD_IPV6_L3)) - input_len--; - hash = rte_softrss_be((__u32 *)&v6_tuple, key, 9); + hash = rte_softrss_be((__u32 *)&v6_tuple, 9); } else { return TC_ACT_PIPE; } - queue = rsskey->queues[(hash % rsskey->nb_queues) & - (TAP_MAX_QUEUES - 1)]; - skb->cb[1] = QUEUE_OFFSET + queue; - /* printt(">>>>> rss_l3_l4 hash=0x%x queue=%u\n", hash, queue); */ + hash = (hash % rsskey->nb_queues) & (TAP_MAX_QUEUES - 1); +#pragma clang loop unroll(full) + for (k = 0; k < TAP_MAX_QUEUES; k++) { + if(k == hash) + queue = rsskey->queues[k]; + } - return TC_ACT_RECLASSIFY; -} + skb->cb[1] = (__u32)(QUEUE_OFFSET + queue); -#define RSS(L) \ - __section(#L) int \ - L ## _hash(struct __sk_buff *skb) \ - { \ - return rss_ ## L (skb); \ - } + return TC_ACT_RECLASSIFY; -RSS(l3_l4) +} -BPF_LICENSE("Dual BSD/GPL"); +char _license[] SEC("license") = "Dual BSD/GPL"; diff --git a/drivers/net/tap/tap_bpf_api.c b/drivers/net/tap/tap_bpf_api.c index 15283f8917..7e13d4b8b6 100644 --- a/drivers/net/tap/tap_bpf_api.c +++ b/drivers/net/tap/tap_bpf_api.c @@ -48,8 +48,9 @@ int tap_flow_bpf_cls_q(__u32 queue_idx) */ int tap_flow_bpf_calc_l3_l4_hash(__u32 key_idx, int map_fd) { - l3_l4_hash_insns[4].imm = key_idx; - l3_l4_hash_insns[9].imm = map_fd; + l3_l4_hash_insns[1].imm = key_idx; + l3_l4_hash_insns[6].imm = map_fd; + l3_l4_hash_insns[6].src_reg = 1; return bpf_load(BPF_PROG_TYPE_SCHED_ACT, (struct bpf_insn *)l3_l4_hash_insns, diff --git a/drivers/net/tap/tap_bpf_insns.h b/drivers/net/tap/tap_bpf_insns.h index 53fa76c4e6..523dfe7656 100644 --- a/drivers/net/tap/tap_bpf_insns.h +++ b/drivers/net/tap/tap_bpf_insns.h @@ -24,395 +24,411 @@ static struct bpf_insn cls_q_insns[] = { }; static struct bpf_insn l3_l4_hash_insns[] = { - {0xbf, 7, 1, 0, 0x00000000}, - {0x61, 6, 7, 16, 0x00000000}, - {0x61, 8, 7, 76, 0x00000000}, - {0x61, 9, 7, 80, 0x00000000}, + {0xbf, 6, 1, 0, 0x00000000}, {0x18, 1, 0, 0, 0xdeadbeef}, {0x00, 0, 0, 0, 0x00000000}, - {0x63, 10, 1, -4, 0x00000000}, + {0x63, 10, 1, -84, 0x00000000}, {0xbf, 2, 10, 0, 0x00000000}, - {0x07, 2, 0, 0, 0xfffffffc}, + {0x07, 2, 0, 0, 0xffffffac}, {0x18, 1, 0, 0, 0x00000000}, {0x00, 0, 0, 0, 0x00000000}, {0x85, 0, 0, 0, 0x00000001}, - {0x55, 0, 0, 21, 0x00000000}, - {0xb7, 1, 0, 0, 0x00000a64}, - {0x6b, 10, 1, -16, 0x00000000}, - {0x18, 1, 0, 0, 0x69666e6f}, - {0x00, 0, 0, 0, 0x65727567}, - {0x7b, 10, 1, -24, 0x00000000}, - {0x18, 1, 0, 0, 0x6e207369}, - {0x00, 0, 0, 0, 0x6320746f}, - {0x7b, 10, 1, -32, 0x00000000}, - {0x18, 1, 0, 0, 0x20737372}, - {0x00, 0, 0, 0, 0x2079656b}, - {0x7b, 10, 1, -40, 0x00000000}, - {0x18, 1, 0, 0, 0x68736168}, - {0x00, 0, 0, 0, 0x203a2928}, - {0x7b, 10, 1, -48, 0x00000000}, - {0xb7, 7, 0, 0, 0x00000000}, - {0x73, 10, 7, -14, 0x00000000}, - {0xbf, 1, 10, 0, 0x00000000}, - {0x07, 1, 0, 0, 0xffffffd0}, - {0xb7, 2, 0, 0, 0x00000023}, - {0x85, 0, 0, 0, 0x00000006}, - {0x05, 0, 0, 1680, 0x00000000}, - {0xb7, 1, 0, 0, 0x0000000e}, - {0x61, 2, 7, 20, 0x00000000}, - {0x15, 2, 0, 10, 0x00000000}, - {0x61, 2, 7, 28, 0x00000000}, - {0x55, 2, 0, 8, 0x0000a888}, - {0xbf, 2, 7, 0, 0x00000000}, - {0xb7, 7, 0, 0, 0x00000000}, - {0xbf, 1, 8, 0, 0x00000000}, - {0x07, 1, 0, 0, 0x00000012}, - {0x2d, 1, 9, 1670, 0x00000000}, - {0xb7, 1, 0, 0, 0x00000012}, - {0x69, 6, 8, 16, 0x00000000}, - {0xbf, 7, 2, 0, 0x00000000}, - {0x57, 6, 0, 0, 0x0000ffff}, - {0x7b, 10, 7, -56, 0x00000000}, - {0x15, 6, 0, 443, 0x0000dd86}, - {0xb7, 7, 0, 0, 0x00000003}, - {0x55, 6, 0, 1662, 0x00000008}, - {0x0f, 8, 1, 0, 0x00000000}, - {0xb7, 7, 0, 0, 0x00000000}, - {0xbf, 1, 8, 0, 0x00000000}, - {0x07, 1, 0, 0, 0x00000018}, - {0x2d, 1, 9, 1657, 0x00000000}, + {0xbf, 7, 0, 0, 0x00000000}, + {0xb7, 8, 0, 0, 0x00000000}, + {0x15, 7, 0, 2064, 0x00000000}, + {0xbf, 3, 10, 0, 0x00000000}, + {0x07, 3, 0, 0, 0xffffffe0}, + {0xbf, 1, 6, 0, 0x00000000}, + {0xb7, 2, 0, 0, 0x00000000}, + {0xb7, 4, 0, 0, 0x0000001c}, + {0xb7, 5, 0, 0, 0x00000001}, + {0x85, 0, 0, 0, 0x00000044}, + {0x55, 0, 0, 2056, 0x00000000}, + {0x71, 1, 10, -32, 0x00000000}, + {0x77, 1, 0, 0, 0x00000004}, + {0x15, 1, 0, 503, 0x00000006}, + {0xb7, 8, 0, 0, 0x00000003}, + {0x55, 1, 0, 2051, 0x00000004}, {0xb7, 1, 0, 0, 0x00000000}, - {0x71, 3, 8, 12, 0x00000000}, - {0x71, 2, 8, 9, 0x00000000}, + {0x61, 4, 10, -20, 0x00000000}, + {0xdc, 4, 0, 0, 0x00000040}, + {0xc7, 4, 0, 0, 0x00000020}, + {0x71, 2, 10, -23, 0x00000000}, {0x15, 2, 0, 1, 0x00000011}, - {0x55, 2, 0, 21, 0x00000006}, - {0x71, 2, 8, 7, 0x00000000}, - {0x71, 4, 8, 6, 0x00000000}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x67, 5, 0, 0, 0x00000008}, - {0x57, 5, 0, 0, 0x00001f00}, - {0x4f, 5, 2, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000020}, - {0x4f, 4, 5, 0, 0x00000000}, - {0x55, 4, 0, 12, 0x00000000}, - {0xbf, 2, 8, 0, 0x00000000}, - {0x07, 2, 0, 0, 0x00000014}, - {0x71, 4, 2, 0, 0x00000000}, - {0x67, 4, 0, 0, 0x00000018}, - {0x71, 1, 2, 1, 0x00000000}, - {0x67, 1, 0, 0, 0x00000010}, - {0x4f, 1, 4, 0, 0x00000000}, - {0x71, 4, 2, 3, 0x00000000}, - {0x4f, 1, 4, 0, 0x00000000}, - {0x71, 2, 2, 2, 0x00000000}, - {0x67, 2, 0, 0, 0x00000008}, - {0x4f, 1, 2, 0, 0x00000000}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x67, 4, 0, 0, 0x00000038}, - {0xc7, 4, 0, 0, 0x00000038}, + {0x55, 2, 0, 5, 0x00000006}, + {0x69, 2, 10, -26, 0x00000000}, + {0x57, 2, 0, 0, 0x0000ff3f}, + {0x55, 2, 0, 2, 0x00000000}, + {0x61, 1, 10, -12, 0x00000000}, + {0xdc, 1, 0, 0, 0x00000020}, {0xb7, 2, 0, 0, 0x00000000}, + {0xb7, 5, 0, 0, 0x00000000}, {0x65, 4, 0, 1, 0xffffffff}, - {0xb7, 7, 0, 0, 0x2cc681d1}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000040}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x598d03a2}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000020}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xb31a0745}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000010}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x66340e8a}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000008}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xcc681d15}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000004}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x98d03a2b}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000002}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x31a07456}, - {0x71, 4, 8, 13, 0x00000000}, - {0x57, 3, 0, 0, 0x00000001}, + {0xb7, 5, 0, 0, 0x2cc681d1}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x40000000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x6340e8ad}, + {0xa7, 5, 0, 0, 0x598d03a2}, {0xbf, 3, 4, 0, 0x00000000}, - {0x67, 3, 0, 0, 0x00000038}, - {0xc7, 3, 0, 0, 0x00000038}, - {0xbf, 5, 7, 0, 0x00000000}, - {0xa7, 5, 0, 0, 0xc681d15b}, - {0x6d, 2, 3, 1, 0x00000000}, - {0xbf, 5, 7, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x20000000}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xb31a0745}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000040}, + {0x57, 3, 0, 0, 0x10000000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x8d03a2b7}, + {0xa7, 5, 0, 0, 0x66340e8a}, {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000020}, + {0x57, 3, 0, 0, 0x08000000}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xcc681d15}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 3, 0, 0x00000000}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x04000000}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0x98d03a2b}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 3, 0, 0x00000000}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x02000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x31a07456}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x01000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x6340e8ad}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00800000}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xc681d15b}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 3, 0, 0x00000000}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00400000}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0x8d03a2b7}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 3, 0, 0x00000000}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00200000}, {0x15, 3, 0, 1, 0x00000000}, {0xa7, 5, 0, 0, 0x1a07456f}, {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000010}, + {0x57, 3, 0, 0, 0x00100000}, {0x15, 3, 0, 1, 0x00000000}, {0xa7, 5, 0, 0, 0x340e8ade}, {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000008}, + {0x57, 3, 0, 0, 0x00080000}, {0x15, 3, 0, 1, 0x00000000}, {0xa7, 5, 0, 0, 0x681d15bd}, {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000004}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xd03a2b7b}, + {0x57, 3, 0, 0, 0x00040000}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xd03a2b7b}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000002}, + {0x57, 3, 0, 0, 0x00020000}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xa07456f6}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 3, 0, 0x00000000}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00010000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xa07456f6}, - {0x71, 3, 8, 14, 0x00000000}, - {0x57, 4, 0, 0, 0x00000001}, - {0x15, 4, 0, 1, 0x00000000}, {0xa7, 5, 0, 0, 0x40e8aded}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x67, 4, 0, 0, 0x00000038}, - {0xc7, 4, 0, 0, 0x00000038}, - {0xbf, 7, 5, 0, 0x00000000}, - {0xa7, 7, 0, 0, 0x81d15bdb}, - {0x6d, 2, 4, 1, 0x00000000}, - {0xbf, 7, 5, 0, 0x00000000}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000040}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x03a2b7b7}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000020}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x07456f6f}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000010}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x0e8adedf}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000008}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x1d15bdbf}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000004}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x3a2b7b7e}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000002}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x7456f6fd}, - {0x71, 4, 8, 15, 0x00000000}, - {0x57, 3, 0, 0, 0x00000001}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xe8adedfa}, {0xbf, 3, 4, 0, 0x00000000}, - {0x67, 3, 0, 0, 0x00000038}, - {0xc7, 3, 0, 0, 0x00000038}, - {0xbf, 5, 7, 0, 0x00000000}, - {0xa7, 5, 0, 0, 0xd15bdbf4}, - {0x6d, 2, 3, 1, 0x00000000}, - {0xbf, 5, 7, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00008000}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0x81d15bdb}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000040}, + {0x57, 3, 0, 0, 0x00004000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xa2b7b7e9}, + {0xa7, 5, 0, 0, 0x03a2b7b7}, {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000020}, + {0x57, 3, 0, 0, 0x00002000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x456f6fd3}, + {0xa7, 5, 0, 0, 0x07456f6f}, {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000010}, + {0x57, 3, 0, 0, 0x00001000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x8adedfa7}, + {0xa7, 5, 0, 0, 0x0e8adedf}, {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000008}, + {0x57, 3, 0, 0, 0x00000800}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x15bdbf4f}, + {0xa7, 5, 0, 0, 0x1d15bdbf}, {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000004}, + {0x57, 3, 0, 0, 0x00000400}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x2b7b7e9e}, + {0xa7, 5, 0, 0, 0x3a2b7b7e}, {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000002}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x56f6fd3d}, - {0x71, 3, 8, 16, 0x00000000}, - {0x57, 4, 0, 0, 0x00000001}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xadedfa7b}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x67, 4, 0, 0, 0x00000038}, - {0xc7, 4, 0, 0, 0x00000038}, - {0xbf, 7, 5, 0, 0x00000000}, - {0xa7, 7, 0, 0, 0x5bdbf4f7}, - {0x6d, 2, 4, 1, 0x00000000}, - {0xbf, 7, 5, 0, 0x00000000}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000040}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xb7b7e9ef}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000020}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x6f6fd3df}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000010}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xdedfa7bf}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000008}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xbdbf4f7f}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000004}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x7b7e9eff}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000002}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xf6fd3dff}, - {0x71, 4, 8, 17, 0x00000000}, - {0x57, 3, 0, 0, 0x00000001}, + {0x57, 3, 0, 0, 0x00000200}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xedfa7bfe}, + {0xa7, 5, 0, 0, 0x7456f6fd}, {0xbf, 3, 4, 0, 0x00000000}, - {0x67, 3, 0, 0, 0x00000038}, - {0xc7, 3, 0, 0, 0x00000038}, - {0xbf, 5, 7, 0, 0x00000000}, - {0xa7, 5, 0, 0, 0xdbf4f7fc}, - {0x6d, 2, 3, 1, 0x00000000}, - {0xbf, 5, 7, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000100}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xe8adedfa}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 3, 0, 0x00000000}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000080}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xd15bdbf4}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000040}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xb7e9eff9}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xa2b7b7e9}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000020}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x6fd3dff2}, + {0xa7, 5, 0, 0, 0x456f6fd3}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000010}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xdfa7bfe5}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0x8adedfa7}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000008}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xbf4f7fca}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000004}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x7e9eff94}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000002}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xfd3dff28}, - {0x71, 3, 8, 18, 0x00000000}, + {0xa7, 5, 0, 0, 0x15bdbf4f}, + {0x61, 3, 10, -16, 0x00000000}, + {0xbf, 0, 4, 0, 0x00000000}, + {0x57, 0, 0, 0, 0x00000004}, + {0x15, 0, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x2b7b7e9e}, + {0xdc, 3, 0, 0, 0x00000040}, + {0xbf, 0, 4, 0, 0x00000000}, + {0x57, 0, 0, 0, 0x00000002}, + {0x15, 0, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x56f6fd3d}, + {0xc7, 3, 0, 0, 0x00000020}, {0x57, 4, 0, 0, 0x00000001}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xfa7bfe51}, - {0xbf, 6, 3, 0, 0x00000000}, - {0x67, 6, 0, 0, 0x00000038}, - {0xc7, 6, 0, 0, 0x00000038}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0xadedfa7b}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 4, 0, 0x00000000}, {0xbf, 4, 5, 0, 0x00000000}, - {0xa7, 4, 0, 0, 0xf4f7fca2}, - {0x6d, 2, 6, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x5bdbf4f7}, + {0x6d, 2, 3, 1, 0x00000000}, {0xbf, 4, 5, 0, 0x00000000}, {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000040}, + {0x57, 5, 0, 0, 0x40000000}, + {0x15, 5, 0, 3, 0x00000000}, + {0x18, 5, 0, 0, 0xb7b7e9ef}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x20000000}, {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xe9eff945}, + {0xa7, 4, 0, 0, 0x6f6fd3df}, {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000020}, + {0x57, 5, 0, 0, 0x10000000}, + {0x15, 5, 0, 3, 0x00000000}, + {0x18, 5, 0, 0, 0xdedfa7bf}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x08000000}, + {0x15, 5, 0, 3, 0x00000000}, + {0x18, 5, 0, 0, 0xbdbf4f7f}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x04000000}, {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xd3dff28a}, + {0xa7, 4, 0, 0, 0x7b7e9eff}, {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000010}, + {0x57, 5, 0, 0, 0x02000000}, + {0x15, 5, 0, 3, 0x00000000}, + {0x18, 5, 0, 0, 0xf6fd3dff}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x01000000}, + {0x15, 5, 0, 3, 0x00000000}, + {0x18, 5, 0, 0, 0xedfa7bfe}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00800000}, + {0x15, 5, 0, 3, 0x00000000}, + {0x18, 5, 0, 0, 0xdbf4f7fc}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00400000}, + {0x15, 5, 0, 3, 0x00000000}, + {0x18, 5, 0, 0, 0xb7e9eff9}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00200000}, {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xa7bfe514}, + {0xa7, 4, 0, 0, 0x6fd3dff2}, {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000008}, + {0x57, 5, 0, 0, 0x00100000}, + {0x15, 5, 0, 3, 0x00000000}, + {0x18, 5, 0, 0, 0xdfa7bfe5}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00080000}, + {0x15, 5, 0, 3, 0x00000000}, + {0x18, 5, 0, 0, 0xbf4f7fca}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00040000}, {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x4f7fca28}, + {0xa7, 4, 0, 0, 0x7e9eff94}, {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000004}, + {0x57, 5, 0, 0, 0x00020000}, + {0x15, 5, 0, 3, 0x00000000}, + {0x18, 5, 0, 0, 0xfd3dff28}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00010000}, + {0x15, 5, 0, 3, 0x00000000}, + {0x18, 5, 0, 0, 0xfa7bfe51}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00008000}, + {0x15, 5, 0, 3, 0x00000000}, + {0x18, 5, 0, 0, 0xf4f7fca2}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00004000}, + {0x15, 5, 0, 3, 0x00000000}, + {0x18, 5, 0, 0, 0xe9eff945}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00002000}, + {0x15, 5, 0, 3, 0x00000000}, + {0x18, 5, 0, 0, 0xd3dff28a}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00001000}, + {0x15, 5, 0, 3, 0x00000000}, + {0x18, 5, 0, 0, 0xa7bfe514}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000800}, {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x9eff9450}, + {0xa7, 4, 0, 0, 0x4f7fca28}, {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000002}, + {0x57, 5, 0, 0, 0x00000400}, + {0x15, 5, 0, 3, 0x00000000}, + {0x18, 5, 0, 0, 0x9eff9450}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000200}, {0x15, 5, 0, 1, 0x00000000}, {0xa7, 4, 0, 0, 0x3dff28a0}, - {0x71, 5, 8, 19, 0x00000000}, - {0x57, 3, 0, 0, 0x00000001}, - {0x15, 3, 0, 1, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000100}, + {0x15, 5, 0, 1, 0x00000000}, {0xa7, 4, 0, 0, 0x7bfe5141}, - {0xbf, 3, 5, 0, 0x00000000}, - {0x67, 3, 0, 0, 0x00000038}, - {0xc7, 3, 0, 0, 0x00000038}, - {0xbf, 7, 4, 0, 0x00000000}, - {0xa7, 7, 0, 0, 0xf7fca283}, - {0x6d, 2, 3, 1, 0x00000000}, - {0xbf, 7, 4, 0, 0x00000000}, - {0xbf, 3, 5, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000040}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xeff94506}, - {0xbf, 3, 5, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000020}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xdff28a0c}, - {0xbf, 3, 5, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000010}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xbfe51418}, - {0xbf, 3, 5, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000008}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x7fca2831}, - {0xbf, 3, 5, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000004}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xff945063}, - {0xbf, 3, 5, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000002}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xff28a0c6}, - {0x57, 5, 0, 0, 0x00000001}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000080}, + {0x15, 5, 0, 3, 0x00000000}, + {0x18, 5, 0, 0, 0xf7fca283}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000040}, + {0x15, 5, 0, 3, 0x00000000}, + {0x18, 5, 0, 0, 0xeff94506}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000020}, + {0x15, 5, 0, 3, 0x00000000}, + {0x18, 5, 0, 0, 0xdff28a0c}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000010}, + {0x15, 5, 0, 3, 0x00000000}, + {0x18, 5, 0, 0, 0xbfe51418}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000008}, {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xfe51418c}, - {0xbf, 4, 1, 0, 0x00000000}, - {0x67, 4, 0, 0, 0x00000020}, - {0xc7, 4, 0, 0, 0x00000020}, - {0xbf, 3, 7, 0, 0x00000000}, - {0xa7, 3, 0, 0, 0xfca28319}, - {0x6d, 2, 4, 1, 0x00000000}, - {0xbf, 3, 7, 0, 0x00000000}, + {0xa7, 4, 0, 0, 0x7fca2831}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000004}, + {0x15, 5, 0, 3, 0x00000000}, + {0x18, 5, 0, 0, 0xff945063}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000002}, + {0x15, 5, 0, 3, 0x00000000}, + {0x18, 5, 0, 0, 0xff28a0c6}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 5, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000001}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xfe51418c}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 3, 0, 0x00000000}, + {0xbf, 5, 1, 0, 0x00000000}, + {0x67, 5, 0, 0, 0x00000020}, + {0xc7, 5, 0, 0, 0x00000020}, + {0x18, 0, 0, 0, 0xfca28319}, + {0x00, 0, 0, 0, 0x00000000}, + {0xbf, 3, 4, 0, 0x00000000}, + {0xaf, 3, 0, 0, 0x00000000}, + {0x6d, 2, 5, 1, 0x00000000}, + {0xbf, 3, 4, 0, 0x00000000}, {0xbf, 2, 1, 0, 0x00000000}, {0x57, 2, 0, 0, 0x40000000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0xf9450633}, + {0x15, 2, 0, 3, 0x00000000}, + {0x18, 2, 0, 0, 0xf9450633}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 3, 2, 0, 0x00000000}, {0xbf, 2, 1, 0, 0x00000000}, {0x57, 2, 0, 0, 0x20000000}, - {0x79, 6, 10, -56, 0x00000000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0xf28a0c67}, + {0x15, 2, 0, 3, 0x00000000}, + {0x18, 2, 0, 0, 0xf28a0c67}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 3, 2, 0, 0x00000000}, {0xbf, 2, 1, 0, 0x00000000}, {0x57, 2, 0, 0, 0x10000000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0xe51418ce}, + {0x15, 2, 0, 3, 0x00000000}, + {0x18, 2, 0, 0, 0xe51418ce}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 3, 2, 0, 0x00000000}, {0xbf, 2, 1, 0, 0x00000000}, {0x57, 2, 0, 0, 0x08000000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0xca28319d}, + {0x15, 2, 0, 3, 0x00000000}, + {0x18, 2, 0, 0, 0xca28319d}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 3, 2, 0, 0x00000000}, {0xbf, 2, 1, 0, 0x00000000}, {0x57, 2, 0, 0, 0x04000000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x9450633b}, + {0x15, 2, 0, 3, 0x00000000}, + {0x18, 2, 0, 0, 0x9450633b}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 3, 2, 0, 0x00000000}, {0xbf, 2, 1, 0, 0x00000000}, {0x57, 2, 0, 0, 0x02000000}, {0x15, 2, 0, 1, 0x00000000}, @@ -423,16 +439,20 @@ static struct bpf_insn l3_l4_hash_insns[] = { {0xa7, 3, 0, 0, 0x51418ced}, {0xbf, 2, 1, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00800000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0xa28319db}, + {0x15, 2, 0, 3, 0x00000000}, + {0x18, 2, 0, 0, 0xa28319db}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 3, 2, 0, 0x00000000}, {0xbf, 2, 1, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00400000}, {0x15, 2, 0, 1, 0x00000000}, {0xa7, 3, 0, 0, 0x450633b6}, {0xbf, 2, 1, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00200000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x8a0c676c}, + {0x15, 2, 0, 3, 0x00000000}, + {0x18, 2, 0, 0, 0x8a0c676c}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 3, 2, 0, 0x00000000}, {0xbf, 2, 1, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00100000}, {0x15, 2, 0, 1, 0x00000000}, @@ -447,16 +467,20 @@ static struct bpf_insn l3_l4_hash_insns[] = { {0xa7, 3, 0, 0, 0x50633b63}, {0xbf, 2, 1, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00020000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0xa0c676c6}, + {0x15, 2, 0, 3, 0x00000000}, + {0x18, 2, 0, 0, 0xa0c676c6}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 3, 2, 0, 0x00000000}, {0xbf, 2, 1, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00010000}, {0x15, 2, 0, 1, 0x00000000}, {0xa7, 3, 0, 0, 0x418ced8d}, {0xbf, 2, 1, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00008000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x8319db1a}, + {0x15, 2, 0, 3, 0x00000000}, + {0x18, 2, 0, 0, 0x8319db1a}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 3, 2, 0, 0x00000000}, {0xbf, 2, 1, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00004000}, {0x15, 2, 0, 1, 0x00000000}, @@ -479,12 +503,16 @@ static struct bpf_insn l3_l4_hash_insns[] = { {0xa7, 3, 0, 0, 0x633b6347}, {0xbf, 2, 1, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00000200}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0xc676c68f}, + {0x15, 2, 0, 3, 0x00000000}, + {0x18, 2, 0, 0, 0xc676c68f}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 3, 2, 0, 0x00000000}, {0xbf, 2, 1, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00000100}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x8ced8d1f}, + {0x15, 2, 0, 3, 0x00000000}, + {0x18, 2, 0, 0, 0x8ced8d1f}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 3, 2, 0, 0x00000000}, {0xbf, 2, 1, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00000080}, {0x15, 2, 0, 1, 0x00000000}, @@ -499,12 +527,16 @@ static struct bpf_insn l3_l4_hash_insns[] = { {0xa7, 3, 0, 0, 0x676c68fa}, {0xbf, 2, 1, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00000010}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0xced8d1f4}, + {0x15, 2, 0, 3, 0x00000000}, + {0x18, 2, 0, 0, 0xced8d1f4}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 3, 2, 0, 0x00000000}, {0xbf, 2, 1, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00000008}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x9db1a3e9}, + {0x15, 2, 0, 3, 0x00000000}, + {0x18, 2, 0, 0, 0x9db1a3e9}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 3, 2, 0, 0x00000000}, {0xbf, 2, 1, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00000004}, {0x15, 2, 0, 1, 0x00000000}, @@ -514,1078 +546,1336 @@ static struct bpf_insn l3_l4_hash_insns[] = { {0x15, 2, 0, 1, 0x00000000}, {0xa7, 3, 0, 0, 0x76c68fa5}, {0x57, 1, 0, 0, 0x00000001}, - {0x15, 1, 0, 1194, 0x00000000}, - {0xa7, 3, 0, 0, 0xed8d1f4a}, - {0x05, 0, 0, 1192, 0x00000000}, - {0x0f, 8, 1, 0, 0x00000000}, - {0xb7, 7, 0, 0, 0x00000000}, - {0xbf, 1, 8, 0, 0x00000000}, - {0x07, 1, 0, 0, 0x0000002c}, - {0x2d, 1, 9, 1216, 0x00000000}, - {0x61, 2, 8, 8, 0x00000000}, - {0xdc, 2, 0, 0, 0x00000040}, - {0xc7, 2, 0, 0, 0x00000020}, - {0x71, 3, 8, 6, 0x00000000}, - {0x15, 3, 0, 2, 0x00000011}, + {0x15, 1, 0, 1482, 0x00000000}, + {0x18, 1, 0, 0, 0xed8d1f4a}, + {0x00, 0, 0, 0, 0x00000000}, + {0x05, 0, 0, 1478, 0x00000000}, + {0xbf, 3, 10, 0, 0x00000000}, + {0x07, 3, 0, 0, 0xffffffb0}, + {0xbf, 1, 6, 0, 0x00000000}, + {0xb7, 2, 0, 0, 0x00000000}, + {0xb7, 4, 0, 0, 0x00000030}, + {0xb7, 5, 0, 0, 0x00000001}, + {0x85, 0, 0, 0, 0x00000044}, + {0x55, 0, 0, 1542, 0x00000000}, + {0xb7, 2, 0, 0, 0x00000000}, + {0x61, 4, 10, -72, 0x00000000}, + {0xdc, 4, 0, 0, 0x00000040}, + {0xc7, 4, 0, 0, 0x00000020}, + {0x71, 3, 10, -74, 0x00000000}, {0xb7, 1, 0, 0, 0x00000000}, - {0x55, 3, 0, 12, 0x00000006}, - {0xbf, 3, 8, 0, 0x00000000}, - {0x07, 3, 0, 0, 0x00000028}, - {0x71, 4, 3, 0, 0x00000000}, - {0x67, 4, 0, 0, 0x00000018}, - {0x71, 1, 3, 1, 0x00000000}, - {0x67, 1, 0, 0, 0x00000010}, - {0x4f, 1, 4, 0, 0x00000000}, - {0x71, 4, 3, 3, 0x00000000}, - {0x4f, 1, 4, 0, 0x00000000}, - {0x71, 3, 3, 2, 0x00000000}, - {0x67, 3, 0, 0, 0x00000008}, - {0x4f, 1, 3, 0, 0x00000000}, - {0xbf, 4, 2, 0, 0x00000000}, - {0x77, 4, 0, 0, 0x0000001f}, - {0x57, 4, 0, 0, 0x2cc681d1}, - {0xbf, 3, 2, 0, 0x00000000}, + {0x55, 3, 0, 2, 0x00000011}, + {0x61, 1, 10, -40, 0x00000000}, + {0xdc, 1, 0, 0, 0x00000020}, + {0xb7, 5, 0, 0, 0x00000000}, + {0x65, 4, 0, 1, 0xffffffff}, + {0xb7, 5, 0, 0, 0x2cc681d1}, + {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x40000000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x598d03a2}, - {0xbf, 3, 2, 0, 0x00000000}, + {0xa7, 5, 0, 0, 0x598d03a2}, + {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x20000000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xb31a0745}, - {0xbf, 3, 2, 0, 0x00000000}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xb31a0745}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 3, 0, 0x00000000}, + {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x10000000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x66340e8a}, - {0xbf, 3, 2, 0, 0x00000000}, + {0xa7, 5, 0, 0, 0x66340e8a}, + {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x08000000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xcc681d15}, - {0xbf, 3, 2, 0, 0x00000000}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xcc681d15}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 3, 0, 0x00000000}, + {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x04000000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x98d03a2b}, - {0xbf, 3, 2, 0, 0x00000000}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0x98d03a2b}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 3, 0, 0x00000000}, + {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x02000000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x31a07456}, - {0xbf, 3, 2, 0, 0x00000000}, + {0xa7, 5, 0, 0, 0x31a07456}, + {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x01000000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x6340e8ad}, - {0xbf, 3, 2, 0, 0x00000000}, + {0xa7, 5, 0, 0, 0x6340e8ad}, + {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00800000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xc681d15b}, - {0xbf, 3, 2, 0, 0x00000000}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xc681d15b}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 3, 0, 0x00000000}, + {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00400000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x8d03a2b7}, - {0xbf, 3, 2, 0, 0x00000000}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0x8d03a2b7}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 3, 0, 0x00000000}, + {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00200000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x1a07456f}, - {0xbf, 3, 2, 0, 0x00000000}, + {0xa7, 5, 0, 0, 0x1a07456f}, + {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00100000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x340e8ade}, - {0xbf, 3, 2, 0, 0x00000000}, + {0xa7, 5, 0, 0, 0x340e8ade}, + {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00080000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x681d15bd}, - {0xbf, 3, 2, 0, 0x00000000}, + {0xa7, 5, 0, 0, 0x681d15bd}, + {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00040000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xd03a2b7b}, - {0xbf, 3, 2, 0, 0x00000000}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xd03a2b7b}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 3, 0, 0x00000000}, + {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00020000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xa07456f6}, - {0xbf, 3, 2, 0, 0x00000000}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xa07456f6}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 3, 0, 0x00000000}, + {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00010000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x40e8aded}, - {0xbf, 3, 2, 0, 0x00000000}, + {0xa7, 5, 0, 0, 0x40e8aded}, + {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00008000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x81d15bdb}, - {0xbf, 3, 2, 0, 0x00000000}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0x81d15bdb}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 3, 0, 0x00000000}, + {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00004000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x03a2b7b7}, - {0xbf, 3, 2, 0, 0x00000000}, + {0xa7, 5, 0, 0, 0x03a2b7b7}, + {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00002000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x07456f6f}, - {0xbf, 3, 2, 0, 0x00000000}, + {0xa7, 5, 0, 0, 0x07456f6f}, + {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00001000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x0e8adedf}, - {0xbf, 3, 2, 0, 0x00000000}, + {0xa7, 5, 0, 0, 0x0e8adedf}, + {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000800}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x1d15bdbf}, - {0xbf, 3, 2, 0, 0x00000000}, + {0xa7, 5, 0, 0, 0x1d15bdbf}, + {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000400}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x3a2b7b7e}, - {0xbf, 3, 2, 0, 0x00000000}, + {0xa7, 5, 0, 0, 0x3a2b7b7e}, + {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000200}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x7456f6fd}, - {0xbf, 3, 2, 0, 0x00000000}, + {0xa7, 5, 0, 0, 0x7456f6fd}, + {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000100}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xe8adedfa}, - {0xbf, 3, 2, 0, 0x00000000}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xe8adedfa}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 3, 0, 0x00000000}, + {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000080}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xd15bdbf4}, - {0xbf, 3, 2, 0, 0x00000000}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xd15bdbf4}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 3, 0, 0x00000000}, + {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000040}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xa2b7b7e9}, - {0xbf, 3, 2, 0, 0x00000000}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xa2b7b7e9}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 3, 0, 0x00000000}, + {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000020}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x456f6fd3}, - {0xbf, 3, 2, 0, 0x00000000}, + {0xa7, 5, 0, 0, 0x456f6fd3}, + {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000010}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x8adedfa7}, - {0xbf, 3, 2, 0, 0x00000000}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0x8adedfa7}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 3, 0, 0x00000000}, + {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000008}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x15bdbf4f}, - {0x61, 3, 8, 12, 0x00000000}, - {0xbf, 5, 2, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000004}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x2b7b7e9e}, + {0xa7, 5, 0, 0, 0x15bdbf4f}, + {0x61, 3, 10, -68, 0x00000000}, + {0xbf, 0, 4, 0, 0x00000000}, + {0x57, 0, 0, 0, 0x00000004}, + {0x15, 0, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x2b7b7e9e}, {0xdc, 3, 0, 0, 0x00000040}, - {0xbf, 5, 2, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000002}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x56f6fd3d}, + {0xbf, 0, 4, 0, 0x00000000}, + {0x57, 0, 0, 0, 0x00000002}, + {0x15, 0, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x56f6fd3d}, {0xc7, 3, 0, 0, 0x00000020}, - {0x57, 2, 0, 0, 0x00000001}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xadedfa7b}, - {0xb7, 2, 0, 0, 0x00000000}, - {0xbf, 5, 4, 0, 0x00000000}, - {0xa7, 5, 0, 0, 0x5bdbf4f7}, + {0x57, 4, 0, 0, 0x00000001}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0xadedfa7b}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 4, 0, 0x00000000}, + {0xbf, 4, 5, 0, 0x00000000}, + {0xa7, 4, 0, 0, 0x5bdbf4f7}, {0x6d, 2, 3, 1, 0x00000000}, - {0xbf, 5, 4, 0, 0x00000000}, - {0xbf, 4, 3, 0, 0x00000000}, + {0xbf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x40000000}, + {0x15, 5, 0, 3, 0x00000000}, + {0x18, 5, 0, 0, 0xb7b7e9ef}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x20000000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x6f6fd3df}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x10000000}, + {0x15, 5, 0, 3, 0x00000000}, + {0x18, 5, 0, 0, 0xdedfa7bf}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x08000000}, + {0x15, 5, 0, 3, 0x00000000}, + {0x18, 5, 0, 0, 0xbdbf4f7f}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x04000000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x7b7e9eff}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x02000000}, + {0x15, 5, 0, 3, 0x00000000}, + {0x18, 5, 0, 0, 0xf6fd3dff}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x01000000}, + {0x15, 5, 0, 3, 0x00000000}, + {0x18, 5, 0, 0, 0xedfa7bfe}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00800000}, + {0x15, 5, 0, 3, 0x00000000}, + {0x18, 5, 0, 0, 0xdbf4f7fc}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00400000}, + {0x15, 5, 0, 3, 0x00000000}, + {0x18, 5, 0, 0, 0xb7e9eff9}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00200000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x6fd3dff2}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00100000}, + {0x15, 5, 0, 3, 0x00000000}, + {0x18, 5, 0, 0, 0xdfa7bfe5}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00080000}, + {0x15, 5, 0, 3, 0x00000000}, + {0x18, 5, 0, 0, 0xbf4f7fca}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00040000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x7e9eff94}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00020000}, + {0x15, 5, 0, 3, 0x00000000}, + {0x18, 5, 0, 0, 0xfd3dff28}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00010000}, + {0x15, 5, 0, 3, 0x00000000}, + {0x18, 5, 0, 0, 0xfa7bfe51}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00008000}, + {0x15, 5, 0, 3, 0x00000000}, + {0x18, 5, 0, 0, 0xf4f7fca2}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00004000}, + {0x15, 5, 0, 3, 0x00000000}, + {0x18, 5, 0, 0, 0xe9eff945}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00002000}, + {0x15, 5, 0, 3, 0x00000000}, + {0x18, 5, 0, 0, 0xd3dff28a}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00001000}, + {0x15, 5, 0, 3, 0x00000000}, + {0x18, 5, 0, 0, 0xa7bfe514}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000800}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x4f7fca28}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000400}, + {0x15, 5, 0, 3, 0x00000000}, + {0x18, 5, 0, 0, 0x9eff9450}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000200}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x3dff28a0}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000100}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x7bfe5141}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000080}, + {0x15, 5, 0, 3, 0x00000000}, + {0x18, 5, 0, 0, 0xf7fca283}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000040}, + {0x15, 5, 0, 3, 0x00000000}, + {0x18, 5, 0, 0, 0xeff94506}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000020}, + {0x15, 5, 0, 3, 0x00000000}, + {0x18, 5, 0, 0, 0xdff28a0c}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000010}, + {0x15, 5, 0, 3, 0x00000000}, + {0x18, 5, 0, 0, 0xbfe51418}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000008}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x7fca2831}, + {0x61, 5, 10, -64, 0x00000000}, + {0xbf, 0, 3, 0, 0x00000000}, + {0x57, 0, 0, 0, 0x00000004}, + {0x15, 0, 0, 3, 0x00000000}, + {0x18, 0, 0, 0, 0xff945063}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 0, 0, 0x00000000}, + {0xdc, 5, 0, 0, 0x00000040}, + {0xbf, 0, 3, 0, 0x00000000}, + {0x57, 0, 0, 0, 0x00000002}, + {0x15, 0, 0, 3, 0x00000000}, + {0x18, 0, 0, 0, 0xff28a0c6}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 0, 0, 0x00000000}, + {0xc7, 5, 0, 0, 0x00000020}, + {0x57, 3, 0, 0, 0x00000001}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xfe51418c}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 4, 3, 0, 0x00000000}, + {0x18, 0, 0, 0, 0xfca28319}, + {0x00, 0, 0, 0, 0x00000000}, + {0xbf, 3, 4, 0, 0x00000000}, + {0xaf, 3, 0, 0, 0x00000000}, + {0x6d, 2, 5, 1, 0x00000000}, + {0xbf, 3, 4, 0, 0x00000000}, + {0xbf, 4, 5, 0, 0x00000000}, {0x57, 4, 0, 0, 0x40000000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xb7b7e9ef}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0xf9450633}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 3, 4, 0, 0x00000000}, + {0xbf, 4, 5, 0, 0x00000000}, {0x57, 4, 0, 0, 0x20000000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x6f6fd3df}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0xf28a0c67}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 3, 4, 0, 0x00000000}, + {0xbf, 4, 5, 0, 0x00000000}, {0x57, 4, 0, 0, 0x10000000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xdedfa7bf}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0xe51418ce}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 3, 4, 0, 0x00000000}, + {0xbf, 4, 5, 0, 0x00000000}, {0x57, 4, 0, 0, 0x08000000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xbdbf4f7f}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0xca28319d}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 3, 4, 0, 0x00000000}, + {0xbf, 4, 5, 0, 0x00000000}, {0x57, 4, 0, 0, 0x04000000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x7b7e9eff}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0x9450633b}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 3, 4, 0, 0x00000000}, + {0xbf, 4, 5, 0, 0x00000000}, {0x57, 4, 0, 0, 0x02000000}, {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xf6fd3dff}, - {0xbf, 4, 3, 0, 0x00000000}, + {0xa7, 3, 0, 0, 0x28a0c676}, + {0xbf, 4, 5, 0, 0x00000000}, {0x57, 4, 0, 0, 0x01000000}, {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xedfa7bfe}, - {0xbf, 4, 3, 0, 0x00000000}, + {0xa7, 3, 0, 0, 0x51418ced}, + {0xbf, 4, 5, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00800000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xdbf4f7fc}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0xa28319db}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 3, 4, 0, 0x00000000}, + {0xbf, 4, 5, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00400000}, {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xb7e9eff9}, - {0xbf, 4, 3, 0, 0x00000000}, + {0xa7, 3, 0, 0, 0x450633b6}, + {0xbf, 4, 5, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00200000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x6fd3dff2}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0x8a0c676c}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 3, 4, 0, 0x00000000}, + {0xbf, 4, 5, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00100000}, {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xdfa7bfe5}, - {0xbf, 4, 3, 0, 0x00000000}, + {0xa7, 3, 0, 0, 0x1418ced8}, + {0xbf, 4, 5, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00080000}, {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xbf4f7fca}, - {0xbf, 4, 3, 0, 0x00000000}, + {0xa7, 3, 0, 0, 0x28319db1}, + {0xbf, 4, 5, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00040000}, {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x7e9eff94}, - {0xbf, 4, 3, 0, 0x00000000}, + {0xa7, 3, 0, 0, 0x50633b63}, + {0xbf, 4, 5, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00020000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xfd3dff28}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0xa0c676c6}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 3, 4, 0, 0x00000000}, + {0xbf, 4, 5, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00010000}, {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xfa7bfe51}, - {0xbf, 4, 3, 0, 0x00000000}, + {0xa7, 3, 0, 0, 0x418ced8d}, + {0xbf, 4, 5, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00008000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xf4f7fca2}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0x8319db1a}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 3, 4, 0, 0x00000000}, + {0xbf, 4, 5, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00004000}, {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xe9eff945}, - {0xbf, 4, 3, 0, 0x00000000}, + {0xa7, 3, 0, 0, 0x0633b634}, + {0xbf, 4, 5, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00002000}, {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xd3dff28a}, - {0xbf, 4, 3, 0, 0x00000000}, + {0xa7, 3, 0, 0, 0x0c676c68}, + {0xbf, 4, 5, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00001000}, {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xa7bfe514}, - {0xbf, 4, 3, 0, 0x00000000}, + {0xa7, 3, 0, 0, 0x18ced8d1}, + {0xbf, 4, 5, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000800}, {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x4f7fca28}, - {0xbf, 4, 3, 0, 0x00000000}, + {0xa7, 3, 0, 0, 0x319db1a3}, + {0xbf, 4, 5, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000400}, {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x9eff9450}, - {0xbf, 4, 3, 0, 0x00000000}, + {0xa7, 3, 0, 0, 0x633b6347}, + {0xbf, 4, 5, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000200}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x3dff28a0}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0xc676c68f}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 3, 4, 0, 0x00000000}, + {0xbf, 4, 5, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000100}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x7bfe5141}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0x8ced8d1f}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 3, 4, 0, 0x00000000}, + {0xbf, 4, 5, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000080}, {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xf7fca283}, - {0xbf, 4, 3, 0, 0x00000000}, + {0xa7, 3, 0, 0, 0x19db1a3e}, + {0xbf, 4, 5, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000040}, {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xeff94506}, - {0xbf, 4, 3, 0, 0x00000000}, + {0xa7, 3, 0, 0, 0x33b6347d}, + {0xbf, 4, 5, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000020}, {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xdff28a0c}, - {0xbf, 4, 3, 0, 0x00000000}, + {0xa7, 3, 0, 0, 0x676c68fa}, + {0xbf, 4, 5, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000010}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xbfe51418}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0xced8d1f4}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 3, 4, 0, 0x00000000}, + {0xbf, 4, 5, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000008}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x7fca2831}, - {0x61, 4, 8, 16, 0x00000000}, - {0xbf, 6, 3, 0, 0x00000000}, - {0x57, 6, 0, 0, 0x00000004}, - {0x15, 6, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xff945063}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0x9db1a3e9}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 3, 4, 0, 0x00000000}, + {0x61, 4, 10, -60, 0x00000000}, + {0xbf, 0, 5, 0, 0x00000000}, + {0x57, 0, 0, 0, 0x00000004}, + {0x15, 0, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x3b6347d2}, {0xdc, 4, 0, 0, 0x00000040}, - {0xbf, 6, 3, 0, 0x00000000}, - {0x57, 6, 0, 0, 0x00000002}, - {0x15, 6, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xff28a0c6}, + {0xbf, 0, 5, 0, 0x00000000}, + {0x57, 0, 0, 0, 0x00000002}, + {0x15, 0, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x76c68fa5}, {0xc7, 4, 0, 0, 0x00000020}, - {0x57, 3, 0, 0, 0x00000001}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xfe51418c}, - {0xbf, 7, 5, 0, 0x00000000}, - {0xa7, 7, 0, 0, 0xfca28319}, + {0x57, 5, 0, 0, 0x00000001}, + {0x15, 5, 0, 3, 0x00000000}, + {0x18, 5, 0, 0, 0xed8d1f4a}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 3, 5, 0, 0x00000000}, + {0x18, 5, 0, 0, 0xdb1a3e94}, + {0x00, 0, 0, 0, 0x00000000}, + {0xbf, 0, 3, 0, 0x00000000}, + {0xaf, 0, 5, 0, 0x00000000}, {0x6d, 2, 4, 1, 0x00000000}, - {0xbf, 7, 5, 0, 0x00000000}, + {0xbf, 0, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x40000000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xf9450633}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xb6347d28}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x20000000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xf28a0c67}, + {0xa7, 0, 0, 0, 0x6c68fa51}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x10000000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xe51418ce}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xd8d1f4a3}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x08000000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xca28319d}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xb1a3e946}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x04000000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x9450633b}, + {0xa7, 0, 0, 0, 0x6347d28d}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x02000000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x28a0c676}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xc68fa51a}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x01000000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x51418ced}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0x8d1f4a35}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00800000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xa28319db}, + {0xa7, 0, 0, 0, 0x1a3e946b}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00400000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x450633b6}, + {0xa7, 0, 0, 0, 0x347d28d7}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00200000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x8a0c676c}, + {0xa7, 0, 0, 0, 0x68fa51ae}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00100000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x1418ced8}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xd1f4a35c}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00080000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x28319db1}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xa3e946b9}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00040000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x50633b63}, + {0xa7, 0, 0, 0, 0x47d28d73}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00020000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xa0c676c6}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0x8fa51ae7}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00010000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x418ced8d}, + {0xa7, 0, 0, 0, 0x1f4a35cf}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00008000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x8319db1a}, + {0xa7, 0, 0, 0, 0x3e946b9e}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00004000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x0633b634}, + {0xa7, 0, 0, 0, 0x7d28d73c}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00002000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x0c676c68}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xfa51ae78}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00001000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x18ced8d1}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xf4a35cf1}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000800}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x319db1a3}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xe946b9e3}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000400}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x633b6347}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xd28d73c7}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000200}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xc676c68f}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xa51ae78e}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000100}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x8ced8d1f}, + {0xa7, 0, 0, 0, 0x4a35cf1c}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000080}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x19db1a3e}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0x946b9e38}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000040}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x33b6347d}, + {0xa7, 0, 0, 0, 0x28d73c71}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000020}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x676c68fa}, + {0xa7, 0, 0, 0, 0x51ae78e3}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000010}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xced8d1f4}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xa35cf1c6}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000008}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x9db1a3e9}, - {0x61, 3, 8, 20, 0x00000000}, + {0xa7, 0, 0, 0, 0x46b9e38d}, + {0x61, 3, 10, -56, 0x00000000}, {0xbf, 5, 4, 0, 0x00000000}, {0x57, 5, 0, 0, 0x00000004}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x3b6347d2}, + {0x15, 5, 0, 3, 0x00000000}, + {0x18, 5, 0, 0, 0x8d73c71b}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 5, 0, 0x00000000}, {0xdc, 3, 0, 0, 0x00000040}, {0xbf, 5, 4, 0, 0x00000000}, {0x57, 5, 0, 0, 0x00000002}, {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x76c68fa5}, + {0xa7, 0, 0, 0, 0x1ae78e36}, {0xc7, 3, 0, 0, 0x00000020}, {0x57, 4, 0, 0, 0x00000001}, {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xed8d1f4a}, - {0xbf, 5, 7, 0, 0x00000000}, - {0xa7, 5, 0, 0, 0xdb1a3e94}, + {0xa7, 0, 0, 0, 0x35cf1c6c}, + {0xbf, 5, 0, 0, 0x00000000}, + {0xa7, 5, 0, 0, 0x6b9e38d9}, {0x6d, 2, 3, 1, 0x00000000}, - {0xbf, 5, 7, 0, 0x00000000}, + {0xbf, 5, 0, 0, 0x00000000}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x40000000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xb6347d28}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0xd73c71b2}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 4, 0, 0x00000000}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x20000000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x6c68fa51}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0xae78e364}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 4, 0, 0x00000000}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x10000000}, {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xd8d1f4a3}, + {0xa7, 5, 0, 0, 0x5cf1c6c9}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x08000000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xb1a3e946}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0xb9e38d92}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 4, 0, 0x00000000}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x04000000}, {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x6347d28d}, + {0xa7, 5, 0, 0, 0x73c71b25}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x02000000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xc68fa51a}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0xe78e364b}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 4, 0, 0x00000000}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x01000000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x8d1f4a35}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0xcf1c6c96}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 4, 0, 0x00000000}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00800000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x1a3e946b}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0x9e38d92c}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 4, 0, 0x00000000}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00400000}, {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x347d28d7}, + {0xa7, 5, 0, 0, 0x3c71b259}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00200000}, {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x68fa51ae}, + {0xa7, 5, 0, 0, 0x78e364b2}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00100000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xd1f4a35c}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0xf1c6c964}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 4, 0, 0x00000000}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00080000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xa3e946b9}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0xe38d92c9}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 4, 0, 0x00000000}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00040000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x47d28d73}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0xc71b2593}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 4, 0, 0x00000000}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00020000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x8fa51ae7}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0x8e364b27}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 4, 0, 0x00000000}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00010000}, {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x1f4a35cf}, + {0xa7, 5, 0, 0, 0x1c6c964e}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00008000}, {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x3e946b9e}, + {0xa7, 5, 0, 0, 0x38d92c9c}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00004000}, {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x7d28d73c}, + {0xa7, 5, 0, 0, 0x71b25938}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00002000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xfa51ae78}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0xe364b270}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 4, 0, 0x00000000}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00001000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xf4a35cf1}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0xc6c964e0}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 4, 0, 0x00000000}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000800}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xe946b9e3}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0x8d92c9c0}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 4, 0, 0x00000000}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000400}, {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xd28d73c7}, + {0xa7, 5, 0, 0, 0x1b259380}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000200}, {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xa51ae78e}, + {0xa7, 5, 0, 0, 0x364b2700}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000100}, {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x4a35cf1c}, + {0xa7, 5, 0, 0, 0x6c964e01}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000080}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x946b9e38}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0xd92c9c03}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 4, 0, 0x00000000}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000040}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x28d73c71}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0xb2593807}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 4, 0, 0x00000000}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000020}, {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x51ae78e3}, + {0xa7, 5, 0, 0, 0x64b2700f}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000010}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xa35cf1c6}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0xc964e01e}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 4, 0, 0x00000000}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000008}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x46b9e38d}, - {0x61, 4, 8, 24, 0x00000000}, - {0xbf, 6, 3, 0, 0x00000000}, - {0x57, 6, 0, 0, 0x00000004}, - {0x15, 6, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x8d73c71b}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0x92c9c03d}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 4, 0, 0x00000000}, + {0x61, 4, 10, -52, 0x00000000}, + {0xbf, 0, 3, 0, 0x00000000}, + {0x57, 0, 0, 0, 0x00000004}, + {0x15, 0, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x2593807a}, {0xdc, 4, 0, 0, 0x00000040}, - {0xbf, 6, 3, 0, 0x00000000}, - {0x57, 6, 0, 0, 0x00000002}, - {0x15, 6, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x1ae78e36}, + {0xbf, 0, 3, 0, 0x00000000}, + {0x57, 0, 0, 0, 0x00000002}, + {0x15, 0, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x4b2700f4}, {0xc7, 4, 0, 0, 0x00000020}, {0x57, 3, 0, 0, 0x00000001}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x35cf1c6c}, - {0xbf, 7, 5, 0, 0x00000000}, - {0xa7, 7, 0, 0, 0x6b9e38d9}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0x964e01e8}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 3, 0, 0x00000000}, + {0xbf, 0, 5, 0, 0x00000000}, + {0xa7, 0, 0, 0, 0x2c9c03d1}, {0x6d, 2, 4, 1, 0x00000000}, - {0xbf, 7, 5, 0, 0x00000000}, + {0xbf, 0, 5, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x40000000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xd73c71b2}, + {0xa7, 0, 0, 0, 0x593807a3}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x20000000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xae78e364}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xb2700f46}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x10000000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x5cf1c6c9}, + {0xa7, 0, 0, 0, 0x64e01e8d}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x08000000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xb9e38d92}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xc9c03d1a}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x04000000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x73c71b25}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0x93807a35}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x02000000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xe78e364b}, + {0xa7, 0, 0, 0, 0x2700f46b}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x01000000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xcf1c6c96}, + {0xa7, 0, 0, 0, 0x4e01e8d6}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00800000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x9e38d92c}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0x9c03d1ad}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00400000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x3c71b259}, + {0xa7, 0, 0, 0, 0x3807a35b}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00200000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x78e364b2}, + {0xa7, 0, 0, 0, 0x700f46b6}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00100000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xf1c6c964}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xe01e8d6c}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00080000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xe38d92c9}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xc03d1ad9}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00040000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xc71b2593}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0x807a35b3}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00020000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x8e364b27}, + {0xa7, 0, 0, 0, 0x00f46b66}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00010000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x1c6c964e}, + {0xa7, 0, 0, 0, 0x01e8d6cc}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00008000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x38d92c9c}, + {0xa7, 0, 0, 0, 0x03d1ad99}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00004000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x71b25938}, + {0xa7, 0, 0, 0, 0x07a35b32}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00002000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xe364b270}, + {0xa7, 0, 0, 0, 0x0f46b665}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00001000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xc6c964e0}, + {0xa7, 0, 0, 0, 0x1e8d6cca}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000800}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x8d92c9c0}, + {0xa7, 0, 0, 0, 0x3d1ad994}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000400}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x1b259380}, + {0xa7, 0, 0, 0, 0x7a35b328}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000200}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x364b2700}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xf46b6651}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000100}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x6c964e01}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xe8d6cca2}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000080}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xd92c9c03}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xd1ad9944}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000040}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xb2593807}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xa35b3289}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000020}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x64b2700f}, + {0xa7, 0, 0, 0, 0x46b66512}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000010}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xc964e01e}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0x8d6cca25}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000008}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x92c9c03d}, - {0x61, 3, 8, 28, 0x00000000}, + {0xa7, 0, 0, 0, 0x1ad9944a}, + {0x61, 3, 10, -48, 0x00000000}, {0xbf, 5, 4, 0, 0x00000000}, {0x57, 5, 0, 0, 0x00000004}, {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x2593807a}, + {0xa7, 0, 0, 0, 0x35b32894}, {0xdc, 3, 0, 0, 0x00000040}, {0xbf, 5, 4, 0, 0x00000000}, {0x57, 5, 0, 0, 0x00000002}, {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x4b2700f4}, + {0xa7, 0, 0, 0, 0x6b665129}, {0xc7, 3, 0, 0, 0x00000020}, {0x57, 4, 0, 0, 0x00000001}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x964e01e8}, - {0xbf, 5, 7, 0, 0x00000000}, - {0xa7, 5, 0, 0, 0x2c9c03d1}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0xd6cca253}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 4, 0, 0x00000000}, + {0x18, 4, 0, 0, 0xad9944a7}, + {0x00, 0, 0, 0, 0x00000000}, + {0xbf, 5, 0, 0, 0x00000000}, + {0xaf, 5, 4, 0, 0x00000000}, {0x6d, 2, 3, 1, 0x00000000}, - {0xbf, 5, 7, 0, 0x00000000}, + {0xbf, 5, 0, 0, 0x00000000}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x40000000}, {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x593807a3}, + {0xa7, 5, 0, 0, 0x5b32894f}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x20000000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xb2700f46}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0xb665129f}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 4, 0, 0x00000000}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x10000000}, {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x64e01e8d}, + {0xa7, 5, 0, 0, 0x6cca253e}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x08000000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xc9c03d1a}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0xd9944a7d}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 4, 0, 0x00000000}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x04000000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x93807a35}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0xb32894fb}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 4, 0, 0x00000000}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x02000000}, {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x2700f46b}, + {0xa7, 5, 0, 0, 0x665129f6}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x01000000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x4e01e8d6}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0xcca253ec}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 4, 0, 0x00000000}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00800000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x9c03d1ad}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0x9944a7d9}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 4, 0, 0x00000000}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00400000}, {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x3807a35b}, + {0xa7, 5, 0, 0, 0x32894fb2}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00200000}, {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x700f46b6}, + {0xa7, 5, 0, 0, 0x65129f65}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00100000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xe01e8d6c}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0xca253eca}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 4, 0, 0x00000000}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00080000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xc03d1ad9}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0x944a7d95}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 4, 0, 0x00000000}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00040000}, {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x807a35b3}, + {0xa7, 5, 0, 0, 0x2894fb2a}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00020000}, {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x00f46b66}, + {0xa7, 5, 0, 0, 0x5129f655}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00010000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x01e8d6cc}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0xa253ecab}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 4, 0, 0x00000000}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00008000}, {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x03d1ad99}, + {0xa7, 5, 0, 0, 0x44a7d956}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00004000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x07a35b32}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0x894fb2ac}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 4, 0, 0x00000000}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00002000}, {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x0f46b665}, + {0xa7, 5, 0, 0, 0x129f6558}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00001000}, {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x1e8d6cca}, + {0xa7, 5, 0, 0, 0x253ecab1}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000800}, {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x3d1ad994}, + {0xa7, 5, 0, 0, 0x4a7d9563}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000400}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x7a35b328}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0x94fb2ac7}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 4, 0, 0x00000000}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000200}, {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xf46b6651}, + {0xa7, 5, 0, 0, 0x29f6558f}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000100}, {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xe8d6cca2}, + {0xa7, 5, 0, 0, 0x53ecab1e}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000080}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xd1ad9944}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0xa7d9563d}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 4, 0, 0x00000000}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000040}, {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xa35b3289}, + {0xa7, 5, 0, 0, 0x4fb2ac7a}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000020}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x46b66512}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 4, 0, 0, 0x9f6558f5}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 4, 0, 0x00000000}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000010}, {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x8d6cca25}, + {0xa7, 5, 0, 0, 0x3ecab1ea}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000008}, {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x1ad9944a}, - {0x61, 4, 8, 32, 0x00000000}, - {0xbf, 6, 3, 0, 0x00000000}, - {0x57, 6, 0, 0, 0x00000004}, - {0x15, 6, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x35b32894}, + {0xa7, 5, 0, 0, 0x7d9563d5}, + {0x61, 4, 10, -44, 0x00000000}, + {0xbf, 0, 3, 0, 0x00000000}, + {0x57, 0, 0, 0, 0x00000004}, + {0x15, 0, 0, 3, 0x00000000}, + {0x18, 0, 0, 0, 0xfb2ac7ab}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 0, 0, 0x00000000}, {0xdc, 4, 0, 0, 0x00000040}, - {0xbf, 6, 3, 0, 0x00000000}, - {0x57, 6, 0, 0, 0x00000002}, - {0x15, 6, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x6b665129}, + {0xbf, 0, 3, 0, 0x00000000}, + {0x57, 0, 0, 0, 0x00000002}, + {0x15, 0, 0, 3, 0x00000000}, + {0x18, 0, 0, 0, 0xf6558f56}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 0, 0, 0x00000000}, {0xc7, 4, 0, 0, 0x00000020}, {0x57, 3, 0, 0, 0x00000001}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xd6cca253}, - {0xbf, 7, 5, 0, 0x00000000}, - {0xa7, 7, 0, 0, 0xad9944a7}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xecab1eac}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 5, 3, 0, 0x00000000}, + {0x18, 3, 0, 0, 0xd9563d59}, + {0x00, 0, 0, 0, 0x00000000}, + {0xbf, 0, 5, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, {0x6d, 2, 4, 1, 0x00000000}, - {0xbf, 7, 5, 0, 0x00000000}, + {0xbf, 0, 5, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x40000000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x5b32894f}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xb2ac7ab2}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x20000000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xb665129f}, + {0xa7, 0, 0, 0, 0x6558f564}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x10000000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x6cca253e}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xcab1eac8}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x08000000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xd9944a7d}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0x9563d590}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x04000000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xb32894fb}, + {0xa7, 0, 0, 0, 0x2ac7ab20}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x02000000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x665129f6}, + {0xa7, 0, 0, 0, 0x558f5641}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x01000000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xcca253ec}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xab1eac83}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00800000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x9944a7d9}, + {0xa7, 0, 0, 0, 0x563d5906}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00400000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x32894fb2}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xac7ab20c}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00200000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x65129f65}, + {0xa7, 0, 0, 0, 0x58f56418}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00100000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xca253eca}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xb1eac831}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00080000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x944a7d95}, + {0xa7, 0, 0, 0, 0x63d59063}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00040000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x2894fb2a}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xc7ab20c7}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00020000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x5129f655}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0x8f56418f}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00010000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xa253ecab}, + {0xa7, 0, 0, 0, 0x1eac831e}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00008000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x44a7d956}, + {0xa7, 0, 0, 0, 0x3d59063c}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00004000}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x894fb2ac}, + {0xa7, 0, 0, 0, 0x7ab20c78}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00002000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x129f6558}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xf56418f0}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00001000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x253ecab1}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xeac831e1}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000800}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x4a7d9563}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xd59063c2}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000400}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x94fb2ac7}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xab20c784}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000200}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x29f6558f}, + {0xa7, 0, 0, 0, 0x56418f09}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000100}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x53ecab1e}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xac831e12}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000080}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xa7d9563d}, + {0xa7, 0, 0, 0, 0x59063c25}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000040}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x4fb2ac7a}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xb20c784b}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000020}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x9f6558f5}, + {0xa7, 0, 0, 0, 0x6418f097}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000010}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x3ecab1ea}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0xc831e12f}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000008}, + {0x15, 3, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0x9063c25f}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000004}, {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x7d9563d5}, - {0x61, 3, 8, 36, 0x00000000}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000004}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xfb2ac7ab}, - {0xdc, 3, 0, 0, 0x00000040}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000002}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xf6558f56}, - {0xc7, 3, 0, 0, 0x00000020}, - {0x57, 4, 0, 0, 0x00000001}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xecab1eac}, - {0xbf, 4, 7, 0, 0x00000000}, - {0xa7, 4, 0, 0, 0xd9563d59}, - {0x6d, 2, 3, 1, 0x00000000}, - {0xbf, 4, 7, 0, 0x00000000}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x40000000}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xb2ac7ab2}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x20000000}, - {0x79, 6, 10, -56, 0x00000000}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x6558f564}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x10000000}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xcab1eac8}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x08000000}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x9563d590}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x04000000}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x2ac7ab20}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x02000000}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x558f5641}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x01000000}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xab1eac83}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00800000}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x563d5906}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00400000}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xac7ab20c}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00200000}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x58f56418}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00100000}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xb1eac831}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00080000}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x63d59063}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00040000}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xc7ab20c7}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00020000}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x8f56418f}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00010000}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x1eac831e}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00008000}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x3d59063c}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00004000}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x7ab20c78}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00002000}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xf56418f0}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00001000}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xeac831e1}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000800}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xd59063c2}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000400}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xab20c784}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000200}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x56418f09}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000100}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xac831e12}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000080}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x59063c25}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000040}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xb20c784b}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000020}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x6418f097}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000010}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xc831e12f}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000008}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x9063c25f}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000004}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x20c784be}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000002}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x418f097c}, - {0x57, 3, 0, 0, 0x00000001}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x831e12f9}, - {0xbf, 5, 1, 0, 0x00000000}, - {0x67, 5, 0, 0, 0x00000020}, - {0xc7, 5, 0, 0, 0x00000020}, + {0xa7, 0, 0, 0, 0x20c784be}, {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000002}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 0, 0, 0, 0x418f097c}, + {0x57, 4, 0, 0, 0x00000001}, + {0x15, 4, 0, 3, 0x00000000}, + {0x18, 3, 0, 0, 0x831e12f9}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 0, 3, 0, 0x00000000}, + {0xbf, 4, 1, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000020}, + {0xc7, 4, 0, 0, 0x00000020}, + {0xbf, 3, 0, 0, 0x00000000}, {0xa7, 3, 0, 0, 0x063c25f3}, - {0x6d, 2, 5, 1, 0x00000000}, - {0xbf, 3, 4, 0, 0x00000000}, + {0x6d, 2, 4, 1, 0x00000000}, + {0xbf, 3, 0, 0, 0x00000000}, {0xbf, 2, 1, 0, 0x00000000}, {0x57, 2, 0, 0, 0x40000000}, {0x15, 2, 0, 1, 0x00000000}, @@ -1604,12 +1894,16 @@ static struct bpf_insn l3_l4_hash_insns[] = { {0xa7, 3, 0, 0, 0x63c25f3f}, {0xbf, 2, 1, 0, 0x00000000}, {0x57, 2, 0, 0, 0x04000000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0xc784be7f}, + {0x15, 2, 0, 3, 0x00000000}, + {0x18, 2, 0, 0, 0xc784be7f}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 3, 2, 0, 0x00000000}, {0xbf, 2, 1, 0, 0x00000000}, {0x57, 2, 0, 0, 0x02000000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x8f097cff}, + {0x15, 2, 0, 3, 0x00000000}, + {0x18, 2, 0, 0, 0x8f097cff}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 3, 2, 0, 0x00000000}, {0xbf, 2, 1, 0, 0x00000000}, {0x57, 2, 0, 0, 0x01000000}, {0x15, 2, 0, 1, 0x00000000}, @@ -1624,20 +1918,28 @@ static struct bpf_insn l3_l4_hash_insns[] = { {0xa7, 3, 0, 0, 0x784be7f8}, {0xbf, 2, 1, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00200000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0xf097cff0}, + {0x15, 2, 0, 3, 0x00000000}, + {0x18, 2, 0, 0, 0xf097cff0}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 3, 2, 0, 0x00000000}, {0xbf, 2, 1, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00100000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0xe12f9fe0}, + {0x15, 2, 0, 3, 0x00000000}, + {0x18, 2, 0, 0, 0xe12f9fe0}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 3, 2, 0, 0x00000000}, {0xbf, 2, 1, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00080000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0xc25f3fc1}, + {0x15, 2, 0, 3, 0x00000000}, + {0x18, 2, 0, 0, 0xc25f3fc1}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 3, 2, 0, 0x00000000}, {0xbf, 2, 1, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00040000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x84be7f83}, + {0x15, 2, 0, 3, 0x00000000}, + {0x18, 2, 0, 0, 0x84be7f83}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 3, 2, 0, 0x00000000}, {0xbf, 2, 1, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00020000}, {0x15, 2, 0, 1, 0x00000000}, @@ -1656,8 +1958,10 @@ static struct bpf_insn l3_l4_hash_insns[] = { {0xa7, 3, 0, 0, 0x4be7f83f}, {0xbf, 2, 1, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00002000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x97cff07f}, + {0x15, 2, 0, 3, 0x00000000}, + {0x18, 2, 0, 0, 0x97cff07f}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 3, 2, 0, 0x00000000}, {0xbf, 2, 1, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00001000}, {0x15, 2, 0, 1, 0x00000000}, @@ -1668,32 +1972,44 @@ static struct bpf_insn l3_l4_hash_insns[] = { {0xa7, 3, 0, 0, 0x5f3fc1fd}, {0xbf, 2, 1, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00000400}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0xbe7f83fb}, + {0x15, 2, 0, 3, 0x00000000}, + {0x18, 2, 0, 0, 0xbe7f83fb}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 3, 2, 0, 0x00000000}, {0xbf, 2, 1, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00000200}, {0x15, 2, 0, 1, 0x00000000}, {0xa7, 3, 0, 0, 0x7cff07f7}, {0xbf, 2, 1, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00000100}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0xf9fe0fee}, + {0x15, 2, 0, 3, 0x00000000}, + {0x18, 2, 0, 0, 0xf9fe0fee}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 3, 2, 0, 0x00000000}, {0xbf, 2, 1, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00000080}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0xf3fc1fdc}, + {0x15, 2, 0, 3, 0x00000000}, + {0x18, 2, 0, 0, 0xf3fc1fdc}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 3, 2, 0, 0x00000000}, {0xbf, 2, 1, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00000040}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0xe7f83fb8}, + {0x15, 2, 0, 3, 0x00000000}, + {0x18, 2, 0, 0, 0xe7f83fb8}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 3, 2, 0, 0x00000000}, {0xbf, 2, 1, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00000020}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0xcff07f70}, + {0x15, 2, 0, 3, 0x00000000}, + {0x18, 2, 0, 0, 0xcff07f70}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 3, 2, 0, 0x00000000}, {0xbf, 2, 1, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00000010}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x9fe0fee1}, + {0x15, 2, 0, 3, 0x00000000}, + {0x18, 2, 0, 0, 0x9fe0fee1}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 3, 2, 0, 0x00000000}, {0xbf, 2, 1, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00000008}, {0x15, 2, 0, 1, 0x00000000}, @@ -1704,40 +2020,86 @@ static struct bpf_insn l3_l4_hash_insns[] = { {0xa7, 3, 0, 0, 0x7f83fb85}, {0xbf, 2, 1, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00000002}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0xff07f70a}, + {0x15, 2, 0, 3, 0x00000000}, + {0x18, 2, 0, 0, 0xff07f70a}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 3, 2, 0, 0x00000000}, {0x57, 1, 0, 0, 0x00000001}, - {0x15, 1, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0xfe0fee15}, - {0x71, 1, 0, 201, 0x00000000}, + {0x15, 1, 0, 3, 0x00000000}, + {0x18, 1, 0, 0, 0xfe0fee15}, + {0x00, 0, 0, 0, 0x00000000}, + {0xaf, 3, 1, 0, 0x00000000}, + {0x71, 1, 7, 201, 0x00000000}, {0x67, 1, 0, 0, 0x00000008}, - {0x71, 2, 0, 200, 0x00000000}, + {0x71, 2, 7, 200, 0x00000000}, {0x4f, 1, 2, 0, 0x00000000}, - {0x71, 2, 0, 202, 0x00000000}, + {0x71, 2, 7, 202, 0x00000000}, {0x67, 2, 0, 0, 0x00000010}, - {0x71, 4, 0, 203, 0x00000000}, + {0x71, 4, 7, 203, 0x00000000}, {0x67, 4, 0, 0, 0x00000018}, {0x4f, 4, 2, 0, 0x00000000}, {0x4f, 4, 1, 0, 0x00000000}, - {0x67, 3, 0, 0, 0x00000020}, - {0x77, 3, 0, 0, 0x00000020}, {0x9f, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x0000000f}, - {0x67, 3, 0, 0, 0x00000002}, - {0x0f, 0, 3, 0, 0x00000000}, - {0x71, 1, 0, 137, 0x00000000}, + {0x65, 3, 0, 5, 0x00000007}, + {0x65, 3, 0, 9, 0x00000003}, + {0x65, 3, 0, 16, 0x00000001}, + {0x15, 3, 0, 27, 0x00000000}, + {0x07, 7, 0, 0, 0x0000008c}, + {0x05, 0, 0, 40, 0x00000000}, + {0x65, 3, 0, 8, 0x0000000b}, + {0x65, 3, 0, 14, 0x00000009}, + {0x15, 3, 0, 24, 0x00000008}, + {0x07, 7, 0, 0, 0x000000ac}, + {0x05, 0, 0, 35, 0x00000000}, + {0x65, 3, 0, 13, 0x00000005}, + {0x15, 3, 0, 22, 0x00000004}, + {0x07, 7, 0, 0, 0x0000009c}, + {0x05, 0, 0, 31, 0x00000000}, + {0x65, 3, 0, 12, 0x0000000d}, + {0x15, 3, 0, 20, 0x0000000c}, + {0x07, 7, 0, 0, 0x000000bc}, + {0x05, 0, 0, 27, 0x00000000}, + {0x15, 3, 0, 19, 0x00000002}, + {0x07, 7, 0, 0, 0x00000094}, + {0x05, 0, 0, 24, 0x00000000}, + {0x15, 3, 0, 18, 0x0000000a}, + {0x07, 7, 0, 0, 0x000000b4}, + {0x05, 0, 0, 21, 0x00000000}, + {0x15, 3, 0, 17, 0x00000006}, + {0x07, 7, 0, 0, 0x000000a4}, + {0x05, 0, 0, 18, 0x00000000}, + {0x15, 3, 0, 16, 0x0000000e}, + {0x07, 7, 0, 0, 0x000000c4}, + {0x05, 0, 0, 15, 0x00000000}, + {0x07, 7, 0, 0, 0x00000088}, + {0x05, 0, 0, 13, 0x00000000}, + {0x07, 7, 0, 0, 0x000000a8}, + {0x05, 0, 0, 11, 0x00000000}, + {0x07, 7, 0, 0, 0x00000098}, + {0x05, 0, 0, 9, 0x00000000}, + {0x07, 7, 0, 0, 0x000000b8}, + {0x05, 0, 0, 7, 0x00000000}, + {0x07, 7, 0, 0, 0x00000090}, + {0x05, 0, 0, 5, 0x00000000}, + {0x07, 7, 0, 0, 0x000000b0}, + {0x05, 0, 0, 3, 0x00000000}, + {0x07, 7, 0, 0, 0x000000a0}, + {0x05, 0, 0, 1, 0x00000000}, + {0x07, 7, 0, 0, 0x000000c0}, + {0x71, 1, 7, 1, 0x00000000}, {0x67, 1, 0, 0, 0x00000008}, - {0x71, 2, 0, 136, 0x00000000}, + {0x71, 2, 7, 0, 0x00000000}, {0x4f, 1, 2, 0, 0x00000000}, - {0x71, 2, 0, 138, 0x00000000}, + {0x71, 2, 7, 2, 0x00000000}, {0x67, 2, 0, 0, 0x00000010}, - {0x71, 3, 0, 139, 0x00000000}, + {0x71, 3, 7, 3, 0x00000000}, {0x67, 3, 0, 0, 0x00000018}, {0x4f, 3, 2, 0, 0x00000000}, {0x4f, 3, 1, 0, 0x00000000}, {0x07, 3, 0, 0, 0x7cafe800}, {0x63, 6, 3, 52, 0x00000000}, - {0xb7, 7, 0, 0, 0x00000001}, - {0xbf, 0, 7, 0, 0x00000000}, + {0xb7, 8, 0, 0, 0x00000001}, + {0xbf, 0, 8, 0, 0x00000000}, {0x95, 0, 0, 0, 0x00000000}, }; -- 2.39.1.windows.1 ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] net/tap: Modified TAP BPF program as per the Kernel-version upgrade requirements. 2024-01-12 13:48 [PATCH] net/tap: Modified TAP BPF program as per the Kernel-version upgrade requirements madhuker.mythri @ 2024-01-12 16:40 ` Stephen Hemminger 2024-01-12 16:41 ` Stephen Hemminger ` (5 subsequent siblings) 6 siblings, 0 replies; 18+ messages in thread From: Stephen Hemminger @ 2024-01-12 16:40 UTC (permalink / raw) To: madhuker.mythri; +Cc: dev, ferruh.yigit On Fri, 12 Jan 2024 19:18:21 +0530 madhuker.mythri@oracle.com wrote: > From: Madhuker Mythri <madhuker.mythri@oracle.com> > > When multiple queues configured, internally RSS will be enabled and thus TAP BPF RSS byte-code will be loaded on to the Kernel using BPF system calls. > > Here, the problem is loading the existing BPF byte-code to the Kernel-5.15 and above versions throws errors, i.e: Kernel BPF verifier not accepted this existing BPF byte-code and system calls return error code "-7" as follows: > ------------------------ > rss_add_actions(): Failed to load BPF section l3_l4 (7): Argument list too long > ------------------------ > > RCA: These errors started coming after from the Kernel-5.15 version, in which lots of new BPF verification restrictions were added for safe execution of byte-code on to the Kernel, due to which existing BPF program verification does not pass. > Here are the major BPF verifier restrictions observed: > 1) Need to use new BPF maps structure. > 2) Kernel SKB data pointer access not allowed, instead use the BPF helper functions. > 3) Undefined loops were not allowed(which are bounded by a variable value). > 4) unreachable instructions(like: undefined array access). > > After addressing all these Kernel BPF verifier restrictions able to load the BPF byte-code onto the Kernel successfully. > > Verified with the latest DPDK-23.11 code, using the python extracted > BPF instructions able to load sucessfully on to the Kernel tap device. > > Bugzilla Id: 1329 > > Signed-off-by: Madhuker Mythri <madhuker.mythri@oracle.com> The DPDK practice is to keep patches as followons of original thread. Please use --msg-id option for reply. Also put v2 in the mail. The BPF program doesn't have to meet all the requirements of DPDK checkpatch since it doesn't use EAL, but it should follow conventions. For example: $ ./devtools/checkpatches.sh ~/Downloads/tap-bpf.mbox ### [PATCH] net/tap: Modified TAP BPF program as per the Kernel-version upgrade requirements. WARNING:COMMIT_LOG_LONG_LINE: Prefer a maximum 75 chars per line (possible unwrapped commit description?) #92: When multiple queues configured, internally RSS will be enabled and thus TAP BPF RSS byte-code will be loaded on to the Kernel using BPF system calls. WARNING:TYPO_SPELLING: 'sucessfully' may be misspelled - perhaps 'successfully'? #109: BPF instructions able to load sucessfully on to the Kernel tap device. ^^^^^^^^^^^ ... WARNING:BRACES: braces {} are not necessary for single statement blocks #659: FILE: drivers/net/tap/bpf/tap_bpf_program.c:120: + if (rsskey == NULL) { return TC_ACT_OK; } ERROR:ELSE_AFTER_BRACE: else should follow close brace '}' #769: FILE: drivers/net/tap/bpf/tap_bpf_program.c:156: + } + else { CHECK:BRACES: Unbalanced braces around else statement #769: FILE: drivers/net/tap/bpf/tap_bpf_program.c:156: + else { ERROR:SPACING: space required before the open parenthesis '(' #790: FILE: drivers/net/tap/bpf/tap_bpf_program.c:168: + if(k == hash) CHECK:BRACES: Blank lines aren't necessary before a close brace '}' #807: FILE: drivers/net/tap/bpf/tap_bpf_program.c:176: +} total: 2 errors, 7 warnings, 2 checks, 3314 lines checked 0/1 valid patch ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] net/tap: Modified TAP BPF program as per the Kernel-version upgrade requirements. 2024-01-12 13:48 [PATCH] net/tap: Modified TAP BPF program as per the Kernel-version upgrade requirements madhuker.mythri 2024-01-12 16:40 ` Stephen Hemminger @ 2024-01-12 16:41 ` Stephen Hemminger 2024-01-13 17:50 ` [External] : " Madhuker Mythri 2024-01-12 16:42 ` Stephen Hemminger ` (4 subsequent siblings) 6 siblings, 1 reply; 18+ messages in thread From: Stephen Hemminger @ 2024-01-12 16:41 UTC (permalink / raw) To: madhuker.mythri; +Cc: dev, ferruh.yigit On Fri, 12 Jan 2024 19:18:21 +0530 madhuker.mythri@oracle.com wrote: > - queue = rsskey->queues[(hash % rsskey->nb_queues) & > - (TAP_MAX_QUEUES - 1)]; > - skb->cb[1] = QUEUE_OFFSET + queue; > - /* printt(">>>>> rss_l3_l4 hash=0x%x queue=%u\n", hash, queue); */ > + hash = (hash % rsskey->nb_queues) & (TAP_MAX_QUEUES - 1); > +#pragma clang loop unroll(full) > + for (k = 0; k < TAP_MAX_QUEUES; k++) { > + if(k == hash) > + queue = rsskey->queues[k]; > + } > Why introduce another loop here. Original code was fine and bounded. ^ permalink raw reply [flat|nested] 18+ messages in thread
* RE: [External] : Re: [PATCH] net/tap: Modified TAP BPF program as per the Kernel-version upgrade requirements. 2024-01-12 16:41 ` Stephen Hemminger @ 2024-01-13 17:50 ` Madhuker Mythri 2024-01-13 18:05 ` Stephen Hemminger 2024-01-16 16:43 ` Stephen Hemminger 0 siblings, 2 replies; 18+ messages in thread From: Madhuker Mythri @ 2024-01-13 17:50 UTC (permalink / raw) To: Stephen Hemminger; +Cc: dev, ferruh.yigit With the original code BPF verifier throws error, due to undefined array access and thus could failed to load the BPF instructions onto the Kernel. For safe execution on the Kernel, the array access with such undefined value throws error. So, came up with this loop which has Max-queues as limit. Thanks, Madhuker, -----Original Message----- From: Stephen Hemminger <stephen@networkplumber.org> Sent: 12 January 2024 22:12 To: Madhuker Mythri <madhuker.mythri@oracle.com> Cc: dev@dpdk.org; ferruh.yigit@amd.com Subject: [External] : Re: [PATCH] net/tap: Modified TAP BPF program as per the Kernel-version upgrade requirements. On Fri, 12 Jan 2024 19:18:21 +0530 madhuker.mythri@oracle.com wrote: > - queue = rsskey->queues[(hash % rsskey->nb_queues) & > - (TAP_MAX_QUEUES - 1)]; > - skb->cb[1] = QUEUE_OFFSET + queue; > - /* printt(">>>>> rss_l3_l4 hash=0x%x queue=%u\n", hash, queue); */ > + hash = (hash % rsskey->nb_queues) & (TAP_MAX_QUEUES - 1); #pragma > +clang loop unroll(full) > + for (k = 0; k < TAP_MAX_QUEUES; k++) { > + if(k == hash) > + queue = rsskey->queues[k]; > + } > Why introduce another loop here. Original code was fine and bounded. ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [External] : Re: [PATCH] net/tap: Modified TAP BPF program as per the Kernel-version upgrade requirements. 2024-01-13 17:50 ` [External] : " Madhuker Mythri @ 2024-01-13 18:05 ` Stephen Hemminger 2024-01-16 16:43 ` Stephen Hemminger 1 sibling, 0 replies; 18+ messages in thread From: Stephen Hemminger @ 2024-01-13 18:05 UTC (permalink / raw) To: Madhuker Mythri; +Cc: dev, ferruh.yigit On Sat, 13 Jan 2024 17:50:19 +0000 Madhuker Mythri <madhuker.mythri@oracle.com> wrote: > With the original code BPF verifier throws error, due to undefined array access and thus could failed to load the BPF instructions onto the Kernel. > For safe execution on the Kernel, the array access with such undefined value throws error. > > So, came up with this loop which has Max-queues as limit. > > Thanks, > Madhuker, It does not for me. ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [External] : Re: [PATCH] net/tap: Modified TAP BPF program as per the Kernel-version upgrade requirements. 2024-01-13 17:50 ` [External] : " Madhuker Mythri 2024-01-13 18:05 ` Stephen Hemminger @ 2024-01-16 16:43 ` Stephen Hemminger 1 sibling, 0 replies; 18+ messages in thread From: Stephen Hemminger @ 2024-01-16 16:43 UTC (permalink / raw) To: Madhuker Mythri; +Cc: dev, ferruh.yigit On Sat, 13 Jan 2024 17:50:19 +0000 Madhuker Mythri <madhuker.mythri@oracle.com> wrote: > With the original code BPF verifier throws error, due to undefined array access and thus could failed to load the BPF instructions onto the Kernel. > For safe execution on the Kernel, the array access with such undefined value throws error. > > So, came up with this loop which has Max-queues as limit. > > Thanks, > Madhuker, The result of x & 15 is always going to be less than 16. The Oracle BPF verifier modifications are junk if it can figure that out. ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] net/tap: Modified TAP BPF program as per the Kernel-version upgrade requirements. 2024-01-12 13:48 [PATCH] net/tap: Modified TAP BPF program as per the Kernel-version upgrade requirements madhuker.mythri 2024-01-12 16:40 ` Stephen Hemminger 2024-01-12 16:41 ` Stephen Hemminger @ 2024-01-12 16:42 ` Stephen Hemminger 2024-01-13 17:52 ` [External] : " Madhuker Mythri 2024-01-12 16:43 ` Stephen Hemminger ` (3 subsequent siblings) 6 siblings, 1 reply; 18+ messages in thread From: Stephen Hemminger @ 2024-01-12 16:42 UTC (permalink / raw) To: madhuker.mythri; +Cc: dev, ferruh.yigit On Fri, 12 Jan 2024 19:18:21 +0530 madhuker.mythri@oracle.com wrote: > 2) Kernel SKB data pointer access not allowed, instead use the BPF helper functions. This is not true, many of the current kernel BPF examples uses skb pointer. ^ permalink raw reply [flat|nested] 18+ messages in thread
* RE: [External] : Re: [PATCH] net/tap: Modified TAP BPF program as per the Kernel-version upgrade requirements. 2024-01-12 16:42 ` Stephen Hemminger @ 2024-01-13 17:52 ` Madhuker Mythri 2024-01-13 18:06 ` Stephen Hemminger 0 siblings, 1 reply; 18+ messages in thread From: Madhuker Mythri @ 2024-01-13 17:52 UTC (permalink / raw) To: Stephen Hemminger; +Cc: dev, ferruh.yigit That's true, SKB pointer access denied and throws error. So, I have to replace with this BPF helper functions. -----Original Message----- From: Stephen Hemminger <stephen@networkplumber.org> Sent: 12 January 2024 22:12 To: Madhuker Mythri <madhuker.mythri@oracle.com> Cc: dev@dpdk.org; ferruh.yigit@amd.com Subject: [External] : Re: [PATCH] net/tap: Modified TAP BPF program as per the Kernel-version upgrade requirements. On Fri, 12 Jan 2024 19:18:21 +0530 madhuker.mythri@oracle.com wrote: > 2) Kernel SKB data pointer access not allowed, instead use the BPF helper functions. This is not true, many of the current kernel BPF examples uses skb pointer. ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [External] : Re: [PATCH] net/tap: Modified TAP BPF program as per the Kernel-version upgrade requirements. 2024-01-13 17:52 ` [External] : " Madhuker Mythri @ 2024-01-13 18:06 ` Stephen Hemminger 2024-01-16 5:43 ` Madhuker Mythri 0 siblings, 1 reply; 18+ messages in thread From: Stephen Hemminger @ 2024-01-13 18:06 UTC (permalink / raw) To: Madhuker Mythri; +Cc: dev, ferruh.yigit On Sat, 13 Jan 2024 17:52:34 +0000 Madhuker Mythri <madhuker.mythri@oracle.com> wrote: > That's true, SKB pointer access denied and throws error. > So, I have to replace with this BPF helper functions. It does not for me using current Debian kernel. You may have enabled something else. ^ permalink raw reply [flat|nested] 18+ messages in thread
* RE: [External] : Re: [PATCH] net/tap: Modified TAP BPF program as per the Kernel-version upgrade requirements. 2024-01-13 18:06 ` Stephen Hemminger @ 2024-01-16 5:43 ` Madhuker Mythri 2024-01-16 16:40 ` Stephen Hemminger 2024-01-17 3:25 ` Stephen Hemminger 0 siblings, 2 replies; 18+ messages in thread From: Madhuker Mythri @ 2024-01-16 5:43 UTC (permalink / raw) To: Stephen Hemminger; +Cc: dev, ferruh.yigit Hi Stephen, Yes, I found that the Kernel we use has more Verification added for safe execution: https://blogs.oracle.com/linux/post/bpf-in-depth-the-bpf-bytecode-and-the-bpf-verifier Here they mentioned about SKB pointer direct access, math on pointer and array with undefined access is denied on BPF code. Thanks, Madhuker. -----Original Message----- From: Stephen Hemminger <stephen@networkplumber.org> Sent: 13 January 2024 23:36 To: Madhuker Mythri <madhuker.mythri@oracle.com> Cc: dev@dpdk.org; ferruh.yigit@amd.com Subject: Re: [External] : Re: [PATCH] net/tap: Modified TAP BPF program as per the Kernel-version upgrade requirements. On Sat, 13 Jan 2024 17:52:34 +0000 Madhuker Mythri <madhuker.mythri@oracle.com> wrote: > That's true, SKB pointer access denied and throws error. > So, I have to replace with this BPF helper functions. It does not for me using current Debian kernel. You may have enabled something else. ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [External] : Re: [PATCH] net/tap: Modified TAP BPF program as per the Kernel-version upgrade requirements. 2024-01-16 5:43 ` Madhuker Mythri @ 2024-01-16 16:40 ` Stephen Hemminger 2024-01-17 3:25 ` Stephen Hemminger 1 sibling, 0 replies; 18+ messages in thread From: Stephen Hemminger @ 2024-01-16 16:40 UTC (permalink / raw) To: Madhuker Mythri; +Cc: dev, ferruh.yigit On Tue, 16 Jan 2024 05:43:00 +0000 Madhuker Mythri <madhuker.mythri@oracle.com> wrote: > Hi Stephen, > > Yes, I found that the Kernel we use has more Verification added for safe execution: > https://blogs.oracle.com/linux/post/bpf-in-depth-the-bpf-bytecode-and-the-bpf-verifier > > Here they mentioned about SKB pointer direct access, math on pointer and array with undefined access is denied on BPF code. > > Thanks, > Madhuker. Most of your changes, make sense and should be merged. But the custom verifier changes do not need to be added. The DPDK upstream project is not targeted at supporting custom vendor API modifications. ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [External] : Re: [PATCH] net/tap: Modified TAP BPF program as per the Kernel-version upgrade requirements. 2024-01-16 5:43 ` Madhuker Mythri 2024-01-16 16:40 ` Stephen Hemminger @ 2024-01-17 3:25 ` Stephen Hemminger 2024-01-17 16:19 ` Madhuker Mythri 1 sibling, 1 reply; 18+ messages in thread From: Stephen Hemminger @ 2024-01-17 3:25 UTC (permalink / raw) To: Madhuker Mythri; +Cc: dev, ferruh.yigit On Tue, 16 Jan 2024 05:43:00 +0000 Madhuker Mythri <madhuker.mythri@oracle.com> wrote: > Hi Stephen, > > Yes, I found that the Kernel we use has more Verification added for safe execution: > https://blogs.oracle.com/linux/post/bpf-in-depth-the-bpf-bytecode-and-the-bpf-verifier > > Here they mentioned about SKB pointer direct access, math on pointer and array with undefined access is denied on BPF code. Have you tried running Cilium? I would expect those custom changes would break that ^ permalink raw reply [flat|nested] 18+ messages in thread
* RE: [External] : Re: [PATCH] net/tap: Modified TAP BPF program as per the Kernel-version upgrade requirements. 2024-01-17 3:25 ` Stephen Hemminger @ 2024-01-17 16:19 ` Madhuker Mythri 0 siblings, 0 replies; 18+ messages in thread From: Madhuker Mythri @ 2024-01-17 16:19 UTC (permalink / raw) To: Stephen Hemminger; +Cc: dev, ferruh.yigit No, I did not run with Cilium. Thanks, Madhuker. -----Original Message----- From: Stephen Hemminger <stephen@networkplumber.org> Sent: 17 January 2024 08:56 To: Madhuker Mythri <madhuker.mythri@oracle.com> Cc: dev@dpdk.org; ferruh.yigit@amd.com Subject: Re: [External] : Re: [PATCH] net/tap: Modified TAP BPF program as per the Kernel-version upgrade requirements. On Tue, 16 Jan 2024 05:43:00 +0000 Madhuker Mythri <madhuker.mythri@oracle.com> wrote: > Hi Stephen, > > Yes, I found that the Kernel we use has more Verification added for safe execution: > https://blogs.oracle.com/linux/post/bpf-in-depth-the-bpf-bytecode-and-the-bpf-verifier > > Here they mentioned about SKB pointer direct access, math on pointer and array with undefined access is denied on BPF code. Have you tried running Cilium? I would expect those custom changes would break that ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] net/tap: Modified TAP BPF program as per the Kernel-version upgrade requirements. 2024-01-12 13:48 [PATCH] net/tap: Modified TAP BPF program as per the Kernel-version upgrade requirements madhuker.mythri ` (2 preceding siblings ...) 2024-01-12 16:42 ` Stephen Hemminger @ 2024-01-12 16:43 ` Stephen Hemminger 2024-01-12 16:46 ` Stephen Hemminger ` (2 subsequent siblings) 6 siblings, 0 replies; 18+ messages in thread From: Stephen Hemminger @ 2024-01-12 16:43 UTC (permalink / raw) To: madhuker.mythri; +Cc: dev, ferruh.yigit On Fri, 12 Jan 2024 19:18:21 +0530 madhuker.mythri@oracle.com wrote: > + if (bpf_skb_load_bytes_relative(skb, 0, &nh, sizeof(nh), BPF_HDR_START_NET)) > + return TC_ACT_OK; > + if (nh.iph.version == 4) { Using IP header bytes, instead of ether header protocol (in skb->proto) is changing functionality and wrong. You don't want to be seeing some other protocol (not IPv4 or IPv6) that just happened to have the 4 in that nibble. Original code was fine. ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] net/tap: Modified TAP BPF program as per the Kernel-version upgrade requirements. 2024-01-12 13:48 [PATCH] net/tap: Modified TAP BPF program as per the Kernel-version upgrade requirements madhuker.mythri ` (3 preceding siblings ...) 2024-01-12 16:43 ` Stephen Hemminger @ 2024-01-12 16:46 ` Stephen Hemminger 2024-01-13 17:55 ` [External] : " Madhuker Mythri 2024-01-12 17:53 ` [RFC v3] tap: rework the BPF header parsing Stephen Hemminger 2024-02-07 18:55 ` [PATCH] net/tap: Modified TAP BPF program as per the Kernel-version upgrade requirements Stephen Hemminger 6 siblings, 1 reply; 18+ messages in thread From: Stephen Hemminger @ 2024-01-12 16:46 UTC (permalink / raw) To: madhuker.mythri; +Cc: dev, ferruh.yigit On Fri, 12 Jan 2024 19:18:21 +0530 madhuker.mythri@oracle.com wrote: > struct ipv4_l3_l4_tuple v4_tuple = { > - .src_addr = IPv4(*(src_dst_addr + 0), > - *(src_dst_addr + 1), > - *(src_dst_addr + 2), > - *(src_dst_addr + 3)), > - .dst_addr = IPv4(*(src_dst_addr + 4), > - *(src_dst_addr + 5), > - *(src_dst_addr + 6), > - *(src_dst_addr + 7)), > + .src_addr = bpf_ntohl(nh.iph.saddr), > + .dst_addr = bpf_ntohl(nh.iph.daddr), Not sure this is correct. The RSS calculation (Toeplitz) expects that data is in network byte order. See app/test/test_thash.c for example. ^ permalink raw reply [flat|nested] 18+ messages in thread
* RE: [External] : Re: [PATCH] net/tap: Modified TAP BPF program as per the Kernel-version upgrade requirements. 2024-01-12 16:46 ` Stephen Hemminger @ 2024-01-13 17:55 ` Madhuker Mythri 0 siblings, 0 replies; 18+ messages in thread From: Madhuker Mythri @ 2024-01-13 17:55 UTC (permalink / raw) To: Stephen Hemminger; +Cc: dev, ferruh.yigit Even, in the original code the IP-address converted to host-order from network byte order. Now, I just replaced with BPF API's to convert to host-order. -----Original Message----- From: Stephen Hemminger <stephen@networkplumber.org> Sent: 12 January 2024 22:17 To: Madhuker Mythri <madhuker.mythri@oracle.com> Cc: dev@dpdk.org; ferruh.yigit@amd.com Subject: [External] : Re: [PATCH] net/tap: Modified TAP BPF program as per the Kernel-version upgrade requirements. On Fri, 12 Jan 2024 19:18:21 +0530 madhuker.mythri@oracle.com wrote: > struct ipv4_l3_l4_tuple v4_tuple = { > - .src_addr = IPv4(*(src_dst_addr + 0), > - *(src_dst_addr + 1), > - *(src_dst_addr + 2), > - *(src_dst_addr + 3)), > - .dst_addr = IPv4(*(src_dst_addr + 4), > - *(src_dst_addr + 5), > - *(src_dst_addr + 6), > - *(src_dst_addr + 7)), > + .src_addr = bpf_ntohl(nh.iph.saddr), > + .dst_addr = bpf_ntohl(nh.iph.daddr), Not sure this is correct. The RSS calculation (Toeplitz) expects that data is in network byte order. See app/test/test_thash.c for example. ^ permalink raw reply [flat|nested] 18+ messages in thread
* [RFC v3] tap: rework the BPF header parsing 2024-01-12 13:48 [PATCH] net/tap: Modified TAP BPF program as per the Kernel-version upgrade requirements madhuker.mythri ` (4 preceding siblings ...) 2024-01-12 16:46 ` Stephen Hemminger @ 2024-01-12 17:53 ` Stephen Hemminger 2024-02-07 18:55 ` [PATCH] net/tap: Modified TAP BPF program as per the Kernel-version upgrade requirements Stephen Hemminger 6 siblings, 0 replies; 18+ messages in thread From: Stephen Hemminger @ 2024-01-12 17:53 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger Cleanup the header parsing. - bpf load helpers - split IPv4 and IPv6 into seperate functions - drop incorrect VLAN header parsing - simplify the check for Ipv4 fragments - support IPv4 options - support IPv6 extension headers - fix the handling of L3 only hash - allow using non-default key - use standard network header structs - use temporary variables to avoid so many casts - stick to kernel data types (ie __u32) - fix support for non-default key - use new BPF map format based off of BTF - use system BPF headers and helpers This is based of the BPF map work in earlier patch from Madhuker Mythri <madhuker.mythri@oracle.com> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> --- This is still work in progress. Needs more testing. Not sure it is worth splitting into smaller patches. drivers/net/tap/bpf/Makefile | 14 +- drivers/net/tap/bpf/bpf_api.h | 276 --- drivers/net/tap/bpf/bpf_elf.h | 53 - drivers/net/tap/bpf/tap_bpf_program.c | 346 ++- drivers/net/tap/tap_bpf_api.c | 5 +- drivers/net/tap/tap_bpf_insns.h | 3288 +++++++++++++------------ drivers/net/tap/tap_flow.c | 43 + 7 files changed, 1920 insertions(+), 2105 deletions(-) delete mode 100644 drivers/net/tap/bpf/bpf_api.h delete mode 100644 drivers/net/tap/bpf/bpf_elf.h diff --git a/drivers/net/tap/bpf/Makefile b/drivers/net/tap/bpf/Makefile index 9efeeb1bc704..20a51f1ef4e1 100644 --- a/drivers/net/tap/bpf/Makefile +++ b/drivers/net/tap/bpf/Makefile @@ -2,9 +2,14 @@ # This file is not built as part of normal DPDK build. # It is used to generate the eBPF code for TAP RSS. -CLANG=clang -CLANG_OPTS=-O2 -TARGET=../tap_bpf_insns.h +CLANG = clang +CLANG_OPTS = -g -O2 -Wall -Wextra -target bpf + +TARGET = ../tap_bpf_insns.h + +# Get Clang's default includes on this system. +CLANG_BPF_SYS_INCLUDES ?= $(shell $(CLANG) -v -E - </dev/null 2>&1 \ + | sed -n '/<...> search starts here:/,/End of search list./{ s| \(/.*\)|-idirafter \1|p }') all: $(TARGET) @@ -12,8 +17,7 @@ clean: rm tap_bpf_program.o $(TARGET) tap_bpf_program.o: tap_bpf_program.c - $(CLANG) $(CLANG_OPTS) -emit-llvm -c $< -o - | \ - llc -march=bpf -filetype=obj -o $@ + $(CLANG) $(CLANG_OPTS) $(CLANG_BPF_SYS_INCLUDES) -c $< -o $@ $(TARGET): tap_bpf_program.o python3 bpf_extract.py -stap_bpf_program.c -o $@ $< diff --git a/drivers/net/tap/bpf/bpf_api.h b/drivers/net/tap/bpf/bpf_api.h deleted file mode 100644 index 2638a8a4ac9a..000000000000 --- a/drivers/net/tap/bpf/bpf_api.h +++ /dev/null @@ -1,276 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 or BSD-3-Clause */ - -#ifndef __BPF_API__ -#define __BPF_API__ - -/* Note: - * - * This file can be included into eBPF kernel programs. It contains - * a couple of useful helper functions, map/section ABI (bpf_elf.h), - * misc macros and some eBPF specific LLVM built-ins. - */ - -#include <stdint.h> - -#include <linux/pkt_cls.h> -#include <linux/bpf.h> -#include <linux/filter.h> - -#include <asm/byteorder.h> - -#include "bpf_elf.h" - -/** libbpf pin type. */ -enum libbpf_pin_type { - LIBBPF_PIN_NONE, - /* PIN_BY_NAME: pin maps by name (in /sys/fs/bpf by default) */ - LIBBPF_PIN_BY_NAME, -}; - -/** Type helper macros. */ - -#define __uint(name, val) int (*name)[val] -#define __type(name, val) typeof(val) *name -#define __array(name, val) typeof(val) *name[] - -/** Misc macros. */ - -#ifndef __stringify -# define __stringify(X) #X -#endif - -#ifndef __maybe_unused -# define __maybe_unused __attribute__((__unused__)) -#endif - -#ifndef offsetof -# define offsetof(TYPE, MEMBER) __builtin_offsetof(TYPE, MEMBER) -#endif - -#ifndef likely -# define likely(X) __builtin_expect(!!(X), 1) -#endif - -#ifndef unlikely -# define unlikely(X) __builtin_expect(!!(X), 0) -#endif - -#ifndef htons -# define htons(X) __constant_htons((X)) -#endif - -#ifndef ntohs -# define ntohs(X) __constant_ntohs((X)) -#endif - -#ifndef htonl -# define htonl(X) __constant_htonl((X)) -#endif - -#ifndef ntohl -# define ntohl(X) __constant_ntohl((X)) -#endif - -#ifndef __inline__ -# define __inline__ __attribute__((always_inline)) -#endif - -/** Section helper macros. */ - -#ifndef __section -# define __section(NAME) \ - __attribute__((section(NAME), used)) -#endif - -#ifndef __section_tail -# define __section_tail(ID, KEY) \ - __section(__stringify(ID) "/" __stringify(KEY)) -#endif - -#ifndef __section_xdp_entry -# define __section_xdp_entry \ - __section(ELF_SECTION_PROG) -#endif - -#ifndef __section_cls_entry -# define __section_cls_entry \ - __section(ELF_SECTION_CLASSIFIER) -#endif - -#ifndef __section_act_entry -# define __section_act_entry \ - __section(ELF_SECTION_ACTION) -#endif - -#ifndef __section_lwt_entry -# define __section_lwt_entry \ - __section(ELF_SECTION_PROG) -#endif - -#ifndef __section_license -# define __section_license \ - __section(ELF_SECTION_LICENSE) -#endif - -#ifndef __section_maps -# define __section_maps \ - __section(ELF_SECTION_MAPS) -#endif - -/** Declaration helper macros. */ - -#ifndef BPF_LICENSE -# define BPF_LICENSE(NAME) \ - char ____license[] __section_license = NAME -#endif - -/** Classifier helper */ - -#ifndef BPF_H_DEFAULT -# define BPF_H_DEFAULT -1 -#endif - -/** BPF helper functions for tc. Individual flags are in linux/bpf.h */ - -#ifndef __BPF_FUNC -# define __BPF_FUNC(NAME, ...) \ - (* NAME)(__VA_ARGS__) __maybe_unused -#endif - -#ifndef BPF_FUNC -# define BPF_FUNC(NAME, ...) \ - __BPF_FUNC(NAME, __VA_ARGS__) = (void *) BPF_FUNC_##NAME -#endif - -/* Map access/manipulation */ -static void *BPF_FUNC(map_lookup_elem, void *map, const void *key); -static int BPF_FUNC(map_update_elem, void *map, const void *key, - const void *value, uint32_t flags); -static int BPF_FUNC(map_delete_elem, void *map, const void *key); - -/* Time access */ -static uint64_t BPF_FUNC(ktime_get_ns); - -/* Debugging */ - -/* FIXME: __attribute__ ((format(printf, 1, 3))) not possible unless - * llvm bug https://llvm.org/bugs/show_bug.cgi?id=26243 gets resolved. - * It would require ____fmt to be made const, which generates a reloc - * entry (non-map). - */ -static void BPF_FUNC(trace_printk, const char *fmt, int fmt_size, ...); - -#ifndef printt -# define printt(fmt, ...) \ - ({ \ - char ____fmt[] = fmt; \ - trace_printk(____fmt, sizeof(____fmt), ##__VA_ARGS__); \ - }) -#endif - -/* Random numbers */ -static uint32_t BPF_FUNC(get_prandom_u32); - -/* Tail calls */ -static void BPF_FUNC(tail_call, struct __sk_buff *skb, void *map, - uint32_t index); - -/* System helpers */ -static uint32_t BPF_FUNC(get_smp_processor_id); -static uint32_t BPF_FUNC(get_numa_node_id); - -/* Packet misc meta data */ -static uint32_t BPF_FUNC(get_cgroup_classid, struct __sk_buff *skb); -static int BPF_FUNC(skb_under_cgroup, void *map, uint32_t index); - -static uint32_t BPF_FUNC(get_route_realm, struct __sk_buff *skb); -static uint32_t BPF_FUNC(get_hash_recalc, struct __sk_buff *skb); -static uint32_t BPF_FUNC(set_hash_invalid, struct __sk_buff *skb); - -/* Packet redirection */ -static int BPF_FUNC(redirect, int ifindex, uint32_t flags); -static int BPF_FUNC(clone_redirect, struct __sk_buff *skb, int ifindex, - uint32_t flags); - -/* Packet manipulation */ -static int BPF_FUNC(skb_load_bytes, struct __sk_buff *skb, uint32_t off, - void *to, uint32_t len); -static int BPF_FUNC(skb_store_bytes, struct __sk_buff *skb, uint32_t off, - const void *from, uint32_t len, uint32_t flags); - -static int BPF_FUNC(l3_csum_replace, struct __sk_buff *skb, uint32_t off, - uint32_t from, uint32_t to, uint32_t flags); -static int BPF_FUNC(l4_csum_replace, struct __sk_buff *skb, uint32_t off, - uint32_t from, uint32_t to, uint32_t flags); -static int BPF_FUNC(csum_diff, const void *from, uint32_t from_size, - const void *to, uint32_t to_size, uint32_t seed); -static int BPF_FUNC(csum_update, struct __sk_buff *skb, uint32_t wsum); - -static int BPF_FUNC(skb_change_type, struct __sk_buff *skb, uint32_t type); -static int BPF_FUNC(skb_change_proto, struct __sk_buff *skb, uint32_t proto, - uint32_t flags); -static int BPF_FUNC(skb_change_tail, struct __sk_buff *skb, uint32_t nlen, - uint32_t flags); - -static int BPF_FUNC(skb_pull_data, struct __sk_buff *skb, uint32_t len); - -/* Event notification */ -static int __BPF_FUNC(skb_event_output, struct __sk_buff *skb, void *map, - uint64_t index, const void *data, uint32_t size) = - (void *) BPF_FUNC_perf_event_output; - -/* Packet vlan encap/decap */ -static int BPF_FUNC(skb_vlan_push, struct __sk_buff *skb, uint16_t proto, - uint16_t vlan_tci); -static int BPF_FUNC(skb_vlan_pop, struct __sk_buff *skb); - -/* Packet tunnel encap/decap */ -static int BPF_FUNC(skb_get_tunnel_key, struct __sk_buff *skb, - struct bpf_tunnel_key *to, uint32_t size, uint32_t flags); -static int BPF_FUNC(skb_set_tunnel_key, struct __sk_buff *skb, - const struct bpf_tunnel_key *from, uint32_t size, - uint32_t flags); - -static int BPF_FUNC(skb_get_tunnel_opt, struct __sk_buff *skb, - void *to, uint32_t size); -static int BPF_FUNC(skb_set_tunnel_opt, struct __sk_buff *skb, - const void *from, uint32_t size); - -/** LLVM built-ins, mem*() routines work for constant size */ - -#ifndef lock_xadd -# define lock_xadd(ptr, val) ((void) __sync_fetch_and_add(ptr, val)) -#endif - -#ifndef memset -# define memset(s, c, n) __builtin_memset((s), (c), (n)) -#endif - -#ifndef memcpy -# define memcpy(d, s, n) __builtin_memcpy((d), (s), (n)) -#endif - -#ifndef memmove -# define memmove(d, s, n) __builtin_memmove((d), (s), (n)) -#endif - -/* FIXME: __builtin_memcmp() is not yet fully usable unless llvm bug - * https://llvm.org/bugs/show_bug.cgi?id=26218 gets resolved. Also - * this one would generate a reloc entry (non-map), otherwise. - */ -#if 0 -#ifndef memcmp -# define memcmp(a, b, n) __builtin_memcmp((a), (b), (n)) -#endif -#endif - -unsigned long long load_byte(void *skb, unsigned long long off) - asm ("llvm.bpf.load.byte"); - -unsigned long long load_half(void *skb, unsigned long long off) - asm ("llvm.bpf.load.half"); - -unsigned long long load_word(void *skb, unsigned long long off) - asm ("llvm.bpf.load.word"); - -#endif /* __BPF_API__ */ diff --git a/drivers/net/tap/bpf/bpf_elf.h b/drivers/net/tap/bpf/bpf_elf.h deleted file mode 100644 index ea8a11c95c0f..000000000000 --- a/drivers/net/tap/bpf/bpf_elf.h +++ /dev/null @@ -1,53 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 or BSD-3-Clause */ -#ifndef __BPF_ELF__ -#define __BPF_ELF__ - -#include <asm/types.h> - -/* Note: - * - * Below ELF section names and bpf_elf_map structure definition - * are not (!) kernel ABI. It's rather a "contract" between the - * application and the BPF loader in tc. For compatibility, the - * section names should stay as-is. Introduction of aliases, if - * needed, are a possibility, though. - */ - -/* ELF section names, etc */ -#define ELF_SECTION_LICENSE "license" -#define ELF_SECTION_MAPS "maps" -#define ELF_SECTION_PROG "prog" -#define ELF_SECTION_CLASSIFIER "classifier" -#define ELF_SECTION_ACTION "action" - -#define ELF_MAX_MAPS 64 -#define ELF_MAX_LICENSE_LEN 128 - -/* Object pinning settings */ -#define PIN_NONE 0 -#define PIN_OBJECT_NS 1 -#define PIN_GLOBAL_NS 2 - -/* ELF map definition */ -struct bpf_elf_map { - __u32 type; - __u32 size_key; - __u32 size_value; - __u32 max_elem; - __u32 flags; - __u32 id; - __u32 pinning; - __u32 inner_id; - __u32 inner_idx; -}; - -#define BPF_ANNOTATE_KV_PAIR(name, type_key, type_val) \ - struct ____btf_map_##name { \ - type_key key; \ - type_val value; \ - }; \ - struct ____btf_map_##name \ - __attribute__ ((section(".maps." #name), used)) \ - ____btf_map_##name = { } - -#endif /* __BPF_ELF__ */ diff --git a/drivers/net/tap/bpf/tap_bpf_program.c b/drivers/net/tap/bpf/tap_bpf_program.c index f05aed021c30..0842fb437c4e 100644 --- a/drivers/net/tap/bpf/tap_bpf_program.c +++ b/drivers/net/tap/bpf/tap_bpf_program.c @@ -2,58 +2,36 @@ * Copyright 2017 Mellanox Technologies, Ltd */ -#include <stdint.h> -#include <stdbool.h> -#include <sys/types.h> -#include <sys/socket.h> -#include <asm/types.h> + #include <linux/in.h> -#include <linux/if.h> #include <linux/if_ether.h> #include <linux/ip.h> #include <linux/ipv6.h> -#include <linux/if_tunnel.h> -#include <linux/filter.h> - -#include "bpf_api.h" -#include "bpf_elf.h" -#include "../tap_rss.h" +#include <linux/pkt_cls.h> +#include <linux/bpf.h> -/** Create IPv4 address */ -#define IPv4(a, b, c, d) ((__u32)(((a) & 0xff) << 24) | \ - (((b) & 0xff) << 16) | \ - (((c) & 0xff) << 8) | \ - ((d) & 0xff)) +#include <bpf/bpf_helpers.h> +#include <bpf/bpf_endian.h> -#define PORT(a, b) ((__u16)(((a) & 0xff) << 8) | \ - ((b) & 0xff)) +#include "../tap_rss.h" /* * The queue number is offset by a unique QUEUE_OFFSET, to distinguish * packets that have gone through this rule (skb->cb[1] != 0) from others. */ #define QUEUE_OFFSET 0x7cafe800 -#define PIN_GLOBAL_NS 2 - -#define KEY_IDX 0 -#define BPF_MAP_ID_KEY 1 - -struct vlan_hdr { - __be16 proto; - __be16 tci; -}; - -struct bpf_elf_map __attribute__((section("maps"), used)) -map_keys = { - .type = BPF_MAP_TYPE_HASH, - .id = BPF_MAP_ID_KEY, - .size_key = sizeof(__u32), - .size_value = sizeof(struct rss_key), - .max_elem = 256, - .pinning = PIN_GLOBAL_NS, -}; - -__section("cls_q") int + +#define IP_MF 0x2000 /** IP header Flags **/ +#define IP_OFFSET 0x1FFF /** IP header fragment offset **/ + +struct { + __uint(type, BPF_MAP_TYPE_HASH); + __type(key, __u32); + __type(value, struct rss_key); + __uint(max_entries, 256); +} map_keys SEC(".maps"); + +SEC("cls_q") int match_q(struct __sk_buff *skb) { __u32 queue = skb->cb[1]; @@ -71,7 +49,6 @@ match_q(struct __sk_buff *skb) return TC_ACT_UNSPEC; } - struct ipv4_l3_l4_tuple { __u32 src_addr; __u32 dst_addr; @@ -80,176 +57,187 @@ struct ipv4_l3_l4_tuple { } __attribute__((packed)); struct ipv6_l3_l4_tuple { - __u8 src_addr[16]; - __u8 dst_addr[16]; + __u32 src_addr[4]; + __u32 dst_addr[4]; __u16 dport; __u16 sport; } __attribute__((packed)); -static const __u8 def_rss_key[TAP_RSS_HASH_KEY_SIZE] = { - 0xd1, 0x81, 0xc6, 0x2c, - 0xf7, 0xf4, 0xdb, 0x5b, - 0x19, 0x83, 0xa2, 0xfc, - 0x94, 0x3e, 0x1a, 0xdb, - 0xd9, 0x38, 0x9e, 0x6b, - 0xd1, 0x03, 0x9c, 0x2c, - 0xa7, 0x44, 0x99, 0xad, - 0x59, 0x3d, 0x56, 0xd9, - 0xf3, 0x25, 0x3c, 0x06, - 0x2a, 0xdc, 0x1f, 0xfc, -}; - static __u32 __attribute__((always_inline)) -rte_softrss_be(const __u32 *input_tuple, const uint8_t *rss_key, - __u8 input_len) +softrss_be(const __u32 *input_tuple, __u32 input_len, const void *rss_key) { __u32 i, j, hash = 0; + const __u32 *key32 = rss_key; + #pragma unroll for (j = 0; j < input_len; j++) { #pragma unroll for (i = 0; i < 32; i++) { - if (input_tuple[j] & (1U << (31 - i))) { - hash ^= ((const __u32 *)def_rss_key)[j] << i | - (__u32)((uint64_t) - (((const __u32 *)def_rss_key)[j + 1]) - >> (32 - i)); - } + if (input_tuple[j] & (1U << (31 - i))) + hash ^= key32[j] << i | key32[j + 1] >> (32 - i); } } return hash; } -static int __attribute__((always_inline)) -rss_l3_l4(struct __sk_buff *skb) +static int +parse_ipv4(struct __sk_buff *skb, const struct rss_key *rsskey, __u32 *hash) { - void *data_end = (void *)(long)skb->data_end; - void *data = (void *)(long)skb->data; - __u16 proto = (__u16)skb->protocol; - __u32 key_idx = 0xdeadbeef; - __u32 hash; - struct rss_key *rsskey; - __u64 off = ETH_HLEN; - int j; - __u8 *key = 0; - __u32 len; - __u32 queue = 0; - bool mf = 0; - __u16 frag_off = 0; - - rsskey = map_lookup_elem(&map_keys, &key_idx); - if (!rsskey) { - printt("hash(): rss key is not configured\n"); + struct iphdr iph; + __u32 off = 0; + + if (bpf_skb_load_bytes_relative(skb, off, &iph, sizeof(iph), BPF_HDR_START_NET)) return TC_ACT_OK; + off += iph.ihl * 4; + + struct ipv4_l3_l4_tuple v4_tuple = { + .src_addr = bpf_ntohl(iph.saddr), + .dst_addr = bpf_ntohl(iph.daddr), + }; + + if (rsskey->hash_fields & (1 << HASH_FIELD_IPV4_L3)) { + *hash = softrss_be((__u32 *)&v4_tuple, 2, rsskey->key); + return TC_ACT_RECLASSIFY; } - key = (__u8 *)rsskey->key; - /* Get correct proto for 802.1ad */ - if (skb->vlan_present && skb->vlan_proto == htons(ETH_P_8021AD)) { - if (data + ETH_ALEN * 2 + sizeof(struct vlan_hdr) + - sizeof(proto) > data_end) + /* Get ports for non-fragmented TCP/UDP */ + if ( (iph.frag_off & bpf_htons(IP_MF | IP_OFFSET)) != 0 && + (iph.protocol == IPPROTO_UDP || iph.protocol == IPPROTO_TCP)) { + __u16 src_dst_port[2]; + + if (bpf_skb_load_bytes_relative(skb, off, &src_dst_port, sizeof(src_dst_port), + BPF_HDR_START_NET)) return TC_ACT_OK; - proto = *(__u16 *)(data + ETH_ALEN * 2 + - sizeof(struct vlan_hdr)); - off += sizeof(struct vlan_hdr); + + v4_tuple.sport = bpf_ntohs(src_dst_port[0]); + v4_tuple.dport = bpf_ntohs(src_dst_port[1]); } - if (proto == htons(ETH_P_IP)) { - if (data + off + sizeof(struct iphdr) + sizeof(__u32) - > data_end) - return TC_ACT_OK; + *hash = softrss_be((__u32 *)&v4_tuple, 3, rsskey->key); - __u8 *src_dst_addr = data + off + offsetof(struct iphdr, saddr); - __u8 *frag_off_addr = data + off + offsetof(struct iphdr, frag_off); - __u8 *prot_addr = data + off + offsetof(struct iphdr, protocol); - __u8 *src_dst_port = data + off + sizeof(struct iphdr); - struct ipv4_l3_l4_tuple v4_tuple = { - .src_addr = IPv4(*(src_dst_addr + 0), - *(src_dst_addr + 1), - *(src_dst_addr + 2), - *(src_dst_addr + 3)), - .dst_addr = IPv4(*(src_dst_addr + 4), - *(src_dst_addr + 5), - *(src_dst_addr + 6), - *(src_dst_addr + 7)), - .sport = 0, - .dport = 0, - }; - /** Fetch the L4-payer port numbers only in-case of TCP/UDP - ** and also if the packet is not fragmented. Since fragmented - ** chunks do not have L4 TCP/UDP header. - **/ - if (*prot_addr == IPPROTO_UDP || *prot_addr == IPPROTO_TCP) { - frag_off = PORT(*(frag_off_addr + 0), - *(frag_off_addr + 1)); - mf = frag_off & 0x2000; - frag_off = frag_off & 0x1fff; - if (mf == 0 && frag_off == 0) { - v4_tuple.sport = PORT(*(src_dst_port + 0), - *(src_dst_port + 1)); - v4_tuple.dport = PORT(*(src_dst_port + 2), - *(src_dst_port + 3)); - } - } - __u8 input_len = sizeof(v4_tuple) / sizeof(__u32); - if (rsskey->hash_fields & (1 << HASH_FIELD_IPV4_L3)) - input_len--; - hash = rte_softrss_be((__u32 *)&v4_tuple, key, 3); - } else if (proto == htons(ETH_P_IPV6)) { - if (data + off + sizeof(struct ipv6hdr) + - sizeof(__u32) > data_end) - return TC_ACT_OK; - __u8 *src_dst_addr = data + off + - offsetof(struct ipv6hdr, saddr); - __u8 *src_dst_port = data + off + - sizeof(struct ipv6hdr); - __u8 *next_hdr = data + off + - offsetof(struct ipv6hdr, nexthdr); - - struct ipv6_l3_l4_tuple v6_tuple; - for (j = 0; j < 4; j++) - *((uint32_t *)&v6_tuple.src_addr + j) = - __builtin_bswap32(*((uint32_t *) - src_dst_addr + j)); - for (j = 0; j < 4; j++) - *((uint32_t *)&v6_tuple.dst_addr + j) = - __builtin_bswap32(*((uint32_t *) - src_dst_addr + 4 + j)); - - /** Fetch the L4 header port-numbers only if next-header - * is TCP/UDP **/ - if (*next_hdr == IPPROTO_UDP || *next_hdr == IPPROTO_TCP) { - v6_tuple.sport = PORT(*(src_dst_port + 0), - *(src_dst_port + 1)); - v6_tuple.dport = PORT(*(src_dst_port + 2), - *(src_dst_port + 3)); - } else { - v6_tuple.sport = 0; - v6_tuple.dport = 0; + return TC_ACT_RECLASSIFY; +} + +/* parse ipv6 extended headers, update offset and return next proto */ +static int +skip_ip6_ext(__u16 proto, struct __sk_buff *skb, __u32 *off, int *frag) +{ + struct ext_hdr { + __u8 next_hdr; + __u8 len; + } xh; + unsigned int i; + + *frag = 0; + +#define MAX_EXT_HDRS 5 +#pragma unroll + for (i = 0; i < MAX_EXT_HDRS; i++) { + switch (proto) { + case IPPROTO_HOPOPTS: + case IPPROTO_ROUTING: + case IPPROTO_DSTOPTS: + if (bpf_skb_load_bytes_relative(skb, *off, &xh, sizeof(xh), BPF_HDR_START_NET)) + return -1; + + *off += (xh.len + 1) * 8; + proto = xh.next_hdr; + break; + case IPPROTO_FRAGMENT: + if (bpf_skb_load_bytes_relative(skb, *off, &xh, sizeof(xh), BPF_HDR_START_NET)) + return -1; + + *off += 8; + proto = xh.next_hdr; + *frag = 1; + return proto; /* this is always the last ext hdr */ + case IPPROTO_NONE: + return 0; + default: + return proto; } + } - __u8 input_len = sizeof(v6_tuple) / sizeof(__u32); - if (rsskey->hash_fields & (1 << HASH_FIELD_IPV6_L3)) - input_len--; - hash = rte_softrss_be((__u32 *)&v6_tuple, key, 9); - } else { - return TC_ACT_PIPE; + /* too many extension headers give up */ + return -1; +} + +static int +parse_ipv6(struct __sk_buff *skb, const struct rss_key *rsskey, __u32 *hash) +{ + struct ipv6_l3_l4_tuple v6_tuple = { }; + struct ipv6hdr ip6h; + __u32 off = 0, j; + int proto, frag; + + if (bpf_skb_load_bytes_relative(skb, off, &ip6h, sizeof(ip6h), BPF_HDR_START_NET)) + return TC_ACT_OK; + off += sizeof(ip6h); + +#pragma unroll + for (j = 0; j < 4; j++) { + v6_tuple.src_addr[j] = bpf_ntohl(ip6h.saddr.in6_u.u6_addr32[j]); + v6_tuple.dst_addr[j] = bpf_ntohl(ip6h.daddr.in6_u.u6_addr32[j]); } - queue = rsskey->queues[(hash % rsskey->nb_queues) & - (TAP_MAX_QUEUES - 1)]; - skb->cb[1] = QUEUE_OFFSET + queue; - /* printt(">>>>> rss_l3_l4 hash=0x%x queue=%u\n", hash, queue); */ + if (rsskey->hash_fields & (1 << HASH_FIELD_IPV6_L3)) { + *hash = softrss_be((__u32 *)&v6_tuple, 8, rsskey->key); + return TC_ACT_RECLASSIFY; + } + + proto = skip_ip6_ext(ip6h.nexthdr, skb, &off, &frag); + if (proto < 0) + return TC_ACT_OK; + + /* Fetch the L4 header port-numbers only if next-header is TCP/UDP */ + if (!frag && (proto == IPPROTO_UDP || proto == IPPROTO_TCP)) { + __u16 src_dst_port[2]; + + if (bpf_skb_load_bytes_relative(skb, off, &src_dst_port, sizeof(src_dst_port), + BPF_HDR_START_NET)) + return TC_ACT_OK; + + v6_tuple.sport = bpf_ntohs(src_dst_port[0]); + v6_tuple.dport = bpf_ntohs(src_dst_port[1]); + } + *hash = softrss_be((__u32 *)&v6_tuple, 9, rsskey->key); return TC_ACT_RECLASSIFY; } -#define RSS(L) \ - __section(#L) int \ - L ## _hash(struct __sk_buff *skb) \ - { \ - return rss_ ## L (skb); \ +SEC("l3_l4") int +rss_l3_l4(struct __sk_buff *skb) +{ + const struct rss_key *rsskey; + __be16 proto = skb->protocol; + __u32 key_idx = 0xdeadbeef; + __u32 hash; + int ret; + + rsskey = bpf_map_lookup_elem(&map_keys, &key_idx); + if (!rsskey) { + bpf_printk("hash(): rss key is not configured\n"); + return TC_ACT_OK; } -RSS(l3_l4) + if (proto == bpf_htons(ETH_P_IP)) + ret = parse_ipv4(skb, rsskey, &hash); + else if (proto == bpf_htons(ETH_P_IPV6)) + ret = parse_ipv6(skb, rsskey, &hash); + else + ret = TC_ACT_PIPE; + + if (ret == TC_ACT_RECLASSIFY) { + if (rsskey->nb_queues == 0) { + bpf_printk("hash(): num queues is zero?\n"); + return TC_ACT_OK; + } + + __u32 queue = rsskey->queues[(hash % rsskey->nb_queues) & (TAP_MAX_QUEUES - 1)]; + skb->cb[1] = QUEUE_OFFSET + queue; + } + + return ret; +} -BPF_LICENSE("Dual BSD/GPL"); +char _license[] SEC("license") = "Dual BSD/GPL"; diff --git a/drivers/net/tap/tap_bpf_api.c b/drivers/net/tap/tap_bpf_api.c index 15283f8917ed..7e13d4b8b6ba 100644 --- a/drivers/net/tap/tap_bpf_api.c +++ b/drivers/net/tap/tap_bpf_api.c @@ -48,8 +48,9 @@ int tap_flow_bpf_cls_q(__u32 queue_idx) */ int tap_flow_bpf_calc_l3_l4_hash(__u32 key_idx, int map_fd) { - l3_l4_hash_insns[4].imm = key_idx; - l3_l4_hash_insns[9].imm = map_fd; + l3_l4_hash_insns[1].imm = key_idx; + l3_l4_hash_insns[6].imm = map_fd; + l3_l4_hash_insns[6].src_reg = 1; return bpf_load(BPF_PROG_TYPE_SCHED_ACT, (struct bpf_insn *)l3_l4_hash_insns, diff --git a/drivers/net/tap/tap_bpf_insns.h b/drivers/net/tap/tap_bpf_insns.h index 53fa76c4e6b0..4999195b1486 100644 --- a/drivers/net/tap/tap_bpf_insns.h +++ b/drivers/net/tap/tap_bpf_insns.h @@ -24,1720 +24,1828 @@ static struct bpf_insn cls_q_insns[] = { }; static struct bpf_insn l3_l4_hash_insns[] = { - {0xbf, 7, 1, 0, 0x00000000}, - {0x61, 6, 7, 16, 0x00000000}, - {0x61, 8, 7, 76, 0x00000000}, - {0x61, 9, 7, 80, 0x00000000}, + {0xbf, 9, 1, 0, 0x00000000}, + {0x61, 6, 9, 16, 0x00000000}, {0x18, 1, 0, 0, 0xdeadbeef}, {0x00, 0, 0, 0, 0x00000000}, - {0x63, 10, 1, -4, 0x00000000}, + {0x63, 10, 1, -32, 0x00000000}, {0xbf, 2, 10, 0, 0x00000000}, - {0x07, 2, 0, 0, 0xfffffffc}, + {0x07, 2, 0, 0, 0xffffffe0}, {0x18, 1, 0, 0, 0x00000000}, {0x00, 0, 0, 0, 0x00000000}, {0x85, 0, 0, 0, 0x00000001}, - {0x55, 0, 0, 21, 0x00000000}, - {0xb7, 1, 0, 0, 0x00000a64}, - {0x6b, 10, 1, -16, 0x00000000}, - {0x18, 1, 0, 0, 0x69666e6f}, - {0x00, 0, 0, 0, 0x65727567}, - {0x7b, 10, 1, -24, 0x00000000}, - {0x18, 1, 0, 0, 0x6e207369}, - {0x00, 0, 0, 0, 0x6320746f}, - {0x7b, 10, 1, -32, 0x00000000}, - {0x18, 1, 0, 0, 0x20737372}, - {0x00, 0, 0, 0, 0x2079656b}, - {0x7b, 10, 1, -40, 0x00000000}, - {0x18, 1, 0, 0, 0x68736168}, - {0x00, 0, 0, 0, 0x203a2928}, - {0x7b, 10, 1, -48, 0x00000000}, - {0xb7, 7, 0, 0, 0x00000000}, - {0x73, 10, 7, -14, 0x00000000}, - {0xbf, 1, 10, 0, 0x00000000}, - {0x07, 1, 0, 0, 0xffffffd0}, + {0xbf, 7, 0, 0, 0x00000000}, + {0x55, 7, 0, 6, 0x00000000}, + {0x18, 1, 0, 0, 0x00000000}, + {0x00, 0, 0, 0, 0x00000000}, {0xb7, 2, 0, 0, 0x00000023}, {0x85, 0, 0, 0, 0x00000006}, - {0x05, 0, 0, 1680, 0x00000000}, - {0xb7, 1, 0, 0, 0x0000000e}, - {0x61, 2, 7, 20, 0x00000000}, - {0x15, 2, 0, 10, 0x00000000}, - {0x61, 2, 7, 28, 0x00000000}, - {0x55, 2, 0, 8, 0x0000a888}, - {0xbf, 2, 7, 0, 0x00000000}, - {0xb7, 7, 0, 0, 0x00000000}, - {0xbf, 1, 8, 0, 0x00000000}, - {0x07, 1, 0, 0, 0x00000012}, - {0x2d, 1, 9, 1670, 0x00000000}, - {0xb7, 1, 0, 0, 0x00000012}, - {0x69, 6, 8, 16, 0x00000000}, - {0xbf, 7, 2, 0, 0x00000000}, + {0xb7, 8, 0, 0, 0x00000000}, + {0x05, 0, 0, 749, 0x00000000}, {0x57, 6, 0, 0, 0x0000ffff}, - {0x7b, 10, 7, -56, 0x00000000}, - {0x15, 6, 0, 443, 0x0000dd86}, - {0xb7, 7, 0, 0, 0x00000003}, - {0x55, 6, 0, 1662, 0x00000008}, - {0x0f, 8, 1, 0, 0x00000000}, - {0xb7, 7, 0, 0, 0x00000000}, - {0xbf, 1, 8, 0, 0x00000000}, - {0x07, 1, 0, 0, 0x00000018}, - {0x2d, 1, 9, 1657, 0x00000000}, - {0xb7, 1, 0, 0, 0x00000000}, - {0x71, 3, 8, 12, 0x00000000}, - {0x71, 2, 8, 9, 0x00000000}, - {0x15, 2, 0, 1, 0x00000011}, - {0x55, 2, 0, 21, 0x00000006}, - {0x71, 2, 8, 7, 0x00000000}, - {0x71, 4, 8, 6, 0x00000000}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x67, 5, 0, 0, 0x00000008}, - {0x57, 5, 0, 0, 0x00001f00}, - {0x4f, 5, 2, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000020}, - {0x4f, 4, 5, 0, 0x00000000}, - {0x55, 4, 0, 12, 0x00000000}, - {0xbf, 2, 8, 0, 0x00000000}, - {0x07, 2, 0, 0, 0x00000014}, - {0x71, 4, 2, 0, 0x00000000}, - {0x67, 4, 0, 0, 0x00000018}, - {0x71, 1, 2, 1, 0x00000000}, - {0x67, 1, 0, 0, 0x00000010}, - {0x4f, 1, 4, 0, 0x00000000}, - {0x71, 4, 2, 3, 0x00000000}, - {0x4f, 1, 4, 0, 0x00000000}, - {0x71, 2, 2, 2, 0x00000000}, - {0x67, 2, 0, 0, 0x00000008}, - {0x4f, 1, 2, 0, 0x00000000}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x67, 4, 0, 0, 0x00000038}, - {0xc7, 4, 0, 0, 0x00000038}, + {0x15, 6, 0, 704, 0x0000dd86}, + {0xb7, 8, 0, 0, 0x00000003}, + {0x55, 6, 0, 745, 0x00000008}, + {0xb7, 8, 0, 0, 0x00000000}, + {0xbf, 3, 10, 0, 0x00000000}, + {0x07, 3, 0, 0, 0xffffffe8}, + {0xbf, 1, 9, 0, 0x00000000}, {0xb7, 2, 0, 0, 0x00000000}, - {0x65, 4, 0, 1, 0xffffffff}, - {0xb7, 7, 0, 0, 0x2cc681d1}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000040}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x598d03a2}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000020}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xb31a0745}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000010}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x66340e8a}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000008}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xcc681d15}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000004}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x98d03a2b}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000002}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x31a07456}, - {0x71, 4, 8, 13, 0x00000000}, - {0x57, 3, 0, 0, 0x00000001}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x6340e8ad}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x67, 3, 0, 0, 0x00000038}, - {0xc7, 3, 0, 0, 0x00000038}, - {0xbf, 5, 7, 0, 0x00000000}, - {0xa7, 5, 0, 0, 0xc681d15b}, - {0x6d, 2, 3, 1, 0x00000000}, - {0xbf, 5, 7, 0, 0x00000000}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000040}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x8d03a2b7}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000020}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x1a07456f}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000010}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x340e8ade}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000008}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x681d15bd}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000004}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xd03a2b7b}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000002}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xa07456f6}, - {0x71, 3, 8, 14, 0x00000000}, - {0x57, 4, 0, 0, 0x00000001}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x40e8aded}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x67, 4, 0, 0, 0x00000038}, - {0xc7, 4, 0, 0, 0x00000038}, - {0xbf, 7, 5, 0, 0x00000000}, - {0xa7, 7, 0, 0, 0x81d15bdb}, - {0x6d, 2, 4, 1, 0x00000000}, - {0xbf, 7, 5, 0, 0x00000000}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000040}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x03a2b7b7}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000020}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x07456f6f}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000010}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x0e8adedf}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000008}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x1d15bdbf}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000004}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x3a2b7b7e}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000002}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x7456f6fd}, - {0x71, 4, 8, 15, 0x00000000}, - {0x57, 3, 0, 0, 0x00000001}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xe8adedfa}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x67, 3, 0, 0, 0x00000038}, - {0xc7, 3, 0, 0, 0x00000038}, - {0xbf, 5, 7, 0, 0x00000000}, - {0xa7, 5, 0, 0, 0xd15bdbf4}, - {0x6d, 2, 3, 1, 0x00000000}, - {0xbf, 5, 7, 0, 0x00000000}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000040}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xa2b7b7e9}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000020}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x456f6fd3}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000010}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x8adedfa7}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000008}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x15bdbf4f}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000004}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x2b7b7e9e}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000002}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x56f6fd3d}, - {0x71, 3, 8, 16, 0x00000000}, - {0x57, 4, 0, 0, 0x00000001}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xadedfa7b}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x67, 4, 0, 0, 0x00000038}, - {0xc7, 4, 0, 0, 0x00000038}, - {0xbf, 7, 5, 0, 0x00000000}, - {0xa7, 7, 0, 0, 0x5bdbf4f7}, - {0x6d, 2, 4, 1, 0x00000000}, - {0xbf, 7, 5, 0, 0x00000000}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000040}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xb7b7e9ef}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000020}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x6f6fd3df}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000010}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xdedfa7bf}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000008}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xbdbf4f7f}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000004}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x7b7e9eff}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000002}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xf6fd3dff}, - {0x71, 4, 8, 17, 0x00000000}, - {0x57, 3, 0, 0, 0x00000001}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xedfa7bfe}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x67, 3, 0, 0, 0x00000038}, - {0xc7, 3, 0, 0, 0x00000038}, - {0xbf, 5, 7, 0, 0x00000000}, - {0xa7, 5, 0, 0, 0xdbf4f7fc}, - {0x6d, 2, 3, 1, 0x00000000}, - {0xbf, 5, 7, 0, 0x00000000}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000040}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xb7e9eff9}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000020}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x6fd3dff2}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000010}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xdfa7bfe5}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000008}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xbf4f7fca}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000004}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x7e9eff94}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000002}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xfd3dff28}, - {0x71, 3, 8, 18, 0x00000000}, - {0x57, 4, 0, 0, 0x00000001}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xfa7bfe51}, - {0xbf, 6, 3, 0, 0x00000000}, - {0x67, 6, 0, 0, 0x00000038}, - {0xc7, 6, 0, 0, 0x00000038}, - {0xbf, 4, 5, 0, 0x00000000}, - {0xa7, 4, 0, 0, 0xf4f7fca2}, - {0x6d, 2, 6, 1, 0x00000000}, - {0xbf, 4, 5, 0, 0x00000000}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000040}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xe9eff945}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000020}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xd3dff28a}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000010}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xa7bfe514}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000008}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x4f7fca28}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000004}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x9eff9450}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000002}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x3dff28a0}, - {0x71, 5, 8, 19, 0x00000000}, - {0x57, 3, 0, 0, 0x00000001}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x7bfe5141}, - {0xbf, 3, 5, 0, 0x00000000}, - {0x67, 3, 0, 0, 0x00000038}, - {0xc7, 3, 0, 0, 0x00000038}, - {0xbf, 7, 4, 0, 0x00000000}, - {0xa7, 7, 0, 0, 0xf7fca283}, - {0x6d, 2, 3, 1, 0x00000000}, - {0xbf, 7, 4, 0, 0x00000000}, - {0xbf, 3, 5, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000040}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xeff94506}, - {0xbf, 3, 5, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000020}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xdff28a0c}, - {0xbf, 3, 5, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000010}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xbfe51418}, - {0xbf, 3, 5, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000008}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x7fca2831}, - {0xbf, 3, 5, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000004}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xff945063}, - {0xbf, 3, 5, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000002}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xff28a0c6}, - {0x57, 5, 0, 0, 0x00000001}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xfe51418c}, - {0xbf, 4, 1, 0, 0x00000000}, - {0x67, 4, 0, 0, 0x00000020}, - {0xc7, 4, 0, 0, 0x00000020}, - {0xbf, 3, 7, 0, 0x00000000}, - {0xa7, 3, 0, 0, 0xfca28319}, - {0x6d, 2, 4, 1, 0x00000000}, - {0xbf, 3, 7, 0, 0x00000000}, - {0xbf, 2, 1, 0, 0x00000000}, + {0xb7, 4, 0, 0, 0x00000014}, + {0xb7, 5, 0, 0, 0x00000001}, + {0x85, 0, 0, 0, 0x00000044}, + {0x55, 0, 0, 699, 0x00000000}, + {0x61, 8, 10, -8, 0x00000000}, + {0xdc, 8, 0, 0, 0x00000020}, + {0x61, 6, 10, -12, 0x00000000}, + {0xdc, 6, 0, 0, 0x00000020}, + {0x71, 1, 7, 128, 0x00000000}, + {0x57, 1, 0, 0, 0x00000001}, + {0x15, 1, 0, 731, 0x00000000}, + {0xb7, 1, 0, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, {0x57, 2, 0, 0, 0x40000000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0xf9450633}, - {0xbf, 2, 1, 0, 0x00000000}, + {0x15, 2, 0, 6, 0x00000000}, + {0x61, 1, 7, 0, 0x00000000}, + {0x67, 1, 0, 0, 0x00000001}, + {0x61, 2, 7, 4, 0x00000000}, + {0x77, 2, 0, 0, 0x0000001f}, + {0x57, 2, 0, 0, 0x00000001}, + {0x4f, 1, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, {0x57, 2, 0, 0, 0x20000000}, - {0x79, 6, 10, -56, 0x00000000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0xf28a0c67}, - {0xbf, 2, 1, 0, 0x00000000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x00000002}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x0000001e}, + {0x57, 3, 0, 0, 0x00000003}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 1, 0, 0x00000000}, + {0xbf, 1, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, {0x57, 2, 0, 0, 0x10000000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0xe51418ce}, - {0xbf, 2, 1, 0, 0x00000000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x00000003}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x0000001d}, + {0x57, 3, 0, 0, 0x00000007}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 1, 0, 0x00000000}, + {0xbf, 1, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, {0x57, 2, 0, 0, 0x08000000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0xca28319d}, - {0xbf, 2, 1, 0, 0x00000000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x00000004}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x0000001c}, + {0x57, 3, 0, 0, 0x0000000f}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 1, 0, 0x00000000}, + {0xbf, 1, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, {0x57, 2, 0, 0, 0x04000000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x9450633b}, - {0xbf, 2, 1, 0, 0x00000000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x00000005}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x0000001b}, + {0x57, 3, 0, 0, 0x0000001f}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 1, 0, 0x00000000}, + {0xbf, 1, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, {0x57, 2, 0, 0, 0x02000000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x28a0c676}, - {0xbf, 2, 1, 0, 0x00000000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x00000006}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x0000001a}, + {0x57, 3, 0, 0, 0x0000003f}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 1, 0, 0x00000000}, + {0xbf, 1, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, {0x57, 2, 0, 0, 0x01000000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x51418ced}, - {0xbf, 2, 1, 0, 0x00000000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x00000007}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x00000019}, + {0x57, 3, 0, 0, 0x0000007f}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 1, 0, 0x00000000}, + {0xbf, 1, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00800000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0xa28319db}, - {0xbf, 2, 1, 0, 0x00000000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x00000008}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x00000018}, + {0x57, 3, 0, 0, 0x000000ff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 1, 0, 0x00000000}, + {0xbf, 1, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00400000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x450633b6}, - {0xbf, 2, 1, 0, 0x00000000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x00000009}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x00000017}, + {0x57, 3, 0, 0, 0x000001ff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 1, 0, 0x00000000}, + {0xbf, 1, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00200000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x8a0c676c}, - {0xbf, 2, 1, 0, 0x00000000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x0000000a}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x00000016}, + {0x57, 3, 0, 0, 0x000003ff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 1, 0, 0x00000000}, + {0xbf, 1, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00100000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x1418ced8}, - {0xbf, 2, 1, 0, 0x00000000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x0000000b}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x00000015}, + {0x57, 3, 0, 0, 0x000007ff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 1, 0, 0x00000000}, + {0xbf, 1, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00080000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x28319db1}, - {0xbf, 2, 1, 0, 0x00000000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x0000000c}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x00000014}, + {0x57, 3, 0, 0, 0x00000fff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 1, 0, 0x00000000}, + {0xbf, 1, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00040000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x50633b63}, - {0xbf, 2, 1, 0, 0x00000000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x0000000d}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x00000013}, + {0x57, 3, 0, 0, 0x00001fff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 1, 0, 0x00000000}, + {0xbf, 1, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00020000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0xa0c676c6}, - {0xbf, 2, 1, 0, 0x00000000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x0000000e}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x00000012}, + {0x57, 3, 0, 0, 0x00003fff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 1, 0, 0x00000000}, + {0xbf, 1, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00010000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x418ced8d}, - {0xbf, 2, 1, 0, 0x00000000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x0000000f}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x00000011}, + {0x57, 3, 0, 0, 0x00007fff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 1, 0, 0x00000000}, + {0xbf, 1, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00008000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x8319db1a}, - {0xbf, 2, 1, 0, 0x00000000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x00000010}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x00000010}, + {0x57, 3, 0, 0, 0x0000ffff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 1, 0, 0x00000000}, + {0xbf, 1, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00004000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x0633b634}, - {0xbf, 2, 1, 0, 0x00000000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x00000011}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x0000000f}, + {0x57, 3, 0, 0, 0x0001ffff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 1, 0, 0x00000000}, + {0xbf, 1, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00002000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x0c676c68}, - {0xbf, 2, 1, 0, 0x00000000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x00000012}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x0000000e}, + {0x57, 3, 0, 0, 0x0003ffff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 1, 0, 0x00000000}, + {0xbf, 1, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00001000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x18ced8d1}, - {0xbf, 2, 1, 0, 0x00000000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x00000013}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x0000000d}, + {0x57, 3, 0, 0, 0x0007ffff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 1, 0, 0x00000000}, + {0xbf, 1, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00000800}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x319db1a3}, - {0xbf, 2, 1, 0, 0x00000000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x00000014}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x0000000c}, + {0x57, 3, 0, 0, 0x000fffff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 1, 0, 0x00000000}, + {0xbf, 1, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00000400}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x633b6347}, - {0xbf, 2, 1, 0, 0x00000000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x00000015}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x0000000b}, + {0x57, 3, 0, 0, 0x001fffff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 1, 0, 0x00000000}, + {0xbf, 1, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00000200}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0xc676c68f}, - {0xbf, 2, 1, 0, 0x00000000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x00000016}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x0000000a}, + {0x57, 3, 0, 0, 0x003fffff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 1, 0, 0x00000000}, + {0xbf, 1, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00000100}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x8ced8d1f}, - {0xbf, 2, 1, 0, 0x00000000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x00000017}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x00000009}, + {0x57, 3, 0, 0, 0x007fffff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 1, 0, 0x00000000}, + {0xbf, 1, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00000080}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x19db1a3e}, - {0xbf, 2, 1, 0, 0x00000000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x00000018}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x00000008}, + {0x57, 3, 0, 0, 0x00ffffff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 1, 0, 0x00000000}, + {0xbf, 1, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00000040}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x33b6347d}, - {0xbf, 2, 1, 0, 0x00000000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x00000019}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x00000007}, + {0x57, 3, 0, 0, 0x01ffffff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 1, 0, 0x00000000}, + {0xbf, 1, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00000020}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x676c68fa}, - {0xbf, 2, 1, 0, 0x00000000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x0000001a}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x00000006}, + {0x57, 3, 0, 0, 0x03ffffff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 1, 0, 0x00000000}, + {0xbf, 1, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00000010}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0xced8d1f4}, - {0xbf, 2, 1, 0, 0x00000000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x0000001b}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x00000005}, + {0x57, 3, 0, 0, 0x07ffffff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 1, 0, 0x00000000}, + {0xbf, 1, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00000008}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x9db1a3e9}, - {0xbf, 2, 1, 0, 0x00000000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x0000001c}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x00000004}, + {0x57, 3, 0, 0, 0x0fffffff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 1, 0, 0x00000000}, + {0xbf, 1, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00000004}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x3b6347d2}, - {0xbf, 2, 1, 0, 0x00000000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x0000001d}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x00000003}, + {0x57, 3, 0, 0, 0x1fffffff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 1, 0, 0x00000000}, + {0xbf, 1, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, {0x57, 2, 0, 0, 0x00000002}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x76c68fa5}, - {0x57, 1, 0, 0, 0x00000001}, - {0x15, 1, 0, 1194, 0x00000000}, - {0xa7, 3, 0, 0, 0xed8d1f4a}, - {0x05, 0, 0, 1192, 0x00000000}, - {0x0f, 8, 1, 0, 0x00000000}, - {0xb7, 7, 0, 0, 0x00000000}, - {0xbf, 1, 8, 0, 0x00000000}, - {0x07, 1, 0, 0, 0x0000002c}, - {0x2d, 1, 9, 1216, 0x00000000}, - {0x61, 2, 8, 8, 0x00000000}, - {0xdc, 2, 0, 0, 0x00000040}, - {0xc7, 2, 0, 0, 0x00000020}, - {0x71, 3, 8, 6, 0x00000000}, - {0x15, 3, 0, 2, 0x00000011}, - {0xb7, 1, 0, 0, 0x00000000}, - {0x55, 3, 0, 12, 0x00000006}, - {0xbf, 3, 8, 0, 0x00000000}, - {0x07, 3, 0, 0, 0x00000028}, - {0x71, 4, 3, 0, 0x00000000}, - {0x67, 4, 0, 0, 0x00000018}, - {0x71, 1, 3, 1, 0x00000000}, - {0x67, 1, 0, 0, 0x00000010}, - {0x4f, 1, 4, 0, 0x00000000}, - {0x71, 4, 3, 3, 0x00000000}, - {0x4f, 1, 4, 0, 0x00000000}, - {0x71, 3, 3, 2, 0x00000000}, - {0x67, 3, 0, 0, 0x00000008}, - {0x4f, 1, 3, 0, 0x00000000}, - {0xbf, 4, 2, 0, 0x00000000}, - {0x77, 4, 0, 0, 0x0000001f}, - {0x57, 4, 0, 0, 0x2cc681d1}, - {0xbf, 3, 2, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x40000000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x598d03a2}, - {0xbf, 3, 2, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x20000000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xb31a0745}, - {0xbf, 3, 2, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x10000000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x66340e8a}, - {0xbf, 3, 2, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x08000000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xcc681d15}, - {0xbf, 3, 2, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x04000000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x98d03a2b}, - {0xbf, 3, 2, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x02000000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x31a07456}, - {0xbf, 3, 2, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x01000000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x6340e8ad}, - {0xbf, 3, 2, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00800000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xc681d15b}, - {0xbf, 3, 2, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00400000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x8d03a2b7}, - {0xbf, 3, 2, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00200000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x1a07456f}, - {0xbf, 3, 2, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00100000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x340e8ade}, - {0xbf, 3, 2, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00080000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x681d15bd}, - {0xbf, 3, 2, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00040000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xd03a2b7b}, - {0xbf, 3, 2, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00020000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xa07456f6}, - {0xbf, 3, 2, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00010000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x40e8aded}, - {0xbf, 3, 2, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00008000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x81d15bdb}, - {0xbf, 3, 2, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00004000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x03a2b7b7}, - {0xbf, 3, 2, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00002000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x07456f6f}, - {0xbf, 3, 2, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00001000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x0e8adedf}, - {0xbf, 3, 2, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000800}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x1d15bdbf}, - {0xbf, 3, 2, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000400}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x3a2b7b7e}, - {0xbf, 3, 2, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000200}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x7456f6fd}, - {0xbf, 3, 2, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000100}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xe8adedfa}, - {0xbf, 3, 2, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000080}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xd15bdbf4}, - {0xbf, 3, 2, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000040}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xa2b7b7e9}, - {0xbf, 3, 2, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000020}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x456f6fd3}, - {0xbf, 3, 2, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000010}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x8adedfa7}, - {0xbf, 3, 2, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000008}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x15bdbf4f}, - {0x61, 3, 8, 12, 0x00000000}, - {0xbf, 5, 2, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000004}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x2b7b7e9e}, - {0xdc, 3, 0, 0, 0x00000040}, - {0xbf, 5, 2, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000002}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x56f6fd3d}, - {0xc7, 3, 0, 0, 0x00000020}, - {0x57, 2, 0, 0, 0x00000001}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xadedfa7b}, - {0xb7, 2, 0, 0, 0x00000000}, - {0xbf, 5, 4, 0, 0x00000000}, - {0xa7, 5, 0, 0, 0x5bdbf4f7}, - {0x6d, 2, 3, 1, 0x00000000}, - {0xbf, 5, 4, 0, 0x00000000}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x0000001e}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x00000002}, + {0x57, 3, 0, 0, 0x3fffffff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 1, 0, 0x00000000}, + {0xbf, 1, 2, 0, 0x00000000}, + {0x57, 6, 0, 0, 0x00000001}, + {0x15, 6, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x0000001f}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x00000001}, + {0x57, 3, 0, 0, 0x7fffffff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 1, 0, 0x00000000}, + {0xbf, 1, 2, 0, 0x00000000}, + {0xbf, 3, 7, 0, 0x00000000}, + {0x07, 3, 0, 0, 0x00000004}, + {0xbf, 2, 7, 0, 0x00000000}, + {0x07, 2, 0, 0, 0x00000008}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x40000000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xb7b7e9ef}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000001}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x0000001f}, + {0x57, 5, 0, 0, 0x00000001}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 1, 0, 0x00000000}, + {0xbf, 1, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x20000000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x6f6fd3df}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000002}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x0000001e}, + {0x57, 5, 0, 0, 0x00000003}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 1, 0, 0x00000000}, + {0xbf, 1, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x10000000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xdedfa7bf}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000003}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x0000001d}, + {0x57, 5, 0, 0, 0x00000007}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 1, 0, 0x00000000}, + {0xbf, 1, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x08000000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xbdbf4f7f}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000004}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x0000001c}, + {0x57, 5, 0, 0, 0x0000000f}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 1, 0, 0x00000000}, + {0xbf, 1, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x04000000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x7b7e9eff}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000005}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x0000001b}, + {0x57, 5, 0, 0, 0x0000001f}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 1, 0, 0x00000000}, + {0xbf, 1, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x02000000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xf6fd3dff}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000006}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x0000001a}, + {0x57, 5, 0, 0, 0x0000003f}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 1, 0, 0x00000000}, + {0xbf, 1, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x01000000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xedfa7bfe}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000007}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000019}, + {0x57, 5, 0, 0, 0x0000007f}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 1, 0, 0x00000000}, + {0xbf, 1, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00800000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xdbf4f7fc}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000008}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000018}, + {0x57, 5, 0, 0, 0x000000ff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 1, 0, 0x00000000}, + {0xbf, 1, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00400000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xb7e9eff9}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000009}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000017}, + {0x57, 5, 0, 0, 0x000001ff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 1, 0, 0x00000000}, + {0xbf, 1, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00200000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x6fd3dff2}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x0000000a}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000016}, + {0x57, 5, 0, 0, 0x000003ff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 1, 0, 0x00000000}, + {0xbf, 1, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00100000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xdfa7bfe5}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x0000000b}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000015}, + {0x57, 5, 0, 0, 0x000007ff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 1, 0, 0x00000000}, + {0xbf, 1, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00080000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xbf4f7fca}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x0000000c}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000014}, + {0x57, 5, 0, 0, 0x00000fff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 1, 0, 0x00000000}, + {0xbf, 1, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00040000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x7e9eff94}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x0000000d}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000013}, + {0x57, 5, 0, 0, 0x00001fff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 1, 0, 0x00000000}, + {0xbf, 1, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00020000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xfd3dff28}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x0000000e}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000012}, + {0x57, 5, 0, 0, 0x00003fff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 1, 0, 0x00000000}, + {0xbf, 1, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00010000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xfa7bfe51}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x0000000f}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000011}, + {0x57, 5, 0, 0, 0x00007fff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 1, 0, 0x00000000}, + {0xbf, 1, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00008000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xf4f7fca2}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000010}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000010}, + {0x57, 5, 0, 0, 0x0000ffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 1, 0, 0x00000000}, + {0xbf, 1, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00004000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xe9eff945}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000011}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x0000000f}, + {0x57, 5, 0, 0, 0x0001ffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 1, 0, 0x00000000}, + {0xbf, 1, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00002000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xd3dff28a}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000012}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x0000000e}, + {0x57, 5, 0, 0, 0x0003ffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 1, 0, 0x00000000}, + {0xbf, 1, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00001000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xa7bfe514}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000013}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x0000000d}, + {0x57, 5, 0, 0, 0x0007ffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 1, 0, 0x00000000}, + {0xbf, 1, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000800}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x4f7fca28}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000014}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x0000000c}, + {0x57, 5, 0, 0, 0x000fffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 1, 0, 0x00000000}, + {0xbf, 1, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000400}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x9eff9450}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000015}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x0000000b}, + {0x57, 5, 0, 0, 0x001fffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 1, 0, 0x00000000}, + {0xbf, 1, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000200}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x3dff28a0}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000016}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x0000000a}, + {0x57, 5, 0, 0, 0x003fffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 1, 0, 0x00000000}, + {0xbf, 1, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000100}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x7bfe5141}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000017}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000009}, + {0x57, 5, 0, 0, 0x007fffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 1, 0, 0x00000000}, + {0xbf, 1, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000080}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xf7fca283}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000018}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000008}, + {0x57, 5, 0, 0, 0x00ffffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 1, 0, 0x00000000}, + {0xbf, 1, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000040}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xeff94506}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000019}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000007}, + {0x57, 5, 0, 0, 0x01ffffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 1, 0, 0x00000000}, + {0xbf, 1, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000020}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xdff28a0c}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x0000001a}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000006}, + {0x57, 5, 0, 0, 0x03ffffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 1, 0, 0x00000000}, + {0xbf, 1, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000010}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xbfe51418}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x0000001b}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000005}, + {0x57, 5, 0, 0, 0x07ffffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 1, 0, 0x00000000}, + {0xbf, 1, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000008}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x7fca2831}, - {0x61, 4, 8, 16, 0x00000000}, - {0xbf, 6, 3, 0, 0x00000000}, - {0x57, 6, 0, 0, 0x00000004}, - {0x15, 6, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xff945063}, - {0xdc, 4, 0, 0, 0x00000040}, - {0xbf, 6, 3, 0, 0x00000000}, - {0x57, 6, 0, 0, 0x00000002}, - {0x15, 6, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xff28a0c6}, - {0xc7, 4, 0, 0, 0x00000020}, - {0x57, 3, 0, 0, 0x00000001}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xfe51418c}, - {0xbf, 7, 5, 0, 0x00000000}, - {0xa7, 7, 0, 0, 0xfca28319}, - {0x6d, 2, 4, 1, 0x00000000}, - {0xbf, 7, 5, 0, 0x00000000}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x40000000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xf9450633}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x20000000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xf28a0c67}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x10000000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xe51418ce}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x08000000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xca28319d}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x04000000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x9450633b}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x02000000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x28a0c676}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x01000000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x51418ced}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00800000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xa28319db}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00400000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x450633b6}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00200000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x8a0c676c}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00100000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x1418ced8}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00080000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x28319db1}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00040000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x50633b63}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00020000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xa0c676c6}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00010000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x418ced8d}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00008000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x8319db1a}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00004000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x0633b634}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00002000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x0c676c68}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00001000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x18ced8d1}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000800}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x319db1a3}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000400}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x633b6347}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000200}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xc676c68f}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000100}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x8ced8d1f}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000080}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x19db1a3e}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000040}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x33b6347d}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000020}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x676c68fa}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000010}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xced8d1f4}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000008}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x9db1a3e9}, - {0x61, 3, 8, 20, 0x00000000}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000004}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x3b6347d2}, - {0xdc, 3, 0, 0, 0x00000040}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000002}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x76c68fa5}, - {0xc7, 3, 0, 0, 0x00000020}, - {0x57, 4, 0, 0, 0x00000001}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xed8d1f4a}, - {0xbf, 5, 7, 0, 0x00000000}, - {0xa7, 5, 0, 0, 0xdb1a3e94}, - {0x6d, 2, 3, 1, 0x00000000}, - {0xbf, 5, 7, 0, 0x00000000}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x0000001c}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000004}, + {0x57, 5, 0, 0, 0x0fffffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 1, 0, 0x00000000}, + {0xbf, 1, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000004}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x0000001d}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000003}, + {0x57, 5, 0, 0, 0x1fffffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 1, 0, 0x00000000}, + {0xbf, 1, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000002}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x0000001e}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000002}, + {0x57, 5, 0, 0, 0x3fffffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 1, 0, 0x00000000}, + {0xbf, 1, 4, 0, 0x00000000}, + {0x57, 8, 0, 0, 0x00000001}, + {0x15, 8, 0, 8, 0x00000000}, + {0x61, 3, 3, 0, 0x00000000}, + {0x67, 3, 0, 0, 0x0000001f}, + {0x61, 2, 2, 0, 0x00000000}, + {0x77, 2, 0, 0, 0x00000001}, + {0x57, 2, 0, 0, 0x7fffffff}, + {0x4f, 3, 2, 0, 0x00000000}, + {0xaf, 3, 1, 0, 0x00000000}, + {0xbf, 1, 3, 0, 0x00000000}, + {0x63, 10, 1, -28, 0x00000000}, + {0xb7, 8, 0, 0, 0x00000001}, + {0x05, 0, 0, 6, 0x00000000}, + {0xbf, 3, 10, 0, 0x00000000}, + {0x07, 3, 0, 0, 0xffffffe4}, + {0xbf, 1, 9, 0, 0x00000000}, + {0xbf, 2, 7, 0, 0x00000000}, + {0x85, 0, 1, 0, 0xffffffff}, + {0xbf, 8, 0, 0, 0x00000000}, + {0xbf, 1, 8, 0, 0x00000000}, + {0x67, 1, 0, 0, 0x00000020}, + {0x77, 1, 0, 0, 0x00000020}, + {0x55, 1, 0, 33, 0x00000001}, + {0x71, 2, 7, 201, 0x00000000}, + {0x67, 2, 0, 0, 0x00000008}, + {0x71, 1, 7, 200, 0x00000000}, + {0x4f, 2, 1, 0, 0x00000000}, + {0x71, 3, 7, 202, 0x00000000}, + {0x67, 3, 0, 0, 0x00000010}, + {0x71, 1, 7, 203, 0x00000000}, + {0x67, 1, 0, 0, 0x00000018}, + {0x4f, 1, 3, 0, 0x00000000}, + {0x4f, 1, 2, 0, 0x00000000}, + {0x55, 1, 0, 4, 0x00000000}, + {0x18, 1, 0, 0, 0x00000023}, + {0x00, 0, 0, 0, 0x00000000}, + {0xb7, 2, 0, 0, 0x0000001d}, + {0x05, 0, 0, -734, 0x00000000}, + {0x61, 2, 10, -28, 0x00000000}, + {0x9f, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x0000000f}, + {0x67, 2, 0, 0, 0x00000002}, + {0x0f, 7, 2, 0, 0x00000000}, + {0x71, 1, 7, 137, 0x00000000}, + {0x67, 1, 0, 0, 0x00000008}, + {0x71, 2, 7, 136, 0x00000000}, + {0x4f, 1, 2, 0, 0x00000000}, + {0x71, 2, 7, 138, 0x00000000}, + {0x67, 2, 0, 0, 0x00000010}, + {0x71, 3, 7, 139, 0x00000000}, + {0x67, 3, 0, 0, 0x00000018}, + {0x4f, 3, 2, 0, 0x00000000}, + {0x4f, 3, 1, 0, 0x00000000}, + {0x07, 3, 0, 0, 0x7cafe800}, + {0x63, 9, 3, 52, 0x00000000}, + {0xb7, 8, 0, 0, 0x00000001}, + {0xbf, 0, 8, 0, 0x00000000}, + {0x95, 0, 0, 0, 0x00000000}, + {0x7b, 10, 9, -40, 0x00000000}, + {0xb7, 9, 0, 0, 0x00000000}, + {0x69, 2, 10, -18, 0x00000000}, + {0x57, 2, 0, 0, 0x0000ff3f}, + {0xb7, 1, 0, 0, 0x00000000}, + {0x15, 2, 0, 18, 0x00000000}, + {0x71, 2, 10, -24, 0x00000000}, + {0x71, 3, 10, -15, 0x00000000}, + {0x15, 3, 0, 1, 0x00000011}, + {0x55, 3, 0, 14, 0x00000006}, + {0x67, 2, 0, 0, 0x00000002}, + {0x57, 2, 0, 0, 0x0000003c}, + {0xbf, 3, 10, 0, 0x00000000}, + {0x07, 3, 0, 0, 0xffffffe4}, + {0x79, 1, 10, -40, 0x00000000}, + {0xb7, 4, 0, 0, 0x00000004}, + {0xb7, 5, 0, 0, 0x00000001}, + {0x85, 0, 0, 0, 0x00000044}, + {0x55, 0, 0, 1033, 0x00000000}, + {0x69, 1, 10, -26, 0x00000000}, + {0x67, 1, 0, 0, 0x00000010}, + {0x69, 2, 10, -28, 0x00000000}, + {0x4f, 1, 2, 0, 0x00000000}, + {0xdc, 1, 0, 0, 0x00000020}, + {0xbf, 2, 6, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x40000000}, + {0x15, 2, 0, 6, 0x00000000}, + {0x61, 9, 7, 0, 0x00000000}, + {0x67, 9, 0, 0, 0x00000001}, + {0x61, 2, 7, 4, 0x00000000}, + {0x77, 2, 0, 0, 0x0000001f}, + {0x57, 2, 0, 0, 0x00000001}, + {0x4f, 9, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x20000000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x00000002}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x0000001e}, + {0x57, 3, 0, 0, 0x00000003}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 9, 0, 0x00000000}, + {0xbf, 9, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x10000000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x00000003}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x0000001d}, + {0x57, 3, 0, 0, 0x00000007}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 9, 0, 0x00000000}, + {0xbf, 9, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x08000000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x00000004}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x0000001c}, + {0x57, 3, 0, 0, 0x0000000f}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 9, 0, 0x00000000}, + {0xbf, 9, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x04000000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x00000005}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x0000001b}, + {0x57, 3, 0, 0, 0x0000001f}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 9, 0, 0x00000000}, + {0xbf, 9, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x02000000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x00000006}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x0000001a}, + {0x57, 3, 0, 0, 0x0000003f}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 9, 0, 0x00000000}, + {0xbf, 9, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x01000000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x00000007}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x00000019}, + {0x57, 3, 0, 0, 0x0000007f}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 9, 0, 0x00000000}, + {0xbf, 9, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00800000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x00000008}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x00000018}, + {0x57, 3, 0, 0, 0x000000ff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 9, 0, 0x00000000}, + {0xbf, 9, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00400000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x00000009}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x00000017}, + {0x57, 3, 0, 0, 0x000001ff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 9, 0, 0x00000000}, + {0xbf, 9, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00200000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x0000000a}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x00000016}, + {0x57, 3, 0, 0, 0x000003ff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 9, 0, 0x00000000}, + {0xbf, 9, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00100000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x0000000b}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x00000015}, + {0x57, 3, 0, 0, 0x000007ff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 9, 0, 0x00000000}, + {0xbf, 9, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00080000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x0000000c}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x00000014}, + {0x57, 3, 0, 0, 0x00000fff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 9, 0, 0x00000000}, + {0xbf, 9, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00040000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x0000000d}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x00000013}, + {0x57, 3, 0, 0, 0x00001fff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 9, 0, 0x00000000}, + {0xbf, 9, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00020000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x0000000e}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x00000012}, + {0x57, 3, 0, 0, 0x00003fff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 9, 0, 0x00000000}, + {0xbf, 9, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00010000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x0000000f}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x00000011}, + {0x57, 3, 0, 0, 0x00007fff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 9, 0, 0x00000000}, + {0xbf, 9, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00008000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x00000010}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x00000010}, + {0x57, 3, 0, 0, 0x0000ffff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 9, 0, 0x00000000}, + {0xbf, 9, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00004000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x00000011}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x0000000f}, + {0x57, 3, 0, 0, 0x0001ffff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 9, 0, 0x00000000}, + {0xbf, 9, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00002000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x00000012}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x0000000e}, + {0x57, 3, 0, 0, 0x0003ffff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 9, 0, 0x00000000}, + {0xbf, 9, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00001000}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x00000013}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x0000000d}, + {0x57, 3, 0, 0, 0x0007ffff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 9, 0, 0x00000000}, + {0xbf, 9, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000800}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x00000014}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x0000000c}, + {0x57, 3, 0, 0, 0x000fffff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 9, 0, 0x00000000}, + {0xbf, 9, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000400}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x00000015}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x0000000b}, + {0x57, 3, 0, 0, 0x001fffff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 9, 0, 0x00000000}, + {0xbf, 9, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000200}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x00000016}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x0000000a}, + {0x57, 3, 0, 0, 0x003fffff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 9, 0, 0x00000000}, + {0xbf, 9, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000100}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x00000017}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x00000009}, + {0x57, 3, 0, 0, 0x007fffff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 9, 0, 0x00000000}, + {0xbf, 9, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000080}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x00000018}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x00000008}, + {0x57, 3, 0, 0, 0x00ffffff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 9, 0, 0x00000000}, + {0xbf, 9, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000040}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x00000019}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x00000007}, + {0x57, 3, 0, 0, 0x01ffffff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 9, 0, 0x00000000}, + {0xbf, 9, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000020}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x0000001a}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x00000006}, + {0x57, 3, 0, 0, 0x03ffffff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 9, 0, 0x00000000}, + {0xbf, 9, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000010}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x0000001b}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x00000005}, + {0x57, 3, 0, 0, 0x07ffffff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 9, 0, 0x00000000}, + {0xbf, 9, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000008}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x0000001c}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x00000004}, + {0x57, 3, 0, 0, 0x0fffffff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 9, 0, 0x00000000}, + {0xbf, 9, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000004}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x0000001d}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x00000003}, + {0x57, 3, 0, 0, 0x1fffffff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 9, 0, 0x00000000}, + {0xbf, 9, 2, 0, 0x00000000}, + {0xbf, 2, 6, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000002}, + {0x15, 2, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x0000001e}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x00000002}, + {0x57, 3, 0, 0, 0x3fffffff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 9, 0, 0x00000000}, + {0xbf, 9, 2, 0, 0x00000000}, + {0x57, 6, 0, 0, 0x00000001}, + {0x15, 6, 0, 8, 0x00000000}, + {0x61, 2, 7, 0, 0x00000000}, + {0x67, 2, 0, 0, 0x0000001f}, + {0x61, 3, 7, 4, 0x00000000}, + {0x77, 3, 0, 0, 0x00000001}, + {0x57, 3, 0, 0, 0x7fffffff}, + {0x4f, 2, 3, 0, 0x00000000}, + {0xaf, 2, 9, 0, 0x00000000}, + {0xbf, 9, 2, 0, 0x00000000}, + {0xbf, 3, 7, 0, 0x00000000}, + {0x07, 3, 0, 0, 0x00000004}, + {0xbf, 2, 7, 0, 0x00000000}, + {0x07, 2, 0, 0, 0x00000008}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x40000000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xb6347d28}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000001}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x0000001f}, + {0x57, 5, 0, 0, 0x00000001}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x20000000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x6c68fa51}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000002}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x0000001e}, + {0x57, 5, 0, 0, 0x00000003}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x10000000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xd8d1f4a3}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000003}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x0000001d}, + {0x57, 5, 0, 0, 0x00000007}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x08000000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xb1a3e946}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000004}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x0000001c}, + {0x57, 5, 0, 0, 0x0000000f}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x04000000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x6347d28d}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000005}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x0000001b}, + {0x57, 5, 0, 0, 0x0000001f}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x02000000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xc68fa51a}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000006}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x0000001a}, + {0x57, 5, 0, 0, 0x0000003f}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x01000000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x8d1f4a35}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000007}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000019}, + {0x57, 5, 0, 0, 0x0000007f}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00800000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x1a3e946b}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000008}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000018}, + {0x57, 5, 0, 0, 0x000000ff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00400000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x347d28d7}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000009}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000017}, + {0x57, 5, 0, 0, 0x000001ff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00200000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x68fa51ae}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x0000000a}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000016}, + {0x57, 5, 0, 0, 0x000003ff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00100000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xd1f4a35c}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x0000000b}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000015}, + {0x57, 5, 0, 0, 0x000007ff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00080000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xa3e946b9}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x0000000c}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000014}, + {0x57, 5, 0, 0, 0x00000fff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00040000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x47d28d73}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x0000000d}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000013}, + {0x57, 5, 0, 0, 0x00001fff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00020000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x8fa51ae7}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x0000000e}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000012}, + {0x57, 5, 0, 0, 0x00003fff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00010000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x1f4a35cf}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x0000000f}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000011}, + {0x57, 5, 0, 0, 0x00007fff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00008000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x3e946b9e}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000010}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000010}, + {0x57, 5, 0, 0, 0x0000ffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00004000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x7d28d73c}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000011}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x0000000f}, + {0x57, 5, 0, 0, 0x0001ffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00002000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xfa51ae78}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000012}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x0000000e}, + {0x57, 5, 0, 0, 0x0003ffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00001000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xf4a35cf1}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000013}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x0000000d}, + {0x57, 5, 0, 0, 0x0007ffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000800}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xe946b9e3}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000014}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x0000000c}, + {0x57, 5, 0, 0, 0x000fffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000400}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xd28d73c7}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000015}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x0000000b}, + {0x57, 5, 0, 0, 0x001fffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000200}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xa51ae78e}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000016}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x0000000a}, + {0x57, 5, 0, 0, 0x003fffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000100}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x4a35cf1c}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000017}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000009}, + {0x57, 5, 0, 0, 0x007fffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000080}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x946b9e38}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000018}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000008}, + {0x57, 5, 0, 0, 0x00ffffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000040}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x28d73c71}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000019}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000007}, + {0x57, 5, 0, 0, 0x01ffffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000020}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x51ae78e3}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x0000001a}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000006}, + {0x57, 5, 0, 0, 0x03ffffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000010}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xa35cf1c6}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x0000001b}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000005}, + {0x57, 5, 0, 0, 0x07ffffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000008}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x46b9e38d}, - {0x61, 4, 8, 24, 0x00000000}, - {0xbf, 6, 3, 0, 0x00000000}, - {0x57, 6, 0, 0, 0x00000004}, - {0x15, 6, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x8d73c71b}, - {0xdc, 4, 0, 0, 0x00000040}, - {0xbf, 6, 3, 0, 0x00000000}, - {0x57, 6, 0, 0, 0x00000002}, - {0x15, 6, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x1ae78e36}, - {0xc7, 4, 0, 0, 0x00000020}, - {0x57, 3, 0, 0, 0x00000001}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x35cf1c6c}, - {0xbf, 7, 5, 0, 0x00000000}, - {0xa7, 7, 0, 0, 0x6b9e38d9}, - {0x6d, 2, 4, 1, 0x00000000}, - {0xbf, 7, 5, 0, 0x00000000}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x40000000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xd73c71b2}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x20000000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xae78e364}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x10000000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x5cf1c6c9}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x08000000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xb9e38d92}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x04000000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x73c71b25}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x02000000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xe78e364b}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x01000000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xcf1c6c96}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00800000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x9e38d92c}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00400000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x3c71b259}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00200000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x78e364b2}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00100000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xf1c6c964}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00080000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xe38d92c9}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00040000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xc71b2593}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00020000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x8e364b27}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00010000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x1c6c964e}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00008000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x38d92c9c}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00004000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x71b25938}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00002000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xe364b270}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00001000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xc6c964e0}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000800}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x8d92c9c0}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000400}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x1b259380}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000200}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x364b2700}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000100}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x6c964e01}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000080}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xd92c9c03}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000040}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xb2593807}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000020}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x64b2700f}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000010}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xc964e01e}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000008}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x92c9c03d}, - {0x61, 3, 8, 28, 0x00000000}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000004}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x2593807a}, - {0xdc, 3, 0, 0, 0x00000040}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000002}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x4b2700f4}, - {0xc7, 3, 0, 0, 0x00000020}, - {0x57, 4, 0, 0, 0x00000001}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x964e01e8}, - {0xbf, 5, 7, 0, 0x00000000}, - {0xa7, 5, 0, 0, 0x2c9c03d1}, - {0x6d, 2, 3, 1, 0x00000000}, - {0xbf, 5, 7, 0, 0x00000000}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x0000001c}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000004}, + {0x57, 5, 0, 0, 0x0fffffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000004}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x0000001d}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000003}, + {0x57, 5, 0, 0, 0x1fffffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 8, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000002}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x0000001e}, + {0x61, 5, 2, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000002}, + {0x57, 5, 0, 0, 0x3fffffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0x57, 8, 0, 0, 0x00000001}, + {0x15, 8, 0, 8, 0x00000000}, + {0x61, 3, 3, 0, 0x00000000}, + {0x67, 3, 0, 0, 0x0000001f}, + {0x61, 4, 2, 0, 0x00000000}, + {0x77, 4, 0, 0, 0x00000001}, + {0x57, 4, 0, 0, 0x7fffffff}, + {0x4f, 3, 4, 0, 0x00000000}, + {0xaf, 3, 9, 0, 0x00000000}, + {0xbf, 9, 3, 0, 0x00000000}, + {0xbf, 3, 7, 0, 0x00000000}, + {0x07, 3, 0, 0, 0x0000000c}, + {0xbf, 4, 1, 0, 0x00000000}, {0x57, 4, 0, 0, 0x40000000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x593807a3}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 2, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000001}, + {0x61, 5, 3, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x0000001f}, + {0x57, 5, 0, 0, 0x00000001}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 1, 0, 0x00000000}, {0x57, 4, 0, 0, 0x20000000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xb2700f46}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 2, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000002}, + {0x61, 5, 3, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x0000001e}, + {0x57, 5, 0, 0, 0x00000003}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 1, 0, 0x00000000}, {0x57, 4, 0, 0, 0x10000000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x64e01e8d}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 2, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000003}, + {0x61, 5, 3, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x0000001d}, + {0x57, 5, 0, 0, 0x00000007}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 1, 0, 0x00000000}, {0x57, 4, 0, 0, 0x08000000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xc9c03d1a}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 2, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000004}, + {0x61, 5, 3, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x0000001c}, + {0x57, 5, 0, 0, 0x0000000f}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 1, 0, 0x00000000}, {0x57, 4, 0, 0, 0x04000000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x93807a35}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 2, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000005}, + {0x61, 5, 3, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x0000001b}, + {0x57, 5, 0, 0, 0x0000001f}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 1, 0, 0x00000000}, {0x57, 4, 0, 0, 0x02000000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x2700f46b}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 2, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000006}, + {0x61, 5, 3, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x0000001a}, + {0x57, 5, 0, 0, 0x0000003f}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 1, 0, 0x00000000}, {0x57, 4, 0, 0, 0x01000000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x4e01e8d6}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 2, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000007}, + {0x61, 5, 3, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000019}, + {0x57, 5, 0, 0, 0x0000007f}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 1, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00800000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x9c03d1ad}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 2, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000008}, + {0x61, 5, 3, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000018}, + {0x57, 5, 0, 0, 0x000000ff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 1, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00400000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x3807a35b}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 2, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000009}, + {0x61, 5, 3, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000017}, + {0x57, 5, 0, 0, 0x000001ff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 1, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00200000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x700f46b6}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 2, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x0000000a}, + {0x61, 5, 3, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000016}, + {0x57, 5, 0, 0, 0x000003ff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 1, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00100000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xe01e8d6c}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 2, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x0000000b}, + {0x61, 5, 3, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000015}, + {0x57, 5, 0, 0, 0x000007ff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 1, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00080000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xc03d1ad9}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 2, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x0000000c}, + {0x61, 5, 3, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000014}, + {0x57, 5, 0, 0, 0x00000fff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 1, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00040000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x807a35b3}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 2, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x0000000d}, + {0x61, 5, 3, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000013}, + {0x57, 5, 0, 0, 0x00001fff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 1, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00020000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x00f46b66}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 2, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x0000000e}, + {0x61, 5, 3, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000012}, + {0x57, 5, 0, 0, 0x00003fff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 1, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00010000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x01e8d6cc}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 2, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x0000000f}, + {0x61, 5, 3, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000011}, + {0x57, 5, 0, 0, 0x00007fff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 1, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00008000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x03d1ad99}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 2, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000010}, + {0x61, 5, 3, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000010}, + {0x57, 5, 0, 0, 0x0000ffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 1, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00004000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x07a35b32}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 2, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000011}, + {0x61, 5, 3, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x0000000f}, + {0x57, 5, 0, 0, 0x0001ffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 1, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00002000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x0f46b665}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 2, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000012}, + {0x61, 5, 3, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x0000000e}, + {0x57, 5, 0, 0, 0x0003ffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 1, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00001000}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x1e8d6cca}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 2, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000013}, + {0x61, 5, 3, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x0000000d}, + {0x57, 5, 0, 0, 0x0007ffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 1, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000800}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x3d1ad994}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 2, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000014}, + {0x61, 5, 3, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x0000000c}, + {0x57, 5, 0, 0, 0x000fffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 1, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000400}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x7a35b328}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 2, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000015}, + {0x61, 5, 3, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x0000000b}, + {0x57, 5, 0, 0, 0x001fffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 1, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000200}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xf46b6651}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 2, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000016}, + {0x61, 5, 3, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x0000000a}, + {0x57, 5, 0, 0, 0x003fffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 1, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000100}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xe8d6cca2}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 2, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000017}, + {0x61, 5, 3, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000009}, + {0x57, 5, 0, 0, 0x007fffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 1, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000080}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xd1ad9944}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 2, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000018}, + {0x61, 5, 3, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000008}, + {0x57, 5, 0, 0, 0x00ffffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 1, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000040}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xa35b3289}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 2, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000019}, + {0x61, 5, 3, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000007}, + {0x57, 5, 0, 0, 0x01ffffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 1, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000020}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x46b66512}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 2, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x0000001a}, + {0x61, 5, 3, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000006}, + {0x57, 5, 0, 0, 0x03ffffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 1, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000010}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x8d6cca25}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 2, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x0000001b}, + {0x61, 5, 3, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000005}, + {0x57, 5, 0, 0, 0x07ffffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 1, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000008}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x1ad9944a}, - {0x61, 4, 8, 32, 0x00000000}, - {0xbf, 6, 3, 0, 0x00000000}, - {0x57, 6, 0, 0, 0x00000004}, - {0x15, 6, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x35b32894}, - {0xdc, 4, 0, 0, 0x00000040}, - {0xbf, 6, 3, 0, 0x00000000}, - {0x57, 6, 0, 0, 0x00000002}, - {0x15, 6, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0x6b665129}, - {0xc7, 4, 0, 0, 0x00000020}, - {0x57, 3, 0, 0, 0x00000001}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 5, 0, 0, 0xd6cca253}, - {0xbf, 7, 5, 0, 0x00000000}, - {0xa7, 7, 0, 0, 0xad9944a7}, - {0x6d, 2, 4, 1, 0x00000000}, - {0xbf, 7, 5, 0, 0x00000000}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x40000000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x5b32894f}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x20000000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xb665129f}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x10000000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x6cca253e}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x08000000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xd9944a7d}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x04000000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xb32894fb}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x02000000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x665129f6}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x01000000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xcca253ec}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00800000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x9944a7d9}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00400000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x32894fb2}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00200000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x65129f65}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00100000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xca253eca}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00080000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x944a7d95}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00040000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x2894fb2a}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00020000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x5129f655}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00010000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xa253ecab}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00008000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x44a7d956}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00004000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x894fb2ac}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00002000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x129f6558}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00001000}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x253ecab1}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000800}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x4a7d9563}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000400}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x94fb2ac7}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000200}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x29f6558f}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000100}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x53ecab1e}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000080}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xa7d9563d}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000040}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x4fb2ac7a}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000020}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x9f6558f5}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000010}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x3ecab1ea}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000008}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0x7d9563d5}, - {0x61, 3, 8, 36, 0x00000000}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000004}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xfb2ac7ab}, - {0xdc, 3, 0, 0, 0x00000040}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000002}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xf6558f56}, - {0xc7, 3, 0, 0, 0x00000020}, - {0x57, 4, 0, 0, 0x00000001}, - {0x15, 4, 0, 1, 0x00000000}, - {0xa7, 7, 0, 0, 0xecab1eac}, - {0xbf, 4, 7, 0, 0x00000000}, - {0xa7, 4, 0, 0, 0xd9563d59}, - {0x6d, 2, 3, 1, 0x00000000}, - {0xbf, 4, 7, 0, 0x00000000}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x40000000}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xb2ac7ab2}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x20000000}, - {0x79, 6, 10, -56, 0x00000000}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x6558f564}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x10000000}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xcab1eac8}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x08000000}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x9563d590}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x04000000}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x2ac7ab20}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x02000000}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x558f5641}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x01000000}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xab1eac83}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00800000}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x563d5906}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00400000}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xac7ab20c}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00200000}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x58f56418}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00100000}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xb1eac831}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00080000}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x63d59063}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00040000}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xc7ab20c7}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00020000}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x8f56418f}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00010000}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x1eac831e}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00008000}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x3d59063c}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00004000}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x7ab20c78}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00002000}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xf56418f0}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00001000}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xeac831e1}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000800}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xd59063c2}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000400}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xab20c784}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000200}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x56418f09}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000100}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xac831e12}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000080}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x59063c25}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000040}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xb20c784b}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000020}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x6418f097}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000010}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0xc831e12f}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000008}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x9063c25f}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000004}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x20c784be}, - {0xbf, 5, 3, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000002}, - {0x15, 5, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x418f097c}, - {0x57, 3, 0, 0, 0x00000001}, - {0x15, 3, 0, 1, 0x00000000}, - {0xa7, 4, 0, 0, 0x831e12f9}, - {0xbf, 5, 1, 0, 0x00000000}, - {0x67, 5, 0, 0, 0x00000020}, - {0xc7, 5, 0, 0, 0x00000020}, - {0xbf, 3, 4, 0, 0x00000000}, - {0xa7, 3, 0, 0, 0x063c25f3}, - {0x6d, 2, 5, 1, 0x00000000}, - {0xbf, 3, 4, 0, 0x00000000}, - {0xbf, 2, 1, 0, 0x00000000}, - {0x57, 2, 0, 0, 0x40000000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x0c784be7}, - {0xbf, 2, 1, 0, 0x00000000}, - {0x57, 2, 0, 0, 0x20000000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x18f097cf}, - {0xbf, 2, 1, 0, 0x00000000}, - {0x57, 2, 0, 0, 0x10000000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x31e12f9f}, - {0xbf, 2, 1, 0, 0x00000000}, - {0x57, 2, 0, 0, 0x08000000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x63c25f3f}, - {0xbf, 2, 1, 0, 0x00000000}, - {0x57, 2, 0, 0, 0x04000000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0xc784be7f}, - {0xbf, 2, 1, 0, 0x00000000}, - {0x57, 2, 0, 0, 0x02000000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x8f097cff}, - {0xbf, 2, 1, 0, 0x00000000}, - {0x57, 2, 0, 0, 0x01000000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x1e12f9fe}, - {0xbf, 2, 1, 0, 0x00000000}, - {0x57, 2, 0, 0, 0x00800000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x3c25f3fc}, - {0xbf, 2, 1, 0, 0x00000000}, - {0x57, 2, 0, 0, 0x00400000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x784be7f8}, - {0xbf, 2, 1, 0, 0x00000000}, - {0x57, 2, 0, 0, 0x00200000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0xf097cff0}, - {0xbf, 2, 1, 0, 0x00000000}, - {0x57, 2, 0, 0, 0x00100000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0xe12f9fe0}, - {0xbf, 2, 1, 0, 0x00000000}, - {0x57, 2, 0, 0, 0x00080000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0xc25f3fc1}, - {0xbf, 2, 1, 0, 0x00000000}, - {0x57, 2, 0, 0, 0x00040000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x84be7f83}, - {0xbf, 2, 1, 0, 0x00000000}, - {0x57, 2, 0, 0, 0x00020000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x097cff07}, - {0xbf, 2, 1, 0, 0x00000000}, - {0x57, 2, 0, 0, 0x00010000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x12f9fe0f}, - {0xbf, 2, 1, 0, 0x00000000}, - {0x57, 2, 0, 0, 0x00008000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x25f3fc1f}, - {0xbf, 2, 1, 0, 0x00000000}, - {0x57, 2, 0, 0, 0x00004000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x4be7f83f}, - {0xbf, 2, 1, 0, 0x00000000}, - {0x57, 2, 0, 0, 0x00002000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x97cff07f}, - {0xbf, 2, 1, 0, 0x00000000}, - {0x57, 2, 0, 0, 0x00001000}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x2f9fe0fe}, - {0xbf, 2, 1, 0, 0x00000000}, - {0x57, 2, 0, 0, 0x00000800}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x5f3fc1fd}, - {0xbf, 2, 1, 0, 0x00000000}, - {0x57, 2, 0, 0, 0x00000400}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0xbe7f83fb}, - {0xbf, 2, 1, 0, 0x00000000}, - {0x57, 2, 0, 0, 0x00000200}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x7cff07f7}, - {0xbf, 2, 1, 0, 0x00000000}, - {0x57, 2, 0, 0, 0x00000100}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0xf9fe0fee}, - {0xbf, 2, 1, 0, 0x00000000}, - {0x57, 2, 0, 0, 0x00000080}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0xf3fc1fdc}, - {0xbf, 2, 1, 0, 0x00000000}, - {0x57, 2, 0, 0, 0x00000040}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0xe7f83fb8}, - {0xbf, 2, 1, 0, 0x00000000}, - {0x57, 2, 0, 0, 0x00000020}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0xcff07f70}, - {0xbf, 2, 1, 0, 0x00000000}, - {0x57, 2, 0, 0, 0x00000010}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x9fe0fee1}, - {0xbf, 2, 1, 0, 0x00000000}, - {0x57, 2, 0, 0, 0x00000008}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x3fc1fdc2}, - {0xbf, 2, 1, 0, 0x00000000}, - {0x57, 2, 0, 0, 0x00000004}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0x7f83fb85}, - {0xbf, 2, 1, 0, 0x00000000}, - {0x57, 2, 0, 0, 0x00000002}, - {0x15, 2, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0xff07f70a}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 2, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x0000001c}, + {0x61, 5, 3, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000004}, + {0x57, 5, 0, 0, 0x0fffffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 1, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000004}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 2, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x0000001d}, + {0x61, 5, 3, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000003}, + {0x57, 5, 0, 0, 0x1fffffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, + {0xbf, 4, 1, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000002}, + {0x15, 4, 0, 8, 0x00000000}, + {0x61, 4, 2, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x0000001e}, + {0x61, 5, 3, 0, 0x00000000}, + {0x77, 5, 0, 0, 0x00000002}, + {0x57, 5, 0, 0, 0x3fffffff}, + {0x4f, 4, 5, 0, 0x00000000}, + {0xaf, 4, 9, 0, 0x00000000}, + {0xbf, 9, 4, 0, 0x00000000}, {0x57, 1, 0, 0, 0x00000001}, - {0x15, 1, 0, 1, 0x00000000}, - {0xa7, 3, 0, 0, 0xfe0fee15}, - {0x71, 1, 0, 201, 0x00000000}, - {0x67, 1, 0, 0, 0x00000008}, - {0x71, 2, 0, 200, 0x00000000}, + {0x15, 1, 0, 8, 0x00000000}, + {0x61, 1, 2, 0, 0x00000000}, + {0x67, 1, 0, 0, 0x0000001f}, + {0x61, 2, 3, 0, 0x00000000}, + {0x77, 2, 0, 0, 0x00000001}, + {0x57, 2, 0, 0, 0x7fffffff}, {0x4f, 1, 2, 0, 0x00000000}, - {0x71, 2, 0, 202, 0x00000000}, - {0x67, 2, 0, 0, 0x00000010}, - {0x71, 4, 0, 203, 0x00000000}, - {0x67, 4, 0, 0, 0x00000018}, - {0x4f, 4, 2, 0, 0x00000000}, - {0x4f, 4, 1, 0, 0x00000000}, - {0x67, 3, 0, 0, 0x00000020}, - {0x77, 3, 0, 0, 0x00000020}, - {0x9f, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x0000000f}, - {0x67, 3, 0, 0, 0x00000002}, - {0x0f, 0, 3, 0, 0x00000000}, - {0x71, 1, 0, 137, 0x00000000}, - {0x67, 1, 0, 0, 0x00000008}, - {0x71, 2, 0, 136, 0x00000000}, - {0x4f, 1, 2, 0, 0x00000000}, - {0x71, 2, 0, 138, 0x00000000}, - {0x67, 2, 0, 0, 0x00000010}, - {0x71, 3, 0, 139, 0x00000000}, - {0x67, 3, 0, 0, 0x00000018}, - {0x4f, 3, 2, 0, 0x00000000}, - {0x4f, 3, 1, 0, 0x00000000}, - {0x07, 3, 0, 0, 0x7cafe800}, - {0x63, 6, 3, 52, 0x00000000}, - {0xb7, 7, 0, 0, 0x00000001}, - {0xbf, 0, 7, 0, 0x00000000}, - {0x95, 0, 0, 0, 0x00000000}, + {0xaf, 1, 9, 0, 0x00000000}, + {0xbf, 9, 1, 0, 0x00000000}, + {0x63, 10, 9, -28, 0x00000000}, + {0xb7, 8, 0, 0, 0x00000001}, + {0x79, 9, 10, -40, 0x00000000}, + {0x05, 0, 0, -1091, 0x00000000}, + {0xb7, 8, 0, 0, 0x00000000}, + {0x79, 9, 10, -40, 0x00000000}, + {0x05, 0, 0, -1094, 0x00000000}, }; diff --git a/drivers/net/tap/tap_flow.c b/drivers/net/tap/tap_flow.c index ed4d42f92f9f..5fe0bea88b0a 100644 --- a/drivers/net/tap/tap_flow.c +++ b/drivers/net/tap/tap_flow.c @@ -11,6 +11,7 @@ #include <rte_byteorder.h> #include <rte_jhash.h> +#include <rte_thash.h> #include <rte_malloc.h> #include <rte_eth_tap.h> #include <tap_flow.h> @@ -2053,6 +2054,20 @@ static int bpf_rss_key(enum bpf_rss_key_e cmd, __u32 *key_idx) return err; } +/* Default RSS hash key also used for ConnectX-3. */ +static const uint8_t rss_hash_default_key[] = { + 0x2c, 0xc6, 0x81, 0xd1, + 0x5b, 0xdb, 0xf4, 0xf7, + 0xfc, 0xa2, 0x83, 0x19, + 0xdb, 0x1a, 0x3e, 0x94, + 0x6b, 0x9e, 0x38, 0xd9, + 0x2c, 0x9c, 0x03, 0xd1, + 0xad, 0x99, 0x44, 0xa7, + 0xd9, 0x56, 0x3d, 0x59, + 0x06, 0x3c, 0x25, 0xf3, + 0xfc, 0x1f, 0xdc, 0x2a, +}; + /** * Add RSS hash calculations and queue selection * @@ -2073,6 +2088,7 @@ static int rss_add_actions(struct rte_flow *flow, struct pmd_internals *pmd, { /* 4096 is the maximum number of instructions for a BPF program */ unsigned int i; + const uint8_t *key_in; int err; struct rss_key rss_entry = { .hash_fields = 0, .key_size = 0 }; @@ -2087,6 +2103,29 @@ static int rss_add_actions(struct rte_flow *flow, struct pmd_internals *pmd, (error, ENOTSUP, RTE_FLOW_ERROR_TYPE_UNSPECIFIED, NULL, "a nonzero RSS encapsulation level is not supported"); + if (rss->queue_num == 0 || rss->queue_num >= TAP_MAX_QUEUES) + return rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_UNSPECIFIED, NULL, + "invalid number of queues"); + + /* allow RSS key_len 0 in case of NULL (default) RSS key. */ + if (rss->key_len == 0) { + if (rss->key != NULL) + return rte_flow_error_set(error, ENOTSUP, + RTE_FLOW_ERROR_TYPE_ACTION_CONF, + &rss->key_len, "RSS hash key length 0"); + key_in = rss_hash_default_key; + } else { + if (rss->key_len != TAP_RSS_HASH_KEY_SIZE) + return rte_flow_error_set + (error, EINVAL, RTE_FLOW_ERROR_TYPE_UNSPECIFIED, NULL, + "RSS hash invalid key length"); + if (rss->key == NULL) + return rte_flow_error_set + (error, EINVAL, RTE_FLOW_ERROR_TYPE_UNSPECIFIED, NULL, + "RSS hash key is NULL"); + key_in = rss->key; + } + /* Get a new map key for a new RSS rule */ err = bpf_rss_key(KEY_CMD_GET, &flow->key_idx); if (err < 0) { @@ -2104,6 +2143,10 @@ static int rss_add_actions(struct rte_flow *flow, struct pmd_internals *pmd, rss_entry.hash_fields = (1 << HASH_FIELD_IPV4_L3_L4) | (1 << HASH_FIELD_IPV6_L3_L4); + /* Copy and convert RSS key to bigendian for software toeplitz */ + rte_convert_rss_key((const uint32_t *)key_in, (uint32_t *)rss_entry.key, + TAP_RSS_HASH_KEY_SIZE); + /* Add this RSS entry to map */ err = tap_flow_bpf_update_rss_elem(pmd->map_fd, &flow->key_idx, &rss_entry); -- 2.43.0 ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] net/tap: Modified TAP BPF program as per the Kernel-version upgrade requirements. 2024-01-12 13:48 [PATCH] net/tap: Modified TAP BPF program as per the Kernel-version upgrade requirements madhuker.mythri ` (5 preceding siblings ...) 2024-01-12 17:53 ` [RFC v3] tap: rework the BPF header parsing Stephen Hemminger @ 2024-02-07 18:55 ` Stephen Hemminger 6 siblings, 0 replies; 18+ messages in thread From: Stephen Hemminger @ 2024-02-07 18:55 UTC (permalink / raw) To: madhuker.mythri; +Cc: dev, ferruh.yigit On Fri, 12 Jan 2024 19:18:21 +0530 madhuker.mythri@oracle.com wrote: > +struct { > + __uint(type, BPF_MAP_TYPE_HASH); > + __type(key, __u32); > + __type(value, struct rss_key); > + __uint(max_entries, 256); > +} map_keys SEC(".maps"); > Overall this patch is a big step forward in getting TAP BPF going again. But using the new BTF maps won't work with how the tap device is loading the BPF program. Getting BTF to work requires more steps and is best done by using libbpf. With this part of your version current kernels will give type mismatch in verifier since the type information for map_keys is not loaded. See my followon RFC for what libbpf integration looks like. Ends up being a deeper rewrite. ^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2024-02-07 18:55 UTC | newest] Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2024-01-12 13:48 [PATCH] net/tap: Modified TAP BPF program as per the Kernel-version upgrade requirements madhuker.mythri 2024-01-12 16:40 ` Stephen Hemminger 2024-01-12 16:41 ` Stephen Hemminger 2024-01-13 17:50 ` [External] : " Madhuker Mythri 2024-01-13 18:05 ` Stephen Hemminger 2024-01-16 16:43 ` Stephen Hemminger 2024-01-12 16:42 ` Stephen Hemminger 2024-01-13 17:52 ` [External] : " Madhuker Mythri 2024-01-13 18:06 ` Stephen Hemminger 2024-01-16 5:43 ` Madhuker Mythri 2024-01-16 16:40 ` Stephen Hemminger 2024-01-17 3:25 ` Stephen Hemminger 2024-01-17 16:19 ` Madhuker Mythri 2024-01-12 16:43 ` Stephen Hemminger 2024-01-12 16:46 ` Stephen Hemminger 2024-01-13 17:55 ` [External] : " Madhuker Mythri 2024-01-12 17:53 ` [RFC v3] tap: rework the BPF header parsing Stephen Hemminger 2024-02-07 18:55 ` [PATCH] net/tap: Modified TAP BPF program as per the Kernel-version upgrade requirements Stephen Hemminger
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).