diff options
Diffstat (limited to 'usr/src')
108 files changed, 26806 insertions, 12490 deletions
diff --git a/usr/src/Makefile.lint b/usr/src/Makefile.lint index e00af1c837..5944ecd55c 100644 --- a/usr/src/Makefile.lint +++ b/usr/src/Makefile.lint @@ -375,6 +375,7 @@ COMMON_SUBDIRS = \ lib/libuutil \ lib/libwanboot \ lib/libwanbootutil \ + lib/libwladm \ lib/libxnet \ lib/libzfs \ lib/libzfs_jni \ diff --git a/usr/src/Targetdirs b/usr/src/Targetdirs index 1dabd06793..1b7d92e374 100644 --- a/usr/src/Targetdirs +++ b/usr/src/Targetdirs @@ -402,6 +402,7 @@ ROOT.SFW64+= \ OTHERS= \ /dev/term \ /tmp \ + /etc/dladm \ /etc/mail \ /etc/mail/cf \ /etc/mail/cf/cf \ @@ -538,6 +539,9 @@ $(ROOT)/etc/mail/cf/sh \ $(ROOT)/usr/mail \ $(ROOT)/var/mail := GROUP= mail +$(ROOT)/etc/dladm := OWNER= dladm +$(ROOT)/etc/dladm := GROUP= sys + $(ROOT)/var/spool/lp:= OWNER= lp $(ROOT)/var/spool/lp:= GROUP= lp $(ROOT)/var/spool/lp:= DIRMODE= 775 diff --git a/usr/src/cmd/Adm/sun/passwd b/usr/src/cmd/Adm/sun/passwd index f2766c3867..a56c20c725 100644 --- a/usr/src/cmd/Adm/sun/passwd +++ b/usr/src/cmd/Adm/sun/passwd @@ -6,6 +6,7 @@ adm:x:4:4:Admin:/var/adm: lp:x:71:8:Line Printer Admin:/usr/spool/lp: uucp:x:5:5:uucp Admin:/usr/lib/uucp: nuucp:x:9:9:uucp Admin:/var/spool/uucppublic:/usr/lib/uucp/uucico +dladm:x:15:3:Datalink Admin:/: smmsp:x:25:25:SendMail Message Submission Program:/: listen:x:37:4:Network Admin:/usr/net/nls: gdm:x:50:50:GDM Reserved UID:/: diff --git a/usr/src/cmd/Adm/sun/shadow b/usr/src/cmd/Adm/sun/shadow index 7be836e6f5..c63c4dc66a 100644 --- a/usr/src/cmd/Adm/sun/shadow +++ b/usr/src/cmd/Adm/sun/shadow @@ -6,6 +6,7 @@ adm:NP:6445:::::: lp:NP:6445:::::: uucp:NP:6445:::::: nuucp:NP:6445:::::: +dladm:*LK*::::::: smmsp:NP:6445:::::: listen:*LK*::::::: gdm:*LK*::::::: diff --git a/usr/src/cmd/bsmrecord/audit_record_attr.txt b/usr/src/cmd/bsmrecord/audit_record_attr.txt index 6c3b3e63f2..3e6b794719 100644 --- a/usr/src/cmd/bsmrecord/audit_record_attr.txt +++ b/usr/src/cmd/bsmrecord/audit_record_attr.txt @@ -2600,10 +2600,28 @@ label=AUE_remove format=uauth1:[text2]:text3 comment=authorization used:mount point:device label=AUE_pool_import - program=hald - format=uauth1:text2:text3 - comment=authorization used:pool:device + program=hald + format=uauth1:text2:text3 + comment=authorization used:pool:device label=AUE_pool_export - program=hald - format=uauth1:text2:text3 - comment=authorization used:pool:device + program=hald + format=uauth1:text2:text3 + comment=authorization used:pool:device + +label=AUE_dladm_create_secobj + program=/usr/sbin/dladm + title:create wifi security object + see=dladm(1M) + format=uauth1:text2:text3 + comment=authorization used: + comment=object class name: + comment=object name + +label=AUE_dladm_delete_secobj + program=/usr/sbin/dladm + title:delete wifi security object + see=dladm(1M) + format=uauth1:text2:text3 + comment=authorization used: + comment=object class name: + comment=object name diff --git a/usr/src/cmd/cmd-inet/usr.sbin/in.ftpd/ftpusers b/usr/src/cmd/cmd-inet/usr.sbin/in.ftpd/ftpusers index cf50a88824..3323d5877c 100644 --- a/usr/src/cmd/cmd-inet/usr.sbin/in.ftpd/ftpusers +++ b/usr/src/cmd/cmd-inet/usr.sbin/in.ftpd/ftpusers @@ -10,6 +10,7 @@ adm lp uucp nuucp +dladm smmsp listen gdm diff --git a/usr/src/cmd/dladm/Makefile b/usr/src/cmd/dladm/Makefile index 0923fece9c..711792ee34 100644 --- a/usr/src/cmd/dladm/Makefile +++ b/usr/src/cmd/dladm/Makefile @@ -2,9 +2,8 @@ # CDDL HEADER START # # The contents of this file are subject to the terms of the -# Common Development and Distribution License, Version 1.0 only -# (the "License"). You may not use this file except in compliance -# with the License. +# Common Development and Distribution License (the "License"). +# You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. @@ -20,33 +19,48 @@ # CDDL HEADER END # # -# Copyright 2005 Sun Microsystems, Inc. All rights reserved. +# Copyright 2006 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # #ident "%Z%%M% %I% %E% SMI" # PROG= dladm +CFGFILES= aggregation.conf linkprop.conf secobj.conf -ROOTFS_PROG= $(PROG) -CONFIGFILES= aggregation.conf - -POFILE= $(PROG).po +ROOTFS_PROG= $(PROG) +ROOTCFGDIR= $(ROOTETC)/dladm +ROOTCFGFILES= $(CFGFILES:%=$(ROOTCFGDIR)/%) include ../Makefile.cmd -LDLIBS += -ldladm -lmacadm -ldlpi -llaadm -lkstat +LDLIBS += -ldladm -lmacadm -ldlpi -llaadm -lkstat -lwladm -lsecdb -lbsm \ + -linetutil -ICONFIGFILES= $(CONFIGFILES:%=$(ROOTETC)/%) +$(ROOTCFGFILES) := OWNER= dladm +$(ROOTCFGFILES) := GROUP= sys -$(ICONFIGFILES):= FILEMODE= 644 -$(ICONFIGFILES):= OWNER= root -$(ICONFIGFILES):= GROUP= sys +$(ROOTCFGDIR)/aggregation.conf $(ROOTCFGDIR)/linkprop.conf := FILEMODE= 644 +$(ROOTCFGDIR)/secobj.conf := FILEMODE= 600 .KEEP_STATE: all: $(ROOTFS_PROG) +install: all $(ROOTSBINPROG) $(ROOTCFGDIR) $(ROOTCFGFILES) + $(RM) $(ROOTUSRSBINPROG) + -$(SYMLINK) ../../sbin/$(PROG) $(ROOTUSRSBINPROG) + +clean: + +lint: lint_PROG + +$(ROOTCFGDIR): + $(INS.dir) + +$(ROOTCFGDIR)/%: $(ROOTCFGDIR) % + $(INS.file) + # # Message catalog # @@ -59,12 +73,4 @@ $(POFILE): $(PROG).c sed "/^domain/d" messages.po > $@ $(RM) messages.po $(POFILE).i -install: all $(ROOTSBINPROG) $(ICONFIGFILES) - $(RM) $(ROOTUSRSBINPROG) - -$(SYMLINK) ../../sbin/$(PROG) $(ROOTUSRSBINPROG) - -clean: - -lint: lint_PROG - include ../Makefile.targ diff --git a/usr/src/cmd/dladm/dladm.c b/usr/src/cmd/dladm/dladm.c index 1167cb1603..d344b3e59b 100644 --- a/usr/src/cmd/dladm/dladm.c +++ b/usr/src/cmd/dladm/dladm.c @@ -26,7 +26,9 @@ #pragma ident "%Z%%M% %I% %E% SMI" #include <stdio.h> +#include <ctype.h> #include <locale.h> +#include <signal.h> #include <stdarg.h> #include <stdlib.h> #include <fcntl.h> @@ -38,11 +40,19 @@ #include <getopt.h> #include <unistd.h> #include <priv.h> +#include <termios.h> +#include <pwd.h> +#include <auth_attr.h> +#include <auth_list.h> #include <libintl.h> #include <libdlpi.h> #include <libdladm.h> #include <liblaadm.h> #include <libmacadm.h> +#include <libwladm.h> +#include <libinetutil.h> +#include <bsm/adt.h> +#include <bsm/adt_event.h> #define AGGR_DRV "aggr" #define MAXPORT 256 @@ -95,16 +105,15 @@ static port_state_t port_states[] = { #define NPORTSTATES (sizeof (port_states) / sizeof (port_state_t)) -static void do_show_link(int, char **); -static void do_create_aggr(int, char **); -static void do_delete_aggr(int, char **); -static void do_add_aggr(int, char **); -static void do_remove_aggr(int, char **); -static void do_modify_aggr(int, char **); -static void do_show_aggr(int, char **); -static void do_up_aggr(int, char **); -static void do_down_aggr(int, char **); -static void do_show_dev(int, char **); +typedef void cmdfunc_t(int, char **); + +static cmdfunc_t do_show_link, do_show_dev, do_show_wifi; +static cmdfunc_t do_create_aggr, do_delete_aggr, do_add_aggr, do_remove_aggr; +static cmdfunc_t do_modify_aggr, do_show_aggr, do_up_aggr, do_down_aggr; +static cmdfunc_t do_scan_wifi, do_connect_wifi, do_disconnect_wifi; +static cmdfunc_t do_show_linkprop, do_set_linkprop, do_reset_linkprop; +static cmdfunc_t do_create_secobj, do_delete_secobj, do_show_secobj; +static cmdfunc_t do_init_linkprop, do_init_secobj; static void link_stats(const char *, uint32_t); static void aggr_stats(uint16_t, uint32_t); @@ -119,41 +128,81 @@ static void stats_total(pktsum_t *, pktsum_t *, pktsum_t *); static void stats_diff(pktsum_t *, pktsum_t *, pktsum_t *); typedef struct cmd { - char *c_name; - void (*c_fn)(int, char **); + char *c_name; + cmdfunc_t *c_fn; } cmd_t; static cmd_t cmds[] = { - { "show-link", do_show_link }, - { "show-dev", do_show_dev }, - - { "create-aggr", do_create_aggr }, - { "delete-aggr", do_delete_aggr }, - { "add-aggr", do_add_aggr }, - { "remove-aggr", do_remove_aggr }, - { "modify-aggr", do_modify_aggr }, - { "show-aggr", do_show_aggr }, - { "up-aggr", do_up_aggr }, - { "down-aggr", do_down_aggr } + { "show-link", do_show_link }, + { "show-dev", do_show_dev }, + { "create-aggr", do_create_aggr }, + { "delete-aggr", do_delete_aggr }, + { "add-aggr", do_add_aggr }, + { "remove-aggr", do_remove_aggr }, + { "modify-aggr", do_modify_aggr }, + { "show-aggr", do_show_aggr }, + { "up-aggr", do_up_aggr }, + { "down-aggr", do_down_aggr }, + { "scan-wifi", do_scan_wifi }, + { "connect-wifi", do_connect_wifi }, + { "disconnect-wifi", do_disconnect_wifi }, + { "show-wifi", do_show_wifi }, + { "show-linkprop", do_show_linkprop }, + { "set-linkprop", do_set_linkprop }, + { "reset-linkprop", do_reset_linkprop }, + { "create-secobj", do_create_secobj }, + { "delete-secobj", do_delete_secobj }, + { "show-secobj", do_show_secobj }, + { "init-linkprop", do_init_linkprop }, + { "init-secobj", do_init_secobj } }; static const struct option longopts[] = { - {"vlan-id", required_argument, 0, 'v'}, - {"dev", required_argument, 0, 'd'}, - {"policy", required_argument, 0, 'P'}, - {"lacp-mode", required_argument, 0, 'l'}, - {"lacp-timer", required_argument, 0, 'T'}, - {"unicast", required_argument, 0, 'u'}, - {"statistics", no_argument, 0, 's'}, - {"interval", required_argument, 0, 'i'}, - {"lacp", no_argument, 0, 'L'}, - {"temporary", no_argument, 0, 't'}, - {"root-dir", required_argument, 0, 'r'}, - {"parseable", no_argument, 0, 'p'}, + {"vlan-id", required_argument, 0, 'v' }, + {"dev", required_argument, 0, 'd' }, + {"policy", required_argument, 0, 'P' }, + {"lacp-mode", required_argument, 0, 'l' }, + {"lacp-timer", required_argument, 0, 'T' }, + {"unicast", required_argument, 0, 'u' }, + {"statistics", no_argument, 0, 's' }, + {"interval", required_argument, 0, 'i' }, + {"lacp", no_argument, 0, 'L' }, + {"temporary", no_argument, 0, 't' }, + {"root-dir", required_argument, 0, 'r' }, + {"parseable", no_argument, 0, 'p' }, + { 0, 0, 0, 0 } +}; + +static const struct option prop_longopts[] = { + {"temporary", no_argument, 0, 't' }, + {"root-dir", required_argument, 0, 'R' }, + {"prop", required_argument, 0, 'p' }, + {"parseable", no_argument, 0, 'c' }, + {"persistent", no_argument, 0, 'P' }, + { 0, 0, 0, 0 } +}; + +static const struct option wifi_longopts[] = { + {"parseable", no_argument, 0, 'p' }, + {"output", required_argument, 0, 'o' }, + {"essid", required_argument, 0, 'e' }, + {"bsstype", required_argument, 0, 'b' }, + {"mode", required_argument, 0, 'm' }, + {"key", required_argument, 0, 'k' }, + {"sec", required_argument, 0, 's' }, + {"auth", required_argument, 0, 'a' }, + {"create-ibss", required_argument, 0, 'c' }, + {"timeout", required_argument, 0, 'T' }, + {"all-links", no_argument, 0, 'a' }, + {"temporary", no_argument, 0, 't' }, + {"root-dir", required_argument, 0, 'R' }, + {"persistent", no_argument, 0, 'P' }, + {"file", required_argument, 0, 'f' }, { 0, 0, 0, 0 } }; static char *progname; +static sig_atomic_t signalled; #define PRINT_ERR_DIAG(s, diag, func) { \ (void) fprintf(stderr, gettext(s), progname, strerror(errno)); \ @@ -165,18 +214,36 @@ static char *progname; static void usage(void) { - (void) fprintf(stderr, gettext( - "usage: dladm create-aggr [-t] [-R <root-dir>] [-P <policy>]\n" - " [-l <mode>] [-T <time>]\n" - " [-u <address>] -d <dev> ... <key>\n" - " delete-aggr [-t] [-R <root-dir>] <key>\n" - " add-aggr [-t] [-R <root-dir>] -d <dev> ... <key>\n" - " remove-aggr [-t] [-R <root-dir>] -d <dev> ... <key>\n" - " modify-aggr [-t] [-R <root-dir>] [-P <policy>]\n" - " [-l <mode>] [-T <time>] [-u <address>] <key>\n" - " show-aggr [-L] [-s] [-i <interval>] [-p] [<key>]\n" - " show-dev [-s] [-i <interval>] [-p] [<dev>]\n" - " show-link [-s] [-i <interval>] [-p] [<name>]\n")); + (void) fprintf(stderr, gettext("usage: dladm <subcommand> <args> ...\n" + "\tshow-link [-p] [-s [-i <interval>]] [<name>]\n" + "\tshow-dev [-p] [-s [-i <interval>]] [<dev>]\n" + "\n" + "\tcreate-aggr [-t] [-R <root-dir>] [-P <policy>] [-l <mode>]\n" + "\t [-T <time>] [-u <address>] -d <dev> ... <key>\n" + "\tmodify-aggr [-t] [-R <root-dir>] [-P <policy>] [-l <mode>]\n" + "\t [-T <time>] [-u <address>] <key>\n" + "\tdelete-aggr [-t] [-R <root-dir>] <key>\n" + "\tadd-aggr [-t] [-R <root-dir>] -d <dev> ... <key>\n" + "\tremove-aggr [-t] [-R <root-dir>] -d <dev> ... <key>\n" + "\tshow-aggr [-pL][-s [-i <interval>]] [<key>]\n" + "\n" + "\tscan-wifi [-p] [-o <field>,...] [<name>]\n" + "\tconnect-wifi [-e <essid>] [-i <bssid>] [-k <key>,...]" + " [-s wep]\n" + "\t [-a open|shared] [-b bss|ibss] [-c] [-m a|b|g]\n" + "\t [-T <time>] [<name>]\n" + "\tdisconnect-wifi [-a] [<name>]\n" + "\tshow-wifi [-p] [-o <field>,...] [<name>]\n" + "\n" + "\tset-linkprop [-t] [-R <root-dir>] -p <prop>=<value>[,...]" + " <name>\n" + "\treset-linkprop [-t] [-R <root-dir>] [-p <prop>,...] <name>\n" + "\tshow-linkprop [-cP][-p <prop>,...] <name>\n" + "\n" + "\tcreate-secobj [-t] [-R <root-dir>] [-f <file>] -c <class>" + " <secobj>\n" + "\tdelete-secobj [-t] [-R <root-dir>] <secobj>[,...]\n" + "\tshow-secobj [-pP][<secobj>,...]\n")); exit(1); } @@ -1930,3 +1997,1932 @@ mac_link_duplex(const char *dev) return (duplex_str); } + +#define WIFI_CMD_SCAN 0x00000001 +#define WIFI_CMD_SHOW 0x00000002 +#define WIFI_CMD_ALL (WIFI_CMD_SCAN | WIFI_CMD_SHOW) +typedef struct wifi_field { + const char *wf_name; + const char *wf_header; + uint_t wf_width; + uint_t wf_mask; + uint_t wf_cmdtype; +} wifi_field_t; + +static wifi_field_t wifi_fields[] = { +{ "link", "LINK", 10, 0, WIFI_CMD_ALL}, +{ "essid", "ESSID", 19, WLADM_WLAN_ATTR_ESSID, WIFI_CMD_ALL}, +{ "bssid", "BSSID/IBSSID", 17, WLADM_WLAN_ATTR_BSSID, WIFI_CMD_ALL}, +{ "ibssid", "BSSID/IBSSID", 17, WLADM_WLAN_ATTR_BSSID, WIFI_CMD_ALL}, +{ "mode", "MODE", 6, WLADM_WLAN_ATTR_MODE, WIFI_CMD_ALL}, +{ "speed", "SPEED", 6, WLADM_WLAN_ATTR_SPEED, WIFI_CMD_ALL}, +{ "auth", "AUTH", 8, WLADM_WLAN_ATTR_AUTH, WIFI_CMD_ALL}, +{ "bsstype", "BSSTYPE", 8, WLADM_WLAN_ATTR_BSSTYPE, WIFI_CMD_ALL}, +{ "sec", "SEC", 6, WLADM_WLAN_ATTR_SECMODE, WIFI_CMD_ALL}, +{ "status", "STATUS", 17, WLADM_LINK_ATTR_STATUS, WIFI_CMD_SHOW}, +{ "strength", "STRENGTH", 10, WLADM_WLAN_ATTR_STRENGTH, WIFI_CMD_ALL}} +; + +static char *all_scan_wifi_fields = + "link,essid,bssid,sec,strength,mode,speed,auth,bsstype"; +static char *all_show_wifi_fields = + "link,status,essid,sec,strength,mode,speed,auth,bssid,bsstype"; +static char *def_scan_wifi_fields = + "link,essid,bssid,sec,strength,mode,speed"; +static char *def_show_wifi_fields = + "link,status,essid,sec,strength,mode,speed"; + +#define WIFI_MAX_FIELDS (sizeof (wifi_fields) / sizeof (wifi_field_t)) +#define WIFI_MAX_FIELD_LEN 32 + +typedef struct { + char *s_buf; + char **s_fields; /* array of pointer to the fields in s_buf */ + uint_t s_nfields; /* the number of fields in s_buf */ +} split_t; + +/* + * Free the split_t structure pointed to by `sp'. + */ +static void +splitfree(split_t *sp) +{ + free(sp->s_buf); + free(sp->s_fields); + free(sp); +} + +/* + * Split `str' into at most `maxfields' fields, each field at most `maxlen' in + * length. Return a pointer to a split_t containing the split fields, or NULL + * on failure. + */ +static split_t * +split(const char *str, uint_t maxfields, uint_t maxlen) +{ + char *field, *token, *lasts = NULL; + split_t *sp; + + if (*str == '\0' || maxfields == 0 || maxlen == 0) + return (NULL); + + sp = calloc(sizeof (split_t), 1); + if (sp == NULL) + return (NULL); + + sp->s_buf = strdup(str); + sp->s_fields = malloc(sizeof (char *) * maxfields); + if (sp->s_buf == NULL || sp->s_fields == NULL) + goto fail; + + token = sp->s_buf; + while ((field = strtok_r(token, ",", &lasts)) != NULL) { + if (sp->s_nfields == maxfields || strlen(field) > maxlen) + goto fail; + token = NULL; + sp->s_fields[sp->s_nfields++] = field; + } + return (sp); +fail: + splitfree(sp); + return (NULL); +} + +static int +parse_wifi_fields(char *str, wifi_field_t ***fields, uint_t *countp, + uint_t cmdtype) +{ + uint_t i, j; + wifi_field_t **wf = NULL; + split_t *sp; + boolean_t good_match = B_FALSE; + + if (cmdtype == WIFI_CMD_SCAN) { + if (str == NULL) + str = def_scan_wifi_fields; + if (strcasecmp(str, "all") == 0) + str = all_scan_wifi_fields; + } else if (cmdtype == WIFI_CMD_SHOW) { + if (str == NULL) + str = def_show_wifi_fields; + if (strcasecmp(str, "all") == 0) + str = all_show_wifi_fields; + } else { + return (-1); + } + + sp = split(str, WIFI_MAX_FIELDS, WIFI_MAX_FIELD_LEN); + if (sp == NULL) + return (-1); + + wf = malloc(sp->s_nfields * sizeof (wifi_field_t *)); + if (wf == NULL) + goto fail; + + for (i = 0; i < sp->s_nfields; i++) { + for (j = 0; j < WIFI_MAX_FIELDS; j++) { + if (strcasecmp(sp->s_fields[i], + wifi_fields[j].wf_name) == 0) { + good_match = wifi_fields[i]. + wf_cmdtype & cmdtype; + break; + } + } + if (!good_match) + goto fail; + + good_match = B_FALSE; + wf[i] = &wifi_fields[j]; + } + *countp = i; + *fields = wf; + splitfree(sp); + return (0); +fail: + free(wf); + splitfree(sp); + return (-1); +} + +typedef struct print_wifi_state { + const char *ws_link; + boolean_t ws_parseable; + boolean_t ws_header; + wifi_field_t **ws_fields; + uint_t ws_nfields; + boolean_t ws_lastfield; + uint_t ws_overflow; +} print_wifi_state_t; + +static void +print_wifi_head(print_wifi_state_t *statep) +{ + int i; + wifi_field_t *wfp; + + for (i = 0; i < statep->ws_nfields; i++) { + wfp = statep->ws_fields[i]; + if (i + 1 < statep->ws_nfields) + (void) printf("%-*s ", wfp->wf_width, wfp->wf_header); + else + (void) printf("%s", wfp->wf_header); + } + (void) printf("\n"); +} + +static void +print_wifi_field(print_wifi_state_t *statep, wifi_field_t *wfp, + const char *value) +{ + uint_t width = wfp->wf_width; + uint_t valwidth = strlen(value); + uint_t compress; + + if (statep->ws_parseable) { + (void) printf("%s=\"%s\"", wfp->wf_header, value); + } else { + if (value[0] == '\0') + value = "--"; + if (statep->ws_lastfield) { + (void) printf("%s", value); + return; + } + + if (valwidth > width) { + statep->ws_overflow += valwidth - width; + } else if (valwidth < width && statep->ws_overflow > 0) { + compress = min(statep->ws_overflow, width - valwidth); + statep->ws_overflow -= compress; + width -= compress; + } + (void) printf("%-*s", width, value); + } + + if (!statep->ws_lastfield) + (void) putchar(' '); +} + +static void +print_wlan_attr(print_wifi_state_t *statep, wifi_field_t *wfp, + wladm_wlan_attr_t *attrp) +{ + char buf[WLADM_STRSIZE]; + const char *str = ""; + + if (wfp->wf_mask == 0) { + print_wifi_field(statep, wfp, statep->ws_link); + return; + } + + if ((wfp->wf_mask & attrp->wa_valid) == 0) { + print_wifi_field(statep, wfp, ""); + return; + } + + switch (wfp->wf_mask) { + case WLADM_WLAN_ATTR_ESSID: + str = wladm_essid2str(&attrp->wa_essid, buf); + break; + case WLADM_WLAN_ATTR_BSSID: + str = wladm_bssid2str(&attrp->wa_bssid, buf); + break; + case WLADM_WLAN_ATTR_SECMODE: + str = wladm_secmode2str(&attrp->wa_secmode, buf); + break; + case WLADM_WLAN_ATTR_STRENGTH: + str = wladm_strength2str(&attrp->wa_strength, buf); + break; + case WLADM_WLAN_ATTR_MODE: + str = wladm_mode2str(&attrp->wa_mode, buf); + break; + case WLADM_WLAN_ATTR_SPEED: + str = wladm_speed2str(&attrp->wa_speed, buf); + (void) strlcat(buf, "Mb", sizeof (buf)); + break; + case WLADM_WLAN_ATTR_AUTH: + str = wladm_auth2str(&attrp->wa_auth, buf); + break; + case WLADM_WLAN_ATTR_BSSTYPE: + str = wladm_bsstype2str(&attrp->wa_bsstype, buf); + break; + } + + print_wifi_field(statep, wfp, str); +} + +static boolean_t +print_scan_results(void *arg, wladm_wlan_attr_t *attrp) +{ + print_wifi_state_t *statep = arg; + int i; + + if (statep->ws_header) { + statep->ws_header = B_FALSE; + if (!statep->ws_parseable) + print_wifi_head(statep); + } + + statep->ws_overflow = 0; + for (i = 0; i < statep->ws_nfields; i++) { + statep->ws_lastfield = (i + 1 == statep->ws_nfields); + print_wlan_attr(statep, statep->ws_fields[i], attrp); + } + (void) putchar('\n'); + return (B_TRUE); +} + +static boolean_t +scan_wifi(void *arg, const char *link) +{ + char errmsg[WLADM_STRSIZE]; + print_wifi_state_t *statep = arg; + wladm_status_t status; + + statep->ws_link = link; + status = wladm_scan(link, statep, print_scan_results); + if (status != WLADM_STATUS_OK) { + (void) fprintf(stderr, gettext( + "%s: cannot scan link '%s': %s\n"), + progname, link, wladm_status2str(status, errmsg)); + exit(1); + } + return (B_TRUE); +} + +static void +print_link_attr(print_wifi_state_t *statep, wifi_field_t *wfp, + wladm_link_attr_t *attrp) +{ + char buf[WLADM_STRSIZE]; + const char *str = ""; + + if (strcmp(wfp->wf_name, "status") == 0) { + if ((wfp->wf_mask & attrp->la_valid) != 0) + str = wladm_linkstatus2str(&attrp->la_status, buf); + print_wifi_field(statep, wfp, str); + return; + } + print_wlan_attr(statep, wfp, &attrp->la_wlan_attr); +} + +static boolean_t +show_wifi(void *arg, const char *link) +{ + int i; + char buf[WLADM_STRSIZE]; + print_wifi_state_t *statep = arg; + wladm_link_attr_t attr; + wladm_status_t status; + + status = wladm_get_link_attr(link, &attr); + if (status != WLADM_STATUS_OK) { + (void) fprintf(stderr, gettext("%s: cannot get link " + "attributes for '%s': %s\n"), progname, link, + wladm_status2str(status, buf)); + exit(1); + } + + if (statep->ws_header) { + statep->ws_header = B_FALSE; + if (!statep->ws_parseable) + print_wifi_head(statep); + } + + statep->ws_link = link; + statep->ws_overflow = 0; + for (i = 0; i < statep->ws_nfields; i++) { + statep->ws_lastfield = (i + 1 == statep->ws_nfields); + print_link_attr(statep, statep->ws_fields[i], &attr); + } + (void) putchar('\n'); + return (B_TRUE); +} + +static void +do_display_wifi(int argc, char **argv, int cmd) +{ + int option; + char errmsg[WLADM_STRSIZE]; + char *fields_str = NULL; + wifi_field_t **fields; + boolean_t (*callback)(void *, const char *); + uint_t nfields; + print_wifi_state_t state; + wladm_status_t status; + + if (cmd == WIFI_CMD_SCAN) + callback = scan_wifi; + else if (cmd == WIFI_CMD_SHOW) + callback = show_wifi; + else + return; + + state.ws_link = NULL; + state.ws_parseable = B_FALSE; + state.ws_header = B_TRUE; + opterr = 0; + while ((option = getopt_long(argc, argv, ":o:p", + wifi_longopts, NULL)) != -1) { + switch (option) { + case 'o': + fields_str = optarg; + break; + case 'p': + state.ws_parseable = B_TRUE; + if (fields_str == NULL) + fields_str = "all"; + break; + case ':': + (void) fprintf(stderr, + gettext("%s: option requires a value '-%c'\n"), + progname, optopt); + exit(1); + break; + case '?': + default: + (void) fprintf(stderr, + gettext("%s: unrecognized option '-%c'\n"), + progname, optopt); + exit(1); + break; + } + } + + if (optind == (argc - 1)) + state.ws_link = argv[optind]; + else if (optind != argc) + usage(); + + if (parse_wifi_fields(fields_str, &fields, &nfields, cmd) < 0) { + (void) fprintf(stderr, + gettext("%s: invalid field(s) specified\n"), + progname); + exit(1); + } + state.ws_fields = fields; + state.ws_nfields = nfields; + + if (state.ws_link == NULL) { + status = wladm_walk(&state, callback); + if (status != WLADM_STATUS_OK) { + (void) fprintf(stderr, gettext("%s: %s\n"), + progname, wladm_status2str(status, errmsg)); + exit(1); + } + } else { + (void) (*callback)(&state, state.ws_link); + } + free(fields); +} + +static void +do_scan_wifi(int argc, char **argv) +{ + do_display_wifi(argc, argv, WIFI_CMD_SCAN); +} + +static void +do_show_wifi(int argc, char **argv) +{ + do_display_wifi(argc, argv, WIFI_CMD_SHOW); +} + +typedef struct wlan_count_attr { + uint_t wc_count; + const char *wc_link; +} wlan_count_attr_t; + +static boolean_t +do_count_wlan(void *arg, const char *link) +{ + wlan_count_attr_t *cp = (wlan_count_attr_t *)arg; + + if (cp->wc_count == 0) + cp->wc_link = strdup(link); + cp->wc_count++; + return (B_TRUE); +} + +static int +parse_wep_keys(char *str, wladm_wep_key_t **keys, uint_t *key_countp) +{ + uint_t i; + split_t *sp; + wladm_wep_key_t *wk; + + sp = split(str, WLADM_MAX_WEPKEYS, WLADM_MAX_WEPKEYNAME_LEN); + if (sp == NULL) + return (-1); + + wk = malloc(sp->s_nfields * sizeof (wladm_wep_key_t)); + if (wk == NULL) + goto fail; + + for (i = 0; i < sp->s_nfields; i++) { + char *s; + dladm_secobj_class_t class; + dladm_status_t status; + + (void) strlcpy(wk[i].wk_name, sp->s_fields[i], + WLADM_MAX_WEPKEYNAME_LEN); + + wk[i].wk_idx = 1; + if ((s = strrchr(wk[i].wk_name, ':')) != NULL) { + if (s[1] == '\0' || s[2] != '\0' || !isdigit(s[1])) + goto fail; + + wk[i].wk_idx = (uint_t)(s[1] - '0'); + *s = '\0'; + } + wk[i].wk_len = WLADM_MAX_WEPKEY_LEN; + + status = dladm_get_secobj(wk[i].wk_name, &class, + wk[i].wk_val, &wk[i].wk_len, 0); + if (status != DLADM_STATUS_OK) { + if (status == DLADM_STATUS_NOTFOUND) { + status = dladm_get_secobj(wk[i].wk_name, + &class, wk[i].wk_val, &wk[i].wk_len, + DLADM_OPT_PERSIST); + } + if (status != DLADM_STATUS_OK) + goto fail; + } + } + *keys = wk; + *key_countp = i; + splitfree(sp); + return (0); +fail: + free(wk); + splitfree(sp); + return (-1); +} + +static void +do_connect_wifi(int argc, char **argv) +{ + int option; + wladm_wlan_attr_t attr, *attrp; + wladm_status_t status = WLADM_STATUS_OK; + int timeout = WLADM_CONNECT_TIMEOUT_DEFAULT; + char errmsg[WLADM_STRSIZE]; + const char *link = NULL; + char *endp = NULL; + wladm_wep_key_t *keys = NULL; + uint_t key_count = 0; + uint_t flags = 0; + wladm_secmode_t keysecmode = WLADM_SECMODE_NONE; + + opterr = 0; + (void) memset(&attr, 0, sizeof (attr)); + while ((option = getopt_long(argc, argv, ":e:i:a:m:b:s:k:T:c", + wifi_longopts, NULL)) != -1) { + switch (option) { + case 'e': + status = wladm_str2essid(optarg, &attr.wa_essid); + if (status != WLADM_STATUS_OK) { + (void) fprintf(stderr, + gettext("%s: invalid ESSID '%s'\n"), + progname, optarg); + exit(1); + } + attr.wa_valid |= WLADM_WLAN_ATTR_ESSID; + /* + * Try to connect without doing a scan. + */ + flags |= WLADM_OPT_NOSCAN; + break; + case 'i': + status = wladm_str2bssid(optarg, &attr.wa_bssid); + if (status != WLADM_STATUS_OK) { + (void) fprintf(stderr, + gettext("%s: invalid BSSID %s\n"), + progname, optarg); + exit(1); + } + attr.wa_valid |= WLADM_WLAN_ATTR_BSSID; + break; + case 'a': + status = wladm_str2auth(optarg, &attr.wa_auth); + if (status != WLADM_STATUS_OK) { + (void) fprintf(stderr, + gettext("%s: invalid authentication " + "mode '%s'\n"), progname, optarg); + exit(1); + } + attr.wa_valid |= WLADM_WLAN_ATTR_AUTH; + break; + case 'm': + status = wladm_str2mode(optarg, &attr.wa_mode); + if (status != WLADM_STATUS_OK) { + (void) fprintf(stderr, + gettext("%s: invalid mode '%s'\n"), + progname, optarg); + exit(1); + } + attr.wa_valid |= WLADM_WLAN_ATTR_MODE; + break; + case 'b': + status = wladm_str2bsstype(optarg, &attr.wa_bsstype); + if (status != WLADM_STATUS_OK) { + (void) fprintf(stderr, + gettext("%s: invalid bsstype '%s'\n"), + progname, optarg); + exit(1); + } + attr.wa_valid |= WLADM_WLAN_ATTR_BSSTYPE; + break; + case 's': + status = wladm_str2secmode(optarg, &attr.wa_secmode); + if (status != WLADM_STATUS_OK) { + (void) fprintf(stderr, + gettext("%s: invalid security mode '%s'\n"), + progname, optarg); + exit(1); + } + attr.wa_valid |= WLADM_WLAN_ATTR_SECMODE; + break; + case 'k': + if (parse_wep_keys(optarg, &keys, &key_count) < 0) { + (void) fprintf(stderr, + gettext("%s: invalid key(s) '%s'\n"), + progname, optarg); + exit(1); + } + keysecmode = WLADM_SECMODE_WEP; + break; + case 'T': + if (strcasecmp(optarg, "forever") == 0) { + timeout = -1; + break; + } + errno = 0; + timeout = (int)strtol(optarg, &endp, 10); + if (timeout < 0 || errno != 0 || *endp != '\0') { + (void) fprintf(stderr, + gettext("%s: invalid timeout value '%s'\n"), + progname, optarg); + exit(1); + } + break; + case 'c': + flags |= WLADM_OPT_CREATEIBSS; + break; + case ':': + (void) fprintf(stderr, + gettext("%s: option requires a value '-%c'\n"), + progname, optopt); + exit(1); + break; + case '?': + default: + (void) fprintf(stderr, + gettext("%s: unrecognized option '-%c'\n"), + progname, optopt); + exit(1); + break; + } + } + + if (keysecmode == WLADM_SECMODE_NONE) { + if ((attr.wa_valid & WLADM_WLAN_ATTR_SECMODE) != 0 && + attr.wa_secmode == WLADM_SECMODE_WEP) { + (void) fprintf(stderr, + gettext("%s: key required for security mode " + "'wep'\n"), progname); + exit(1); + } + } else { + if ((attr.wa_valid & WLADM_WLAN_ATTR_SECMODE) != 0 && + attr.wa_secmode != keysecmode) { + (void) fprintf(stderr, + gettext("%s: incompatible -s and -k options\n"), + progname); + exit(1); + } + } + attr.wa_secmode = keysecmode; + attr.wa_valid |= WLADM_WLAN_ATTR_SECMODE; + + if (optind == (argc - 1)) + link = argv[optind]; + else if (optind != argc) + usage(); + + if (link == NULL) { + wlan_count_attr_t wcattr; + + wcattr.wc_link = NULL; + wcattr.wc_count = 0; + (void) wladm_walk(&wcattr, do_count_wlan); + if (wcattr.wc_count == 0) { + (void) fprintf(stderr, gettext( + "%s: no wifi links are available\n"), progname); + exit(1); + } else if (wcattr.wc_count > 1) { + (void) fprintf(stderr, gettext( + "%s: link name is required when more than " + "one link is available\n"), progname); + exit(1); + } + link = wcattr.wc_link; + } + attrp = (attr.wa_valid == 0) ? NULL : &attr; + + status = wladm_connect(link, attrp, timeout, keys, key_count, flags); + if (status != WLADM_STATUS_OK) { + if ((flags & WLADM_OPT_NOSCAN) != 0) { + /* + * Redo the connect. This time with scanning + * and filtering. + */ + flags &= ~WLADM_OPT_NOSCAN; + status = wladm_connect(link, attrp, timeout, keys, + key_count, flags); + if (status == WLADM_STATUS_OK) { + free(keys); + return; + } + } + if (status == WLADM_STATUS_NOTFOUND) { + if (attr.wa_valid == 0) { + (void) fprintf(stderr, gettext( + "%s: no wifi networks are available\n"), + progname); + } else { + (void) fprintf(stderr, gettext("%s: no wifi " + "networks with the specified criteria " + "are available\n"), progname); + } + } else { + (void) fprintf(stderr, gettext("%s: cannot connect: %s" + "\n"), progname, wladm_status2str(status, errmsg)); + } + exit(1); + } + free(keys); +} + +/* ARGSUSED */ +static boolean_t +do_all_disconnect_wifi(void *arg, const char *link) +{ + wladm_status_t status; + char errmsg[WLADM_STRSIZE]; + + status = wladm_disconnect(link); + if (status != WLADM_STATUS_OK) { + (void) fprintf(stderr, + gettext("%s: cannot disconnect link '%s': %s\n"), + progname, link, wladm_status2str(status, errmsg)); + } + return (B_TRUE); +} + +static void +do_disconnect_wifi(int argc, char **argv) +{ + int option; + const char *link = NULL; + char errmsg[WLADM_STRSIZE]; + boolean_t all_links = B_FALSE; + wladm_status_t status; + wlan_count_attr_t wcattr; + + opterr = 0; + while ((option = getopt_long(argc, argv, ":a", + wifi_longopts, NULL)) != -1) { + switch (option) { + case 'a': + all_links = B_TRUE; + break; + case ':': + (void) fprintf(stderr, + gettext("%s: option requires a value '-%c'\n"), + progname, optopt); + exit(1); + break; + case '?': + default: + (void) fprintf(stderr, + gettext("%s: unrecognized option '-%c'\n"), + progname, optopt); + exit(1); + break; + } + } + + if (optind == (argc - 1)) + link = argv[optind]; + else if (optind != argc) + usage(); + + if (link == NULL) { + if (!all_links) { + wcattr.wc_link = NULL; + wcattr.wc_count = 0; + (void) wladm_walk(&wcattr, do_count_wlan); + if (wcattr.wc_count == 0) { + (void) fprintf(stderr, gettext( + "%s: no wifi links are available\n"), + progname); + exit(1); + } else if (wcattr.wc_count > 1) { + (void) fprintf(stderr, gettext( + "%s: link name is required when more than " + "one link is available\n"), progname); + exit(1); + } + link = wcattr.wc_link; + } else { + (void) wladm_walk(&all_links, do_all_disconnect_wifi); + return; + } + } + status = wladm_disconnect(link); + if (status != WLADM_STATUS_OK) { + (void) fprintf(stderr, gettext("%s: cannot disconnect: %s\n"), + progname, wladm_status2str(status, errmsg)); + exit(1); + } +} + +#define MAX_PROPS 32 +#define MAX_PROP_VALS 32 +#define MAX_PROP_LINE 512 + +typedef struct prop_info { + char *pi_name; + char *pi_val[MAX_PROP_VALS]; + uint_t pi_count; +} prop_info_t; + +typedef struct prop_list { + prop_info_t pl_info[MAX_PROPS]; + uint_t pl_count; + char *pl_buf; +} prop_list_t; + +typedef struct show_linkprop_state { + const char *ls_link; + char *ls_line; + char **ls_propvals; + boolean_t ls_parseable; + boolean_t ls_persist; + boolean_t ls_header; +} show_linkprop_state_t; + +static void +free_props(prop_list_t *list) +{ + if (list != NULL) { + free(list->pl_buf); + free(list); + } +} + +static int +parse_props(char *str, prop_list_t **listp, boolean_t novalues) +{ + prop_list_t *list; + prop_info_t *pip; + char *buf, *curr; + int len, i; + + list = malloc(sizeof (prop_list_t)); + if (list == NULL) + return (-1); + + list->pl_count = 0; + list->pl_buf = buf = strdup(str); + if (buf == NULL) + goto fail; + + curr = buf; + len = strlen(buf); + pip = NULL; + for (i = 0; i < len; i++) { + char c = buf[i]; + boolean_t match = (c == '=' || c == ','); + + if (!match && i != len - 1) + continue; + + if (match) { + buf[i] = '\0'; + if (*curr == '\0') + goto fail; + } + + if (pip != NULL && c != '=') { + if (pip->pi_count > MAX_PROP_VALS) + goto fail; + + if (novalues) + goto fail; + + pip->pi_val[pip->pi_count] = curr; + pip->pi_count++; + } else { + if (list->pl_count > MAX_PROPS) + goto fail; + + pip = &list->pl_info[list->pl_count]; + pip->pi_name = curr; + pip->pi_count = 0; + list->pl_count++; + if (c == ',') + pip = NULL; + } + curr = buf + i + 1; + } + *listp = list; + return (0); + +fail: + free_props(list); + return (-1); +} + +static void +print_linkprop_head(void) +{ + (void) printf("%-15s %-14s %-14s %-30s \n", + "PROPERTY", "VALUE", "DEFAULT", "POSSIBLE"); +} + +static void +print_linkprop(show_linkprop_state_t *statep, const char *propname, + dladm_prop_type_t type, const char *typename, const char *format, + char **pptr) +{ + int i; + char *ptr, *lim; + char buf[DLADM_STRSIZE]; + char *unknown = "?", *notsup = ""; + char **propvals = statep->ls_propvals; + uint_t valcnt = MAX_PROP_VALS; + dladm_status_t status; + + status = dladm_get_prop(statep->ls_link, type, propname, + propvals, &valcnt); + if (status != DLADM_STATUS_OK) { + if (status == DLADM_STATUS_NOTSUP || statep->ls_persist) { + valcnt = 1; + if (type == DLADM_PROP_VAL_CURRENT) + propvals = &unknown; + else + propvals = ¬sup; + } else { + (void) fprintf(stderr, gettext( + "%s: cannot get link property '%s': %s\n"), + progname, propname, dladm_status2str(status, buf)); + exit(1); + } + } + + ptr = buf; + lim = buf + DLADM_STRSIZE; + for (i = 0; i < valcnt; i++) { + if (propvals[i][0] == '\0' && !statep->ls_parseable) + ptr += snprintf(ptr, lim - ptr, "--,"); + else + ptr += snprintf(ptr, lim - ptr, "%s,", propvals[i]); + if (ptr >= lim) + break; + } + if (valcnt > 0) + buf[strlen(buf) - 1] = '\0'; + + lim = statep->ls_line + MAX_PROP_LINE; + if (statep->ls_parseable) { + *pptr += snprintf(*pptr, lim - *pptr, + "%s=\"%s\" ", typename, buf); + } else { + *pptr += snprintf(*pptr, lim - *pptr, format, buf); + } +} + +static boolean_t +show_linkprop(void *arg, const char *propname) +{ + show_linkprop_state_t *statep = arg; + char *ptr = statep->ls_line; + char *lim = ptr + MAX_PROP_LINE; + + if (statep->ls_parseable) + ptr += snprintf(ptr, lim - ptr, "PROPERTY=\"%s\" ", propname); + else + ptr += snprintf(ptr, lim - ptr, "%-15s ", propname); + + print_linkprop(statep, propname, + statep->ls_persist ? DLADM_PROP_VAL_PERSISTENT : + DLADM_PROP_VAL_CURRENT, "VALUE", "%-14s ", &ptr); + print_linkprop(statep, propname, DLADM_PROP_VAL_DEFAULT, + "DEFAULT", "%-14s ", &ptr); + print_linkprop(statep, propname, DLADM_PROP_VAL_MODIFIABLE, + "POSSIBLE", "%-30s ", &ptr); + + if (statep->ls_header) { + statep->ls_header = B_FALSE; + if (!statep->ls_parseable) + print_linkprop_head(); + } + (void) printf("%s\n", statep->ls_line); + return (B_TRUE); +} + +static void +do_show_linkprop(int argc, char **argv) +{ + int i, option, fd; + char errmsg[DLADM_STRSIZE]; + char linkname[MAXPATHLEN]; + prop_list_t *proplist = NULL; + char *buf; + dladm_status_t status; + show_linkprop_state_t state; + + opterr = 0; + state.ls_link = NULL; + state.ls_propvals = NULL; + state.ls_line = NULL; + state.ls_parseable = B_FALSE; + state.ls_persist = B_FALSE; + state.ls_header = B_TRUE; + while ((option = getopt_long(argc, argv, ":p:cP", + prop_longopts, NULL)) != -1) { + switch (option) { + case 'p': + if (parse_props(optarg, &proplist, B_TRUE) < 0) { + (void) fprintf(stderr, + gettext("%s: invalid field(s) specified\n"), + progname); + exit(1); + } + break; + case 'c': + state.ls_parseable = B_TRUE; + break; + case 'P': + state.ls_persist = B_TRUE; + break; + case ':': + (void) fprintf(stderr, + gettext("%s: option requires a value '-%c'\n"), + progname, optopt); + exit(1); + break; + case '?': + default: + (void) fprintf(stderr, + gettext("%s: unrecognized option '-%c'\n"), + progname, optopt); + exit(1); + break; + } + } + + if (optind == (argc - 1)) + state.ls_link = argv[optind]; + else if (optind != argc) + usage(); + + if (state.ls_link == NULL) { + (void) fprintf(stderr, + gettext("%s: link name must be specified\n"), progname); + exit(1); + } + + /* + * When some WiFi links are opened for the first time, their hardware + * automatically scans for APs and does other slow operations. Thus, + * if there are no open links, the retrieval of link properties + * (below) will proceed slowly unless we hold the link open. + */ + (void) snprintf(linkname, MAXPATHLEN, "/dev/%s", state.ls_link); + if ((fd = open(linkname, O_RDWR)) < 0) { + (void) fprintf(stderr, + gettext("%s: cannot open %s\n"), progname, state.ls_link); + exit(1); + } + + buf = malloc((sizeof (char *) + DLADM_PROP_VAL_MAX) * MAX_PROP_VALS + + MAX_PROP_LINE); + if (buf == NULL) { + (void) fprintf(stderr, + gettext("%s: insufficient memory\n"), progname); + exit(1); + } + state.ls_propvals = (char **)(void *)buf; + for (i = 0; i < MAX_PROP_VALS; i++) { + state.ls_propvals[i] = buf + sizeof (char *) * MAX_PROP_VALS + + i * DLADM_PROP_VAL_MAX; + } + state.ls_line = buf + + (sizeof (char *) + DLADM_PROP_VAL_MAX) * MAX_PROP_VALS; + + if (proplist != NULL) { + for (i = 0; i < proplist->pl_count; i++) { + if (!show_linkprop(&state, + proplist->pl_info[i].pi_name)) + break; + } + } else { + status = dladm_walk_prop(state.ls_link, &state, show_linkprop); + if (status != DLADM_STATUS_OK) { + (void) fprintf(stderr, + gettext("%s: show-linkprop: %s\n"), progname, + dladm_status2str(status, errmsg)); + exit(1); + } + } + (void) close(fd); + free(buf); + free_props(proplist); +} + +static dladm_status_t +set_linkprop_persist(const char *link, const char *prop_name, char **prop_val, + uint_t val_cnt, boolean_t reset) +{ + dladm_status_t status; + char errmsg[DLADM_STRSIZE]; + + status = dladm_set_prop(link, prop_name, prop_val, val_cnt, + DLADM_OPT_PERSIST); + + if (status != DLADM_STATUS_OK) { + if (reset) { + (void) fprintf(stderr, gettext("%s: warning: cannot " + "persistently reset link property '%s' on '%s': " + "%s\n"), progname, prop_name, link, + dladm_status2str(status, errmsg)); + } else { + (void) fprintf(stderr, gettext("%s: warning: cannot " + "persistently set link property '%s' on '%s': " + "%s\n"), progname, prop_name, link, + dladm_status2str(status, errmsg)); + } + } + return (status); +} + +static void +set_linkprop(int argc, char **argv, boolean_t reset) +{ + int i, option; + char errmsg[DLADM_STRSIZE]; + const char *link = NULL; + prop_list_t *proplist = NULL; + boolean_t temp = B_FALSE; + dladm_status_t status = DLADM_STATUS_OK; + + opterr = 0; + while ((option = getopt_long(argc, argv, ":p:R:t", + prop_longopts, NULL)) != -1) { + switch (option) { + case 'p': + if (parse_props(optarg, &proplist, reset) < 0) { + (void) fprintf(stderr, gettext( + "%s: invalid link properties specified\n"), + progname); + exit(1); + } + break; + case 't': + temp = B_TRUE; + break; + case 'R': + status = dladm_set_rootdir(optarg); + if (status != DLADM_STATUS_OK) { + (void) fprintf(stderr, gettext( + "%s: invalid directory specified: %s\n"), + progname, dladm_status2str(status, errmsg)); + exit(1); + } + break; + case ':': + (void) fprintf(stderr, + gettext("%s: option requires a value '-%c'\n"), + progname, optopt); + exit(1); + break; + case '?': + default: + (void) fprintf(stderr, + gettext("%s: unrecognized option '-%c'\n"), + progname, optopt); + exit(1); + break; + } + } + + if (optind == (argc - 1)) + link = argv[optind]; + else if (optind != argc) + usage(); + + if (link == NULL) { + (void) fprintf(stderr, + gettext("%s: link name must be specified\n"), + progname); + exit(1); + } + + if (proplist == NULL) { + if (!reset) { + (void) fprintf(stderr, + gettext("%s: link property must be specified\n"), + progname); + exit(1); + } + status = dladm_set_prop(link, NULL, NULL, 0, DLADM_OPT_TEMP); + if (status != DLADM_STATUS_OK) { + (void) fprintf(stderr, gettext( + "%s: warning: cannot reset link " + "properties on '%s': %s\n"), + progname, link, dladm_status2str(status, errmsg)); + } + if (!temp) { + status = set_linkprop_persist(link, NULL, NULL, 0, + reset); + } + goto done; + } + + for (i = 0; i < proplist->pl_count; i++) { + prop_info_t *pip = &proplist->pl_info[i]; + char **val; + uint_t count; + dladm_status_t s; + + if (reset) { + val = NULL; + count = 0; + } else { + val = pip->pi_val; + count = pip->pi_count; + if (count == 0) { + (void) fprintf(stderr, gettext( + "%s: value(s) for '%s' not specified\n"), + progname, pip->pi_name); + status = DLADM_STATUS_BADARG; + continue; + } + } + s = dladm_set_prop(link, pip->pi_name, val, count, + DLADM_OPT_TEMP); + if (s == DLADM_STATUS_OK) { + if (!temp) { + s = set_linkprop_persist(link, + pip->pi_name, val, count, reset); + if (s != DLADM_STATUS_OK) + status = s; + } + continue; + } + status = s; + switch (s) { + case DLADM_STATUS_NOTFOUND: + (void) fprintf(stderr, + gettext("%s: invalid link property '%s'\n"), + progname, pip->pi_name); + break; + case DLADM_STATUS_BADVAL: { + int j; + char *ptr, *lim; + char **propvals = NULL; + uint_t valcnt = MAX_PROP_VALS; + + ptr = malloc((sizeof (char *) + + DLADM_PROP_VAL_MAX) * MAX_PROP_VALS + + MAX_PROP_LINE); + + propvals = (char **)(void *)ptr; + if (propvals == NULL) { + (void) fprintf(stderr, gettext( + "%s: insufficient memory\n"), progname); + exit(1); + } + for (j = 0; j < MAX_PROP_VALS; j++) { + propvals[j] = ptr + sizeof (char *) * + MAX_PROP_VALS + + j * DLADM_PROP_VAL_MAX; + } + s = dladm_get_prop(link, DLADM_PROP_VAL_MODIFIABLE, + pip->pi_name, propvals, &valcnt); + + ptr = errmsg; + lim = ptr + DLADM_STRSIZE; + *ptr = '\0'; + for (j = 0; j < valcnt && s == DLADM_STATUS_OK; j++) { + ptr += snprintf(ptr, lim - ptr, "%s,", + propvals[j]); + if (ptr >= lim) + break; + } + if (ptr > errmsg) + *(ptr - 1) = '\0'; + (void) fprintf(stderr, gettext( + "%s: link property '%s' must be one of: %s\n"), + progname, pip->pi_name, errmsg); + free(propvals); + break; + } + default: + if (reset) { + (void) fprintf(stderr, gettext( + "%s: cannot reset link property '%s' on " + "'%s': %s\n"), progname, pip->pi_name, link, + dladm_status2str(s, errmsg)); + } else { + (void) fprintf(stderr, gettext( + "%s: cannot set link property '%s' on " + "'%s': %s\n"), progname, pip->pi_name, link, + dladm_status2str(s, errmsg)); + } + break; + } + } +done: + free_props(proplist); + if (status != DLADM_STATUS_OK) + exit(1); +} + +static void +do_set_linkprop(int argc, char **argv) +{ + set_linkprop(argc, argv, B_FALSE); +} + +static void +do_reset_linkprop(int argc, char **argv) +{ + set_linkprop(argc, argv, B_TRUE); +} + +static int +convert_secobj(char *buf, uint_t len, uint8_t *obj_val, uint_t *obj_lenp, + dladm_secobj_class_t class) +{ + int error = 0; + + if (class != DLADM_SECOBJ_CLASS_WEP) + return (ENOENT); + + switch (len) { + case 5: /* ASCII key sizes */ + case 13: + (void) memcpy(obj_val, buf, len); + *obj_lenp = len; + break; + case 10: /* Hex key sizes, not preceded by 0x */ + case 26: + error = hexascii_to_octet(buf, len, obj_val, obj_lenp); + break; + case 12: /* Hex key sizes, preceded by 0x */ + case 28: + if (strncmp(buf, "0x", 2) != 0) + return (EINVAL); + error = hexascii_to_octet(buf + 2, len - 2, obj_val, obj_lenp); + break; + default: + return (EINVAL); + } + return (error); +} + +/* ARGSUSED */ +static void +defersig(int sig) +{ + signalled = sig; +} + +static int +get_secobj_from_tty(uint_t try, const char *objname, char *buf) +{ + uint_t len = 0; + int c; + struct termios stored, current; + void (*sigfunc)(int); + + /* + * Turn off echo -- but before we do so, defer SIGINT handling + * so that a ^C doesn't leave the terminal corrupted. + */ + sigfunc = signal(SIGINT, defersig); + (void) fflush(stdin); + (void) tcgetattr(0, &stored); + current = stored; + current.c_lflag &= ~(ICANON|ECHO); + current.c_cc[VTIME] = 0; + current.c_cc[VMIN] = 1; + (void) tcsetattr(0, TCSANOW, ¤t); +again: + if (try == 1) + (void) printf(gettext("provide value for '%s': "), objname); + else + (void) printf(gettext("confirm value for '%s': "), objname); + + (void) fflush(stdout); + while (signalled == 0) { + c = getchar(); + if (c == '\n' || c == '\r') { + if (len != 0) + break; + (void) putchar('\n'); + goto again; + } + + buf[len++] = c; + if (len >= DLADM_SECOBJ_VAL_MAX - 1) + break; + (void) putchar('*'); + } + + (void) putchar('\n'); + (void) fflush(stdin); + + /* + * Restore terminal setting and handle deferred signals. + */ + (void) tcsetattr(0, TCSANOW, &stored); + + (void) signal(SIGINT, sigfunc); + if (signalled != 0) + (void) kill(getpid(), signalled); + + return (len); +} + +static int +get_secobj_val(char *obj_name, uint8_t *obj_val, uint_t *obj_lenp, + dladm_secobj_class_t class, FILE *filep) +{ + int rval; + uint_t len, len2; + char buf[DLADM_SECOBJ_VAL_MAX], buf2[DLADM_SECOBJ_VAL_MAX]; + + if (filep == NULL) { + len = get_secobj_from_tty(1, obj_name, buf); + rval = convert_secobj(buf, len, obj_val, obj_lenp, class); + if (rval == 0) { + len2 = get_secobj_from_tty(2, obj_name, buf2); + if (len != len2 || memcmp(buf, buf2, len) != 0) + rval = ENOTSUP; + } + return (rval); + } else { + for (;;) { + if (fgets(buf, sizeof (buf), filep) == NULL) + break; + if (isspace(buf[0])) + continue; + + len = strlen(buf); + if (buf[len - 1] == '\n') { + buf[len - 1] = '\0'; + len--; + } + break; + } + (void) fclose(filep); + } + return (convert_secobj(buf, len, obj_val, obj_lenp, class)); +} + +static boolean_t +check_auth(const char *auth) +{ + struct passwd *pw; + + if ((pw = getpwuid(getuid())) == NULL) + return (B_FALSE); + + return (chkauthattr(auth, pw->pw_name) != 0); +} + +static void +audit_secobj(char *auth, char *class, char *obj, + boolean_t success, boolean_t create) +{ + adt_session_data_t *ah; + adt_event_data_t *event; + au_event_t flag; + char *errstr; + + if (create) { + flag = ADT_dladm_create_secobj; + errstr = "ADT_dladm_create_secobj"; + } else { + flag = ADT_dladm_delete_secobj; + errstr = "ADT_dladm_delete_secobj"; + } + + if (adt_start_session(&ah, NULL, ADT_USE_PROC_DATA) != 0) { + (void) fprintf(stderr, "%s: adt_start_session: %s\n", + progname, strerror(errno)); + exit(1); + } + + if ((event = adt_alloc_event(ah, flag)) == NULL) { + (void) fprintf(stderr, "%s: adt_alloc_event" + "(%s): %s\n", progname, errstr, + strerror(errno)); + exit(1); + } + + /* fill in audit info */ + if (create) { + event->adt_dladm_create_secobj.auth_used = auth; + event->adt_dladm_create_secobj.obj_class = class; + event->adt_dladm_create_secobj.obj_name = obj; + } else { + event->adt_dladm_delete_secobj.auth_used = auth; + event->adt_dladm_delete_secobj.obj_class = class; + event->adt_dladm_delete_secobj.obj_name = obj; + } + + if (success) { + if (adt_put_event(event, ADT_SUCCESS, ADT_SUCCESS) != 0) { + (void) fprintf(stderr, "%s: adt_put_event" + "(%s, success): %s\n", + progname, errstr, strerror(errno)); + exit(1); + } + } else { + if (adt_put_event(event, ADT_FAILURE, + ADT_FAIL_VALUE_AUTH) != 0) { + (void) fprintf(stderr, "%s: adt_put_event" + "(%s, failure): %s\n", + progname, errstr, strerror(errno)); + exit(1); + } + } + + adt_free_event(event); + (void) adt_end_session(ah); +} + +#define MAX_SECOBJS 32 +#define MAX_SECOBJ_NAMELEN 32 +static void +do_create_secobj(int argc, char **argv) +{ + int option, rval; + char errmsg[DLADM_STRSIZE]; + FILE *filep = NULL; + char *obj_name = NULL; + char *class_name = NULL; + uint8_t obj_val[DLADM_SECOBJ_VAL_MAX]; + uint_t obj_len; + boolean_t success, temp = B_FALSE; + dladm_status_t status; + dladm_secobj_class_t class = -1; + uid_t euid; + + opterr = 0; + (void) memset(obj_val, 0, DLADM_SECOBJ_VAL_MAX); + while ((option = getopt_long(argc, argv, ":f:c:R:t", + wifi_longopts, NULL)) != -1) { + switch (option) { + case 'f': + euid = geteuid(); + (void) seteuid(getuid()); + filep = fopen(optarg, "r"); + if (filep == NULL) { + (void) fprintf(stderr, + gettext("%s: cannot open %s: %s\n"), + progname, optarg, strerror(errno)); + exit(1); + } + (void) seteuid(euid); + break; + case 'c': + class_name = optarg; + status = dladm_str2secobjclass(optarg, &class); + if (status != DLADM_STATUS_OK) { + (void) fprintf(stderr, gettext( + "%s: invalid secure object class '%s', " + "valid values are: wep\n"), + progname, optarg); + exit(1); + } + break; + case 't': + temp = B_TRUE; + break; + case 'R': + status = dladm_set_rootdir(optarg); + if (status != DLADM_STATUS_OK) { + (void) fprintf(stderr, gettext( + "%s: invalid directory specified: %s\n"), + progname, dladm_status2str(status, errmsg)); + exit(1); + } + break; + case ':': + (void) fprintf(stderr, + gettext("%s: option requires a value '-%c'\n"), + progname, optopt); + exit(1); + break; + case '?': + default: + (void) fprintf(stderr, + gettext("%s: unrecognized option '-%c'\n"), + progname, optopt); + exit(1); + break; + } + } + + if (optind == (argc - 1)) + obj_name = argv[optind]; + else if (optind != argc) + usage(); + + if (class == -1) { + (void) fprintf(stderr, + gettext("%s: secure object class required\n"), + progname); + exit(1); + } + + if (obj_name == NULL) { + (void) fprintf(stderr, + gettext("%s: secure object name required\n"), + progname); + exit(1); + } + + success = check_auth(LINK_SEC_AUTH); + audit_secobj(LINK_SEC_AUTH, class_name, obj_name, success, B_TRUE); + if (!success) { + (void) fprintf(stderr, + gettext("%s: authorization '%s' is required\n"), + progname, LINK_SEC_AUTH); + exit(1); + } + + if ((rval = get_secobj_val(obj_name, obj_val, &obj_len, + class, filep)) != 0) { + switch (rval) { + case ENOENT: + (void) fprintf(stderr, + gettext("%s: invalid secure object class\n"), + progname); + break; + case EINVAL: + (void) fprintf(stderr, + gettext("%s: invalid secure object value\n"), + progname); + break; + case ENOTSUP: + (void) fprintf(stderr, gettext( + "%s: verification failed\n"), progname); + break; + default: + (void) fprintf(stderr, gettext( + "%s: invalid secure object: %s\n"), + progname, strerror(rval)); + break; + } + exit(1); + } + + status = dladm_set_secobj(obj_name, class, obj_val, obj_len, + DLADM_OPT_CREATE | DLADM_OPT_TEMP); + if (status != DLADM_STATUS_OK) { + (void) fprintf(stderr, + gettext("%s: could not create secure object '%s': %s\n"), + progname, obj_name, dladm_status2str(status, errmsg)); + exit(1); + } + if (temp) + return; + + status = dladm_set_secobj(obj_name, class, obj_val, obj_len, + DLADM_OPT_PERSIST); + if (status != DLADM_STATUS_OK) { + (void) fprintf(stderr, + gettext("%s: warning: could not persistently create " + "secure object '%s': %s\n"), progname, obj_name, + dladm_status2str(status, errmsg)); + exit(1); + } +} + +static void +do_delete_secobj(int argc, char **argv) +{ + int i, option; + char errmsg[DLADM_STRSIZE]; + boolean_t temp = B_FALSE; + split_t *sp = NULL; + boolean_t success; + dladm_status_t status, pstatus; + + opterr = 0; + status = pstatus = DLADM_STATUS_OK; + while ((option = getopt_long(argc, argv, "R:t", + wifi_longopts, NULL)) != -1) { + switch (option) { + case 't': + temp = B_TRUE; + break; + case 'R': + status = dladm_set_rootdir(optarg); + if (status != DLADM_STATUS_OK) { + (void) fprintf(stderr, gettext( + "%s: invalid directory specified: %s\n"), + progname, dladm_status2str(status, errmsg)); + exit(1); + } + break; + case ':': + (void) fprintf(stderr, + gettext("%s: option requires a value '-%c'\n"), + progname, optopt); + exit(1); + break; + case '?': + default: + (void) fprintf(stderr, + gettext("%s: unrecognized option '-%c'\n"), + progname, optopt); + exit(1); + break; + } + } + + if (optind == (argc - 1)) { + sp = split(argv[optind], MAX_SECOBJS, MAX_SECOBJ_NAMELEN); + if (sp == NULL) { + (void) fprintf(stderr, gettext( + "%s: invalid secure object name(s): '%s'\n"), + progname, argv[optind]); + exit(1); + } + } else if (optind != argc) + usage(); + + if (sp == NULL || sp->s_nfields < 1) { + (void) fprintf(stderr, + gettext("%s: secure object name required\n"), + progname); + exit(1); + } + + success = check_auth(LINK_SEC_AUTH); + audit_secobj(LINK_SEC_AUTH, "wep", argv[optind], success, B_FALSE); + if (!success) { + (void) fprintf(stderr, + gettext("%s: authorization '%s' is required\n"), + progname, LINK_SEC_AUTH); + exit(1); + } + + for (i = 0; i < sp->s_nfields; i++) { + status = dladm_unset_secobj(sp->s_fields[i], DLADM_OPT_TEMP); + if (!temp) { + pstatus = dladm_unset_secobj(sp->s_fields[i], + DLADM_OPT_PERSIST); + } else { + pstatus = DLADM_STATUS_OK; + } + + if (status != DLADM_STATUS_OK) { + (void) fprintf(stderr, gettext( + "%s: could not delete secure object '%s': %s\n"), + progname, sp->s_fields[i], + dladm_status2str(status, errmsg)); + } + if (pstatus != DLADM_STATUS_OK) { + (void) fprintf(stderr, gettext("%s: warning: could not " + "persistently delete secure object '%s': %s\n"), + progname, sp->s_fields[i], + dladm_status2str(pstatus, errmsg)); + } + } + if (status != DLADM_STATUS_OK || pstatus != DLADM_STATUS_OK) + exit(1); +} + +typedef struct show_secobj_state { + boolean_t ss_persist; + boolean_t ss_parseable; + boolean_t ss_debug; + boolean_t ss_header; +} show_secobj_state_t; + +static void +print_secobj_head(show_secobj_state_t *statep) +{ + (void) printf("%-20s %-20s ", "OBJECT", "CLASS"); + if (statep->ss_debug) + (void) printf("%-30s", "VALUE"); + (void) putchar('\n'); +} + +static boolean_t +show_secobj(void *arg, const char *obj_name) +{ + uint_t obj_len = DLADM_SECOBJ_VAL_MAX; + uint8_t obj_val[DLADM_SECOBJ_VAL_MAX]; + char buf[DLADM_STRSIZE]; + uint_t flags = 0; + dladm_secobj_class_t class; + show_secobj_state_t *statep = arg; + dladm_status_t status; + + if (statep->ss_persist) + flags |= DLADM_OPT_PERSIST; + + status = dladm_get_secobj(obj_name, &class, obj_val, &obj_len, flags); + if (status != DLADM_STATUS_OK) { + (void) fprintf(stderr, gettext( + "%s: cannot get secure object '%s': %s\n"), progname, + obj_name, dladm_status2str(status, buf)); + exit(1); + } + + if (statep->ss_header) { + statep->ss_header = B_FALSE; + if (!statep->ss_parseable) + print_secobj_head(statep); + } + + if (statep->ss_parseable) { + (void) printf("OBJECT=\"%s\" CLASS=\"%s\" ", obj_name, + dladm_secobjclass2str(class, buf)); + } else { + (void) printf("%-20s %-20s ", obj_name, + dladm_secobjclass2str(class, buf)); + } + + if (statep->ss_debug) { + char val[DLADM_SECOBJ_VAL_MAX * 2]; + uint_t len = sizeof (val); + + if (octet_to_hexascii(obj_val, obj_len, val, &len) == 0) { + if (statep->ss_parseable) + (void) printf("VALUE=\"0x%s\"", val); + else + (void) printf("0x%-30s", val); + } + } + (void) putchar('\n'); + return (B_TRUE); +} + +static void +do_show_secobj(int argc, char **argv) +{ + int option; + show_secobj_state_t state; + dladm_status_t status; + uint_t i; + char errmsg[DLADM_STRSIZE]; + split_t *sp; + uint_t flags; + + opterr = 0; + state.ss_persist = B_FALSE; + state.ss_parseable = B_FALSE; + state.ss_debug = B_FALSE; + state.ss_header = B_TRUE; + while ((option = getopt_long(argc, argv, ":pPd", + wifi_longopts, NULL)) != -1) { + switch (option) { + case 'p': + state.ss_parseable = B_TRUE; + break; + case 'P': + state.ss_persist = B_TRUE; + break; + case 'd': + if (getuid() != 0) { + (void) fprintf(stderr, + gettext("%s: insufficient privileges\n"), + progname); + exit(1); + } + state.ss_debug = B_TRUE; + break; + case ':': + (void) fprintf(stderr, + gettext("%s: option requires a value '-%c'\n"), + progname, optopt); + exit(1); + break; + case '?': + default: + (void) fprintf(stderr, + gettext("%s: unrecognized option '-%c'\n"), + progname, optopt); + exit(1); + break; + } + } + + if (optind == (argc - 1)) { + sp = split(argv[optind], MAX_SECOBJS, MAX_SECOBJ_NAMELEN); + if (sp == NULL) { + (void) fprintf(stderr, gettext( + "%s: invalid secure object name(s): '%s'\n"), + progname, argv[optind]); + exit(1); + } + for (i = 0; i < sp->s_nfields; i++) { + if (!show_secobj(&state, sp->s_fields[i])) + break; + } + splitfree(sp); + return; + } else if (optind != argc) + usage(); + + flags = state.ss_persist ? DLADM_OPT_PERSIST : 0; + status = dladm_walk_secobj(&state, show_secobj, flags); + if (status != DLADM_STATUS_OK) { + (void) fprintf(stderr, gettext("%s: show-secobj: %s\n"), + progname, dladm_status2str(status, errmsg)); + exit(1); + } +} + +/* ARGSUSED */ +static void +do_init_linkprop(int argc, char **argv) +{ + char errmsg[DLADM_STRSIZE]; + dladm_status_t status; + + status = dladm_init_linkprop(); + if (status != DLADM_STATUS_OK) { + (void) fprintf(stderr, + gettext("%s: link property initialization failed: %s\n"), + progname, dladm_status2str(status, errmsg)); + exit(1); + } +} + +/* ARGSUSED */ +static void +do_init_secobj(int argc, char **argv) +{ + char errmsg[DLADM_STRSIZE]; + dladm_status_t status; + + status = dladm_init_secobj(); + if (status != DLADM_STATUS_OK) { + (void) fprintf(stderr, + gettext("%s: secure object initialization failed: %s\n"), + progname, dladm_status2str(status, errmsg)); + exit(1); + } +} diff --git a/usr/src/cmd/dladm/linkprop.conf b/usr/src/cmd/dladm/linkprop.conf new file mode 100644 index 0000000000..dd196c1273 --- /dev/null +++ b/usr/src/cmd/dladm/linkprop.conf @@ -0,0 +1,30 @@ +# +# CDDL HEADER START +# +# The contents of this file are subject to the terms of the +# Common Development and Distribution License (the "License"). +# You may not use this file except in compliance with the License. +# +# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE +# or http://www.opensolaris.org/os/licensing. +# See the License for the specific language governing permissions +# and limitations under the License. +# +# When distributing Covered Code, include this CDDL HEADER in each +# file and include the License file at usr/src/OPENSOLARIS.LICENSE. +# If applicable, add the following below this CDDL HEADER, with the +# fields enclosed by brackets "[]" replaced with your own identifying +# information: Portions Copyright [yyyy] [name of copyright owner] +# +# CDDL HEADER END +# +# +# Copyright 2006 Sun Microsystems, Inc. All rights reserved. +# Use is subject to license terms. +# +# ident "%Z%%M% %I% %E% SMI" +# +# DO NOT EDIT OR PARSE THIS FILE! +# +# Use the dladm(1m) command to change the contents of this file. + diff --git a/usr/src/cmd/dladm/secobj.conf b/usr/src/cmd/dladm/secobj.conf new file mode 100644 index 0000000000..dd196c1273 --- /dev/null +++ b/usr/src/cmd/dladm/secobj.conf @@ -0,0 +1,30 @@ +# +# CDDL HEADER START +# +# The contents of this file are subject to the terms of the +# Common Development and Distribution License (the "License"). +# You may not use this file except in compliance with the License. +# +# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE +# or http://www.opensolaris.org/os/licensing. +# See the License for the specific language governing permissions +# and limitations under the License. +# +# When distributing Covered Code, include this CDDL HEADER in each +# file and include the License file at usr/src/OPENSOLARIS.LICENSE. +# If applicable, add the following below this CDDL HEADER, with the +# fields enclosed by brackets "[]" replaced with your own identifying +# information: Portions Copyright [yyyy] [name of copyright owner] +# +# CDDL HEADER END +# +# +# Copyright 2006 Sun Microsystems, Inc. All rights reserved. +# Use is subject to license terms. +# +# ident "%Z%%M% %I% %E% SMI" +# +# DO NOT EDIT OR PARSE THIS FILE! +# +# Use the dladm(1m) command to change the contents of this file. + diff --git a/usr/src/cmd/svc/milestone/net-physical b/usr/src/cmd/svc/milestone/net-physical index 3e5291a854..60c4ee8f98 100644 --- a/usr/src/cmd/svc/milestone/net-physical +++ b/usr/src/cmd/svc/milestone/net-physical @@ -58,9 +58,13 @@ SUNW_NO_MPATHD=; export SUNW_NO_MPATHD smf_netstrategy # -# Bring up link aggregations +# Bring up link aggregations and initialize security objects. +# Note that link property initialization is deferred until after +# IP interfaces are plumbed to ensure that the links will not +# be unloaded (and the property settings lost). # /sbin/dladm up-aggr +/sbin/dladm init-secobj # # If the system was net booted by DHCP, hand DHCP management off to the @@ -194,6 +198,14 @@ if [ -n "$inet6_list" ]; then fi # +# Unfortunately, if a driver unloads and then is subsequently reloaded, no +# mechanism currently exists to restore the properties of its associated +# links. Hence, we wait until after interfaces have been plumbed (above) +# to initialize link properties. +# +/sbin/dladm init-linkprop + +# # Process the /etc/hostname.* files of plumbed IPv4 interfaces. If an # /etc/hostname file is not present or is empty, the ifconfig auto-dhcp # / auto-revarp command will attempt to set the address, later. diff --git a/usr/src/cmd/truss/codes.c b/usr/src/cmd/truss/codes.c index 452d52c9ed..fe5a173211 100644 --- a/usr/src/cmd/truss/codes.c +++ b/usr/src/cmd/truss/codes.c @@ -291,12 +291,12 @@ const struct ioc { { (uint_t)TIOCGSIZE, "TIOCGSIZE", "ttysize" }, /* - * DLIOCRAW has the same ioctl number as LDCLOSE. Since the LDIOC + * Unfortunately, the DLIOC and LDIOC codes overlap. Since the LDIOC * ioctls (for xenix compatibility) are far less likely to be used, we - * give preference to DLIOCRAW, which is the only userland ioctl in the - * DLIOC family. + * give preference to DLIOC. */ { (uint_t)DLIOCRAW, "DLIOCRAW", NULL }, + { (uint_t)DLIOCNATIVE, "DLIOCNATIVE", NULL }, { (uint_t)LDOPEN, "LDOPEN", NULL }, { (uint_t)LDCLOSE, "LDCLOSE", NULL }, diff --git a/usr/src/head/auth_list.h b/usr/src/head/auth_list.h index d0d625bc72..5fadc1c404 100644 --- a/usr/src/head/auth_list.h +++ b/usr/src/head/auth_list.h @@ -48,6 +48,7 @@ extern "C" { #define SET_DATE_AUTH "solaris.system.date" #define WIFI_CONFIG_AUTH "solaris.network.wifi.config" #define WIFI_WEP_AUTH "solaris.network.wifi.wep" +#define LINK_SEC_AUTH "solaris.network.link.security" /* * Authorizations used by Trusted Solaris. diff --git a/usr/src/lib/Makefile b/usr/src/lib/Makefile index d507548e2b..6effccf08b 100644 --- a/usr/src/lib/Makefile +++ b/usr/src/lib/Makefile @@ -185,6 +185,7 @@ SUBDIRS += \ madv \ mpss \ libdisasm \ + libwladm \ libwrap \ libxcurses \ libxcurses2 \ @@ -374,6 +375,7 @@ HDRSUBDIRS= \ libvolmgt \ libumem \ libuutil \ + libwladm \ libwrap \ libxcurses2 \ libzfs \ @@ -461,7 +463,7 @@ libdevinfo: libnvpair libsec libdhcpagent: libdhcputil libnsl libsocket libdhcpsvc: libinetutil libdhcputil: libinetutil -libdladm: libdlpi libdevinfo +libdladm: libdlpi libdevinfo libwladm libinetutil libdtrace: libproc libgen libctf libdtrace_jni: libuutil libdtrace libefi: libuuid @@ -493,6 +495,7 @@ libwrap: libnsl libsocket libwanboot: libnvpair libresolv libnsl libsocket libdevinfo libinetutil \ libdhcputil openssl libwanbootutil: libnsl +libwladm: libdevinfo libsocket pam_modules: libproject passwdutil $(SMARTCARD) libscf: libuutil libmd libinetsvc: libscf diff --git a/usr/src/lib/libbsm/audit_class.txt b/usr/src/lib/libbsm/audit_class.txt index d8e2c6ee42..ae51e5fb53 100644 --- a/usr/src/lib/libbsm/audit_class.txt +++ b/usr/src/lib/libbsm/audit_class.txt @@ -52,6 +52,7 @@ 0x00000400:na:non-attribute 0x00001000:lo:login or logout 0x00004000:ap:application +0x00008000:cy:cryptographic 0x00010000:ss:change system state 0x00020000:as:system-wide administration 0x00040000:ua:user administration diff --git a/usr/src/lib/libbsm/audit_event.txt b/usr/src/lib/libbsm/audit_event.txt index da1ab9aabe..784b79eab5 100644 --- a/usr/src/lib/libbsm/audit_event.txt +++ b/usr/src/lib/libbsm/audit_event.txt @@ -428,6 +428,8 @@ 6232:AUE_remove:remove/eject device:ot 6233:AUE_pool_import:import device into pool:ot 6234:AUE_pool_export:export device from pool:ot +6235:AUE_dladm_create_secobj:create network security object:as,cy +6236:AUE_dladm_delete_secobj:delete network security object:as,cy # # Trusted Extensions events: # diff --git a/usr/src/lib/libbsm/common/adt_event.h b/usr/src/lib/libbsm/common/adt_event.h index f55e446097..f9e2c06ab8 100644 --- a/usr/src/lib/libbsm/common/adt_event.h +++ b/usr/src/lib/libbsm/common/adt_event.h @@ -95,6 +95,8 @@ enum adt_login_text { #define ADT_admin_authenticate 3 #define ADT_attach 42 #define ADT_detach 43 +#define ADT_dladm_create_secobj 47 +#define ADT_dladm_delete_secobj 48 #define ADT_filesystem_add 4 #define ADT_filesystem_delete 5 #define ADT_filesystem_modify 6 @@ -161,6 +163,20 @@ struct adt_detach { /* ADT_detach */ }; typedef struct adt_detach adt_detach_t; +struct adt_dladm_create_secobj { /* ADT_dladm_create_secobj */ + char *auth_used; /* required */ + char *obj_class; /* required */ + char *obj_name; /* required */ +}; +typedef struct adt_dladm_create_secobj adt_dladm_create_secobj_t; + +struct adt_dladm_delete_secobj { /* ADT_dladm_delete_secobj */ + char *auth_used; /* required */ + char *obj_class; /* required */ + char *obj_name; /* required */ +}; +typedef struct adt_dladm_delete_secobj adt_dladm_delete_secobj_t; + struct adt_filesystem_add { /* ADT_filesystem_add */ char *object_name; /* required */ char *domain; /* optional */ @@ -483,6 +499,8 @@ union adt_event_data { adt_admin_authenticate_t adt_admin_authenticate; adt_attach_t adt_attach; adt_detach_t adt_detach; + adt_dladm_create_secobj_t adt_dladm_create_secobj; + adt_dladm_delete_secobj_t adt_dladm_delete_secobj; adt_filesystem_add_t adt_filesystem_add; adt_filesystem_delete_t adt_filesystem_delete; adt_filesystem_modify_t adt_filesystem_modify; diff --git a/usr/src/lib/libbsm/common/adt_xlate.c b/usr/src/lib/libbsm/common/adt_xlate.c index 1da827d5f7..a24aa10439 100644 --- a/usr/src/lib/libbsm/common/adt_xlate.c +++ b/usr/src/lib/libbsm/common/adt_xlate.c @@ -117,6 +117,46 @@ static struct translation X_detach = { &XX_detach[0], &XX_detach[0] }; +static struct entry XX_dladm_create_secobj[5] = { + {AUT_SUBJECT, 1, NULL, &(XX_dladm_create_secobj[1]), + 0, 0, 0, NULL}, + {AUT_UAUTH, 1, &adr1[0], &(XX_dladm_create_secobj[2]), + 0, 1, 0, NULL}, + {AUT_TEXT, 1, &adr1[0], &(XX_dladm_create_secobj[3]), + 0, 1, 0, NULL}, + {AUT_TEXT, 1, &adr1[0], &(XX_dladm_create_secobj[4]), + 0, 1, 0, NULL}, + {AUT_RETURN, 1, NULL, NULL, + 0, 0, 0, NULL} +}; +static struct translation X_dladm_create_secobj = { + 0, + ADT_dladm_create_secobj, + AUE_dladm_create_secobj, + 5, + &XX_dladm_create_secobj[0], + &XX_dladm_create_secobj[0] +}; +static struct entry XX_dladm_delete_secobj[5] = { + {AUT_SUBJECT, 1, NULL, &(XX_dladm_delete_secobj[1]), + 0, 0, 0, NULL}, + {AUT_UAUTH, 1, &adr1[0], &(XX_dladm_delete_secobj[2]), + 0, 1, 0, NULL}, + {AUT_TEXT, 1, &adr1[0], &(XX_dladm_delete_secobj[3]), + 0, 1, 0, NULL}, + {AUT_TEXT, 1, &adr1[0], &(XX_dladm_delete_secobj[4]), + 0, 1, 0, NULL}, + {AUT_RETURN, 1, NULL, NULL, + 0, 0, 0, NULL} +}; +static struct translation X_dladm_delete_secobj = { + 0, + ADT_dladm_delete_secobj, + AUE_dladm_delete_secobj, + 5, + &XX_dladm_delete_secobj[0], + &XX_dladm_delete_secobj[0] +}; static struct entry XX_filesystem_add[7] = { {AUT_SUBJECT, 1, NULL, &(XX_filesystem_add[1]), 0, 0, 0, NULL}, @@ -979,10 +1019,12 @@ static struct translation X_zone_state = { &XX_zone_state[0], &XX_zone_state[0] }; -struct translation *xlate_table[47] = { +struct translation *xlate_table[49] = { &X_admin_authenticate, &X_attach, &X_detach, + &X_dladm_create_secobj, + &X_dladm_delete_secobj, &X_filesystem_add, &X_filesystem_delete, &X_filesystem_modify, diff --git a/usr/src/lib/libbsm/common/adt_xml.txt b/usr/src/lib/libbsm/common/adt_xml.txt index 222dfaf59c..16999ce633 100644 --- a/usr/src/lib/libbsm/common/adt_xml.txt +++ b/usr/src/lib/libbsm/common/adt_xml.txt @@ -843,8 +843,39 @@ Use is subject to license terms. </entry> </event> +<!-- dladm security objected events --> + <event id="AUE_dladm_generic" type="generic" omit="always"> + <entry id="subject"> + <internal token="subject"/> + <external opt="none"/> + </entry> + <entry id="auth_used"> + <internal token="uauth"/> + <external opt="required" type="char *"/> + </entry> + <entry id="obj_class"> + <internal token="text"/> + <external opt="required" type="char *"/> + </entry> + <entry id="obj_name"> + <internal token="text"/> + <external opt="required" type="char *"/> + </entry> + <entry id="return"> + <internal token="return"/> + <external opt="none"/> + </entry> + </event> + + <event id="AUE_dladm_create_secobj" instance_of="AUE_dladm_generic" + header="0" idNo="47" omit="JNI"> + </event> + <event id="AUE_dladm_delete_secobj" instance_of="AUE_dladm_generic" + header="0" idNo="48" omit="JNI"> + </event> + <!-- add new everts here with the next higher idNo --> -<!-- Highest idNo is 46, so next is 47, then fix this comment --> +<!-- Highest idNo is 48, so next is 49, then fix this comment --> <!-- end of C Only events --> diff --git a/usr/src/lib/libdladm/Makefile b/usr/src/lib/libdladm/Makefile index 6fdcdf8a88..8794785ba1 100644 --- a/usr/src/lib/libdladm/Makefile +++ b/usr/src/lib/libdladm/Makefile @@ -27,7 +27,7 @@ include $(SRC)/lib/Makefile.lib -HDRS = libdladm.h +HDRS = libdladm.h libdladm_impl.h HDRDIR = common SUBDIRS = $(MACH) diff --git a/usr/src/lib/libdladm/Makefile.com b/usr/src/lib/libdladm/Makefile.com index 23396f1091..83b423a83b 100644 --- a/usr/src/lib/libdladm/Makefile.com +++ b/usr/src/lib/libdladm/Makefile.com @@ -27,7 +27,7 @@ LIBRARY = libdladm.a VERS = .1 -OBJECTS = libdladm.o +OBJECTS = libdladm.o secobj.o linkprop.o include ../../Makefile.lib @@ -35,8 +35,7 @@ include ../../Makefile.lib include ../../Makefile.rootfs LIBS = $(DYNLIB) $(LINTLIB) - -LDLIBS += -ldevinfo -ldlpi -lc +LDLIBS += -ldevinfo -ldlpi -lc -lwladm -linetutil SRCDIR = ../common $(LINTLIB) := SRCS = $(SRCDIR)/$(LINTSRC) diff --git a/usr/src/lib/libdladm/common/libdladm.c b/usr/src/lib/libdladm/common/libdladm.c index 679368a9ae..f7f9c1755a 100644 --- a/usr/src/lib/libdladm/common/libdladm.c +++ b/usr/src/lib/libdladm/common/libdladm.c @@ -25,19 +25,18 @@ #pragma ident "%Z%%M% %I% %E% SMI" -#include <stdio.h> -#include <sys/types.h> -#include <string.h> -#include <fcntl.h> #include <unistd.h> #include <stropts.h> -#include <stdlib.h> #include <errno.h> -#include <libdevinfo.h> -#include <libdlpi.h> -#include <libdladm.h> -#include <sys/dld.h> +#include <fcntl.h> +#include <strings.h> +#include <dirent.h> #include <net/if.h> +#include <sys/stat.h> +#include <sys/dld.h> +#include <libdlpi.h> +#include <libdevinfo.h> +#include <libdladm_impl.h> typedef struct dladm_dev { char dd_name[IFNAMSIZ]; @@ -48,11 +47,13 @@ typedef struct dladm_walk { dladm_dev_t *dw_dev_list; } dladm_walk_t; +static char dladm_rootdir[MAXPATHLEN] = "/"; + /* * Issue an ioctl to the specified file descriptor attached to the * DLD control driver interface. */ -static int +int i_dladm_ioctl(int fd, int ic_cmd, void *ic_dp, int ic_len) { struct strioctl iocb; @@ -250,3 +251,256 @@ failed: (void) close(fd); return (-1); } + +const char * +dladm_status2str(dladm_status_t status, char *buf) +{ + const char *s; + + switch (status) { + case DLADM_STATUS_OK: + s = "ok"; + break; + case DLADM_STATUS_BADARG: + s = "invalid argument"; + break; + case DLADM_STATUS_FAILED: + s = "operation failed"; + break; + case DLADM_STATUS_TOOSMALL: + s = "buffer size too small"; + break; + case DLADM_STATUS_NOTSUP: + s = "operation not supported"; + break; + case DLADM_STATUS_NOTFOUND: + s = "object not found"; + break; + case DLADM_STATUS_BADVAL: + s = "invalid value"; + break; + case DLADM_STATUS_NOMEM: + s = "insufficient memory"; + break; + case DLADM_STATUS_EXIST: + s = "object already exists"; + break; + case DLADM_STATUS_LINKINVAL: + s = "invalid link"; + break; + case DLADM_STATUS_PROPRDONLY: + s = "read-only property"; + break; + case DLADM_STATUS_BADVALCNT: + s = "invalid number of values"; + break; + case DLADM_STATUS_DBNOTFOUND: + s = "database not found"; + break; + case DLADM_STATUS_DENIED: + s = "permission denied"; + break; + case DLADM_STATUS_IOERR: + s = "I/O error"; + break; + default: + s = ""; + } + (void) snprintf(buf, DLADM_STRSIZE, "%s", s); + return (buf); +} + +/* + * Convert a unix errno to a dladm_status_t. + * We only convert errnos that are likely to be encountered. All others + * are mapped to DLADM_STATUS_FAILED. + */ +dladm_status_t +dladm_errno2status(int err) +{ + switch (err) { + case EINVAL: + return (DLADM_STATUS_BADARG); + case EEXIST: + return (DLADM_STATUS_EXIST); + case ENOENT: + return (DLADM_STATUS_NOTFOUND); + case ENOSPC: + return (DLADM_STATUS_TOOSMALL); + case ENOMEM: + return (DLADM_STATUS_NOMEM); + case ENOTSUP: + return (DLADM_STATUS_NOTSUP); + case EACCES: + return (DLADM_STATUS_DENIED); + case EIO: + return (DLADM_STATUS_IOERR); + default: + return (DLADM_STATUS_FAILED); + } +} + +/* + * These are the uid and gid of the user 'dladm'. + * The directory /etc/dladm and all files under it are owned by this user. + */ +#define DLADM_DB_OWNER 15 +#define DLADM_DB_GROUP 3 +#define LOCK_DB_PERMS S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH + +static int +i_dladm_lock_db(const char *lock_file, short type) +{ + int lock_fd; + struct flock lock; + + if ((lock_fd = open(lock_file, O_RDWR | O_CREAT | O_TRUNC, + LOCK_DB_PERMS)) < 0) + return (-1); + + lock.l_type = type; + lock.l_whence = SEEK_SET; + lock.l_start = 0; + lock.l_len = 0; + + if (fcntl(lock_fd, F_SETLKW, &lock) < 0) { + int err = errno; + + (void) close(lock_fd); + (void) unlink(lock_file); + errno = err; + return (-1); + } + return (lock_fd); +} + +static void +i_dladm_unlock_db(const char *lock_file, int fd) +{ + struct flock lock; + + if (fd < 0) + return; + + lock.l_type = F_UNLCK; + lock.l_whence = SEEK_SET; + lock.l_start = 0; + lock.l_len = 0; + + (void) fcntl(fd, F_SETLKW, &lock); + (void) close(fd); + (void) unlink(lock_file); +} + +dladm_status_t +i_dladm_rw_db(const char *db_file, mode_t db_perms, + dladm_status_t (*process_db)(void *, FILE *, FILE *), + void *arg, boolean_t writeop) +{ + dladm_status_t status = DLADM_STATUS_OK; + FILE *fp, *nfp = NULL; + char lock[MAXPATHLEN]; + char file[MAXPATHLEN]; + char newfile[MAXPATHLEN]; + char *db_basename; + int nfd, lock_fd; + + /* + * If we are called from a boot script such as net-physical, + * it's quite likely that the root fs is still not writable. + * For this case, it's ok for the lock creation to fail since + * no one else could be accessing our configuration file. + */ + db_basename = strrchr(db_file, '/'); + if (db_basename == NULL || db_basename[1] == '\0') + return (dladm_errno2status(EINVAL)); + db_basename++; + (void) snprintf(lock, MAXPATHLEN, "/tmp/%s.lock", db_basename); + if ((lock_fd = i_dladm_lock_db + (lock, (writeop ? F_WRLCK : F_RDLCK))) < 0 && errno != EROFS) + return (dladm_errno2status(errno)); + + (void) snprintf(file, MAXPATHLEN, "%s/%s", dladm_rootdir, db_file); + if ((fp = fopen(file, (writeop ? "r+" : "r"))) == NULL) { + int err = errno; + + i_dladm_unlock_db(lock, lock_fd); + if (err == ENOENT) + return (DLADM_STATUS_DBNOTFOUND); + + return (dladm_errno2status(err)); + } + + if (writeop) { + (void) snprintf(newfile, MAXPATHLEN, "%s/%s.new", + dladm_rootdir, db_file); + if ((nfd = open(newfile, O_WRONLY | O_CREAT | O_TRUNC, + db_perms)) < 0) { + (void) fclose(fp); + i_dladm_unlock_db(lock, lock_fd); + return (dladm_errno2status(errno)); + } + + if ((nfp = fdopen(nfd, "w")) == NULL) { + (void) close(nfd); + (void) fclose(fp); + (void) unlink(newfile); + i_dladm_unlock_db(lock, lock_fd); + return (dladm_errno2status(errno)); + } + } + status = (*process_db)(arg, fp, nfp); + if (!writeop || status != DLADM_STATUS_OK) + goto done; + + /* + * Configuration files need to be owned by the 'dladm' user. + * If we are invoked by root, the file ownership needs to be fixed. + */ + if (getuid() == 0 || geteuid() == 0) { + if (fchown(nfd, DLADM_DB_OWNER, DLADM_DB_GROUP) < 0) { + status = dladm_errno2status(errno); + goto done; + } + } + + if (fflush(nfp) == EOF) { + status = dladm_errno2status(errno); + goto done; + } + (void) fclose(fp); + (void) fclose(nfp); + + if (rename(newfile, file) < 0) { + (void) unlink(newfile); + i_dladm_unlock_db(lock, lock_fd); + return (dladm_errno2status(errno)); + } + + i_dladm_unlock_db(lock, lock_fd); + return (DLADM_STATUS_OK); + +done: + if (nfp != NULL) { + (void) fclose(nfp); + if (status != DLADM_STATUS_OK) + (void) unlink(newfile); + } + (void) fclose(fp); + i_dladm_unlock_db(lock, lock_fd); + return (status); +} + +dladm_status_t +dladm_set_rootdir(const char *rootdir) +{ + DIR *dp; + + if (rootdir == NULL || *rootdir != '/' || + (dp = opendir(rootdir)) == NULL) + return (DLADM_STATUS_BADARG); + + (void) strncpy(dladm_rootdir, rootdir, MAXPATHLEN); + (void) closedir(dp); + return (DLADM_STATUS_OK); +} diff --git a/usr/src/lib/libdladm/common/libdladm.h b/usr/src/lib/libdladm/common/libdladm.h index 64315da820..1cf3700fc6 100644 --- a/usr/src/lib/libdladm/common/libdladm.h +++ b/usr/src/lib/libdladm/common/libdladm.h @@ -36,19 +36,77 @@ extern "C" { #endif -typedef struct dladm_attr dladm_attr_t; - -struct dladm_attr { +typedef struct dladm_attr { char da_dev[MAXNAMELEN]; uint_t da_max_sdu; uint16_t da_vid; -}; +} dladm_attr_t; + +#define DLADM_STRSIZE 256 +#define DLADM_SECOBJ_VAL_MAX 256 +#define DLADM_PROP_VAL_MAX 256 +#define DLADM_OPT_TEMP 0x00000001 +#define DLADM_OPT_CREATE 0x00000002 +#define DLADM_OPT_PERSIST 0x00000004 + +typedef enum { + DLADM_STATUS_OK = 0, + DLADM_STATUS_BADARG, + DLADM_STATUS_FAILED, + DLADM_STATUS_TOOSMALL, + DLADM_STATUS_NOTSUP, + DLADM_STATUS_NOTFOUND, + DLADM_STATUS_BADVAL, + DLADM_STATUS_NOMEM, + DLADM_STATUS_EXIST, + DLADM_STATUS_LINKINVAL, + DLADM_STATUS_PROPRDONLY, + DLADM_STATUS_BADVALCNT, + DLADM_STATUS_DBNOTFOUND, + DLADM_STATUS_DENIED, + DLADM_STATUS_IOERR +} dladm_status_t; + +typedef enum { + DLADM_PROP_VAL_CURRENT = 1, + DLADM_PROP_VAL_DEFAULT, + DLADM_PROP_VAL_MODIFIABLE, + DLADM_PROP_VAL_PERSISTENT +} dladm_prop_type_t; + +#define DLADM_SECOBJ_CLASS_WEP 0 +typedef int dladm_secobj_class_t; -extern int dladm_walk(void (*)(void *, const char *), void *); -extern int dladm_walk_vlan(void (*)(void *, - const char *), void *, const char *); +typedef void (dladm_walkcb_t)(void *, const char *); + +extern int dladm_walk(dladm_walkcb_t *, void *); +extern int dladm_walk_vlan(dladm_walkcb_t *, void *, const char *); extern int dladm_info(const char *, dladm_attr_t *); +extern dladm_status_t dladm_set_prop(const char *, const char *, + char **, uint_t, uint_t); +extern dladm_status_t dladm_get_prop(const char *, dladm_prop_type_t, + const char *, char **, uint_t *); +extern dladm_status_t dladm_walk_prop(const char *, void *, + boolean_t (*)(void *, const char *)); + +extern dladm_status_t dladm_set_secobj(const char *, dladm_secobj_class_t, + uint8_t *, uint_t, uint_t); +extern dladm_status_t dladm_get_secobj(const char *, dladm_secobj_class_t *, + uint8_t *, uint_t *, uint_t); +extern dladm_status_t dladm_unset_secobj(const char *, uint_t); +extern dladm_status_t dladm_walk_secobj(void *, + boolean_t (*)(void *, const char *), uint_t); + +extern const char *dladm_status2str(dladm_status_t, char *); +extern const char *dladm_secobjclass2str(dladm_secobj_class_t, char *); +extern dladm_status_t dladm_str2secobjclass(const char *, + dladm_secobj_class_t *); + +extern dladm_status_t dladm_init_linkprop(void); +extern dladm_status_t dladm_init_secobj(void); +extern dladm_status_t dladm_set_rootdir(const char *rootdir); + #ifdef __cplusplus } #endif diff --git a/usr/src/lib/libdladm/common/libdladm_impl.h b/usr/src/lib/libdladm/common/libdladm_impl.h new file mode 100644 index 0000000000..c949219a5b --- /dev/null +++ b/usr/src/lib/libdladm/common/libdladm_impl.h @@ -0,0 +1,51 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#ifndef _LIBDLADM_IMPL_H +#define _LIBDLADM_IMPL_H + +#pragma ident "%Z%%M% %I% %E% SMI" + +#include <libdladm.h> +#include <stdio.h> + +#ifdef __cplusplus +extern "C" { +#endif + +#define MAXLINELEN 1024 +#define BUFLEN(lim, ptr) (((lim) > (ptr)) ? ((lim) - (ptr)) : 0) + +extern int i_dladm_ioctl(int, int, void *, int); +extern dladm_status_t dladm_errno2status(int); +extern dladm_status_t i_dladm_rw_db(const char *, mode_t, + dladm_status_t (*)(void *, FILE *, FILE *), + void *, boolean_t); + +#ifdef __cplusplus +} +#endif + +#endif /* _LIBDLADM_IMPL_H */ diff --git a/usr/src/lib/libdladm/common/linkprop.c b/usr/src/lib/libdladm/common/linkprop.c new file mode 100644 index 0000000000..8e1ef849e9 --- /dev/null +++ b/usr/src/lib/libdladm/common/linkprop.c @@ -0,0 +1,700 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +#include <stdlib.h> +#include <strings.h> +#include <errno.h> +#include <ctype.h> +#include <sys/stat.h> +#include <libwladm.h> +#include <libdladm_impl.h> + +static dladm_status_t i_dladm_set_prop_db(const char *, const char *, + char **, uint_t); +static dladm_status_t i_dladm_get_prop_db(const char *, const char *, + char **, uint_t *); + +/* + * Convert a wladm_status_t to a dladm_status_t. This is used by wrappers + * to libwladm routines (e.g. dladm_set_prop()). Note that the mapping is + * not 1-1; whenever possible we try to look for an error code with a + * similar meaning. Error codes with no suitable counterpart in libdladm + * will be mapped to DLADM_STATUS_FAILED. Clients who require clearer error + * reporting should use libwladm directly. + */ +static dladm_status_t +dladm_wladmstatus2status(wladm_status_t wstatus) +{ + switch (wstatus) { + case WLADM_STATUS_OK: + return (DLADM_STATUS_OK); + case WLADM_STATUS_FAILED: + return (DLADM_STATUS_FAILED); + case WLADM_STATUS_NOTSUP: + return (DLADM_STATUS_NOTSUP); + case WLADM_STATUS_BADARG: + return (DLADM_STATUS_BADARG); + case WLADM_STATUS_NOTFOUND: + return (DLADM_STATUS_NOTFOUND); + case WLADM_STATUS_BADVAL: + return (DLADM_STATUS_BADVAL); + case WLADM_STATUS_LINKINVAL: + return (DLADM_STATUS_LINKINVAL); + case WLADM_STATUS_NOMEM: + return (DLADM_STATUS_NOMEM); + case WLADM_STATUS_PROPRDONLY: + return (DLADM_STATUS_PROPRDONLY); + case WLADM_STATUS_TOOSMALL: + return (DLADM_STATUS_TOOSMALL); + case WLADM_STATUS_BADVALCNT: + return (DLADM_STATUS_BADVALCNT); + default: + return (DLADM_STATUS_FAILED); + } +} + +dladm_status_t +dladm_set_prop(const char *link, const char *prop_name, char **prop_val, + uint_t val_cnt, uint_t flags) +{ + dladm_status_t status = DLADM_STATUS_BADARG; + + if (link == NULL || (prop_val == NULL && val_cnt > 0) || + (prop_val != NULL && val_cnt == 0) || flags == 0) + return (DLADM_STATUS_BADARG); + + if ((flags & DLADM_OPT_TEMP) != 0) { + if (wladm_is_valid(link)) { + status = dladm_wladmstatus2status( + wladm_set_prop(link, prop_name, + prop_val, val_cnt)); + } + if (status != DLADM_STATUS_OK) + return (status); + } + if ((flags & DLADM_OPT_PERSIST) != 0) { + status = i_dladm_set_prop_db(link, prop_name, + prop_val, val_cnt); + } + return (status); +} + +dladm_status_t +dladm_walk_prop(const char *link, void *arg, + boolean_t (*func)(void *, const char *)) +{ + if (link == NULL || func == NULL) + return (DLADM_STATUS_BADARG); + + if (wladm_is_valid(link)) { + return (dladm_wladmstatus2status( + wladm_walk_prop(link, arg, func))); + } + return (DLADM_STATUS_BADARG); +} + +dladm_status_t +dladm_get_prop(const char *link, dladm_prop_type_t type, + const char *prop_name, char **prop_val, uint_t *val_cntp) +{ + if (link == NULL || prop_name == NULL || prop_val == NULL || + val_cntp == NULL || *val_cntp == 0) + return (DLADM_STATUS_BADARG); + + if (type == DLADM_PROP_VAL_PERSISTENT) { + return (i_dladm_get_prop_db(link, prop_name, + prop_val, val_cntp)); + } + + if (wladm_is_valid(link)) { + wladm_prop_type_t wtype; + + switch (type) { + case DLADM_PROP_VAL_CURRENT: + wtype = WLADM_PROP_VAL_CURRENT; + break; + case DLADM_PROP_VAL_DEFAULT: + wtype = WLADM_PROP_VAL_DEFAULT; + break; + case DLADM_PROP_VAL_MODIFIABLE: + wtype = WLADM_PROP_VAL_MODIFIABLE; + break; + default: + return (DLADM_STATUS_BADARG); + } + + return (dladm_wladmstatus2status( + wladm_get_prop(link, wtype, prop_name, + prop_val, val_cntp))); + } + return (DLADM_STATUS_BADARG); +} + +/* + * Data structures used for implementing persistent link properties + */ +typedef struct linkprop_val { + const char *lv_name; + struct linkprop_val *lv_nextval; +} linkprop_val_t; + +typedef struct linkprop_info { + const char *li_name; + struct linkprop_info *li_nextprop; + struct linkprop_val *li_val; +} linkprop_info_t; + +typedef struct linkprop_db_state linkprop_db_state_t; + +typedef boolean_t (*linkprop_db_op_t)(linkprop_db_state_t *, + char *, linkprop_info_t *, dladm_status_t *); + +struct linkprop_db_state { + linkprop_db_op_t ls_op; + const char *ls_link; + const char *ls_propname; + char **ls_propval; + uint_t *ls_valcntp; +}; + +static void +free_linkprops(linkprop_info_t *lip) +{ + linkprop_info_t *lip_next; + linkprop_val_t *lvp, *lvp_next; + + for (; lip != NULL; lip = lip_next) { + lip_next = lip->li_nextprop; + for (lvp = lip->li_val; lvp != NULL; lvp = lvp_next) { + lvp_next = lvp->lv_nextval; + free(lvp); + } + free(lip); + } +} + +/* + * Generate an entry in the link property database. + * Each entry has this format: + * <linkname> <prop0>=<val0>,...,<valn>;...;<propn>=<val0>,...,<valn>; + */ +static void +generate_linkprop_line(linkprop_db_state_t *lsp, char *buf, + linkprop_info_t *listp, dladm_status_t *statusp) +{ + char tmpbuf[MAXLINELEN]; + char *ptr, *lim = tmpbuf + MAXLINELEN; + linkprop_info_t *lip = listp; + linkprop_val_t *lvp = NULL; + + /* + * Delete line if there are no properties left. + */ + if (lip == NULL || + (lip->li_val == NULL && lip->li_nextprop == NULL)) { + buf[0] = '\0'; + return; + } + ptr = tmpbuf; + ptr += snprintf(ptr, BUFLEN(lim, ptr), "%s\t", lsp->ls_link); + for (; lip != NULL; lip = lip->li_nextprop) { + /* + * Skip properties without values. + */ + if (lip->li_val == NULL) + continue; + + ptr += snprintf(ptr, BUFLEN(lim, ptr), "%s=", lip->li_name); + for (lvp = lip->li_val; lvp != NULL; lvp = lvp->lv_nextval) { + ptr += snprintf(ptr, BUFLEN(lim, ptr), "%s%c", + lvp->lv_name, + ((lvp->lv_nextval == NULL) ? ';' : ',')); + } + } + if (ptr > lim) { + *statusp = DLADM_STATUS_TOOSMALL; + return; + } + (void) snprintf(buf, MAXLINELEN, "%s\n", tmpbuf); +} + +/* + * This function is used to update or create an entry in the persistent db. + * process_linkprop_db() will first scan the db for an entry matching the + * specified link. If a match is found, this function is invoked with the + * entry's contents (buf) and its linked-list representation (listp). lsp + * holds the name and values of the property to be added or updated; this + * information will be merged with listp. Subsequently, an updated entry + * will be written to buf, which will in turn be written to disk by + * process_linkprop_db(). If no entry matches the specified link, listp + * will be NULL; a new entry will be generated in this case and it will + * contain only the property information in lsp. + */ +static boolean_t +process_linkprop_set(linkprop_db_state_t *lsp, char *buf, + linkprop_info_t *listp, dladm_status_t *statusp) +{ + dladm_status_t status; + linkprop_info_t *lastp = NULL, *lip = listp, *nlip = NULL; + linkprop_val_t **lvpp; + int i; + + if (lsp->ls_propname == NULL) { + buf[0] = '\0'; + return (B_FALSE); + } + + /* + * Find the linkprop we want to change. + */ + for (; lip != NULL; lip = lip->li_nextprop) { + if (strcmp(lip->li_name, lsp->ls_propname) == 0) + break; + + lastp = lip; + } + + if (lip == NULL) { + /* + * If the linkprop is not found, append it to the list. + */ + if ((nlip = malloc(sizeof (linkprop_info_t))) == NULL) { + status = DLADM_STATUS_NOMEM; + goto fail; + } + /* + * nlip will need to be freed later if there is no list to + * append to. + */ + if (lastp != NULL) + lastp->li_nextprop = nlip; + nlip->li_name = lsp->ls_propname; + nlip->li_nextprop = NULL; + nlip->li_val = NULL; + lvpp = &nlip->li_val; + } else { + linkprop_val_t *lvp, *lvp_next; + + /* + * If the linkprop is found, delete the existing values from it. + */ + for (lvp = lip->li_val; lvp != NULL; lvp = lvp_next) { + lvp_next = lvp->lv_nextval; + free(lvp); + } + lip->li_val = NULL; + lvpp = &lip->li_val; + } + + /* + * Fill our linkprop with the specified values. + */ + for (i = 0; i < *lsp->ls_valcntp; i++) { + if ((*lvpp = malloc(sizeof (linkprop_val_t))) == NULL) { + status = DLADM_STATUS_NOMEM; + goto fail; + } + (*lvpp)->lv_name = lsp->ls_propval[i]; + (*lvpp)->lv_nextval = NULL; + lvpp = &(*lvpp)->lv_nextval; + } + + if (listp != NULL) { + generate_linkprop_line(lsp, buf, listp, statusp); + } else { + generate_linkprop_line(lsp, buf, nlip, statusp); + free_linkprops(nlip); + } + return (B_FALSE); + +fail: + *statusp = status; + if (listp == NULL) + free_linkprops(nlip); + + return (B_FALSE); +} + +/* + * This function is used for retrieving the values for a specific property. + * It gets called if an entry matching the specified link exists in the db. + * The entry is converted into a linked-list listp. This list is then scanned + * for the specified property name; if a matching property exists, its + * associated values are copied to the array lsp->ls_propval. + */ +/* ARGSUSED */ +static boolean_t +process_linkprop_get(linkprop_db_state_t *lsp, char *buf, + linkprop_info_t *listp, dladm_status_t *statusp) +{ + linkprop_info_t *lip = listp; + linkprop_val_t *lvp; + uint_t valcnt = 0; + + /* + * Find the linkprop we want to get. + */ + for (; lip != NULL; lip = lip->li_nextprop) { + if (strcmp(lip->li_name, lsp->ls_propname) == 0) + break; + } + if (lip == NULL) { + *statusp = DLADM_STATUS_NOTFOUND; + return (B_FALSE); + } + + for (lvp = lip->li_val; lvp != NULL; lvp = lvp->lv_nextval) { + (void) strncpy(lsp->ls_propval[valcnt], lvp->lv_name, + DLADM_PROP_VAL_MAX); + + if (++valcnt >= *lsp->ls_valcntp && lvp->lv_nextval != NULL) { + *statusp = DLADM_STATUS_TOOSMALL; + return (B_FALSE); + } + } + /* + * This function is meant to be called at most once for each call + * to process_linkprop_db(). For this reason, it's ok to overwrite + * the caller's valcnt array size with the actual number of values + * returned. + */ + *lsp->ls_valcntp = valcnt; + return (B_FALSE); +} + +/* + * This is used for initializing link properties. + * Unlike the other routines, this gets called for every entry in the + * database. lsp->ls_link is not user-specified but instead is set to + * the current link being processed. + */ +/* ARGSUSED */ +static boolean_t +process_linkprop_init(linkprop_db_state_t *lsp, char *buf, + linkprop_info_t *listp, dladm_status_t *statusp) +{ + dladm_status_t status = DLADM_STATUS_OK; + linkprop_info_t *lip = listp; + linkprop_val_t *lvp; + uint_t valcnt, i; + char **propval; + + for (; lip != NULL; lip = lip->li_nextprop) { + /* + * Construct the propval array and fill it with + * values from listp. + */ + for (lvp = lip->li_val, valcnt = 0; + lvp != NULL; lvp = lvp->lv_nextval, valcnt++); + + propval = malloc(sizeof (char *) * valcnt); + if (propval == NULL) { + *statusp = DLADM_STATUS_NOMEM; + break; + } + lvp = lip->li_val; + for (i = 0; i < valcnt; i++, lvp = lvp->lv_nextval) + propval[i] = (char *)lvp->lv_name; + + status = dladm_set_prop(lsp->ls_link, lip->li_name, + propval, valcnt, DLADM_OPT_TEMP); + + /* + * We continue with initializing other properties even + * after encountering an error. This error will be + * propagated to the caller via 'statusp'. + */ + if (status != DLADM_STATUS_OK) + *statusp = status; + + free(propval); + } + return (B_TRUE); +} + +static int +parse_linkprops(char *buf, linkprop_info_t **lipp) +{ + int i, len; + char *curr; + linkprop_info_t *lip = NULL; + linkprop_info_t **tailp = lipp; + linkprop_val_t *lvp = NULL; + linkprop_val_t **vtailp = NULL; + + curr = buf; + len = strlen(buf); + for (i = 0; i < len; i++) { + char c = buf[i]; + boolean_t match = (c == '=' || c == ',' || c == ';'); + + /* + * Move to the next character if there is no match and + * if we have not reached the last character. + */ + if (!match && i != len - 1) + continue; + + if (match) { + /* + * Nul-terminate the string pointed to by 'curr'. + */ + buf[i] = '\0'; + if (*curr == '\0') + goto fail; + } + + if (lip != NULL) { + /* + * We get here after we have processed the "<prop>=" + * pattern. The pattern we are now interested in is + * "<val0>,<val1>,...,<valn>;". For each value we + * find, a linkprop_val_t will be allocated and + * added to the current 'lip'. + */ + if (c == '=') + goto fail; + + lvp = malloc(sizeof (*lvp)); + if (lvp == NULL) + goto fail; + + lvp->lv_name = curr; + lvp->lv_nextval = NULL; + *vtailp = lvp; + vtailp = &lvp->lv_nextval; + + if (c == ';') { + tailp = &lip->li_nextprop; + vtailp = NULL; + lip = NULL; + } + } else { + /* + * lip == NULL indicates that 'curr' must be refering + * to a property name. We allocate a new linkprop_info_t + * append it to the list given by the caller. + */ + if (c != '=') + goto fail; + + lip = malloc(sizeof (*lip)); + if (lip == NULL) + goto fail; + + lip->li_name = curr; + lip->li_val = NULL; + lip->li_nextprop = NULL; + *tailp = lip; + vtailp = &lip->li_val; + } + curr = buf + i + 1; + } + /* + * The list must be non-empty and the last character must be ';'. + */ + if (*lipp == NULL || lip != NULL) + goto fail; + + return (0); + +fail: + free_linkprops(*lipp); + *lipp = NULL; + return (-1); +} + +static boolean_t +process_linkprop_line(linkprop_db_state_t *lsp, char *buf, + dladm_status_t *statusp) +{ + linkprop_info_t *lip = NULL; + int i, len, llen; + char *str, *lasts; + boolean_t cont, nolink = B_FALSE; + + /* + * Skip leading spaces, blank lines, and comments. + */ + len = strlen(buf); + for (i = 0; i < len; i++) { + if (!isspace(buf[i])) + break; + } + if (i == len || buf[i] == '#') + return (B_TRUE); + + str = buf + i; + if (lsp->ls_link != NULL) { + /* + * Skip links we're not interested in. + * Note that strncmp() and isspace() are used here + * instead of strtok() and strcmp() because we don't + * want to modify buf in case it does not contain the + * specified link. + */ + llen = strlen(lsp->ls_link); + if (strncmp(str, lsp->ls_link, llen) != 0 || + !isspace(str[llen])) + return (B_TRUE); + } else { + /* + * If a link is not specified, find the link name + * and assign it to lsp->ls_link. + */ + if (strtok_r(str, " \n\t", &lasts) == NULL) + goto fail; + + llen = strlen(str); + lsp->ls_link = str; + nolink = B_TRUE; + } + str += llen + 1; + if (str >= buf + len) + goto fail; + + /* + * Now find the list of link properties. + */ + if ((str = strtok_r(str, " \n\t", &lasts)) == NULL) + goto fail; + + if (parse_linkprops(str, &lip) < 0) + goto fail; + + cont = (*lsp->ls_op)(lsp, buf, lip, statusp); + free_linkprops(lip); + if (nolink) + lsp->ls_link = NULL; + return (cont); + +fail: + free_linkprops(lip); + if (nolink) + lsp->ls_link = NULL; + + /* + * Delete corrupted line. + */ + buf[0] = '\0'; + return (B_TRUE); +} + +static dladm_status_t +process_linkprop_db(void *arg, FILE *fp, FILE *nfp) +{ + linkprop_db_state_t *lsp = arg; + dladm_status_t status = DLADM_STATUS_OK; + char buf[MAXLINELEN]; + boolean_t cont = B_TRUE; + + /* + * This loop processes each line of the configuration file. + * buf can potentially be modified by process_linkprop_line(). + * If this is a write operation and buf is not truncated, buf will + * be written to disk. process_linkprop_line() will no longer be + * called after it returns B_FALSE; at which point the remainder + * of the file will continue to be read and, if necessary, written + * to disk as well. + */ + while (fgets(buf, MAXLINELEN, fp) != NULL) { + if (cont) + cont = process_linkprop_line(lsp, buf, &status); + + if (nfp != NULL && buf[0] != '\0' && fputs(buf, nfp) == EOF) { + status = dladm_errno2status(errno); + break; + } + } + + if (status != DLADM_STATUS_OK || !cont) + return (status); + + if (lsp->ls_op == process_linkprop_set) { + /* + * If the specified link is not found above, we add the + * link and its properties to the configuration file. + */ + (void) (*lsp->ls_op)(lsp, buf, NULL, &status); + if (status == DLADM_STATUS_OK && fputs(buf, nfp) == EOF) + status = dladm_errno2status(errno); + } + + if (lsp->ls_op == process_linkprop_get) + status = DLADM_STATUS_NOTFOUND; + + return (status); +} + +#define LINKPROP_RW_DB(statep, writeop) \ + (i_dladm_rw_db("/etc/dladm/linkprop.conf", \ + S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH, process_linkprop_db, \ + (statep), (writeop))) + +static dladm_status_t +i_dladm_set_prop_db(const char *link, const char *prop_name, + char **prop_val, uint_t val_cnt) +{ + linkprop_db_state_t state; + + state.ls_op = process_linkprop_set; + state.ls_link = link; + state.ls_propname = prop_name; + state.ls_propval = prop_val; + state.ls_valcntp = &val_cnt; + + return (LINKPROP_RW_DB(&state, B_TRUE)); +} + +static dladm_status_t +i_dladm_get_prop_db(const char *link, const char *prop_name, + char **prop_val, uint_t *val_cntp) +{ + linkprop_db_state_t state; + + state.ls_op = process_linkprop_get; + state.ls_link = link; + state.ls_propname = prop_name; + state.ls_propval = prop_val; + state.ls_valcntp = val_cntp; + + return (LINKPROP_RW_DB(&state, B_FALSE)); +} + +dladm_status_t +dladm_init_linkprop(void) +{ + linkprop_db_state_t state; + + state.ls_op = process_linkprop_init; + state.ls_link = NULL; + state.ls_propname = NULL; + state.ls_propval = NULL; + state.ls_valcntp = NULL; + + return (LINKPROP_RW_DB(&state, B_FALSE)); +} diff --git a/usr/src/lib/libdladm/common/mapfile-vers b/usr/src/lib/libdladm/common/mapfile-vers index 5e0f599741..2af8201536 100644 --- a/usr/src/lib/libdladm/common/mapfile-vers +++ b/usr/src/lib/libdladm/common/mapfile-vers @@ -30,6 +30,20 @@ SUNWprivate_1.1 { dladm_info; dladm_walk; dladm_walk_vlan; + dladm_get_prop; + dladm_set_prop; + dladm_walk_prop; + dladm_get_secobj; + dladm_set_secobj; + dladm_unset_secobj; + dladm_walk_secobj; + dladm_status2str; + dladm_secobjclass2str; + dladm_str2secobjclass; + dladm_init_linkprop; + dladm_init_secobj; + dladm_set_rootdir; + local: *; }; diff --git a/usr/src/lib/libdladm/common/secobj.c b/usr/src/lib/libdladm/common/secobj.c new file mode 100644 index 0000000000..3f122ca347 --- /dev/null +++ b/usr/src/lib/libdladm/common/secobj.c @@ -0,0 +1,634 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +#include <unistd.h> +#include <stdlib.h> +#include <strings.h> +#include <errno.h> +#include <ctype.h> +#include <fcntl.h> +#include <sys/stat.h> +#include <sys/dld.h> +#include <libinetutil.h> +#include <libdladm_impl.h> + +static dladm_status_t i_dladm_set_secobj_db(const char *, + dladm_secobj_class_t, uint8_t *, uint_t); +static dladm_status_t i_dladm_get_secobj_db(const char *, + dladm_secobj_class_t *, uint8_t *, uint_t *); +static dladm_status_t i_dladm_unset_secobj_db(const char *); +static dladm_status_t i_dladm_walk_secobj_db(void *, + boolean_t (*)(void *, const char *)); + +typedef struct secobj_class_info { + const char *sc_name; + dld_secobj_class_t sc_dldclass; +} secobj_class_info_t; + +static secobj_class_info_t secobj_class_table[] = { + {"wep", DLD_SECOBJ_CLASS_WEP} +}; + +#define NSECOBJCLASS \ + (sizeof (secobj_class_table) / sizeof (secobj_class_info_t)) + +static boolean_t +dladm_check_secobjclass(dladm_secobj_class_t class) +{ + return (class >= 0 && class < NSECOBJCLASS); +} + +dladm_status_t +dladm_str2secobjclass(const char *str, dladm_secobj_class_t *class) +{ + int i; + secobj_class_info_t *sp; + + for (i = 0; i < NSECOBJCLASS; i++) { + sp = &secobj_class_table[i]; + if (strcasecmp(str, sp->sc_name) == 0) { + *class = i; + return (DLADM_STATUS_OK); + } + } + return (DLADM_STATUS_BADARG); +} + +const char * +dladm_secobjclass2str(dladm_secobj_class_t class, char *buf) +{ + const char *s; + + if (!dladm_check_secobjclass(class)) + s = ""; + else + s = secobj_class_table[class].sc_name; + + (void) snprintf(buf, DLADM_STRSIZE, "%s", s); + return (buf); +} + +static boolean_t +dladm_convert_secobjclass(dladm_secobj_class_t class, + dld_secobj_class_t *dldclass) +{ + if (!dladm_check_secobjclass(class)) + return (B_FALSE); + + *dldclass = secobj_class_table[class].sc_dldclass; + return (B_TRUE); +} + +static boolean_t +dladm_convert_dldsecobjclass(dld_secobj_class_t dldclass, + dladm_secobj_class_t *class) +{ + int i; + secobj_class_info_t *sp; + + for (i = 0; i < NSECOBJCLASS; i++) { + sp = &secobj_class_table[i]; + if (dldclass == sp->sc_dldclass) { + *class = i; + return (B_TRUE); + } + } + return (B_FALSE); +} + +dladm_status_t +dladm_set_secobj(const char *obj_name, dladm_secobj_class_t class, + uint8_t *obj_val, uint_t obj_len, uint_t flags) +{ + int fd; + dladm_status_t status = DLADM_STATUS_OK; + dld_ioc_secobj_set_t secobj_set; + dld_secobj_t *objp; + + if (!dladm_check_secobjclass(class) || flags == 0 || + obj_name == NULL || strlen(obj_name) > DLD_SECOBJ_NAME_MAX || + obj_val == NULL || obj_len == 0 || obj_len > DLD_SECOBJ_VAL_MAX) + return (DLADM_STATUS_BADARG); + + if ((flags & DLADM_OPT_TEMP) == 0) + goto persist; + + bzero(&secobj_set, sizeof (secobj_set)); + objp = &secobj_set.ss_obj; + if (!dladm_convert_secobjclass(class, &objp->so_class)) + return (DLADM_STATUS_BADARG); + + (void) strlcpy(objp->so_name, obj_name, DLD_SECOBJ_NAME_MAX); + bcopy(obj_val, objp->so_val, obj_len); + objp->so_len = obj_len; + + if ((flags & DLADM_OPT_CREATE) != 0) + secobj_set.ss_flags = DLD_SECOBJ_OPT_CREATE; + + if ((fd = open(DLD_CONTROL_DEV, O_RDWR)) < 0) + return (dladm_errno2status(errno)); + + if (i_dladm_ioctl(fd, DLDIOCSECOBJSET, &secobj_set, + sizeof (secobj_set)) < 0) + status = dladm_errno2status(errno); + + (void) close(fd); + if (status != DLADM_STATUS_OK) + return (status); + +persist: + if ((flags & DLADM_OPT_PERSIST) != 0) { + status = i_dladm_set_secobj_db(obj_name, class, + obj_val, obj_len); + } + return (status); +} + +dladm_status_t +dladm_get_secobj(const char *obj_name, dladm_secobj_class_t *classp, + uint8_t *obj_val, uint_t *obj_lenp, uint_t flags) +{ + int fd; + dladm_status_t status = DLADM_STATUS_OK; + dld_ioc_secobj_get_t secobj_get; + dld_secobj_t *objp; + + if (obj_name == NULL || strlen(obj_name) > DLD_SECOBJ_NAME_MAX || + obj_val == NULL || obj_lenp == NULL || *obj_lenp == 0 || + *obj_lenp > DLD_SECOBJ_VAL_MAX) + return (DLADM_STATUS_BADARG); + + if ((flags & DLADM_OPT_PERSIST) != 0) { + return (i_dladm_get_secobj_db(obj_name, classp, + obj_val, obj_lenp)); + } + + bzero(&secobj_get, sizeof (secobj_get)); + objp = &secobj_get.sg_obj; + (void) strlcpy(objp->so_name, obj_name, DLD_SECOBJ_NAME_MAX); + + if ((fd = open(DLD_CONTROL_DEV, O_RDWR)) < 0) + return (dladm_errno2status(errno)); + + if (i_dladm_ioctl(fd, DLDIOCSECOBJGET, &secobj_get, + sizeof (secobj_get)) < 0) + status = dladm_errno2status(errno); + + (void) close(fd); + if (objp->so_len > *obj_lenp) + return (DLADM_STATUS_TOOSMALL); + + if (!dladm_convert_dldsecobjclass(objp->so_class, classp)) + return (DLADM_STATUS_FAILED); + + *obj_lenp = objp->so_len; + bcopy(objp->so_val, obj_val, *obj_lenp); + return (status); +} + +dladm_status_t +dladm_unset_secobj(const char *obj_name, uint_t flags) +{ + int fd; + dladm_status_t status = DLADM_STATUS_OK; + dld_ioc_secobj_unset_t secobj_unset; + + if (obj_name == NULL || strlen(obj_name) > DLD_SECOBJ_NAME_MAX || + flags == 0) + return (DLADM_STATUS_BADARG); + + if ((flags & DLADM_OPT_TEMP) == 0) + goto persist; + + bzero(&secobj_unset, sizeof (secobj_unset)); + (void) strlcpy(secobj_unset.su_name, obj_name, DLD_SECOBJ_NAME_MAX); + if ((fd = open(DLD_CONTROL_DEV, O_RDWR)) < 0) + return (dladm_errno2status(errno)); + + if (i_dladm_ioctl(fd, DLDIOCSECOBJUNSET, &secobj_unset, + sizeof (secobj_unset)) < 0) + status = dladm_errno2status(errno); + + (void) close(fd); + if (status != DLADM_STATUS_OK) + return (status); + +persist: + if ((flags & DLADM_OPT_PERSIST) != 0) + status = i_dladm_unset_secobj_db(obj_name); + + return (status); +} + +#define SECOBJ_BUFSZ 65536 +dladm_status_t +dladm_walk_secobj(void *arg, boolean_t (*func)(void *, const char *), + uint_t flags) +{ + int fd = -1; + dladm_status_t status = DLADM_STATUS_OK; + dld_ioc_secobj_get_t *secobj_getp; + dld_secobj_t *objp; + + if ((flags & DLADM_OPT_PERSIST) != 0) + return (i_dladm_walk_secobj_db(arg, func)); + + secobj_getp = calloc(1, SECOBJ_BUFSZ); + if (secobj_getp == NULL) + return (DLADM_STATUS_NOMEM); + + if ((fd = open(DLD_CONTROL_DEV, O_RDWR)) < 0) { + status = dladm_errno2status(errno); + goto done; + } + if (i_dladm_ioctl(fd, DLDIOCSECOBJGET, secobj_getp, + SECOBJ_BUFSZ) < 0) { + status = dladm_errno2status(errno); + goto done; + } + + objp = (dld_secobj_t *)(secobj_getp + 1); + while (secobj_getp->sg_count > 0) { + if (!func(arg, objp->so_name)) + goto done; + secobj_getp->sg_count--; + objp++; + } +done: + (void) close(fd); + free(secobj_getp); + return (status); +} + +/* + * Data structures used for implementing persistent secure objects + */ +typedef struct secobj_info { + const char *si_name; + dladm_secobj_class_t *si_classp; + uint8_t *si_val; + uint_t *si_lenp; +} secobj_info_t; + +typedef struct secobj_name { + char *sn_name; + struct secobj_name *sn_next; +} secobj_name_t; + +typedef struct secobj_db_state secobj_db_state_t; + +typedef boolean_t (*secobj_db_op_t)(struct secobj_db_state *, char *, + secobj_info_t *, dladm_status_t *); + +struct secobj_db_state { + secobj_db_op_t ss_op; + secobj_info_t ss_info; + secobj_name_t **ss_namelist; +}; + +/* + * Update or generate a secobj entry using the info in ssp->ss_info. + */ +/* ARGSUSED */ +static boolean_t +process_secobj_set(secobj_db_state_t *ssp, char *buf, secobj_info_t *sip, + dladm_status_t *statusp) +{ + char tmpbuf[MAXLINELEN]; + char classbuf[DLADM_STRSIZE]; + char *ptr = tmpbuf, *lim = tmpbuf + MAXLINELEN; + int i; + + sip = &ssp->ss_info; + + ptr += snprintf(ptr, BUFLEN(lim, ptr), "%s\t", sip->si_name); + ptr += snprintf(ptr, BUFLEN(lim, ptr), "%s\t", + dladm_secobjclass2str(*sip->si_classp, classbuf)); + + ptr += snprintf(ptr, BUFLEN(lim, ptr), "0x"); + for (i = 0; i < *sip->si_lenp; i++) { + ptr += snprintf(ptr, BUFLEN(lim, ptr), "%02x", + sip->si_val[i] & 0xff); + } + if (ptr > lim) { + *statusp = DLADM_STATUS_TOOSMALL; + return (B_FALSE); + } + (void) snprintf(buf, MAXLINELEN, "%s\n", tmpbuf); + return (B_FALSE); +} + +/* ARGSUSED */ +static boolean_t +process_secobj_get(secobj_db_state_t *ssp, char *buf, secobj_info_t *sip, + dladm_status_t *statusp) +{ + if (*sip->si_lenp > *ssp->ss_info.si_lenp) { + *statusp = DLADM_STATUS_TOOSMALL; + return (B_FALSE); + } + bcopy(sip->si_val, ssp->ss_info.si_val, *sip->si_lenp); + *ssp->ss_info.si_lenp = *sip->si_lenp; + *ssp->ss_info.si_classp = *sip->si_classp; + return (B_FALSE); +} + +/* ARGSUSED */ +static boolean_t +process_secobj_unset(secobj_db_state_t *ssp, char *buf, secobj_info_t *sip, + dladm_status_t *statusp) +{ + /* + * Delete line. + */ + buf[0] = '\0'; + return (B_FALSE); +} + +/* ARGSUSED */ +static boolean_t +process_secobj_walk(secobj_db_state_t *ssp, char *buf, secobj_info_t *sip, + dladm_status_t *statusp) +{ + secobj_name_t *snp; + + if ((snp = malloc(sizeof (*snp))) == NULL) + return (B_TRUE); + + if ((snp->sn_name = strdup(sip->si_name)) == NULL) { + free(snp); + return (B_TRUE); + } + + snp->sn_next = NULL; + *ssp->ss_namelist = snp; + ssp->ss_namelist = &snp->sn_next; + return (B_TRUE); +} + +/* ARGSUSED */ +static boolean_t +process_secobj_init(secobj_db_state_t *ssp, char *buf, secobj_info_t *sip, + dladm_status_t *statusp) +{ + *statusp = dladm_set_secobj(sip->si_name, *sip->si_classp, sip->si_val, + *sip->si_lenp, DLADM_OPT_TEMP | DLADM_OPT_CREATE); + return (B_TRUE); +} + +static int +parse_secobj_val(char *buf, secobj_info_t *sip) +{ + if (strncmp(buf, "0x", 2) != 0) + return (EINVAL); + + return (hexascii_to_octet(buf + 2, strlen(buf) - 2, + sip->si_val, sip->si_lenp)); +} + +static boolean_t +process_secobj_line(secobj_db_state_t *ssp, char *buf, + dladm_status_t *statusp) +{ + secobj_info_t sinfo; + dladm_secobj_class_t class; + uint8_t val[DLADM_SECOBJ_VAL_MAX]; + uint_t vlen; + int i, len, nlen; + char *str, *lasts; + + /* + * Skip leading spaces, blank lines, and comments. + */ + len = strlen(buf); + for (i = 0; i < len; i++) { + if (!isspace(buf[i])) + break; + } + if (i == len || buf[i] == '#') + return (B_TRUE); + + str = buf + i; + if (ssp->ss_info.si_name != NULL) { + /* + * Skip objects we're not interested in. + */ + nlen = strlen(ssp->ss_info.si_name); + if (strncmp(str, ssp->ss_info.si_name, nlen) != 0 || + !isspace(str[nlen])) + return (B_TRUE); + + sinfo.si_name = ssp->ss_info.si_name; + } else { + /* + * If an object is not specified, find the object name + * and assign it to sinfo.si_name. + */ + if (strtok_r(str, " \n\t", &lasts) == NULL) + goto fail; + + nlen = strlen(str); + sinfo.si_name = str; + } + str += nlen + 1; + if (str >= buf + len) + goto fail; + + /* + * Find the class name. + */ + if ((str = strtok_r(str, " \n\t", &lasts)) == NULL) + goto fail; + + *statusp = dladm_str2secobjclass(str, &class); + if (*statusp != DLADM_STATUS_OK) + goto fail; + + /* + * Find the object value. + */ + if ((str = strtok_r(NULL, " \n\t", &lasts)) == NULL) + goto fail; + + vlen = DLADM_SECOBJ_VAL_MAX; + sinfo.si_classp = &class; + sinfo.si_val = val; + sinfo.si_lenp = &vlen; + if (parse_secobj_val(str, &sinfo) != 0) + goto fail; + + return ((*ssp->ss_op)(ssp, buf, &sinfo, statusp)); + +fail: + /* + * Delete corrupted line. + */ + buf[0] = '\0'; + return (B_TRUE); +} + +static dladm_status_t +process_secobj_db(void *arg, FILE *fp, FILE *nfp) +{ + secobj_db_state_t *ssp = arg; + dladm_status_t status = DLADM_STATUS_OK; + char buf[MAXLINELEN]; + boolean_t cont = B_TRUE; + + /* + * This loop processes each line of the configuration file. + * buf can potentially be modified by process_secobj_line(). + * If this is a write operation and buf is not truncated, buf will + * be written to disk. process_secobj_line() will no longer be + * called after it returns B_FALSE; at which point the remainder + * of the file will continue to be read and, if necessary, written + * to disk as well. + */ + while (fgets(buf, MAXLINELEN, fp) != NULL) { + if (cont) + cont = process_secobj_line(ssp, buf, &status); + + if (nfp != NULL && buf[0] != '\0' && fputs(buf, nfp) == EOF) { + status = dladm_errno2status(errno); + break; + } + } + if (status != DLADM_STATUS_OK || !cont) + return (status); + + if (ssp->ss_op == process_secobj_set) { + /* + * If the specified object is not found above, we add the + * object to the configuration file. + */ + (void) (*ssp->ss_op)(ssp, buf, NULL, &status); + if (status == DLADM_STATUS_OK && fputs(buf, nfp) == EOF) + status = dladm_errno2status(errno); + } + + if (ssp->ss_op == process_secobj_unset || + ssp->ss_op == process_secobj_get) + status = DLADM_STATUS_NOTFOUND; + + return (status); +} + +#define SECOBJ_RW_DB(statep, writeop) \ + (i_dladm_rw_db("/etc/dladm/secobj.conf", S_IRUSR | S_IWUSR, \ + process_secobj_db, (statep), (writeop))) + +static dladm_status_t +i_dladm_set_secobj_db(const char *obj_name, dladm_secobj_class_t class, + uint8_t *obj_val, uint_t obj_len) +{ + secobj_db_state_t state; + + state.ss_op = process_secobj_set; + state.ss_info.si_name = obj_name; + state.ss_info.si_classp = &class; + state.ss_info.si_val = obj_val; + state.ss_info.si_lenp = &obj_len; + state.ss_namelist = NULL; + + return (SECOBJ_RW_DB(&state, B_TRUE)); +} + +static dladm_status_t +i_dladm_get_secobj_db(const char *obj_name, dladm_secobj_class_t *classp, + uint8_t *obj_val, uint_t *obj_lenp) +{ + secobj_db_state_t state; + + state.ss_op = process_secobj_get; + state.ss_info.si_name = obj_name; + state.ss_info.si_classp = classp; + state.ss_info.si_val = obj_val; + state.ss_info.si_lenp = obj_lenp; + state.ss_namelist = NULL; + + return (SECOBJ_RW_DB(&state, B_FALSE)); +} + +static dladm_status_t +i_dladm_unset_secobj_db(const char *obj_name) +{ + secobj_db_state_t state; + + state.ss_op = process_secobj_unset; + state.ss_info.si_name = obj_name; + state.ss_info.si_classp = NULL; + state.ss_info.si_val = NULL; + state.ss_info.si_lenp = NULL; + state.ss_namelist = NULL; + + return (SECOBJ_RW_DB(&state, B_TRUE)); +} + +static dladm_status_t +i_dladm_walk_secobj_db(void *arg, boolean_t (*func)(void *, const char *)) +{ + secobj_db_state_t state; + secobj_name_t *snp = NULL, *fsnp; + dladm_status_t status; + boolean_t cont = B_TRUE; + + state.ss_op = process_secobj_walk; + state.ss_info.si_name = NULL; + state.ss_info.si_classp = NULL; + state.ss_info.si_val = NULL; + state.ss_info.si_lenp = NULL; + state.ss_namelist = &snp; + + status = SECOBJ_RW_DB(&state, B_FALSE); + if (status != DLADM_STATUS_OK) + return (status); + + while (snp != NULL) { + fsnp = snp; + snp = snp->sn_next; + if (cont) + cont = func(arg, fsnp->sn_name); + free(fsnp->sn_name); + free(fsnp); + } + return (status); +} + +dladm_status_t +dladm_init_secobj(void) +{ + secobj_db_state_t state; + + state.ss_op = process_secobj_init; + state.ss_info.si_name = NULL; + state.ss_info.si_classp = NULL; + state.ss_info.si_val = NULL; + state.ss_info.si_lenp = NULL; + state.ss_namelist = NULL; + + return (SECOBJ_RW_DB(&state, B_FALSE)); +} diff --git a/usr/src/lib/liblaadm/common/liblaadm.c b/usr/src/lib/liblaadm/common/liblaadm.c index 0beeee27da..3b23a5999d 100644 --- a/usr/src/lib/liblaadm/common/liblaadm.c +++ b/usr/src/lib/liblaadm/common/liblaadm.c @@ -52,31 +52,31 @@ * <db-file> ::= <groups>* * <group> ::= <key> <sep> <policy> <sep> <nports> <sep> <ports> <sep> * <mac> <sep> <lacp-mode> <sep> <lacp-timer> - * <sep> ::= ' ' | '\t' - * <key> ::= <number> + * <sep> ::= ' ' | '\t' + * <key> ::= <number> * <nports> ::= <number> * <ports> ::= <port> <m-port>* * <m-port> ::= ',' <port> - * <port> ::= <devname> + * <port> ::= <devname> * <devname> ::= <string> * <port-num> ::= <number> * <policy> ::= <pol-level> <m-pol>* * <m-pol> ::= ',' <pol-level> * <pol-level> ::= 'L2' | 'L3' | 'L4' - * <mac> ::= 'auto' | <mac-addr> + * <mac> ::= 'auto' | <mac-addr> * <mac-addr> ::= <hex> ':' <hex> ':' <hex> ':' <hex> ':' <hex> ':' <hex> * <lacp-mode> ::= 'off' | 'active' | 'passive' * <lacp-timer> ::= 'short' | 'long' */ #define LAADM_DEV "/devices/pseudo/aggr@0:" AGGR_DEVNAME_CTL -#define LAADM_DB "/etc/aggregation.conf" -#define LAADM_DB_TMP "/etc/aggregation.conf.new" +#define LAADM_DB "/etc/dladm/aggregation.conf" +#define LAADM_DB_TMP "/etc/dladm/aggregation.conf.new" #define LAADM_DB_LOCK "/tmp/aggregation.conf.lock" #define LAADM_DB_PERMS S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH -#define LAADM_DB_OWNER 0 -#define LAADM_DB_GROUP 1 +#define LAADM_DB_OWNER 15 /* "dladm" UID */ +#define LAADM_DB_GROUP 3 /* "sys" GID */ /* * The largest configurable aggregation key. Because by default the key is @@ -866,11 +866,13 @@ i_laadm_walk_rw_db(int (*fn)(void *, laadm_grp_attr_db_t *), attr.lt_ports = NULL; } - if (fchmod(nfd, LAADM_DB_PERMS) == -1) - goto failed; + if (getuid() == 0 || geteuid() == 0) { + if (fchmod(nfd, LAADM_DB_PERMS) == -1) + goto failed; - if (fchown(nfd, LAADM_DB_OWNER, LAADM_DB_GROUP) == -1) - goto failed; + if (fchown(nfd, LAADM_DB_OWNER, LAADM_DB_GROUP) == -1) + goto failed; + } if (fflush(nfp) == EOF) goto failed; diff --git a/usr/src/lib/libsecdb/auth_attr.txt b/usr/src/lib/libsecdb/auth_attr.txt index 085d3eb463..fd6d0219ce 100644 --- a/usr/src/lib/libsecdb/auth_attr.txt +++ b/usr/src/lib/libsecdb/auth_attr.txt @@ -62,6 +62,7 @@ solaris.mail.:::Mail::help=MailHeader.html solaris.mail.mailq:::Mail Queue::help=MailQueue.html # solaris.network.:::Network::help=NetworkHeader.html +solaris.network.link.security:::Link Security::help=LinkSecurity.html solaris.network.wifi.config:::Wifi Config::help=WifiConfig.html solaris.network.wifi.wep:::Wifi Wep::help=WifiWep.html # diff --git a/usr/src/lib/libsecdb/exec_attr.txt b/usr/src/lib/libsecdb/exec_attr.txt index a1165b85d9..8a037f4bd8 100644 --- a/usr/src/lib/libsecdb/exec_attr.txt +++ b/usr/src/lib/libsecdb/exec_attr.txt @@ -178,7 +178,8 @@ Network Management:solaris:cmd:::/sbin/ifconfig:uid=0 Network Management:solaris:cmd:::/sbin/route:privs=sys_net_config Network Management:solaris:cmd:::/sbin/routeadm:euid=0;\ privs=proc_chroot,proc_owner,sys_net_config -Network Management:solaris:cmd:::/sbin/dladm:privs=sys_net_config +Network Management:solaris:cmd:::/sbin/dladm:euid=dladm;egid=sys;\ + privs=sys_net_config,net_rawaccess Network Management:suser:cmd:::/usr/bin/netstat:uid=0 Network Management:suser:cmd:::/usr/bin/rup:euid=0 Network Management:suser:cmd:::/usr/bin/ruptime:euid=0 @@ -191,6 +192,8 @@ Network Management:suser:cmd:::/usr/sbin/rndc:privs=file_dac_read Network Management:suser:cmd:::/usr/sbin/route:uid=0 Network Management:suser:cmd:::/usr/sbin/snoop:uid=0 Network Management:suser:cmd:::/usr/sbin/spray:euid=0 +Network Link Security:solaris:cmd:::/sbin/dladm:euid=dladm;egid=sys;\ + privs=sys_net_config,net_rawaccess Network Security:solaris:cmd:::/usr/lib/inet/certdb:privs=sys_net_config Network Security:solaris:cmd:::/usr/lib/inet/certlocal:privs=sys_net_config Network Security:solaris:cmd:::/usr/lib/inet/certrldb:privs=sys_net_config diff --git a/usr/src/lib/libsecdb/help/auths/LinkSecurity.html b/usr/src/lib/libsecdb/help/auths/LinkSecurity.html new file mode 100644 index 0000000000..161a38d799 --- /dev/null +++ b/usr/src/lib/libsecdb/help/auths/LinkSecurity.html @@ -0,0 +1,45 @@ +<HTML> + +<!-- + Copyright 2006 Sun Microsystems, Inc. All rights reserved. + Use is subject to license terms. + + CDDL HEADER START + + The contents of this file are subject to the terms of the + Common Development and Distribution License (the "License"). + You may not use this file except in compliance with the License. + + You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + or http://www.opensolaris.org/os/licensing. + See the License for the specific language governing permissions + and limitations under the License. + + When distributing Covered Code, include this CDDL HEADER in each + file and include the License file at usr/src/OPENSOLARIS.LICENSE. + If applicable, add the following below this CDDL HEADER, with the + fields enclosed by brackets "[]" replaced with your own identifying + information: Portions Copyright [yyyy] [name of copyright owner] + + CDDL HEADER END +--> +<!-- SCCS keyword +#pragma ident "%Z%%M% %I% %E% SMI" +--> + +<HEAD> +<!-- +META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1" +--> +<!-- +META NAME="GENERATOR" CONTENT="Mozilla/4.02 [en] (X11; U; SunOS 5.6 sun4u) [Netscape]" +--> +</HEAD> +<BODY> +When Link Security is in the Authorizations Included column, it grants the authorization +to create or remove secure objects using dladm. +<p> +If Link Security is grayed, then you are not entitled to Add or Remove this authorization. +<BR> +</BODY> +</HTML> diff --git a/usr/src/lib/libsecdb/help/auths/Makefile b/usr/src/lib/libsecdb/help/auths/Makefile index 70e85c8426..3f063bc0d3 100644 --- a/usr/src/lib/libsecdb/help/auths/Makefile +++ b/usr/src/lib/libsecdb/help/auths/Makefile @@ -84,7 +84,8 @@ HTMLENTS = \ SmfValueRouting.html \ NetworkHeader.html \ WifiConfig.html \ - WifiWep.html + WifiWep.html \ + LinkSecurity.html HELPDIR=$(ROOT)/usr/lib/help AUTHDIR=$(HELPDIR)/auths diff --git a/usr/src/lib/libsecdb/help/profiles/Makefile b/usr/src/lib/libsecdb/help/profiles/Makefile index 2b1313a4af..fb9b645a7b 100644 --- a/usr/src/lib/libsecdb/help/profiles/Makefile +++ b/usr/src/lib/libsecdb/help/profiles/Makefile @@ -2,9 +2,8 @@ # CDDL HEADER START # # The contents of this file are subject to the terms of the -# Common Development and Distribution License, Version 1.0 only -# (the "License"). You may not use this file except in compliance -# with the License. +# Common Development and Distribution License (the "License"). +# You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. @@ -19,7 +18,7 @@ # # CDDL HEADER END # -# Copyright 2005 Sun Microsystems, Inc. All rights reserved. +# Copyright 2006 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # #ident "%Z%%M% %I% %E% SMI" @@ -56,6 +55,7 @@ HTMLENTS = \ RtNetSecure.html \ RtNetWifiMngmnt.html \ RtNetWifiSecure.html \ + RtNetLinkSecure.html \ RtObAccessMngmnt.html \ RtPrntAdmin.html \ RtProcManagement.html \ diff --git a/usr/src/lib/libsecdb/help/profiles/RtNetLinkSecure.html b/usr/src/lib/libsecdb/help/profiles/RtNetLinkSecure.html new file mode 100644 index 0000000000..7fcad1df97 --- /dev/null +++ b/usr/src/lib/libsecdb/help/profiles/RtNetLinkSecure.html @@ -0,0 +1,39 @@ +<HTML> +<!-- + CDDL HEADER START + + The contents of this file are subject to the terms of the + Common Development and Distribution License (the "License"). + You may not use this file except in compliance with the License. + + You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + or http://www.opensolaris.org/os/licensing. + See the License for the specific language governing permissions + and limitations under the License. + + When distributing Covered Code, include this CDDL HEADER in each + file and include the License file at usr/src/OPENSOLARIS.LICENSE. + If applicable, add the following below this CDDL HEADER, with the + fields enclosed by brackets "[]" replaced with your own identifying + information: Portions Copyright [yyyy] [name of copyright owner] + + CDDL HEADER END + +-- Copyright 2006 Sun Microsystems, Inc. All rights reserved. +-- Use is subject to license terms. +--> +<HEAD> + <TITLE> </TITLE> + + +</HEAD> +<BODY> +<!-- ident "%Z%%M% %I% %E% SMI" --> + +When Network Link Security is in the Rights Included column, it grants the right to +manage network link security. +<p> +If Network Link Security is grayed, then you are not entitled to Add or Remove this right. +<p> +</BODY> +</HTML> diff --git a/usr/src/lib/libsecdb/prof_attr.txt b/usr/src/lib/libsecdb/prof_attr.txt index 70016e8cd2..6901a2b673 100644 --- a/usr/src/lib/libsecdb/prof_attr.txt +++ b/usr/src/lib/libsecdb/prof_attr.txt @@ -50,9 +50,10 @@ Maintenance and Repair:::Maintain and repair a system:auths=solaris.smf.manage.s Media Backup:::Backup files and file systems:help=RtMediaBkup.html Media Restore:::Restore files and file systems from backups:help=RtMediaRestore.html Network Management:::Manage the host and network configuration:auths=solaris.smf.manage.name-service-cache,solaris.smf.manage.bind,solaris.smf.value.routing,solaris.smf.manage.routing;profiles=Network Wifi Management;help=RtNetMngmnt.html -Network Security:::Manage network and host security:auths=solaris.smf.manage.ssh;profiles=Network Wifi Security;help=RtNetSecure.html +Network Security:::Manage network and host security:auths=solaris.smf.manage.ssh;profiles=Network Wifi Security,Network Link Security;help=RtNetSecure.html Network Wifi Management:::Manage wifi network configuration:auths=solaris.network.wifi.config;help=RtNetWifiMngmnt.html Network Wifi Security:::Manage wifi network security:auths=solaris.network.wifi.wep;help=RtNetWifiSecure.html +Network Link Security:::Manage network link security:auths=solaris.network.link.security;help=RtNetLinkSecure.html Name Service Management:::Non-security name service scripts/commands:help=RtNameServiceAdmin.html Name Service Security:::Security related name service scripts/commands:help=RtNameServiceSecure.html Object Access Management:::Change ownership and permission on files:help=RtObAccessMngmnt.html diff --git a/usr/src/lib/libwladm/Makefile b/usr/src/lib/libwladm/Makefile new file mode 100644 index 0000000000..f537457d54 --- /dev/null +++ b/usr/src/lib/libwladm/Makefile @@ -0,0 +1,62 @@ +# +# CDDL HEADER START +# +# The contents of this file are subject to the terms of the +# Common Development and Distribution License (the "License"). +# You may not use this file except in compliance with the License. +# +# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE +# or http://www.opensolaris.org/os/licensing. +# See the License for the specific language governing permissions +# and limitations under the License. +# +# When distributing Covered Code, include this CDDL HEADER in each +# file and include the License file at usr/src/OPENSOLARIS.LICENSE. +# If applicable, add the following below this CDDL HEADER, with the +# fields enclosed by brackets "[]" replaced with your own identifying +# information: Portions Copyright [yyyy] [name of copyright owner] +# +# CDDL HEADER END +# +# +# Copyright 2006 Sun Microsystems, Inc. All rights reserved. +# Use is subject to license terms. +# +# ident "%Z%%M% %I% %E% SMI" +# + +include $(SRC)/lib/Makefile.lib + +HDRS = libwladm.h libwladm_impl.h +HDRDIR = common + +SUBDIRS = $(MACH) + +POFILE = libwladm.po +MSGFILES = common/libwladm.c + +all := TARGET = all +clean := TARGET = clean +clobber := TARGET = clobber +install := TARGET = install +lint := TARGET = lint + +.KEEP_STATE: + +all clean clobber install lint: $(SUBDIRS) + +install_h: $(ROOTHDRS) + +check: $(CHECKHDRS) + +$(POFILE): pofile_MSGFILES + +_msg: $(MSGDOMAINPOFILE) + +$(SUBDIRS): FRC + @cd $@; pwd; $(MAKE) $(TARGET) + +FRC: + +include $(SRC)/Makefile.msg.targ +include $(SRC)/lib/Makefile.targ diff --git a/usr/src/lib/libwladm/Makefile.com b/usr/src/lib/libwladm/Makefile.com new file mode 100644 index 0000000000..1f8c9760df --- /dev/null +++ b/usr/src/lib/libwladm/Makefile.com @@ -0,0 +1,51 @@ +# +# CDDL HEADER START +# +# The contents of this file are subject to the terms of the +# Common Development and Distribution License (the "License"). +# You may not use this file except in compliance with the License. +# +# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE +# or http://www.opensolaris.org/os/licensing. +# See the License for the specific language governing permissions +# and limitations under the License. +# +# When distributing Covered Code, include this CDDL HEADER in each +# file and include the License file at usr/src/OPENSOLARIS.LICENSE. +# If applicable, add the following below this CDDL HEADER, with the +# fields enclosed by brackets "[]" replaced with your own identifying +# information: Portions Copyright [yyyy] [name of copyright owner] +# +# CDDL HEADER END +# +# +# Copyright 2006 Sun Microsystems, Inc. All rights reserved. +# Use is subject to license terms. +# +# ident "%Z%%M% %I% %E% SMI" +# + +LIBRARY = libwladm.a +VERS = .1 +OBJECTS = libwladm.o + +include ../../Makefile.lib +# install this library in the root filesystem +include ../../Makefile.rootfs + +LIBS = $(DYNLIB) $(LINTLIB) +LDLIBS += -ldevinfo -lsocket -lc + +SRCDIR = ../common +$(LINTLIB) := SRCS = $(SRCDIR)/$(LINTSRC) + +CFLAGS += $(CCVERBOSE) +CPPFLAGS += -I$(SRCDIR) -D_REENTRANT + +.KEEP_STATE: + +all: $(LIBS) + +lint: lintcheck + +include $(SRC)/lib/Makefile.targ diff --git a/usr/src/lib/libwladm/common/libwladm.c b/usr/src/lib/libwladm/common/libwladm.c new file mode 100644 index 0000000000..4c3c8e918b --- /dev/null +++ b/usr/src/lib/libwladm/common/libwladm.c @@ -0,0 +1,1957 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +#include <stdio.h> +#include <stdlib.h> +#include <stddef.h> +#include <unistd.h> +#include <fcntl.h> +#include <string.h> +#include <stropts.h> +#include <libdevinfo.h> +#include <net/if.h> +#include <net/if_dl.h> +#include <net/if_types.h> +#include <libwladm.h> +#include <libwladm_impl.h> +#include <inet/wifi_ioctl.h> + +typedef struct val_desc { + char *vd_name; + uint_t vd_val; +} val_desc_t; + +struct prop_desc; + +typedef wladm_status_t pd_getf_t(int, wldp_t *, char **, uint_t *); +typedef wladm_status_t pd_setf_t(int, wldp_t *, val_desc_t *, uint_t); +typedef wladm_status_t pd_checkf_t(int, wldp_t *, struct prop_desc *, char **, + uint_t, val_desc_t **); +typedef struct prop_desc { + char *pd_name; + val_desc_t pd_defval; + val_desc_t *pd_modval; + uint_t pd_nmodval; + pd_setf_t *pd_set; + pd_getf_t *pd_getmod; + pd_getf_t *pd_get; + pd_checkf_t *pd_check; +} prop_desc_t; + +static int do_get_bsstype(int, wldp_t *); +static int do_get_essid(int, wldp_t *); +static int do_get_bssid(int, wldp_t *); +static int do_get_signal(int, wldp_t *); +static int do_get_encryption(int, wldp_t *); +static int do_get_authmode(int, wldp_t *); +static int do_get_linkstatus(int, wldp_t *); +static int do_get_esslist(int, wldp_t *); +static int do_get_rate(int, wldp_t *); +static int do_get_phyconf(int, wldp_t *); +static int do_get_powermode(int, wldp_t *); +static int do_get_radio(int, wldp_t *); +static int do_get_mode(int, wldp_t *); + +static int do_set_bsstype(int, wldp_t *, wladm_bsstype_t *); +static int do_set_authmode(int, wldp_t *, wladm_auth_t *); +static int do_set_encryption(int, wldp_t *, wladm_secmode_t *); +static int do_set_essid(int, wldp_t *, wladm_essid_t *); +static int do_set_createibss(int, wldp_t *, boolean_t *); +static int do_set_wepkey(int, wldp_t *, wladm_wep_key_t *, uint_t); +static int do_set_rate(int, wldp_t *, wladm_rates_t *); +static int do_set_powermode(int, wldp_t *, wladm_powermode_t *); +static int do_set_radio(int, wldp_t *, wladm_radio_t *); +static int do_set_channel(int, wldp_t *, wladm_channel_t *); + +static int open_link(const char *); +static int do_scan(int, wldp_t *); +static int do_disconnect(int, wldp_t *); +static boolean_t find_val_by_name(const char *, val_desc_t *, uint_t, uint_t *); +static boolean_t find_name_by_val(uint_t, val_desc_t *, uint_t, char **); +static void generate_essid(wladm_essid_t *); + +static wladm_status_t wladm_wlresult2status(wldp_t *); + +static pd_getf_t do_get_rate_mod, do_get_rate_prop, do_get_channel_prop, + do_get_powermode_prop, do_get_radio_prop; +static pd_setf_t do_set_rate_prop, do_set_powermode_prop, + do_set_radio_prop; +static pd_checkf_t do_check_prop, do_check_rate; + +static val_desc_t status_vals[] = { + { "ok", WLADM_STATUS_OK }, + { "invalid argument", WLADM_STATUS_BADARG }, + { "operation failed", WLADM_STATUS_FAILED }, + { "operation not supported", WLADM_STATUS_NOTSUP }, + { "already connected", WLADM_STATUS_ISCONN }, + { "not connected", WLADM_STATUS_NOTCONN }, + { "not found", WLADM_STATUS_NOTFOUND }, + { "value not found", WLADM_STATUS_BADVAL }, + { "invalid link", WLADM_STATUS_LINKINVAL }, + { "insufficient memory", WLADM_STATUS_NOMEM }, + { "operation timed out", WLADM_STATUS_TIMEDOUT }, + { "read-only property", WLADM_STATUS_PROPRDONLY }, + { "not enough space", WLADM_STATUS_TOOSMALL }, + { "invalid number of values", WLADM_STATUS_BADVALCNT } +}; + +static val_desc_t linkstatus_vals[] = { + { "disconnected", WLADM_LINK_STATUS_DISCONNECTED }, + { "connected", WLADM_LINK_STATUS_CONNECTED } +}; + +static val_desc_t secmode_vals[] = { + { "none", WLADM_SECMODE_NONE }, + { "wep", WLADM_SECMODE_WEP } +}; + +static val_desc_t strength_vals[] = { + { "very weak", WLADM_STRENGTH_VERY_WEAK }, + { "weak", WLADM_STRENGTH_WEAK }, + { "good", WLADM_STRENGTH_GOOD }, + { "very good", WLADM_STRENGTH_VERY_GOOD }, + { "excellent", WLADM_STRENGTH_EXCELLENT } +}; + +static val_desc_t mode_vals[] = { + { "a", WLADM_MODE_80211A }, + { "b", WLADM_MODE_80211B }, + { "g", WLADM_MODE_80211G }, +}; + +static val_desc_t auth_vals[] = { + { "open", WLADM_AUTH_OPEN }, + { "shared", WLADM_AUTH_SHARED } +}; + +static val_desc_t bsstype_vals[] = { + { "bss", WLADM_BSSTYPE_BSS }, + { "ibss", WLADM_BSSTYPE_IBSS }, + { "any", WLADM_BSSTYPE_ANY } +}; + +static val_desc_t radio_vals[] = { + { "on", WLADM_RADIO_ON }, + { "off", WLADM_RADIO_OFF } +}; + +static val_desc_t powermode_vals[] = { + { "off", WLADM_PM_OFF }, + { "fast", WLADM_PM_FAST }, + { "max", WLADM_PM_MAX } +}; + +#define VALCNT(vals) (sizeof ((vals)) / sizeof (val_desc_t)) +static prop_desc_t prop_table[] = { + + { "channel", { NULL, 0 }, NULL, 0, + NULL, NULL, do_get_channel_prop, do_check_prop}, + + { "powermode", { "off", WLADM_PM_OFF }, powermode_vals, + VALCNT(powermode_vals), + do_set_powermode_prop, NULL, + do_get_powermode_prop, do_check_prop}, + + { "radio", { "on", WLADM_RADIO_ON }, radio_vals, + VALCNT(radio_vals), + do_set_radio_prop, NULL, + do_get_radio_prop, do_check_prop}, + + { "speed", { "", 0 }, NULL, 0, + do_set_rate_prop, do_get_rate_mod, + do_get_rate_prop, do_check_rate} +}; +/* + * Unfortunately, MAX_SCAN_SUPPORT_RATES is too small to allow all + * rates to be retrieved. However, we cannot increase it at this + * time because it will break binary comatibility with unbundled + * WiFi drivers and utilities. So for now we define an additional + * constant, MAX_SUPPORT_RATES, to allow all rates to be retrieved. + */ +#define MAX_SUPPORT_RATES 64 +#define WLADM_MAX_PROPS (sizeof (prop_table) / sizeof (prop_desc_t)) +#define IS_CONNECTED(gbuf) \ + ((*(wl_linkstatus_t *)((gbuf)->wldp_buf) == WL_CONNECTED)) + +static wladm_status_t +wladm_wlresult2status(wldp_t *gbuf) +{ + switch (gbuf->wldp_result) { + case WL_SUCCESS: + return (WLADM_STATUS_OK); + + case WL_NOTSUPPORTED: + case WL_LACK_FEATURE: + return (WLADM_STATUS_NOTSUP); + + case WL_READONLY: + return (WLADM_STATUS_PROPRDONLY); + + default: + break; + } + + return (WLADM_STATUS_FAILED); +} + +static int +open_link(const char *link) +{ + char linkname[MAXPATHLEN]; + wldp_t *gbuf; + int fd; + + if (link == NULL) + return (-1); + + (void) snprintf(linkname, MAXPATHLEN, "/dev/%s", link); + if ((fd = open(linkname, O_RDWR)) < 0) + return (-1); + + if ((gbuf = malloc(MAX_BUF_LEN)) == NULL) { + (void) close(fd); + return (-1); + } + + /* + * Check to see if the link is wireless. + */ + if (do_get_bsstype(fd, gbuf) < 0) { + free(gbuf); + (void) close(fd); + return (-1); + } + + free(gbuf); + return (fd); +} + +static wladm_mode_t +do_convert_mode(wl_phy_conf_t *phyp) +{ + switch (phyp->wl_phy_fhss_conf.wl_fhss_subtype) { + case WL_ERP: + return (WLADM_MODE_80211G); + case WL_OFDM: + return (WLADM_MODE_80211A); + case WL_DSSS: + case WL_FHSS: + return (WLADM_MODE_80211B); + default: + break; + } + + return (WLADM_MODE_NONE); +} + +static boolean_t +do_convert_chan(wl_phy_conf_t *phyp, uint32_t *channelp) +{ + wl_fhss_t *wlfp = &phyp->wl_phy_fhss_conf; + wl_ofdm_t *wlop = &phyp->wl_phy_ofdm_conf; + + switch (wlfp->wl_fhss_subtype) { + case WL_FHSS: + case WL_DSSS: + case WL_IRBASE: + case WL_HRDS: + case WL_ERP: + *channelp = wlfp->wl_fhss_channel; + break; + case WL_OFDM: + *channelp = WLADM_OFDM2CHAN(wlop->wl_ofdm_frequency); + break; + default: + return (B_FALSE); + } + return (B_TRUE); +} + +#define IEEE80211_RATE 0x7f +static void +fill_wlan_attr(wl_ess_conf_t *wlp, wladm_wlan_attr_t *attrp) +{ + int i; + + (void) memset(attrp, 0, sizeof (*attrp)); + + (void) snprintf(attrp->wa_essid.we_bytes, WLADM_MAX_ESSID_LEN, "%s", + wlp->wl_ess_conf_essid.wl_essid_essid); + attrp->wa_valid |= WLADM_WLAN_ATTR_ESSID; + + (void) memcpy(attrp->wa_bssid.wb_bytes, wlp->wl_ess_conf_bssid, + WLADM_BSSID_LEN); + attrp->wa_valid |= WLADM_WLAN_ATTR_BSSID; + + attrp->wa_secmode = (wlp->wl_ess_conf_wepenabled == + WL_ENC_WEP ? WLADM_SECMODE_WEP : WLADM_SECMODE_NONE); + attrp->wa_valid |= WLADM_WLAN_ATTR_SECMODE; + + attrp->wa_bsstype = (wlp->wl_ess_conf_bsstype == WL_BSS_BSS ? + WLADM_BSSTYPE_BSS : WLADM_BSSTYPE_IBSS); + attrp->wa_valid |= WLADM_WLAN_ATTR_BSSTYPE; + + attrp->wa_auth = (wlp->wl_ess_conf_authmode == 0 ? + WLADM_AUTH_OPEN : WLADM_AUTH_SHARED); + attrp->wa_valid |= WLADM_WLAN_ATTR_AUTH; + + attrp->wa_strength = WLADM_SIGNAL2STRENGTH(wlp->wl_ess_conf_sl); + attrp->wa_valid |= WLADM_WLAN_ATTR_STRENGTH; + + attrp->wa_mode = do_convert_mode((wl_phy_conf_t *)&wlp->wl_phy_conf); + attrp->wa_valid |= WLADM_WLAN_ATTR_MODE; + + for (i = 0; i < MAX_SCAN_SUPPORT_RATES; i++) { + wlp->wl_supported_rates[i] &= IEEE80211_RATE; + if (wlp->wl_supported_rates[i] > attrp->wa_speed) + attrp->wa_speed = wlp->wl_supported_rates[i]; + } + if (attrp->wa_speed > 0) + attrp->wa_valid |= WLADM_WLAN_ATTR_SPEED; + + if (do_convert_chan((wl_phy_conf_t *)&wlp->wl_phy_conf, + &attrp->wa_channel)) + attrp->wa_valid |= WLADM_WLAN_ATTR_CHANNEL; +} + +wladm_status_t +wladm_scan(const char *link, void *arg, + boolean_t (*func)(void *, wladm_wlan_attr_t *)) +{ + int fd, i; + uint32_t count; + wl_ess_conf_t *wlp; + wldp_t *gbuf; + wladm_wlan_attr_t wlattr; + wladm_status_t status; + boolean_t connected; + + if ((fd = open_link(link)) < 0) + return (WLADM_STATUS_LINKINVAL); + + if ((gbuf = malloc(MAX_BUF_LEN)) == NULL) { + status = WLADM_STATUS_NOMEM; + goto done; + } + + if (do_get_linkstatus(fd, gbuf) < 0) { + status = WLADM_STATUS_FAILED; + goto done; + } + connected = IS_CONNECTED(gbuf); + + if (do_scan(fd, gbuf) < 0) { + status = WLADM_STATUS_FAILED; + goto done; + } + + if (do_get_esslist(fd, gbuf) < 0) { + status = WLADM_STATUS_FAILED; + goto done; + } + + wlp = ((wl_ess_list_t *)gbuf->wldp_buf)->wl_ess_list_ess; + count = ((wl_ess_list_t *)(gbuf->wldp_buf))->wl_ess_list_num; + + for (i = 0; i < count; i++, wlp++) { + fill_wlan_attr(wlp, &wlattr); + if (!func(arg, &wlattr)) + break; + } + + if (!connected) { + if (do_get_linkstatus(fd, gbuf) < 0) { + status = WLADM_STATUS_FAILED; + goto done; + } + if (IS_CONNECTED(gbuf)) + (void) do_disconnect(fd, gbuf); + } + + status = WLADM_STATUS_OK; +done: + free(gbuf); + (void) close(fd); + return (status); +} + +/* + * Structures used in building the list of eligible WLANs to connect to. + * Specifically, `connect_state' has the WLAN attributes that must be matched + * (in `cs_attr') and a growing list of WLANs that matched those attributes + * chained through `cs_list'. Each element in the list is of type `attr_node' + * and has the matching WLAN's attributes and a pointer to the next element. + * For convenience, `cs_count' tracks the number of elements in the list. + */ +typedef struct attr_node { + wladm_wlan_attr_t an_attr; + struct attr_node *an_next; +} attr_node_t; + +typedef struct connect_state { + wladm_wlan_attr_t *cs_attr; + uint_t cs_count; + attr_node_t *cs_list; +} connect_state_t; + +/* + * Compare two sets of WLAN attributes. For now, we only consider strength + * and speed (in that order), which matches the documented default policy for + * wladm_connect(). + */ +static int +attr_compare(const void *p1, const void *p2) +{ + wladm_wlan_attr_t *attrp1, *attrp2; + + attrp1 = (*(wladm_wlan_attr_t **)p1); + attrp2 = (*(wladm_wlan_attr_t **)p2); + + if (attrp1->wa_strength < attrp2->wa_strength) + return (1); + + if (attrp1->wa_strength > attrp2->wa_strength) + return (-1); + + return (attrp2->wa_speed - attrp1->wa_speed); +} + +/* + * Callback function used by wladm_connect() to filter out unwanted WLANs when + * scanning for available WLANs. Always returns B_TRUE to continue the scan. + */ +static boolean_t +connect_cb(void *arg, wladm_wlan_attr_t *attrp) +{ + attr_node_t *nodep; + wladm_wlan_attr_t *fattrp; + connect_state_t *statep = (connect_state_t *)arg; + + fattrp = statep->cs_attr; + if (fattrp == NULL) + goto append; + + if ((fattrp->wa_valid & attrp->wa_valid) != fattrp->wa_valid) + return (B_TRUE); + + if ((fattrp->wa_valid & WLADM_WLAN_ATTR_ESSID) != 0 && + strncmp(fattrp->wa_essid.we_bytes, attrp->wa_essid.we_bytes, + WLADM_MAX_ESSID_LEN) != 0) + return (B_TRUE); + + if ((fattrp->wa_valid & WLADM_WLAN_ATTR_SECMODE) != 0 && + fattrp->wa_secmode != attrp->wa_secmode) + return (B_TRUE); + + if ((fattrp->wa_valid & WLADM_WLAN_ATTR_MODE) != 0 && + fattrp->wa_mode != attrp->wa_mode) + return (B_TRUE); + + if ((fattrp->wa_valid & WLADM_WLAN_ATTR_STRENGTH) != 0 && + fattrp->wa_strength != attrp->wa_strength) + return (B_TRUE); + + if ((fattrp->wa_valid & WLADM_WLAN_ATTR_SPEED) != 0 && + fattrp->wa_speed != attrp->wa_speed) + return (B_TRUE); + + if ((fattrp->wa_valid & WLADM_WLAN_ATTR_AUTH) != 0) { + attrp->wa_auth = fattrp->wa_auth; + attrp->wa_valid |= WLADM_WLAN_ATTR_AUTH; + } + + if ((fattrp->wa_valid & WLADM_WLAN_ATTR_BSSTYPE) != 0 && + fattrp->wa_bsstype != attrp->wa_bsstype) + return (B_TRUE); + + if ((fattrp->wa_valid & WLADM_WLAN_ATTR_BSSID) != 0 && + memcmp(fattrp->wa_bssid.wb_bytes, attrp->wa_bssid.wb_bytes, + WLADM_BSSID_LEN) != 0) + return (B_TRUE); +append: + nodep = malloc(sizeof (attr_node_t)); + if (nodep == NULL) + return (B_TRUE); + + (void) memcpy(&nodep->an_attr, attrp, sizeof (wladm_wlan_attr_t)); + nodep->an_next = statep->cs_list; + statep->cs_list = nodep; + statep->cs_count++; + + return (B_TRUE); +} + +static wladm_status_t +do_connect(int fd, wldp_t *gbuf, wladm_wlan_attr_t *attrp, + boolean_t create_ibss, void *keys, uint_t key_count, int timeout) +{ + wladm_secmode_t secmode; + wladm_auth_t authmode; + wladm_bsstype_t bsstype; + wladm_essid_t essid; + boolean_t essid_valid = B_FALSE; + wladm_status_t status = WLADM_STATUS_FAILED; + wladm_channel_t channel; + hrtime_t start; + struct timespec ts; + + if ((attrp->wa_valid & WLADM_WLAN_ATTR_CHANNEL) != 0) { + channel = attrp->wa_channel; + if (do_set_channel(fd, gbuf, &channel) < 0) + goto done; + } + + secmode = ((attrp->wa_valid & WLADM_WLAN_ATTR_SECMODE) != 0) ? + attrp->wa_secmode : WLADM_SECMODE_NONE; + + if (do_set_encryption(fd, gbuf, &secmode) < 0) + goto done; + + authmode = ((attrp->wa_valid & WLADM_WLAN_ATTR_AUTH) != 0) ? + attrp->wa_auth : WLADM_AUTH_OPEN; + + if (do_set_authmode(fd, gbuf, &authmode) < 0) + goto done; + + bsstype = ((attrp->wa_valid & WLADM_WLAN_ATTR_BSSTYPE) != 0) ? + attrp->wa_bsstype : WLADM_BSSTYPE_BSS; + + if (do_set_bsstype(fd, gbuf, &bsstype) < 0) + goto done; + + if (secmode == WLADM_SECMODE_WEP && + (keys == NULL || key_count == 0 || key_count > MAX_NWEPKEYS || + do_set_wepkey(fd, gbuf, keys, key_count) < 0)) + goto done; + + if (create_ibss) { + if (do_set_channel(fd, gbuf, &channel) < 0) + goto done; + + if (do_set_createibss(fd, gbuf, &create_ibss) < 0) + goto done; + + if ((attrp->wa_valid & WLADM_WLAN_ATTR_ESSID) == 0) { + generate_essid(&essid); + essid_valid = B_TRUE; + } + } + + if ((attrp->wa_valid & WLADM_WLAN_ATTR_ESSID) != 0) { + essid = attrp->wa_essid; + essid_valid = B_TRUE; + } + + if (!essid_valid || do_set_essid(fd, gbuf, &essid) < 0) + goto done; + + ts.tv_sec = 0; + ts.tv_nsec = WLADM_CONNECT_POLLRATE; + start = gethrtime(); + for (;;) { + if (do_get_linkstatus(fd, gbuf) < 0) { + status = WLADM_STATUS_FAILED; + goto done; + } + + if (IS_CONNECTED(gbuf)) + break; + + (void) nanosleep(&ts, NULL); + if ((timeout >= 0) && (gethrtime() - start) / + NANOSEC >= timeout) { + status = WLADM_STATUS_TIMEDOUT; + goto done; + } + } + status = WLADM_STATUS_OK; +done: + return (status); +} + +wladm_status_t +wladm_connect(const char *link, wladm_wlan_attr_t *attrp, + int timeout, void *keys, uint_t key_count, uint_t flags) +{ + int fd, i; + wldp_t *gbuf = NULL; + connect_state_t state = {0, NULL, NULL}; + attr_node_t *nodep = NULL; + boolean_t create_ibss, set_authmode; + wladm_wlan_attr_t **wl_list = NULL; + wladm_status_t status = WLADM_STATUS_FAILED; + + if ((fd = open_link(link)) < 0) + return (WLADM_STATUS_LINKINVAL); + + if ((gbuf = malloc(MAX_BUF_LEN)) == NULL) { + status = WLADM_STATUS_NOMEM; + goto done; + } + + if (do_get_linkstatus(fd, gbuf) < 0) { + status = WLADM_STATUS_FAILED; + goto done; + } + + if (IS_CONNECTED(gbuf)) { + status = WLADM_STATUS_ISCONN; + goto done; + } + + set_authmode = ((attrp != NULL) && + (attrp->wa_valid & WLADM_WLAN_ATTR_MODE) != 0); + create_ibss = ((flags & WLADM_OPT_CREATEIBSS) != 0 && + attrp != NULL && + (attrp->wa_valid & WLADM_WLAN_ATTR_BSSTYPE) != 0 && + attrp->wa_bsstype == WLADM_BSSTYPE_IBSS); + + if ((flags & WLADM_OPT_NOSCAN) != 0 || + (create_ibss && attrp != NULL && + (attrp->wa_valid & WLADM_WLAN_ATTR_ESSID) == 0)) { + status = do_connect(fd, gbuf, attrp, + create_ibss, keys, key_count, timeout); + goto done; + } + + state.cs_attr = attrp; + state.cs_list = NULL; + state.cs_count = 0; + + status = wladm_scan(link, &state, connect_cb); + if (status != WLADM_STATUS_OK) + goto done; + + if (state.cs_count == 0) { + if (!create_ibss) { + status = WLADM_STATUS_NOTFOUND; + goto done; + } + status = do_connect(fd, gbuf, attrp, create_ibss, + keys, key_count, timeout); + goto done; + } + + wl_list = malloc(state.cs_count * sizeof (wladm_wlan_attr_t *)); + if (wl_list == NULL) { + status = WLADM_STATUS_NOMEM; + goto done; + } + + nodep = state.cs_list; + for (i = 0; i < state.cs_count; i++) { + wl_list[i] = &nodep->an_attr; + nodep = nodep->an_next; + } + qsort(wl_list, state.cs_count, sizeof (wladm_wlan_attr_t *), + attr_compare); + + for (i = 0; i < state.cs_count; i++) { + wladm_wlan_attr_t *ap = wl_list[i]; + + status = do_connect(fd, gbuf, ap, create_ibss, keys, + key_count, timeout); + if (status == WLADM_STATUS_OK) + break; + + if (!set_authmode) { + ap->wa_auth = WLADM_AUTH_SHARED; + ap->wa_valid |= WLADM_WLAN_ATTR_AUTH; + status = do_connect(fd, gbuf, ap, create_ibss, keys, + key_count, timeout); + if (status == WLADM_STATUS_OK) + break; + } + } +done: + if ((status != WLADM_STATUS_OK) && (status != WLADM_STATUS_ISCONN)) + (void) do_disconnect(fd, gbuf); + + while (state.cs_list != NULL) { + nodep = state.cs_list; + state.cs_list = nodep->an_next; + free(nodep); + } + free(gbuf); + free(wl_list); + (void) close(fd); + return (status); +} + +wladm_status_t +wladm_disconnect(const char *link) +{ + int fd; + wldp_t *gbuf; + wladm_status_t status; + + if ((fd = open_link(link)) < 0) + return (WLADM_STATUS_BADARG); + + if ((gbuf = malloc(MAX_BUF_LEN)) == NULL) { + status = WLADM_STATUS_NOMEM; + goto done; + } + + if (do_get_linkstatus(fd, gbuf) < 0) { + status = WLADM_STATUS_FAILED; + goto done; + } + + if (!IS_CONNECTED(gbuf)) { + status = WLADM_STATUS_NOTCONN; + goto done; + } + + if (do_disconnect(fd, gbuf) < 0) { + status = WLADM_STATUS_FAILED; + goto done; + } + + if (do_get_linkstatus(fd, gbuf) < 0) { + status = WLADM_STATUS_FAILED; + goto done; + } + + if (IS_CONNECTED(gbuf)) { + status = WLADM_STATUS_FAILED; + goto done; + } + + status = WLADM_STATUS_OK; +done: + free(gbuf); + (void) close(fd); + return (status); +} + +typedef struct wladm_linkname { + char wl_name[MAXNAMELEN]; + struct wladm_linkname *wl_next; +} wladm_linkname_t; + +typedef struct wladm_walk { + wladm_linkname_t *ww_list; + wladm_status_t ww_status; +} wladm_walk_t; + +/* ARGSUSED */ +static int +append_linkname(di_node_t node, di_minor_t minor, void *arg) +{ + wladm_walk_t *statep = arg; + wladm_linkname_t **lastp = &statep->ww_list; + wladm_linkname_t *wlp = *lastp; + char name[MAXNAMELEN]; + + (void) snprintf(name, MAXNAMELEN, "%s%d", + di_driver_name(node), di_instance(node)); + + while (wlp != NULL) { + if (strcmp(wlp->wl_name, name) == 0) + return (DI_WALK_CONTINUE); + + lastp = &wlp->wl_next; + wlp = wlp->wl_next; + } + if ((wlp = malloc(sizeof (*wlp))) == NULL) { + statep->ww_status = WLADM_STATUS_NOMEM; + return (DI_WALK_CONTINUE); + } + + (void) strlcpy(wlp->wl_name, name, MAXNAMELEN); + wlp->wl_next = NULL; + *lastp = wlp; + + return (DI_WALK_CONTINUE); +} + +wladm_status_t +wladm_walk(void *arg, boolean_t (*func)(void *, const char *)) +{ + di_node_t root; + wladm_walk_t state; + wladm_linkname_t *wlp, *wlp_next; + boolean_t cont = B_TRUE; + + if ((root = di_init("/", DINFOCACHE)) == DI_NODE_NIL) + return (WLADM_STATUS_FAILED); + + state.ww_list = NULL; + state.ww_status = WLADM_STATUS_OK; + (void) di_walk_minor(root, DDI_NT_NET_WIFI, DI_CHECK_ALIAS, + &state, append_linkname); + di_fini(root); + + for (wlp = state.ww_list; wlp != NULL; wlp = wlp_next) { + /* + * NOTE: even if (*func)() returns B_FALSE, the loop continues + * since all memory must be freed. + */ + if (cont) + cont = (*func)(arg, wlp->wl_name); + wlp_next = wlp->wl_next; + free(wlp); + } + return (state.ww_status); +} + +wladm_status_t +wladm_get_link_attr(const char *link, wladm_link_attr_t *attrp) +{ + int fd; + wldp_t *gbuf; + wl_rssi_t signal; + wl_bss_type_t bsstype; + wl_authmode_t authmode; + wl_encryption_t encryption; + wl_rates_t *ratesp; + wladm_wlan_attr_t *wl_attrp; + wladm_status_t status = WLADM_STATUS_FAILED; + + if (attrp == NULL) + return (WLADM_STATUS_BADARG); + + if ((fd = open_link(link)) < 0) + return (WLADM_STATUS_LINKINVAL); + + if ((gbuf = malloc(MAX_BUF_LEN)) == NULL) { + status = WLADM_STATUS_NOMEM; + goto done; + } + + (void) memset(attrp, 0, sizeof (*attrp)); + wl_attrp = &attrp->la_wlan_attr; + + if (do_get_linkstatus(fd, gbuf) < 0) + goto done; + + attrp->la_valid |= WLADM_LINK_ATTR_STATUS; + if (!IS_CONNECTED(gbuf)) { + attrp->la_status = WLADM_LINK_STATUS_DISCONNECTED; + status = WLADM_STATUS_OK; + goto done; + } + attrp->la_status = WLADM_LINK_STATUS_CONNECTED; + + if (do_get_essid(fd, gbuf) < 0) + goto done; + + (void) strlcpy(wl_attrp->wa_essid.we_bytes, + ((wl_essid_t *)(gbuf->wldp_buf))->wl_essid_essid, + WLADM_MAX_ESSID_LEN); + + wl_attrp->wa_valid |= WLADM_WLAN_ATTR_ESSID; + + if (do_get_bssid(fd, gbuf) < 0) + goto done; + + (void) memcpy(wl_attrp->wa_bssid.wb_bytes, gbuf->wldp_buf, + WLADM_BSSID_LEN); + + wl_attrp->wa_valid |= WLADM_WLAN_ATTR_BSSID; + + if (do_get_encryption(fd, gbuf) < 0) + goto done; + + encryption = *(wl_encryption_t *)(gbuf->wldp_buf); + wl_attrp->wa_valid |= WLADM_WLAN_ATTR_SECMODE; + + switch (encryption) { + case WL_NOENCRYPTION: + wl_attrp->wa_secmode = WLADM_SECMODE_NONE; + break; + case WL_ENC_WEP: + wl_attrp->wa_secmode = WLADM_SECMODE_WEP; + break; + default: + wl_attrp->wa_valid &= ~WLADM_WLAN_ATTR_SECMODE; + break; + } + + if (do_get_signal(fd, gbuf) < 0) + goto done; + + signal = *(wl_rssi_t *)(gbuf->wldp_buf); + wl_attrp->wa_valid |= WLADM_WLAN_ATTR_STRENGTH; + wl_attrp->wa_strength = WLADM_SIGNAL2STRENGTH(signal); + + if (do_get_rate(fd, gbuf) < 0) + goto done; + + ratesp = (wl_rates_t *)(gbuf->wldp_buf); + if (ratesp->wl_rates_num > 0) { + uint_t i, r = 0; + + for (i = 0; i < ratesp->wl_rates_num; i++) { + if (ratesp->wl_rates_rates[i] > r) + r = ratesp->wl_rates_rates[i]; + } + wl_attrp->wa_speed = r; + wl_attrp->wa_valid |= WLADM_WLAN_ATTR_SPEED; + } + + if (do_get_authmode(fd, gbuf) < 0) + goto done; + + authmode = *(wl_authmode_t *)(gbuf->wldp_buf); + wl_attrp->wa_valid |= WLADM_WLAN_ATTR_AUTH; + + switch (authmode) { + case WL_OPENSYSTEM: + wl_attrp->wa_auth = WLADM_AUTH_OPEN; + break; + case WL_SHAREDKEY: + wl_attrp->wa_auth = WLADM_AUTH_SHARED; + break; + default: + wl_attrp->wa_valid &= ~WLADM_WLAN_ATTR_AUTH; + break; + } + + if (do_get_bsstype(fd, gbuf) < 0) + goto done; + + bsstype = *(wl_bss_type_t *)(gbuf->wldp_buf); + wl_attrp->wa_valid |= WLADM_WLAN_ATTR_BSSTYPE; + + switch (bsstype) { + case WL_BSS_BSS: + wl_attrp->wa_bsstype = WLADM_BSSTYPE_BSS; + break; + case WL_BSS_IBSS: + wl_attrp->wa_bsstype = WLADM_BSSTYPE_IBSS; + break; + case WL_BSS_ANY: + wl_attrp->wa_bsstype = WLADM_BSSTYPE_ANY; + break; + default: + wl_attrp->wa_valid &= ~WLADM_WLAN_ATTR_BSSTYPE; + break; + } + + if (do_get_mode(fd, gbuf) < 0) + goto done; + + wl_attrp->wa_mode = do_convert_mode((wl_phy_conf_t *)(gbuf->wldp_buf)); + wl_attrp->wa_valid |= WLADM_WLAN_ATTR_MODE; + if (wl_attrp->wa_mode != WLADM_MODE_NONE) + wl_attrp->wa_valid |= WLADM_WLAN_ATTR_MODE; + + attrp->la_valid |= WLADM_LINK_ATTR_WLAN; + status = WLADM_STATUS_OK; + +done: + free(gbuf); + (void) close(fd); + return (status); +} + +boolean_t +wladm_is_valid(const char *link) +{ + int fd = open_link(link); + + if (fd < 0) + return (B_FALSE); + + (void) close(fd); + return (B_TRUE); +} + +/* ARGSUSED */ +static wladm_status_t +do_check_prop(int fd, wldp_t *guf, prop_desc_t *pdp, char **prop_val, + uint_t val_cnt, val_desc_t **vdpp) +{ + int i; + val_desc_t *vdp; + + if (pdp->pd_nmodval == 0) + return (WLADM_STATUS_PROPRDONLY); + + if (val_cnt != 1) + return (WLADM_STATUS_BADVALCNT); + + for (i = 0; i < pdp->pd_nmodval; i++) + if (strcasecmp(*prop_val, pdp->pd_modval[i].vd_name) == 0) + break; + + if (i == pdp->pd_nmodval) + return (WLADM_STATUS_BADVAL); + + vdp = malloc(sizeof (val_desc_t)); + if (vdp == NULL) + return (WLADM_STATUS_NOMEM); + + (void) memcpy(vdp, &pdp->pd_modval[i], sizeof (val_desc_t)); + *vdpp = vdp; + return (WLADM_STATUS_OK); +} + +static wladm_status_t +do_set_prop(int fd, wldp_t *gbuf, prop_desc_t *pdp, + char **prop_val, uint_t val_cnt) +{ + wladm_status_t status; + val_desc_t *vdp = NULL; + uint_t cnt; + + if (pdp->pd_set == NULL) + return (WLADM_STATUS_PROPRDONLY); + + if (prop_val != NULL) { + status = pdp->pd_check(fd, gbuf, pdp, prop_val, + val_cnt, &vdp); + + if (status != WLADM_STATUS_OK) + return (status); + + cnt = val_cnt; + } else { + if (pdp->pd_defval.vd_name == NULL) + return (WLADM_STATUS_NOTSUP); + + if ((vdp = malloc(sizeof (val_desc_t))) == NULL) + return (WLADM_STATUS_NOMEM); + + *vdp = pdp->pd_defval; + cnt = 1; + } + status = pdp->pd_set(fd, gbuf, vdp, cnt); + if (status == WLADM_STATUS_OK) { + /* + * Some ioctls return 0 but store error code in + * wldp_result. Need to fix them. + */ + if (gbuf->wldp_result != WL_SUCCESS) + status = wladm_wlresult2status(gbuf); + } + free(vdp); + return (status); +} + +wladm_status_t +wladm_set_prop(const char *link, const char *prop_name, + char **prop_val, uint_t val_cnt) +{ + int fd, i; + wldp_t *gbuf = NULL; + boolean_t found = B_FALSE; + wladm_status_t status = WLADM_STATUS_OK; + + if ((prop_name == NULL && prop_val != NULL) || + (prop_val != NULL && val_cnt == 0)) + return (WLADM_STATUS_BADARG); + + if ((fd = open_link(link)) < 0) + return (WLADM_STATUS_LINKINVAL); + + if ((gbuf = malloc(MAX_BUF_LEN)) == NULL) { + status = WLADM_STATUS_NOMEM; + goto done; + } + + for (i = 0; i < WLADM_MAX_PROPS; i++) { + prop_desc_t *pdp = &prop_table[i]; + wladm_status_t s; + + if (prop_name != NULL && + (strcasecmp(prop_name, pdp->pd_name) != 0)) + continue; + + found = B_TRUE; + s = do_set_prop(fd, gbuf, pdp, prop_val, val_cnt); + + if (prop_name != NULL) { + status = s; + break; + } else { + if (s != WLADM_STATUS_OK && + s != WLADM_STATUS_NOTSUP) + status = s; + } + } + if (!found) + status = WLADM_STATUS_NOTFOUND; +done: + free(gbuf); + (void) close(fd); + return (status); +} + +/* ARGSUSED */ +wladm_status_t +wladm_walk_prop(const char *link, void *arg, + boolean_t (*func)(void *, const char *)) +{ + int i; + + for (i = 0; i < WLADM_MAX_PROPS; i++) { + if (!func(arg, prop_table[i].pd_name)) + break; + } + return (WLADM_STATUS_OK); +} + +wladm_status_t +wladm_get_prop(const char *link, wladm_prop_type_t type, const char *prop_name, + char **prop_val, uint_t *val_cnt) +{ + int fd; + int i; + wldp_t *gbuf; + wladm_status_t status; + uint_t cnt; + prop_desc_t *pdp; + + if (prop_val == NULL || val_cnt == NULL || *val_cnt == 0) + return (WLADM_STATUS_BADARG); + + for (i = 0; i < WLADM_MAX_PROPS; i++) + if (strcasecmp(prop_name, prop_table[i].pd_name) == 0) + break; + + if (i == WLADM_MAX_PROPS) + return (WLADM_STATUS_NOTFOUND); + + if ((fd = open_link(link)) < 0) + return (WLADM_STATUS_LINKINVAL); + + if ((gbuf = malloc(MAX_BUF_LEN)) == NULL) { + status = WLADM_STATUS_NOMEM; + goto done; + } + pdp = &prop_table[i]; + status = WLADM_STATUS_OK; + + switch (type) { + case WLADM_PROP_VAL_CURRENT: + status = pdp->pd_get(fd, gbuf, prop_val, val_cnt); + break; + + case WLADM_PROP_VAL_DEFAULT: + if (pdp->pd_defval.vd_name == NULL) { + status = WLADM_STATUS_NOTSUP; + break; + } + (void) strcpy(*prop_val, pdp->pd_defval.vd_name); + *val_cnt = 1; + break; + + case WLADM_PROP_VAL_MODIFIABLE: + if (pdp->pd_getmod != NULL) { + status = pdp->pd_getmod(fd, gbuf, prop_val, val_cnt); + break; + } + cnt = pdp->pd_nmodval; + if (cnt == 0) { + status = WLADM_STATUS_NOTSUP; + } else if (cnt > *val_cnt) { + status = WLADM_STATUS_TOOSMALL; + } else { + for (i = 0; i < cnt; i++) { + (void) strcpy(prop_val[i], + pdp->pd_modval[i].vd_name); + } + *val_cnt = cnt; + } + break; + default: + status = WLADM_STATUS_BADARG; + break; + } +done: + free(gbuf); + (void) close(fd); + return (status); +} + +static boolean_t +find_val_by_name(const char *str, val_desc_t *vdp, uint_t cnt, uint_t *valp) +{ + int i; + + for (i = 0; i < cnt; i++) { + if (strcasecmp(str, vdp[i].vd_name) == 0) { + *valp = vdp[i].vd_val; + return (B_TRUE); + } + } + return (B_FALSE); +} + +static boolean_t +find_name_by_val(uint_t val, val_desc_t *vdp, uint_t cnt, char **strp) +{ + int i; + + for (i = 0; i < cnt; i++) { + if (val == vdp[i].vd_val) { + *strp = vdp[i].vd_name; + return (B_TRUE); + } + } + return (B_FALSE); +} + +const char * +wladm_essid2str(wladm_essid_t *essid, char *buf) +{ + (void) snprintf(buf, WLADM_STRSIZE, "%s", essid->we_bytes); + return (buf); +} + +const char * +wladm_bssid2str(wladm_bssid_t *bssid, char *buf) +{ + return (_link_ntoa(bssid->wb_bytes, buf, WLADM_BSSID_LEN, IFT_OTHER)); +} + +static const char * +wladm_val2str(uint_t val, val_desc_t *vdp, uint_t cnt, char *buf) +{ + char *s; + + if (!find_name_by_val(val, vdp, cnt, &s)) + s = ""; + + (void) snprintf(buf, WLADM_STRSIZE, "%s", s); + return (buf); +} + +const char * +wladm_secmode2str(wladm_secmode_t *secmode, char *buf) +{ + return (wladm_val2str((uint_t)*secmode, secmode_vals, + VALCNT(secmode_vals), buf)); +} + +const char * +wladm_strength2str(wladm_strength_t *strength, char *buf) +{ + return (wladm_val2str((uint_t)*strength, strength_vals, + VALCNT(strength_vals), buf)); +} + +const char * +wladm_mode2str(wladm_mode_t *mode, char *buf) +{ + return (wladm_val2str((uint_t)*mode, mode_vals, + VALCNT(mode_vals), buf)); +} + +const char * +wladm_speed2str(wladm_speed_t *speed, char *buf) +{ + (void) snprintf(buf, WLADM_STRSIZE, "%.*f", *speed % 2, + (float)(*speed) / 2); + return (buf); +} + +const char * +wladm_auth2str(wladm_auth_t *auth, char *buf) +{ + return (wladm_val2str((uint_t)*auth, auth_vals, + VALCNT(auth_vals), buf)); +} + +const char * +wladm_bsstype2str(wladm_bsstype_t *bsstype, char *buf) +{ + return (wladm_val2str((uint_t)*bsstype, bsstype_vals, + VALCNT(bsstype_vals), buf)); +} + +const char * +wladm_linkstatus2str(wladm_linkstatus_t *linkstatus, char *buf) +{ + return (wladm_val2str((uint_t)*linkstatus, linkstatus_vals, + VALCNT(linkstatus_vals), buf)); +} + +const char * +wladm_status2str(wladm_status_t status, char *buf) +{ + return (wladm_val2str((uint_t)status, status_vals, + VALCNT(status_vals), buf)); +} + +wladm_status_t +wladm_str2essid(const char *str, wladm_essid_t *essid) +{ + if (str[0] == '\0') + return (WLADM_STATUS_BADARG); + + (void) strlcpy(essid->we_bytes, str, WLADM_MAX_ESSID_LEN); + return (WLADM_STATUS_OK); +} + +wladm_status_t +wladm_str2bssid(const char *str, wladm_bssid_t *bssid) +{ + int len; + uchar_t *buf; + + buf = _link_aton(str, &len); + if (buf == NULL) + return (WLADM_STATUS_BADARG); + + if (len != WLADM_BSSID_LEN) { + free(buf); + return (WLADM_STATUS_BADARG); + } + + (void) memcpy(bssid->wb_bytes, buf, len); + free(buf); + return (WLADM_STATUS_OK); +} + +wladm_status_t +wladm_str2secmode(const char *str, wladm_secmode_t *secmode) +{ + uint_t val; + + if (!find_val_by_name(str, secmode_vals, VALCNT(secmode_vals), &val)) + return (WLADM_STATUS_BADARG); + + *secmode = (wladm_secmode_t)val; + return (WLADM_STATUS_OK); +} + +wladm_status_t +wladm_str2strength(const char *str, wladm_strength_t *strength) +{ + uint_t val; + + if (!find_val_by_name(str, strength_vals, VALCNT(strength_vals), &val)) + return (WLADM_STATUS_BADARG); + + *strength = (wladm_strength_t)val; + return (WLADM_STATUS_OK); +} + +wladm_status_t +wladm_str2mode(const char *str, wladm_mode_t *mode) +{ + uint_t val; + + if (!find_val_by_name(str, mode_vals, VALCNT(mode_vals), &val)) + return (WLADM_STATUS_BADARG); + + *mode = (wladm_mode_t)val; + return (WLADM_STATUS_OK); +} + +wladm_status_t +wladm_str2speed(const char *str, wladm_speed_t *speed) +{ + *speed = (wladm_speed_t)(atof(str) * 2); + return (WLADM_STATUS_OK); +} + +wladm_status_t +wladm_str2auth(const char *str, wladm_auth_t *auth) +{ + uint_t val; + + if (!find_val_by_name(str, auth_vals, VALCNT(auth_vals), &val)) + return (WLADM_STATUS_BADARG); + + *auth = (wladm_auth_t)val; + return (WLADM_STATUS_OK); +} + +wladm_status_t +wladm_str2bsstype(const char *str, wladm_bsstype_t *bsstype) +{ + uint_t val; + + if (!find_val_by_name(str, bsstype_vals, VALCNT(bsstype_vals), &val)) + return (WLADM_STATUS_BADARG); + + *bsstype = (wladm_bsstype_t)val; + return (WLADM_STATUS_OK); +} + +wladm_status_t +wladm_str2linkstatus(const char *str, wladm_linkstatus_t *linkstatus) +{ + uint_t val; + + if (!find_val_by_name(str, linkstatus_vals, VALCNT(linkstatus_vals), + &val)) + return (WLADM_STATUS_BADARG); + + *linkstatus = (wladm_linkstatus_t)val; + return (WLADM_STATUS_OK); +} + +static int +do_ioctl(int fd, wldp_t *gbuf, uint_t id, size_t len, uint_t cmd, size_t cmdlen) +{ + int rc; + struct strioctl stri; + + gbuf->wldp_type = NET_802_11; + gbuf->wldp_id = id; + gbuf->wldp_length = len; + + stri.ic_timout = 0; + stri.ic_dp = (char *)gbuf; + stri.ic_cmd = cmd; + stri.ic_len = cmdlen; + + if ((rc = ioctl(fd, I_STR, &stri)) != 0) { + if (rc > 0) + errno = rc; + return (-1); + } + return (0); +} + +static int +do_get_ioctl(int fd, wldp_t *gbuf, uint_t id) +{ + (void) memset(gbuf, 0, MAX_BUF_LEN); + return (do_ioctl(fd, gbuf, id, MAX_BUF_LEN, WLAN_GET_PARAM, + MAX_BUF_LEN)); +} + +static int +do_set_ioctl(int fd, wldp_t *gbuf, uint_t id, void *buf, uint_t buflen) +{ + (void) memset(gbuf, 0, MAX_BUF_LEN); + (void) memcpy(gbuf->wldp_buf, buf, buflen); + buflen += WIFI_BUF_OFFSET; + return (do_ioctl(fd, gbuf, id, buflen, WLAN_SET_PARAM, buflen)); +} + +static int +do_cmd_ioctl(int fd, wldp_t *gbuf, uint_t cmd) +{ + (void) memset(gbuf, 0, MAX_BUF_LEN); + return (do_ioctl(fd, gbuf, cmd, sizeof (wldp_t), WLAN_COMMAND, + sizeof (wldp_t))); +} + +static int +do_scan(int fd, wldp_t *gbuf) +{ + return (do_cmd_ioctl(fd, gbuf, WL_SCAN)); +} + +static int +do_disconnect(int fd, wldp_t *gbuf) +{ + return (do_cmd_ioctl(fd, gbuf, WL_DISASSOCIATE)); +} + +static int +do_get_esslist(int fd, wldp_t *gbuf) +{ + (void) memset(gbuf, 0, MAX_BUF_LEN); + return (do_ioctl(fd, gbuf, WL_ESS_LIST, MAX_BUF_LEN, + WLAN_GET_PARAM, sizeof (wldp_t))); +} + +static int +do_get_bssid(int fd, wldp_t *gbuf) +{ + return (do_get_ioctl(fd, gbuf, WL_BSSID)); +} + +static int +do_get_essid(int fd, wldp_t *gbuf) +{ + return (do_get_ioctl(fd, gbuf, WL_ESSID)); +} + +static int +do_get_bsstype(int fd, wldp_t *gbuf) +{ + return (do_get_ioctl(fd, gbuf, WL_BSS_TYPE)); +} + +static int +do_get_linkstatus(int fd, wldp_t *gbuf) +{ + return (do_get_ioctl(fd, gbuf, WL_LINKSTATUS)); +} + +static int +do_get_rate(int fd, wldp_t *gbuf) +{ + return (do_get_ioctl(fd, gbuf, WL_DESIRED_RATES)); +} + +static int +do_get_phyconf(int fd, wldp_t *gbuf) +{ + return (do_get_ioctl(fd, gbuf, WL_PHY_CONFIG)); +} + +static int +do_get_powermode(int fd, wldp_t *gbuf) +{ + return (do_get_ioctl(fd, gbuf, WL_POWER_MODE)); +} + +static int +do_get_radio(int fd, wldp_t *gbuf) +{ + return (do_get_ioctl(fd, gbuf, WL_RADIO)); +} + +static int +do_get_authmode(int fd, wldp_t *gbuf) +{ + return (do_get_ioctl(fd, gbuf, WL_AUTH_MODE)); +} + +static int +do_get_encryption(int fd, wldp_t *gbuf) +{ + return (do_get_ioctl(fd, gbuf, WL_ENCRYPTION)); +} + +static int +do_get_signal(int fd, wldp_t *gbuf) +{ + return (do_get_ioctl(fd, gbuf, WL_RSSI)); +} + +static int +do_get_mode(int fd, wldp_t *gbuf) +{ + return (do_get_ioctl(fd, gbuf, WL_PHY_CONFIG)); +} + +static wladm_status_t +do_get_rate_common(wldp_t *gbuf, char **prop_val, uint_t *val_cnt) +{ + wl_rates_t *wrp = (wl_rates_t *)gbuf->wldp_buf; + uint_t cnt = wrp->wl_rates_num; + uint_t i; + + if (cnt > *val_cnt) + return (WLADM_STATUS_TOOSMALL); + if (wrp->wl_rates_rates[0] == 0) { + prop_val[0][0] = '\0'; + *val_cnt = 1; + return (WLADM_STATUS_OK); + } + + for (i = 0; i < cnt; i++) { + (void) snprintf(prop_val[i], WLADM_STRSIZE, "%.*f", + wrp->wl_rates_rates[i] % 2, + (float)wrp->wl_rates_rates[i] / 2); + } + *val_cnt = cnt; + return (WLADM_STATUS_OK); +} + +static wladm_status_t +do_get_rate_prop(int fd, wldp_t *gbuf, char **prop_val, uint_t *val_cnt) +{ + if (do_get_rate(fd, gbuf) < 0) + return (wladm_wlresult2status(gbuf)); + + return (do_get_rate_common(gbuf, prop_val, val_cnt)); +} + +static wladm_status_t +do_get_rate_mod(int fd, wldp_t *gbuf, char **prop_val, uint_t *val_cnt) +{ + if (do_get_ioctl(fd, gbuf, WL_SUPPORTED_RATES) < 0) + return (WLADM_STATUS_FAILED); + + return (do_get_rate_common(gbuf, prop_val, val_cnt)); +} + +static wladm_status_t +do_get_channel_prop(int fd, wldp_t *gbuf, char **prop_val, uint_t *val_cnt) +{ + uint32_t channel; + + if (do_get_phyconf(fd, gbuf) < 0) + return (wladm_wlresult2status(gbuf)); + + if (!do_convert_chan((wl_phy_conf_t *)gbuf->wldp_buf, &channel)) + return (WLADM_STATUS_NOTFOUND); + + (void) snprintf(*prop_val, WLADM_STRSIZE, "%u", channel); + *val_cnt = 1; + + return (WLADM_STATUS_OK); +} + +static wladm_status_t +do_get_powermode_prop(int fd, wldp_t *gbuf, char **prop_val, uint_t *val_cnt) +{ + wl_ps_mode_t *mode; + const char *s; + + if (do_get_powermode(fd, gbuf) < 0) + return (wladm_wlresult2status(gbuf)); + + mode = (wl_ps_mode_t *)(gbuf->wldp_buf); + switch (mode->wl_ps_mode) { + case WL_PM_AM: + s = "off"; + break; + case WL_PM_MPS: + s = "max"; + break; + case WL_PM_FAST: + s = "fast"; + break; + default: + return (WLADM_STATUS_NOTFOUND); + } + (void) snprintf(*prop_val, WLADM_STRSIZE, "%s", s); + *val_cnt = 1; + + return (WLADM_STATUS_OK); +} + +static wladm_status_t +do_get_radio_prop(int fd, wldp_t *gbuf, char **prop_val, uint_t *val_cnt) +{ + wl_radio_t radio; + const char *s; + + if (do_get_radio(fd, gbuf) < 0) + return (wladm_wlresult2status(gbuf)); + + radio = *(wl_radio_t *)(gbuf->wldp_buf); + switch (radio) { + case B_TRUE: + s = "on"; + break; + case B_FALSE: + s = "off"; + break; + default: + return (WLADM_STATUS_NOTFOUND); + } + (void) snprintf(*prop_val, WLADM_STRSIZE, "%s", s); + *val_cnt = 1; + + return (WLADM_STATUS_OK); +} + +static int +do_set_bsstype(int fd, wldp_t *gbuf, wladm_bsstype_t *bsstype) +{ + wl_bss_type_t ibsstype; + + switch (*bsstype) { + case WLADM_BSSTYPE_BSS: + ibsstype = WL_BSS_BSS; + break; + case WLADM_BSSTYPE_IBSS: + ibsstype = WL_BSS_IBSS; + break; + default: + ibsstype = WL_BSS_ANY; + break; + } + return (do_set_ioctl(fd, gbuf, WL_BSS_TYPE, &ibsstype, + sizeof (ibsstype))); +} + +static int +do_set_authmode(int fd, wldp_t *gbuf, wladm_auth_t *auth) +{ + wl_authmode_t auth_mode; + + switch (*auth) { + case WLADM_AUTH_OPEN: + auth_mode = WL_OPENSYSTEM; + break; + case WLADM_AUTH_SHARED: + auth_mode = WL_SHAREDKEY; + break; + default: + return (-1); + } + return (do_set_ioctl(fd, gbuf, WL_AUTH_MODE, &auth_mode, + sizeof (auth_mode))); +} + +static int +do_set_encryption(int fd, wldp_t *gbuf, wladm_secmode_t *secmode) +{ + wl_encryption_t encryption; + + switch (*secmode) { + case WLADM_SECMODE_NONE: + encryption = WL_NOENCRYPTION; + break; + case WLADM_SECMODE_WEP: + encryption = WL_ENC_WEP; + break; + default: + return (-1); + } + return (do_set_ioctl(fd, gbuf, WL_ENCRYPTION, &encryption, + sizeof (encryption))); +} + +static int +do_set_wepkey(int fd, wldp_t *gbuf, wladm_wep_key_t *keys, uint_t key_count) +{ + int i; + wl_wep_key_t *wkp; + wl_wep_key_tab_t wepkey_tab; + wladm_wep_key_t *kp; + + if (key_count == 0 || key_count > MAX_NWEPKEYS || keys == NULL) + return (-1); + + (void) memset(wepkey_tab, 0, sizeof (wepkey_tab)); + for (i = 0; i < MAX_NWEPKEYS; i++) + wepkey_tab[i].wl_wep_operation = WL_NUL; + + for (i = 0; i < key_count; i++) { + kp = &keys[i]; + if (kp->wk_idx == 0 || kp->wk_idx > MAX_NWEPKEYS) + return (-1); + if (kp->wk_len != WLADM_WEPKEY64_LEN && + kp->wk_len != WLADM_WEPKEY128_LEN) + return (-1); + + wkp = &wepkey_tab[kp->wk_idx - 1]; + wkp->wl_wep_operation = WL_ADD; + wkp->wl_wep_length = kp->wk_len; + (void) memcpy(wkp->wl_wep_key, kp->wk_val, kp->wk_len); + } + + return (do_set_ioctl(fd, gbuf, WL_WEP_KEY_TAB, &wepkey_tab, + sizeof (wepkey_tab))); +} + +static int +do_set_essid(int fd, wldp_t *gbuf, wladm_essid_t *essid) +{ + wl_essid_t iessid; + + (void) memset(&iessid, 0, sizeof (essid)); + + if (essid != NULL && essid->we_bytes[0] != '\0') { + iessid.wl_essid_length = strlen(essid->we_bytes); + (void) strlcpy(iessid.wl_essid_essid, essid->we_bytes, + sizeof (iessid.wl_essid_essid)); + } else { + return (-1); + } + return (do_set_ioctl(fd, gbuf, WL_ESSID, &iessid, sizeof (iessid))); +} + +/* ARGSUSED */ +static wladm_status_t +do_check_rate(int fd, wldp_t *gbuf, prop_desc_t *pdp, char **prop_val, + uint_t val_cnt, val_desc_t **vdpp) +{ + int i; + uint_t modval_cnt = MAX_SUPPORT_RATES; + char *buf, **modval; + wladm_status_t status; + val_desc_t *vdp = NULL; + + if (val_cnt != 1) + return (WLADM_STATUS_BADVALCNT); + + buf = malloc((sizeof (char *) + WLADM_STRSIZE) * + MAX_SUPPORT_RATES); + if (buf == NULL) + goto done; + + modval = (char **)(void *)buf; + for (i = 0; i < MAX_SUPPORT_RATES; i++) { + modval[i] = buf + sizeof (char *) * MAX_SUPPORT_RATES + + i * WLADM_STRSIZE; + } + + status = do_get_rate_mod(fd, gbuf, modval, &modval_cnt); + if (status != WLADM_STATUS_OK) + goto done; + + vdp = malloc(sizeof (val_desc_t)); + if (vdp == NULL) { + status = WLADM_STATUS_NOMEM; + goto done; + } + + for (i = 0; i < modval_cnt; i++) { + if (strcasecmp(*prop_val, modval[i]) == 0) { + vdp->vd_val = (uint_t)(atof(*prop_val) * 2); + status = WLADM_STATUS_OK; + *vdpp = vdp; + vdp = NULL; + break; + } + } + if (i == modval_cnt) + status = WLADM_STATUS_BADVAL; +done: + free(buf); + free(vdp); + return (status); +} + +static wladm_status_t +do_set_rate_prop(int fd, wldp_t *gbuf, val_desc_t *vdp, uint_t val_cnt) +{ + wladm_rates_t rates; + + if (val_cnt != 1) + return (WLADM_STATUS_BADVALCNT); + + rates.wr_cnt = 1; + rates.wr_rates[0] = vdp[0].vd_val; + + if (do_set_rate(fd, gbuf, &rates) < 0) + return (wladm_wlresult2status(gbuf)); + + return (WLADM_STATUS_OK); +} + +static int +do_set_rate(int fd, wldp_t *gbuf, wladm_rates_t *rates) +{ + int i; + uint_t len; + wl_rates_t *wrp = (wl_rates_t *)gbuf->wldp_buf; + + (void) memset(gbuf, 0, MAX_BUF_LEN); + + for (i = 0; i < rates->wr_cnt; i++) + wrp->wl_rates_rates[i] = rates->wr_rates[i]; + wrp->wl_rates_num = rates->wr_cnt; + + len = offsetof(wl_rates_t, wl_rates_rates) + + (rates->wr_cnt * sizeof (char)) + WIFI_BUF_OFFSET; + return (do_ioctl(fd, gbuf, WL_DESIRED_RATES, len, WLAN_SET_PARAM, len)); +} + +/* ARGSUSED */ +static wladm_status_t +do_set_powermode_prop(int fd, wldp_t *gbuf, val_desc_t *vdp, uint_t val_cnt) +{ + wladm_powermode_t powermode = (wladm_powermode_t)vdp->vd_val; + + if (do_set_powermode(fd, gbuf, &powermode) < 0) + return (wladm_wlresult2status(gbuf)); + + return (WLADM_STATUS_OK); +} + +static int +do_set_powermode(int fd, wldp_t *gbuf, wladm_powermode_t *pm) +{ + wl_ps_mode_t ps_mode; + + (void) memset(&ps_mode, 0xff, sizeof (ps_mode)); + + switch (*pm) { + case WLADM_PM_OFF: + ps_mode.wl_ps_mode = WL_PM_AM; + break; + case WLADM_PM_MAX: + ps_mode.wl_ps_mode = WL_PM_MPS; + break; + case WLADM_PM_FAST: + ps_mode.wl_ps_mode = WL_PM_FAST; + break; + default: + return (-1); + } + return (do_set_ioctl(fd, gbuf, WL_POWER_MODE, &ps_mode, + sizeof (ps_mode))); +} + +/* ARGSUSED */ +static wladm_status_t +do_set_radio_prop(int fd, wldp_t *gbuf, val_desc_t *vdp, uint_t val_cnt) +{ + wladm_radio_t radio = (wladm_radio_t)vdp->vd_val; + + if (do_set_radio(fd, gbuf, &radio) < 0) + return (wladm_wlresult2status(gbuf)); + + return (WLADM_STATUS_OK); +} + +static int +do_set_radio(int fd, wldp_t *gbuf, wladm_radio_t *radio) +{ + wl_radio_t r; + + switch (*radio) { + case WLADM_RADIO_ON: + r = B_TRUE; + break; + case WLADM_RADIO_OFF: + r = B_FALSE; + break; + default: + return (-1); + } + return (do_set_ioctl(fd, gbuf, WL_RADIO, &r, sizeof (r))); +} + +static int +do_set_channel(int fd, wldp_t *gbuf, wladm_channel_t *channel) +{ + wl_phy_conf_t phy_conf; + + if (*channel > MAX_CHANNEL_NUM) + return (-1); + + (void) memset(&phy_conf, 0xff, sizeof (phy_conf)); + phy_conf.wl_phy_dsss_conf.wl_dsss_channel = *channel; + + return (do_set_ioctl(fd, gbuf, WL_PHY_CONFIG, &phy_conf, + sizeof (phy_conf))); +} + +static int +do_set_createibss(int fd, wldp_t *gbuf, boolean_t *create_ibss) +{ + wl_create_ibss_t cr = (wl_create_ibss_t)(*create_ibss); + + return (do_set_ioctl(fd, gbuf, WL_CREATE_IBSS, &cr, sizeof (cr))); +} + +static void +generate_essid(wladm_essid_t *essid) +{ + srandom(gethrtime()); + (void) snprintf(essid->we_bytes, WLADM_MAX_ESSID_LEN, "%d", random()); +} diff --git a/usr/src/lib/libwladm/common/libwladm.h b/usr/src/lib/libwladm/common/libwladm.h new file mode 100644 index 0000000000..0a5d24df9e --- /dev/null +++ b/usr/src/lib/libwladm/common/libwladm.h @@ -0,0 +1,209 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#ifndef _LIBWLADM_H +#define _LIBWLADM_H + +#pragma ident "%Z%%M% %I% %E% SMI" + +#include <sys/types.h> + +/* + * General libwladm definitions and functions. + * + * These interfaces are ON consolidation-private. + * For documentation, refer to PSARC/2006/623. + */ + +#ifdef __cplusplus +extern "C" { +#endif + +#define WLADM_MAX_ESSID_LEN 32 /* per 802.11 spec */ +#define WLADM_BSSID_LEN 6 /* per 802.11 spec */ +#define WLADM_STRSIZE 256 + +#define WLADM_CONNECT_TIMEOUT_DEFAULT 10 +#define WLADM_OPT_CREATEIBSS 0x00000001 +#define WLADM_OPT_NOSCAN 0x00000002 + +typedef struct wladm_essid { + char we_bytes[WLADM_MAX_ESSID_LEN]; +} wladm_essid_t; + +typedef struct wladm_bssid { + uint8_t wb_bytes[WLADM_BSSID_LEN]; +} wladm_bssid_t; + +typedef enum { + WLADM_SECMODE_NONE = 1, + WLADM_SECMODE_WEP +} wladm_secmode_t; + +typedef enum { + WLADM_STRENGTH_VERY_WEAK = 1, + WLADM_STRENGTH_WEAK, + WLADM_STRENGTH_GOOD, + WLADM_STRENGTH_VERY_GOOD, + WLADM_STRENGTH_EXCELLENT +} wladm_strength_t; + +typedef enum { + WLADM_MODE_NONE = 0, + WLADM_MODE_80211A, + WLADM_MODE_80211B, + WLADM_MODE_80211G +} wladm_mode_t; + +typedef enum { + WLADM_AUTH_OPEN = 1, + WLADM_AUTH_SHARED +} wladm_auth_t; + +typedef enum { + WLADM_BSSTYPE_BSS = 1, + WLADM_BSSTYPE_IBSS, + WLADM_BSSTYPE_ANY +} wladm_bsstype_t; + +typedef enum { + WLADM_LINK_STATUS_DISCONNECTED = 1, + WLADM_LINK_STATUS_CONNECTED +} wladm_linkstatus_t; + +typedef enum { + WLADM_STATUS_OK = 0, + WLADM_STATUS_BADARG, + WLADM_STATUS_FAILED, + WLADM_STATUS_NOTSUP, + WLADM_STATUS_ISCONN, + WLADM_STATUS_NOTCONN, + WLADM_STATUS_NOTFOUND, + WLADM_STATUS_BADVAL, + WLADM_STATUS_LINKINVAL, + WLADM_STATUS_NOMEM, + WLADM_STATUS_TIMEDOUT, + WLADM_STATUS_PROPRDONLY, + WLADM_STATUS_TOOSMALL, + WLADM_STATUS_BADVALCNT +} wladm_status_t; + +typedef uint32_t wladm_speed_t; +typedef uint32_t wladm_channel_t; + +enum { + WLADM_WLAN_ATTR_ESSID = 0x00000001, + WLADM_WLAN_ATTR_BSSID = 0x00000002, + WLADM_WLAN_ATTR_SECMODE = 0x00000004, + WLADM_WLAN_ATTR_STRENGTH = 0x00000008, + WLADM_WLAN_ATTR_MODE = 0x00000010, + WLADM_WLAN_ATTR_SPEED = 0x00000020, + WLADM_WLAN_ATTR_AUTH = 0x00000040, + WLADM_WLAN_ATTR_BSSTYPE = 0x00000080, + WLADM_WLAN_ATTR_CHANNEL = 0x00000100 +}; +typedef struct wladm_wlan_attr { + uint_t wa_valid; + wladm_essid_t wa_essid; + wladm_bssid_t wa_bssid; + wladm_secmode_t wa_secmode; + wladm_strength_t wa_strength; + wladm_mode_t wa_mode; + wladm_speed_t wa_speed; + wladm_auth_t wa_auth; + wladm_bsstype_t wa_bsstype; + wladm_channel_t wa_channel; +} wladm_wlan_attr_t; + +enum { + WLADM_LINK_ATTR_STATUS = 0x00000001, + WLADM_LINK_ATTR_WLAN = 0x00000002 +}; +typedef struct wladm_link_attr { + uint_t la_valid; + wladm_linkstatus_t la_status; + wladm_wlan_attr_t la_wlan_attr; +} wladm_link_attr_t; + +#define WLADM_WEPKEY64_LEN 5 /* per WEP spec */ +#define WLADM_WEPKEY128_LEN 13 /* per WEP spec */ +#define WLADM_MAX_WEPKEY_LEN 13 /* per WEP spec */ +#define WLADM_MAX_WEPKEYS 4 /* MAX_NWEPKEYS */ +#define WLADM_MAX_WEPKEYNAME_LEN 64 +typedef struct wladm_wep_key { + uint_t wk_idx; + uint_t wk_len; + uint8_t wk_val[WLADM_MAX_WEPKEY_LEN]; + char wk_name[WLADM_MAX_WEPKEYNAME_LEN]; +} wladm_wep_key_t; + +typedef enum { + WLADM_PROP_VAL_CURRENT = 1, + WLADM_PROP_VAL_DEFAULT, + WLADM_PROP_VAL_MODIFIABLE +} wladm_prop_type_t; + +extern wladm_status_t wladm_scan(const char *, void *, + boolean_t (*)(void *, wladm_wlan_attr_t *)); +extern wladm_status_t wladm_connect(const char *, wladm_wlan_attr_t *, + int, void *, uint_t, uint_t); +extern wladm_status_t wladm_disconnect(const char *); +extern wladm_status_t wladm_get_link_attr(const char *, wladm_link_attr_t *); +extern wladm_status_t wladm_walk(void *, boolean_t (*)(void *, const char *)); +extern boolean_t wladm_is_valid(const char *); +extern wladm_status_t wladm_set_prop(const char *, const char *, char **, + uint_t); +extern wladm_status_t wladm_walk_prop(const char *, void *, + boolean_t (*)(void *, const char *)); +extern wladm_status_t wladm_get_prop(const char *, wladm_prop_type_t, + const char *, char **, uint_t *); + +extern const char *wladm_essid2str(wladm_essid_t *, char *); +extern const char *wladm_bssid2str(wladm_bssid_t *, char *); +extern const char *wladm_secmode2str(wladm_secmode_t *, char *); +extern const char *wladm_strength2str(wladm_strength_t *, char *); +extern const char *wladm_mode2str(wladm_mode_t *, char *); +extern const char *wladm_speed2str(wladm_speed_t *, char *); +extern const char *wladm_auth2str(wladm_auth_t *, char *); +extern const char *wladm_bsstype2str(wladm_bsstype_t *, char *); +extern const char *wladm_linkstatus2str(wladm_linkstatus_t *, char *); +extern const char *wladm_status2str(wladm_status_t, char *); + +extern wladm_status_t wladm_str2essid(const char *, wladm_essid_t *); +extern wladm_status_t wladm_str2bssid(const char *, wladm_bssid_t *); +extern wladm_status_t wladm_str2secmode(const char *, wladm_secmode_t *); +extern wladm_status_t wladm_str2strength(const char *, wladm_strength_t *); +extern wladm_status_t wladm_str2mode(const char *, wladm_mode_t *); +extern wladm_status_t wladm_str2speed(const char *, wladm_speed_t *); +extern wladm_status_t wladm_str2auth(const char *, wladm_auth_t *); +extern wladm_status_t wladm_str2bsstype(const char *, wladm_bsstype_t *); +extern wladm_status_t wladm_str2linkstatus(const char *, + wladm_linkstatus_t *); + +#ifdef __cplusplus +} +#endif + +#endif /* _LIBWLADM_H */ diff --git a/usr/src/lib/libwladm/common/libwladm_impl.h b/usr/src/lib/libwladm/common/libwladm_impl.h new file mode 100644 index 0000000000..e3dfbd7ea0 --- /dev/null +++ b/usr/src/lib/libwladm/common/libwladm_impl.h @@ -0,0 +1,82 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#ifndef _LIBWLADM_IMPL_H +#define _LIBWLADM_IMPL_H + +#pragma ident "%Z%%M% %I% %E% SMI" + +#include <sys/types.h> +#include <inet/wifi_ioctl.h> + +/* + * Implementation-private data structures, macros, and constants. + */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Map a signal value from 0-15 into an enumerated strength. Since there are + * 5 strengths but 16 values, by convention the "middle" strength gets the + * extra value. Thus, the buckets are 0-2, 3-5, 6-9, 10-12, and 13-15. + */ +#define WLADM_SIGNAL2STRENGTH(signal) \ + (((signal) > 12 ? WLADM_STRENGTH_EXCELLENT : \ + ((signal) > 9 ? WLADM_STRENGTH_VERY_GOOD : \ + ((signal) > 5 ? WLADM_STRENGTH_GOOD : \ + ((signal) > 2 ? WLADM_STRENGTH_WEAK : WLADM_STRENGTH_VERY_WEAK))))) + +/* + * Convert between an OFDM MHz and a channel number. + */ +#define WLADM_OFDM2CHAN(mhz) (((mhz) - 5000) / 5) + +#define WLADM_CONNECT_POLLRATE 200000000 /* nanoseconds */ +#define WLADM_CONNECT_DEFAULT_CHANNEL 1 + +#define WLADM_MAX_RATES 4 +typedef struct wladm_rates { + uint8_t wr_rates[WLADM_MAX_RATES]; + int wr_cnt; +} wladm_rates_t; + +typedef enum { + WLADM_RADIO_ON = 1, + WLADM_RADIO_OFF +} wladm_radio_t; + +typedef enum { + WLADM_PM_OFF = 1, + WLADM_PM_MAX, + WLADM_PM_FAST +} wladm_powermode_t; + +#ifdef __cplusplus +} +#endif + +#endif /* _LIBWLADM_IMPL_H */ diff --git a/usr/src/lib/libwladm/common/llib-lwladm b/usr/src/lib/libwladm/common/llib-lwladm new file mode 100644 index 0000000000..1f233e14ec --- /dev/null +++ b/usr/src/lib/libwladm/common/llib-lwladm @@ -0,0 +1,31 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +/*LINTLIBRARY*/ +/*PROTOLIB1*/ + +#include <libwladm.h> diff --git a/usr/src/lib/libwladm/common/mapfile-vers b/usr/src/lib/libwladm/common/mapfile-vers new file mode 100644 index 0000000000..c5f00d22b4 --- /dev/null +++ b/usr/src/lib/libwladm/common/mapfile-vers @@ -0,0 +1,60 @@ +# +# CDDL HEADER START +# +# The contents of this file are subject to the terms of the +# Common Development and Distribution License (the "License"). +# You may not use this file except in compliance with the License. +# +# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE +# or http://www.opensolaris.org/os/licensing. +# See the License for the specific language governing permissions +# and limitations under the License. +# +# When distributing Covered Code, include this CDDL HEADER in each +# file and include the License file at usr/src/OPENSOLARIS.LICENSE. +# If applicable, add the following below this CDDL HEADER, with the +# fields enclosed by brackets "[]" replaced with your own identifying +# information: Portions Copyright [yyyy] [name of copyright owner] +# +# CDDL HEADER END +# +# +# Copyright 2006 Sun Microsystems, Inc. All rights reserved. +# Use is subject to license terms. +# +# ident "%Z%%M% %I% %E% SMI" +# + +SUNWprivate_1.1 { + global: + wladm_scan; + wladm_connect; + wladm_disconnect; + wladm_get_link_attr; + wladm_walk; + wladm_is_valid; + wladm_set_prop; + wladm_walk_prop; + wladm_get_prop; + wladm_essid2str; + wladm_bssid2str; + wladm_secmode2str; + wladm_strength2str; + wladm_mode2str; + wladm_speed2str; + wladm_auth2str; + wladm_bsstype2str; + wladm_linkstatus2str; + wladm_status2str; + wladm_str2essid; + wladm_str2bssid; + wladm_str2secmode; + wladm_str2strength; + wladm_str2mode; + wladm_str2speed; + wladm_str2auth; + wladm_str2bsstype; + wladm_str2linkstatus; + local: + *; +}; diff --git a/usr/src/lib/libwladm/i386/Makefile b/usr/src/lib/libwladm/i386/Makefile new file mode 100644 index 0000000000..a333224278 --- /dev/null +++ b/usr/src/lib/libwladm/i386/Makefile @@ -0,0 +1,30 @@ +# +# CDDL HEADER START +# +# The contents of this file are subject to the terms of the +# Common Development and Distribution License (the "License"). +# You may not use this file except in compliance with the License. +# +# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE +# or http://www.opensolaris.org/os/licensing. +# See the License for the specific language governing permissions +# and limitations under the License. +# +# When distributing Covered Code, include this CDDL HEADER in each +# file and include the License file at usr/src/OPENSOLARIS.LICENSE. +# If applicable, add the following below this CDDL HEADER, with the +# fields enclosed by brackets "[]" replaced with your own identifying +# information: Portions Copyright [yyyy] [name of copyright owner] +# +# CDDL HEADER END +# +# +# Copyright 2006 Sun Microsystems, Inc. All rights reserved. +# Use is subject to license terms. +# +# ident "%Z%%M% %I% %E% SMI" +# + +include ../Makefile.com + +install: all $(ROOTLIBS) $(ROOTLINKS) $(ROOTLINT) diff --git a/usr/src/lib/libwladm/sparc/Makefile b/usr/src/lib/libwladm/sparc/Makefile new file mode 100644 index 0000000000..a333224278 --- /dev/null +++ b/usr/src/lib/libwladm/sparc/Makefile @@ -0,0 +1,30 @@ +# +# CDDL HEADER START +# +# The contents of this file are subject to the terms of the +# Common Development and Distribution License (the "License"). +# You may not use this file except in compliance with the License. +# +# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE +# or http://www.opensolaris.org/os/licensing. +# See the License for the specific language governing permissions +# and limitations under the License. +# +# When distributing Covered Code, include this CDDL HEADER in each +# file and include the License file at usr/src/OPENSOLARIS.LICENSE. +# If applicable, add the following below this CDDL HEADER, with the +# fields enclosed by brackets "[]" replaced with your own identifying +# information: Portions Copyright [yyyy] [name of copyright owner] +# +# CDDL HEADER END +# +# +# Copyright 2006 Sun Microsystems, Inc. All rights reserved. +# Use is subject to license terms. +# +# ident "%Z%%M% %I% %E% SMI" +# + +include ../Makefile.com + +install: all $(ROOTLIBS) $(ROOTLINKS) $(ROOTLINT) diff --git a/usr/src/pkgdefs/SUNW0on/prototype_com b/usr/src/pkgdefs/SUNW0on/prototype_com index f79a1039c7..de4f038c7a 100644 --- a/usr/src/pkgdefs/SUNW0on/prototype_com +++ b/usr/src/pkgdefs/SUNW0on/prototype_com @@ -245,6 +245,7 @@ f none usr/lib/help/auths/locale/SmfValueRouting.html 444 root bin f none usr/lib/help/auths/locale/NetworkHeader.html 444 root bin f none usr/lib/help/auths/locale/WifiConfig.html 444 root bin f none usr/lib/help/auths/locale/WifiWep.html 444 root bin +f none usr/lib/help/auths/locale/LinkSecurity.html 444 root bin d none usr/lib/help/profiles 755 root bin d none usr/lib/help/profiles/locale 755 root bin f none usr/lib/help/profiles/locale/RtAll.html 444 root bin @@ -271,6 +272,7 @@ f none usr/lib/help/profiles/locale/RtNetMngmnt.html 444 root bin f none usr/lib/help/profiles/locale/RtNetSecure.html 444 root bin f none usr/lib/help/profiles/locale/RtNetWifiMngmnt.html 444 root bin f none usr/lib/help/profiles/locale/RtNetWifiSecure.html 444 root bin +f none usr/lib/help/profiles/locale/RtNetLinkSecure.html 444 root bin f none usr/lib/help/profiles/locale/RtObAccessMngmnt.html 444 root bin f none usr/lib/help/profiles/locale/RtProcManagement.html 444 root bin f none usr/lib/help/profiles/locale/RtRightsDelegate.html 444 root bin diff --git a/usr/src/pkgdefs/SUNWatheros/postinstall b/usr/src/pkgdefs/SUNWatheros/postinstall index 44926d9ffc..8b8085dead 100644 --- a/usr/src/pkgdefs/SUNWatheros/postinstall +++ b/usr/src/pkgdefs/SUNWatheros/postinstall @@ -29,7 +29,7 @@ # Driver info DRV=ath -DRVALIAS='"pci168c,13" "pci168c,1014"' +DRVALIAS='"pci168c,13" "pci168c,1014" "pci168c,1a" "pci168c,1b"' BASEDIR=${BASEDIR:-/} diff --git a/usr/src/pkgdefs/SUNWckr/prototype_i386 b/usr/src/pkgdefs/SUNWckr/prototype_i386 index 839daf5e94..19af7c5500 100644 --- a/usr/src/pkgdefs/SUNWckr/prototype_i386 +++ b/usr/src/pkgdefs/SUNWckr/prototype_i386 @@ -149,6 +149,7 @@ f none kernel/ipp/ipgpc 755 root sys d none boot/acpi 755 root sys d none boot/acpi/tables 755 root sys f none kernel/mac/mac_ether 755 root sys +f none kernel/mac/mac_wifi 755 root sys f none kernel/misc/acpica 755 root sys f none kernel/misc/busra 755 root sys f none kernel/misc/cardbus 755 root sys @@ -169,6 +170,7 @@ f none kernel/misc/kmdbmod 755 root sys f none kernel/misc/krtld 755 root sys f none kernel/misc/mac 755 root sys l none kernel/misc/md5=../../kernel/crypto/md5 +f none kernel/misc/net80211 755 root sys f none kernel/misc/neti 755 root sys f none kernel/misc/pcicfg 755 root sys f none kernel/misc/pcihp 755 root sys @@ -324,6 +326,7 @@ d none kernel/ipp/amd64 755 root sys f none kernel/ipp/amd64/ipgpc 755 root sys d none kernel/mac/amd64 755 root sys f none kernel/mac/amd64/mac_ether 755 root sys +f none kernel/mac/amd64/mac_wifi 755 root sys d none kernel/misc/amd64 755 root sys f none kernel/misc/amd64/acpica 755 root sys f none kernel/misc/amd64/busra 755 root sys @@ -344,6 +347,7 @@ f none kernel/misc/amd64/kmdbmod 755 root sys f none kernel/misc/amd64/krtld 755 root sys f none kernel/misc/amd64/mac 755 root sys l none kernel/misc/amd64/md5=../../../kernel/crypto/amd64/md5 +f none kernel/misc/amd64/net80211 755 root sys f none kernel/misc/amd64/neti 755 root sys f none kernel/misc/amd64/pcicfg 755 root sys f none kernel/misc/amd64/pcihp 755 root sys diff --git a/usr/src/pkgdefs/SUNWcnetr/Makefile b/usr/src/pkgdefs/SUNWcnetr/Makefile index 99b31cc824..baa2cd7e90 100644 --- a/usr/src/pkgdefs/SUNWcnetr/Makefile +++ b/usr/src/pkgdefs/SUNWcnetr/Makefile @@ -2,9 +2,8 @@ # CDDL HEADER START # # The contents of this file are subject to the terms of the -# Common Development and Distribution License, Version 1.0 only -# (the "License"). You may not use this file except in compliance -# with the License. +# Common Development and Distribution License (the "License"). +# You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. @@ -20,7 +19,7 @@ # CDDL HEADER END # # -# Copyright 2005 Sun Microsystems, Inc. All rights reserved. +# Copyright 2006 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # ident "%Z%%M% %I% %E% SMI" @@ -32,7 +31,7 @@ DATAFILES += i.ipsecalgsbase i.preserve i.sock2path .KEEP_STATE: -all: $(FILES) +all: $(FILES) postinstall install: all pkg diff --git a/usr/src/pkgdefs/SUNWcnetr/postinstall b/usr/src/pkgdefs/SUNWcnetr/postinstall new file mode 100644 index 0000000000..c3647480b5 --- /dev/null +++ b/usr/src/pkgdefs/SUNWcnetr/postinstall @@ -0,0 +1,32 @@ +# +# CDDL HEADER START +# +# The contents of this file are subject to the terms of the +# Common Development and Distribution License (the "License"). +# You may not use this file except in compliance with the License. +# +# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE +# or http://www.opensolaris.org/os/licensing. +# See the License for the specific language governing permissions +# and limitations under the License. +# +# When distributing Covered Code, include this CDDL HEADER in each +# file and include the License file at usr/src/OPENSOLARIS.LICENSE. +# If applicable, add the following below this CDDL HEADER, with the +# fields enclosed by brackets "[]" replaced with your own identifying +# information: Portions Copyright [yyyy] [name of copyright owner] +# +# CDDL HEADER END +# +# Copyright 2006 Sun Microsystems, Inc. All rights reserved. +# Use is subject to license terms. +# +# ident "%Z%%M% %I% %E% SMI" +# +# Move existing /etc/aggregation.conf entries to /etc/dladm/aggregation.conf +ORIG=$BASEDIR/etc/aggregation.conf +if [ -f $ORIG ]; then + # use cat instead of cp/mv to keep owner+group of dest + cat $ORIG > $BASEDIR/etc/dladm/aggregation.conf + rm -f $ORIG +fi diff --git a/usr/src/pkgdefs/SUNWcnetr/prototype_com b/usr/src/pkgdefs/SUNWcnetr/prototype_com index 636fadd79e..dcaa5efc44 100644 --- a/usr/src/pkgdefs/SUNWcnetr/prototype_com +++ b/usr/src/pkgdefs/SUNWcnetr/prototype_com @@ -2,9 +2,8 @@ # CDDL HEADER START # # The contents of this file are subject to the terms of the -# Common Development and Distribution License, Version 1.0 only -# (the "License"). You may not use this file except in compliance -# with the License. +# Common Development and Distribution License (the "License"). +# You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. @@ -20,7 +19,7 @@ # CDDL HEADER END # # -# Copyright 2005 Sun Microsystems, Inc. All rights reserved. +# Copyright 2006 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # ident "%Z%%M% %I% %E% SMI" @@ -39,6 +38,7 @@ # packaging files i pkginfo i copyright +i postinstall i i.ipsecalgsbase i i.preserve i i.sock2path @@ -48,7 +48,10 @@ i i.sock2path # SUNWcnetr # d none etc 755 root sys -e preserve etc/aggregation.conf 644 root sys +d none etc/dladm 755 dladm sys +e preserve etc/dladm/aggregation.conf 644 dladm sys +e preserve etc/dladm/linkprop.conf 644 dladm sys +e preserve etc/dladm/secobj.conf 600 dladm sys d none etc/default 755 root sys e preserve etc/default/dhcpagent 644 root sys e preserve etc/default/inetinit 644 root sys diff --git a/usr/src/pkgdefs/SUNWcslr/prototype_com b/usr/src/pkgdefs/SUNWcslr/prototype_com index 3e17e0b961..45a9944bc7 100644 --- a/usr/src/pkgdefs/SUNWcslr/prototype_com +++ b/usr/src/pkgdefs/SUNWcslr/prototype_com @@ -151,6 +151,7 @@ f none lib/libtsol.so.2 755 root bin s none lib/libtsol.so=libtsol.so.2 s none lib/libw.so=libw.so.1 f none lib/libw.so.1 755 root bin +f none lib/libwladm.so.1 755 root bin s none lib/libumem.so=libumem.so.1 f none lib/libumem.so.1 0755 root bin s none lib/libuuid.so=libuuid.so.1 diff --git a/usr/src/pkgdefs/SUNWcsu/prototype_com b/usr/src/pkgdefs/SUNWcsu/prototype_com index 00f5b80e1c..213e4c2e73 100644 --- a/usr/src/pkgdefs/SUNWcsu/prototype_com +++ b/usr/src/pkgdefs/SUNWcsu/prototype_com @@ -489,6 +489,7 @@ f none usr/lib/help/auths/locale/C/SysHeader.html 444 root bin f none usr/lib/help/auths/locale/C/SysShutdown.html 444 root bin f none usr/lib/help/auths/locale/C/WifiConfig.html 444 root bin f none usr/lib/help/auths/locale/C/WifiWep.html 444 root bin +f none usr/lib/help/auths/locale/C/LinkSecurity.html 444 root bin d none usr/lib/help/profiles 755 root bin d none usr/lib/help/profiles/locale 755 root bin d none usr/lib/help/profiles/locale/C 755 root bin @@ -520,6 +521,7 @@ f none usr/lib/help/profiles/locale/C/RtNetMngmnt.html 444 root bin f none usr/lib/help/profiles/locale/C/RtNetSecure.html 444 root bin f none usr/lib/help/profiles/locale/C/RtNetWifiMngmnt.html 444 root bin f none usr/lib/help/profiles/locale/C/RtNetWifiSecure.html 444 root bin +f none usr/lib/help/profiles/locale/C/RtNetLinkSecure.html 444 root bin f none usr/lib/help/profiles/locale/C/RtObAccessMngmnt.html 444 root bin f none usr/lib/help/profiles/locale/C/RtPrntAdmin.html 444 root bin f none usr/lib/help/profiles/locale/C/RtProcManagement.html 444 root bin diff --git a/usr/src/pkgdefs/common_files/i.ftpusers b/usr/src/pkgdefs/common_files/i.ftpusers index 2aa3428459..455ff9c3f1 100644 --- a/usr/src/pkgdefs/common_files/i.ftpusers +++ b/usr/src/pkgdefs/common_files/i.ftpusers @@ -3,9 +3,8 @@ # CDDL HEADER START # # The contents of this file are subject to the terms of the -# Common Development and Distribution License, Version 1.0 only -# (the "License"). You may not use this file except in compliance -# with the License. +# Common Development and Distribution License (the "License"). +# You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. @@ -23,7 +22,7 @@ # # ident "%Z%%M% %I% %E% SMI" # -# Copyright 2004 Sun Microsystems, Inc. All rights reserved. +# Copyright 2006 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # This is similar to i.preserve, except we also check if there is a file with @@ -63,7 +62,7 @@ while read src dest; do fi fi fi - for user in smmsp gdm webservd + for user in dladm smmsp gdm webservd do egrep "^$user$|^#[ ]*$user$" $dest >/dev/null 2>&1 || \ echo $user >> $dest diff --git a/usr/src/pkgdefs/common_files/i.minorperm_i386 b/usr/src/pkgdefs/common_files/i.minorperm_i386 index 34df10b4ca..e155849d92 100644 --- a/usr/src/pkgdefs/common_files/i.minorperm_i386 +++ b/usr/src/pkgdefs/common_files/i.minorperm_i386 @@ -104,6 +104,23 @@ lockstat:* 0600 root sys 0644 root sys /dev/dtrace/provider/lockstat profile:profile 0600 root sys 0644 root sys /dev/dtrace/provider/profile sdt:sdt 0600 root sys 0644 root sys /dev/dtrace/provider/sdt systrace:systrace 0600 root sys 0644 root sys /dev/dtrace/provider/systrace +clone:bge 0600 root sys 0666 root sys /dev/bge +clone:rge 0600 root sys 0666 root sys /dev/rge +clone:xge 0600 root sys 0666 root sys /dev/xge +clone:nge 0600 root sys 0666 root sys /dev/nge +clone:chxge 0600 root sys 0666 root sys /dev/chxge +clone:pcn 0600 root sys 0666 root sys /dev/pcn +clone:rtls 0600 root sys 0666 root sys /dev/rtls +clone:ath 0600 root sys 0666 root sys /dev/ath +bge:* 0600 root sys 0666 root sys /dev/bge* +rge:* 0600 root sys 0666 root sys /dev/rge* +xge:* 0600 root sys 0666 root sys /dev/xge* +nge:* 0600 root sys 0666 root sys /dev/nge* +e1000g:* 0666 root root 0666 root sys /dev/e1000g* +chxge:* 0600 root sys 0666 root sys /dev/chxge* +pcn:* 0600 root sys 0666 root sys /dev/pcn* +rtls:* 0600 root sys 0666 root sys /dev/rtls* +ath:* 0600 root sys 0666 root sys /dev/ath* EOF } @@ -220,7 +237,23 @@ sctp6:* vni:* cpuid:self clone:bge +clone:rge +clone:xge +clone:nge +clone:e1000g +clone:chxge +clone:pcn +clone:rtls +clone:ath bge:* +rge:* +xge:* +nge:* +e1000g:* +chxge:* +pcn:* +rtls:* +ath:* bmc:bmc dld:* aggr:* diff --git a/usr/src/pkgdefs/common_files/i.minorperm_sparc b/usr/src/pkgdefs/common_files/i.minorperm_sparc index 345689d556..7acc7636aa 100644 --- a/usr/src/pkgdefs/common_files/i.minorperm_sparc +++ b/usr/src/pkgdefs/common_files/i.minorperm_sparc @@ -96,7 +96,21 @@ clone:hme 0600 root sys 0666 root sys /dev/hme clone:le 0600 root sys 0666 root sys /dev/le clone:qfe 0600 root sys 0666 root sys /dev/qfe clone:bge 0600 root sys 0666 root sys /dev/bge +clone:rge 0600 root sys 0666 root sys /dev/rge +clone:xge 0600 root sys 0666 root sys /dev/xge +clone:nge 0600 root sys 0666 root sys /dev/nge +clone:e1000g 0666 root root 0666 root sys /dev/e1000g +clone:chxge 0600 root sys 0666 root sys /dev/chxge +clone:vsw 0600 root sys 0666 root sys /dev/vsw +clone:vnet 0600 root sys 0666 root sys /dev/vnet bge:* 0600 root sys 0666 root sys /dev/bge* +rge:* 0600 root sys 0666 root sys /dev/rge* +xge:* 0600 root sys 0666 root sys /dev/xge* +nge:* 0600 root sys 0666 root sys /dev/nge* +e1000g:* 0666 root root 0666 root sys /dev/e1000g* +chxge:* 0600 root sys 0666 root sys /dev/chxge* +vsw:* 0600 root sys 0666 root sys /dev/vsw* +vnet:* 0600 root sys 0666 root sys /dev/vnet* clone:dmfe 0600 root sys 0666 root sys /dev/dmfe dmfe:* 0600 root sys 0666 root sys /dev/dmfe* clone:pcelx 0600 root sys 0666 root sys /dev/pcelx @@ -251,7 +265,21 @@ mm:allkmem ssm:* bscv:* clone:bge +clone:rge +clone:xge +clone:nge +clone:e1000g +clone:chxge +clone:vsw +clone:vnet bge:* +rge:* +xge:* +nge:* +e1000g:* +chxge:* +vsw:* +vnet:* clone:dmfe dmfe:* clone:pcelx diff --git a/usr/src/pkgdefs/common_files/i.passwd b/usr/src/pkgdefs/common_files/i.passwd index 8262a94efe..5653e7bf60 100644 --- a/usr/src/pkgdefs/common_files/i.passwd +++ b/usr/src/pkgdefs/common_files/i.passwd @@ -3,9 +3,8 @@ # CDDL HEADER START # # The contents of this file are subject to the terms of the -# Common Development and Distribution License, Version 1.0 only -# (the "License"). You may not use this file except in compliance -# with the License. +# Common Development and Distribution License (the "License"). +# You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. @@ -129,6 +128,21 @@ do printf '/^webservd:x\na\n%s\n.\nw\nq\n' \ "$POSTGRES_LIN" | ed -s $dest > /dev/null fi + + # + # Add the 'dladm' user if it doesn't exist. + # + DLADM_LIN="dladm:x:15:3:Datalink Admin:/:" + cur_name=`awk -F: '$3 == 15 { print $1 }' $dest` + if [ ! -z "$cur_name" -a "$cur_name" != "dladm" ]; then + echo "ERROR: Reserved UID 15 already assigned" \ + "to '$cur_name'" >> /tmp/CLEANUP + elif grep "$DLADM_LIN" $dest 2>&1 >/dev/null; then + : + else + printf '/^nuucp:x\na\n%s\n.\nw\nq\n' \ + "$DLADM_LIN" | ed -s $dest > /dev/null + fi fi done diff --git a/usr/src/pkgdefs/common_files/i.shadow b/usr/src/pkgdefs/common_files/i.shadow index e135e9aa2f..966fe9901b 100644 --- a/usr/src/pkgdefs/common_files/i.shadow +++ b/usr/src/pkgdefs/common_files/i.shadow @@ -3,9 +3,8 @@ # CDDL HEADER START # # The contents of this file are subject to the terms of the -# Common Development and Distribution License, Version 1.0 only -# (the "License"). You may not use this file except in compliance -# with the License. +# Common Development and Distribution License (the "License"). +# You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. @@ -103,6 +102,17 @@ do printf '/^webservd:\*LK\*\na\n%s\n.\nw\nq\n' \ "$POSTGRES_LINE" | ed -s $dest > /dev/null fi + + # + # Add the 'dladm' reserved user if it doesn't exist. + # + DLADM_LINE="dladm:*LK*:::::::" + if grep "^dladm:" $dest 2>&1 >/dev/null; then + : + else + printf '/^nuucp:NP\na\n%s\n.\nw\nq\n' \ + "$DLADM_LINE" | ed -s $dest > /dev/null + fi fi done diff --git a/usr/src/pkgdefs/etc/exception_list_i386 b/usr/src/pkgdefs/etc/exception_list_i386 index 779dba9f21..6fab12f345 100644 --- a/usr/src/pkgdefs/etc/exception_list_i386 +++ b/usr/src/pkgdefs/etc/exception_list_i386 @@ -80,30 +80,35 @@ usr/lib/libdhcpsvc.so i386 # # Private MAC driver header files # -usr/include/sys/aggr.h i386 -usr/include/sys/aggr_impl.h i386 -usr/include/sys/dld.h i386 -usr/include/sys/dld_impl.h i386 -usr/include/sys/dls.h i386 -usr/include/sys/dls_impl.h i386 -usr/include/sys/mac.h i386 -usr/include/sys/mac_impl.h i386 -usr/include/libdladm.h i386 -usr/include/liblaadm.h i386 -usr/include/libmacadm.h i386 -# -# These files are installed in the proto area for -# Solaris MAC drivers and should not be shipped -# -lib/libdladm.so i386 -lib/liblaadm.so i386 -lib/libmacadm.so i386 -lib/llib-ldladm.ln i386 -lib/llib-ldladm i386 -lib/llib-llaadm.ln i386 -lib/llib-llaadm i386 -lib/llib-lmacadm.ln i386 -lib/llib-lmacadm i386 +usr/include/sys/aggr.h i386 +usr/include/sys/aggr_impl.h i386 +usr/include/sys/dld.h i386 +usr/include/sys/dld_impl.h i386 +usr/include/sys/dls.h i386 +usr/include/sys/dls_impl.h i386 +usr/include/sys/mac.h i386 +usr/include/sys/mac_impl.h i386 +# +# Private GLDv3 userland libraries and headers +# +usr/include/libdladm.h i386 +usr/include/libdladm_impl.h i386 +usr/include/liblaadm.h i386 +usr/include/libmacadm.h i386 +usr/include/libwladm.h i386 +usr/include/libwladm_impl.h i386 +lib/libdladm.so i386 +lib/liblaadm.so i386 +lib/libmacadm.so i386 +lib/libwladm.so i386 +lib/llib-ldladm.ln i386 +lib/llib-ldladm i386 +lib/llib-llaadm.ln i386 +lib/llib-llaadm i386 +lib/llib-lmacadm.ln i386 +lib/llib-lmacadm i386 +lib/llib-lwladm.ln i386 +lib/llib-lwladm i386 # # Installed in the proto area for building utilties dependent on # it, but is not shipped. diff --git a/usr/src/pkgdefs/etc/exception_list_sparc b/usr/src/pkgdefs/etc/exception_list_sparc index 4ad8930627..1b7af2c88a 100644 --- a/usr/src/pkgdefs/etc/exception_list_sparc +++ b/usr/src/pkgdefs/etc/exception_list_sparc @@ -77,22 +77,27 @@ usr/include/sys/dls.h sparc usr/include/sys/dls_impl.h sparc usr/include/sys/mac.h sparc usr/include/sys/mac_impl.h sparc -usr/include/libdladm.h sparc -usr/include/liblaadm.h sparc -usr/include/libmacadm.h sparc -# -# These files are installed in the proto area for -# Solaris MAC drivers and should not be shipped -# -lib/libdladm.so sparc -lib/liblaadm.so sparc -lib/libmacadm.so sparc -lib/llib-ldladm.ln sparc -lib/llib-ldladm sparc -lib/llib-llaadm.ln sparc -lib/llib-llaadm sparc -lib/llib-lmacadm.ln sparc -lib/llib-lmacadm sparc +# +# Private GLDv3 userland libraries and headers +# +usr/include/libdladm.h sparc +usr/include/libdladm_impl.h sparc +usr/include/liblaadm.h sparc +usr/include/libmacadm.h sparc +usr/include/libwladm.h sparc +usr/include/libwladm_impl.h sparc +lib/libdladm.so sparc +lib/liblaadm.so sparc +lib/libmacadm.so sparc +lib/libwladm.so sparc +lib/llib-ldladm.ln sparc +lib/llib-ldladm sparc +lib/llib-llaadm.ln sparc +lib/llib-llaadm sparc +lib/llib-lmacadm.ln sparc +lib/llib-lmacadm sparc +lib/llib-lwladm.ln sparc +lib/llib-lwladm sparc # # Installed in the proto area for building those things # that are dependent on it. No delivered as part of a pkg. diff --git a/usr/src/tools/scripts/bfu.sh b/usr/src/tools/scripts/bfu.sh index 85a6406488..2dec0c1bc0 100644 --- a/usr/src/tools/scripts/bfu.sh +++ b/usr/src/tools/scripts/bfu.sh @@ -1909,6 +1909,7 @@ multiboot_archives=no dca_to_multi=no is_pcfs_boot=no need_datalink=no +new_dladm=no test $# -ge 1 || usage @@ -2130,6 +2131,15 @@ if $ZCAT $cpiodir/generic.root$ZFIX | cpio -it 2>/dev/null | \ need_datalink=yes fi +# +# Check whether the archives have an etc/dladm directory; this is +# later used to determine if aggregation.conf needs to be moved. +# +if $ZCAT $cpiodir/generic.root$ZFIX | cpio -it 2>/dev/null | \ + grep etc/dladm > /dev/null 2>&1 ; then + new_dladm=yes +fi + time_ref=/tmp/bfu.time_ref.$$ rm -f $time_ref touch $time_ref || fail "$time_ref: Unable to create time reference." @@ -6295,6 +6305,25 @@ mondo_loop() { create_datalink_conf fi + # Move existing /etc/aggregation.conf entries to + # /etc/dladm/aggregation.conf; or, if bfu'ing + # backwards, move aggregation.conf back to /etc + aggr_old=$rootprefix/etc/aggregation.conf + aggr_new=$rootprefix/etc/dladm/aggregation.conf + if [ $new_dladm = yes ]; then + if [ -f $aggr_old ]; then + # use cat instead of cp/mv to keep owner+group of dest + cat $aggr_old > $aggr_new + rm -f $aggr_old + fi + else + if [ -f $aggr_new ]; then + cp $aggr_new $aggr_old + chgrp sys $aggr_old + rm -rf $rootprefix/etc/dladm + fi + fi + print "\nRestoring configuration files.\n" cd $root diff --git a/usr/src/uts/common/Makefile.files b/usr/src/uts/common/Makefile.files index e8dc6b6f60..1aceb671ad 100644 --- a/usr/src/uts/common/Makefile.files +++ b/usr/src/uts/common/Makefile.files @@ -530,9 +530,15 @@ MAC_OBJS += mac.o mac_mod.o mac_stat.o MAC_ETHER_OBJS += mac_ether.o +MAC_WIFI_OBJS += mac_wifi.o + AGGR_OBJS += aggr_dev.o aggr_ctl.o aggr_grp.o aggr_port.o \ aggr_send.o aggr_recv.o aggr_lacp.o +NET80211_OBJS += net80211.o net80211_proto.o net80211_input.o net80211_output.o \ + net80211_node.o net80211_crypto.o net80211_crypto_none.o \ + net80211_crypto_wep.o net80211_ioctl.o + IB_OBJS += ibnex.o ibnex_ioctl.o IBCM_OBJS += ibcm_impl.o ibcm_sm.o ibcm_ti.o ibcm_utils.o ibcm_path.o @@ -1272,8 +1278,7 @@ IXGB_OBJS += ixgb.o ixgb_atomic.o ixgb_chip.o ixgb_gld.o ixgb_kstats.o \ RGE_OBJS += rge_main.o rge_chip.o rge_ndd.o rge_kstats.o rge_log.o rge_rxtx.o -ATH_OBJS += ath_aux.o ath_ieee80211.o ath_main.o ath_osdep.o \ - ath_rate.o ath_wificonfig.o +ATH_OBJS += ath_aux.o ath_main.o ath_osdep.o ath_rate.o # # Build up defines and paths. diff --git a/usr/src/uts/common/Makefile.rules b/usr/src/uts/common/Makefile.rules index 64994fabb1..d7df9cb760 100644 --- a/usr/src/uts/common/Makefile.rules +++ b/usr/src/uts/common/Makefile.rules @@ -583,6 +583,10 @@ $(OBJS_DIR)/%.o: $(UTSBASE)/common/io/mac/plugins/%.c $(COMPILE.c) -o $@ $< $(CTFCONVERT_O) +$(OBJS_DIR)/%.o: $(UTSBASE)/common/io/net80211/%.c + $(COMPILE.c) -o $@ $< + $(CTFCONVERT_O) + $(OBJS_DIR)/%.o: $(UTSBASE)/common/io/pci-ide/%.c $(COMPILE.c) -o $@ $< $(CTFCONVERT_O) @@ -1297,6 +1301,9 @@ $(LINTS_DIR)/%.ln: $(UTSBASE)/common/io/mac/%.c $(LINTS_DIR)/%.ln: $(UTSBASE)/common/io/mac/plugins/%.c @($(LHEAD) $(LINT.c) $< $(LTAIL)) +$(LINTS_DIR)/%.ln: $(UTSBASE)/common/io/net80211/%.c + @($(LHEAD) $(LINT.c) $< $(LTAIL)) + $(LINTS_DIR)/%.ln: $(UTSBASE)/common/io/pci-ide/%.c @($(LHEAD) $(LINT.c) $< $(LTAIL)) diff --git a/usr/src/uts/common/io/aggr/aggr_port.c b/usr/src/uts/common/io/aggr/aggr_port.c index 4c188a0583..3d2fb3c0de 100644 --- a/usr/src/uts/common/io/aggr/aggr_port.c +++ b/usr/src/uts/common/io/aggr/aggr_port.c @@ -134,7 +134,7 @@ aggr_port_create(const char *name, aggr_port_t **pp) return (err); mip = mac_info(mh); - if (mip->mi_media != DL_ETHER) { + if (mip->mi_media != DL_ETHER || mip->mi_nativemedia != DL_ETHER) { mac_close(mh); return (EINVAL); } diff --git a/usr/src/uts/common/io/ath/ath_aux.c b/usr/src/uts/common/io/ath/ath_aux.c index fb119a22af..7ef30ab1b6 100644 --- a/usr/src/uts/common/io/ath/ath_aux.c +++ b/usr/src/uts/common/io/ath/ath_aux.c @@ -1,5 +1,5 @@ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -70,7 +70,6 @@ #include <inet/wifi_ioctl.h> #include "ath_hal.h" #include "ath_impl.h" -#include "ath_ieee80211.h" static const char *acnames[] = { "WME_AC_BE", @@ -85,20 +84,20 @@ extern void ath_setup_desc(ath_t *asc, struct ath_buf *bf); uint32_t ath_calcrxfilter(ath_t *asc) { - ieee80211com_t *isc = (ieee80211com_t *)asc; + ieee80211com_t *ic = (ieee80211com_t *)asc; struct ath_hal *ah = asc->asc_ah; uint32_t rfilt; rfilt = (ATH_HAL_GETRXFILTER(ah) & HAL_RX_FILTER_PHYERR) | HAL_RX_FILTER_UCAST | HAL_RX_FILTER_BCAST | HAL_RX_FILTER_MCAST; - if (isc->isc_opmode != IEEE80211_M_STA) + if (ic->ic_opmode != IEEE80211_M_STA) rfilt |= HAL_RX_FILTER_PROBEREQ; - if (isc->isc_opmode != IEEE80211_M_HOSTAP && + if (ic->ic_opmode != IEEE80211_M_HOSTAP && (asc->asc_promisc & GLD_MAC_PROMISC_PHYS)) /* promiscuous */ rfilt |= HAL_RX_FILTER_PROM; - if (isc->isc_opmode == IEEE80211_M_STA || - isc->isc_opmode == IEEE80211_M_IBSS || - isc->isc_state == IEEE80211_S_SCAN) + if (ic->ic_opmode == IEEE80211_M_STA || + ic->ic_opmode == IEEE80211_M_IBSS || + ic->ic_state == IEEE80211_S_SCAN) rfilt |= HAL_RX_FILTER_BEACON; return (rfilt); } @@ -131,7 +130,7 @@ ath_set_data_queue(ath_t *asc, int ac, int haltype) * up in which case the top half of the kernel may backup * due to a lack of tx descriptors. */ - qi.tqi_qflags = TXQ_FLAG_TXEOLINT_ENABLE | TXQ_FLAG_TXDESCINT_ENABLE; + qi.tqi_qflags = HAL_TXQ_TXEOLINT_ENABLE | HAL_TXQ_TXDESCINT_ENABLE; qnum = ATH_HAL_SETUPTXQUEUE(ah, HAL_TX_QUEUE_DATA, &qi); if (qnum == -1) { ATH_DEBUG((ATH_DBG_AUX, "ath: ath_set_data_queue(): " @@ -174,6 +173,23 @@ ath_txq_setup(ath_t *asc) } void +ath_txq_cleanup(ath_t *asc) +{ + int i; + + mutex_destroy(&asc->asc_txbuflock); + for (i = 0; i < HAL_NUM_TX_QUEUES; i++) { + if (ATH_TXQ_SETUP(asc, i)) { + struct ath_txq *txq = &asc->asc_txq[i]; + + ATH_HAL_RELEASETXQUEUE(asc->asc_ah, txq->axq_qnum); + mutex_destroy(&txq->axq_lock); + asc->asc_txqsetup &= ~(1 << txq->axq_qnum); + } + } +} + +void ath_setcurmode(ath_t *asc, enum ieee80211_phymode mode) { const HAL_RATE_TABLE *rt; @@ -196,7 +212,7 @@ ath_setcurmode(ath_t *asc, enum ieee80211_phymode mode) void ath_mode_init(ath_t *asc) { - ieee80211com_t *isc = (ieee80211com_t *)asc; + ieee80211com_t *ic = (ieee80211com_t *)asc; struct ath_hal *ah = asc->asc_ah; uint32_t rfilt; @@ -207,7 +223,7 @@ ath_mode_init(ath_t *asc) ATH_HAL_SETMCASTFILTER(ah, asc->asc_mfilt[0], asc->asc_mfilt[1]); ATH_DEBUG((ATH_DBG_AUX, "ath: ath_mode_init(): " "mode =%d RX filter 0x%x, MC filter %08x:%08x\n", - isc->isc_opmode, rfilt, + ic->ic_opmode, rfilt, asc->asc_mfilt[0], asc->asc_mfilt[1])); } @@ -229,14 +245,16 @@ ath_stoprecv(ath_t *asc) } uint32_t -ath_chan2flags(ieee80211com_t *isc, struct ieee80211channel *chan) +ath_chan2flags(ieee80211com_t *isc, struct ieee80211_channel *chan) { static const uint32_t modeflags[] = { 0, /* IEEE80211_MODE_AUTO */ CHANNEL_A, /* IEEE80211_MODE_11A */ CHANNEL_B, /* IEEE80211_MODE_11B */ CHANNEL_PUREG, /* IEEE80211_MODE_11G */ - CHANNEL_T /* IEEE80211_MODE_TURBO */ + 0, /* IEEE80211_MODE_FH */ + CHANNEL_108A, /* IEEE80211_MODE_TURBO_A */ + CHANNEL_108G /* IEEE80211_MODE_TURBO_G */ }; return (modeflags[ieee80211_chan2mode(isc, chan)]); } @@ -245,7 +263,7 @@ ath_chan2flags(ieee80211com_t *isc, struct ieee80211channel *chan) int ath_getchannels(ath_t *asc, uint32_t cc, HAL_BOOL outdoor, HAL_BOOL xchanmode) { - ieee80211com_t *isc = (ieee80211com_t *)asc; + ieee80211com_t *ic = (ieee80211com_t *)asc; struct ath_hal *ah = asc->asc_ah; HAL_CHANNEL *chans; int i, ix; @@ -255,7 +273,7 @@ ath_getchannels(ath_t *asc, uint32_t cc, HAL_BOOL outdoor, HAL_BOOL xchanmode) kmem_zalloc(IEEE80211_CHAN_MAX * sizeof (HAL_CHANNEL), KM_SLEEP); if (!ath_hal_init_channels(ah, chans, IEEE80211_CHAN_MAX, &nchan, - cc, HAL_MODE_ALL, outdoor, xchanmode)) { + NULL, 0, NULL, cc, HAL_MODE_ALL, outdoor, xchanmode)) { ATH_DEBUG((ATH_DBG_AUX, "ath: ath_getchannels(): " "unable to get channel list\n"); kmem_free(chans, IEEE80211_CHAN_MAX * sizeof (HAL_CHANNEL))); @@ -268,20 +286,41 @@ ath_getchannels(ath_t *asc, uint32_t cc, HAL_BOOL outdoor, HAL_BOOL xchanmode) */ for (i = 0; i < nchan; i++) { HAL_CHANNEL *c = &chans[i]; - ix = ath_hal_mhz2ieee(c->channel, c->channelFlags); + uint16_t flags; + ix = ath_hal_mhz2ieee(ah, c->channel, c->channelFlags); if (ix > IEEE80211_CHAN_MAX) { ATH_DEBUG((ATH_DBG_AUX, "ath: ath_getchannels(): " - "bad hal channel %u (%u/%x) ignored\n", + "bad hal channel %d (%u/%x) ignored\n", ix, c->channel, c->channelFlags)); continue; } /* NB: flags are known to be compatible */ - if (isc->isc_channels[ix].ich_freq == 0) { - isc->isc_channels[ix].ich_freq = c->channel; - isc->isc_channels[ix].ich_flags = c->channelFlags; + if (ix < 0) { + /* + * can't handle frequency <2400MHz (negative + * channels) right now + */ + ATH_DEBUG((ATH_DBG_AUX, "ath:ath_getchannels(): " + "hal channel %d (%u/%x) " + "cannot be handled, ignored\n", + ix, c->channel, c->channelFlags)); + continue; + } + /* + * Calculate net80211 flags; most are compatible + * but some need massaging. Note the static turbo + * conversion can be removed once net80211 is updated + * to understand static vs. dynamic turbo. + */ + flags = c->channelFlags & CHANNEL_COMPAT; + if (c->channelFlags & CHANNEL_STURBO) + flags |= IEEE80211_CHAN_TURBO; + if (ic->ic_sup_channels[ix].ich_freq == 0) { + ic->ic_sup_channels[ix].ich_freq = c->channel; + ic->ic_sup_channels[ix].ich_flags = flags; } else { /* channels overlap; e.g. 11g and 11b */ - isc->isc_channels[ix].ich_flags |= c->channelFlags; + ic->ic_sup_channels[ix].ich_flags |= flags; } if ((c->channelFlags & CHANNEL_G) == CHANNEL_G) asc->asc_have11g = 1; @@ -365,20 +404,37 @@ ath_startrecv(ath_t *asc) } /* + * Update internal state after a channel change. + */ +void +ath_chan_change(ath_t *asc, struct ieee80211_channel *chan) +{ + struct ieee80211com *ic = &asc->asc_isc; + enum ieee80211_phymode mode; + + /* + * Change channels and update the h/w rate map + * if we're switching; e.g. 11a to 11b/g. + */ + mode = ieee80211_chan2mode(ic, chan); + if (mode != asc->asc_curmode) + ath_setcurmode(asc, mode); +} + +/* * Set/change channels. If the channel is really being changed, * it's done by resetting the chip. To accomplish this we must * first cleanup any pending DMA. */ int -ath_chan_set(ath_t *asc, struct ieee80211channel *chan) +ath_chan_set(ath_t *asc, struct ieee80211_channel *chan) { struct ath_hal *ah = asc->asc_ah; - ieee80211com_t *isc = &asc->asc_isc; + ieee80211com_t *ic = &asc->asc_isc; - if (chan != isc->isc_ibss_chan) { + if (chan != ic->ic_ibss_chan) { HAL_STATUS status; HAL_CHANNEL hchan; - enum ieee80211_phymode mode; /* * To switch channels clear any pending DMA operations; @@ -395,14 +451,15 @@ ath_chan_set(ath_t *asc, struct ieee80211channel *chan) * operating mode. */ hchan.channel = chan->ich_freq; - hchan.channelFlags = ath_chan2flags(isc, chan); - if (!ATH_HAL_RESET(ah, (HAL_OPMODE)isc->isc_opmode, + hchan.channelFlags = ath_chan2flags(ic, chan); + if (!ATH_HAL_RESET(ah, (HAL_OPMODE)ic->ic_opmode, &hchan, AH_TRUE, &status)) { ATH_DEBUG((ATH_DBG_AUX, "ath: ath_chan_set():" "unable to reset channel %u (%uMhz)\n", - ieee80211_chan2ieee(isc, chan), chan->ich_freq)); + ieee80211_chan2ieee(ic, chan), chan->ich_freq)); return (EIO); } + asc->asc_curchan = hchan; /* * Re-enable rx framework. @@ -417,10 +474,8 @@ ath_chan_set(ath_t *asc, struct ieee80211channel *chan) * Change channels and update the h/w rate map * if we're switching; e.g. 11a to 11b/g. */ - isc->isc_ibss_chan = chan; - mode = ieee80211_chan2mode(isc, chan); - if (mode != asc->asc_curmode) - ath_setcurmode(asc, mode); + ic->ic_ibss_chan = chan; + ath_chan_change(asc, chan); /* * Re-enable interrupts. */ @@ -449,16 +504,15 @@ void ath_beacon_config(ath_t *asc) { struct ath_hal *ah = asc->asc_ah; - ieee80211com_t *isc = (ieee80211com_t *)asc; - struct ieee80211_node *in = isc->isc_bss; + ieee80211com_t *ic = (ieee80211com_t *)asc; + struct ieee80211_node *in = ic->ic_bss; uint32_t nexttbtt; - nexttbtt = (ATH_LE_READ_4(in->in_tstamp + 4) << 22) | - (ATH_LE_READ_4(in->in_tstamp) >> 10); + nexttbtt = (ATH_LE_READ_4(in->in_tstamp.data + 4) << 22) | + (ATH_LE_READ_4(in->in_tstamp.data) >> 10); nexttbtt += in->in_intval; - if (isc->isc_opmode != IEEE80211_M_HOSTAP) { + if (ic->ic_opmode != IEEE80211_M_HOSTAP) { HAL_BEACON_STATE bs; - uint32_t bmisstime; /* NB: no PCF support right now */ bzero(&bs, sizeof (bs)); @@ -468,14 +522,11 @@ ath_beacon_config(ath_t *asc) bs.bs_nextdtim = nexttbtt; /* - * Calculate the number of consecutive beacons to miss - * before taking a BMISS interrupt. The configuration - * is specified in ms, so we need to convert that to - * TU's and then calculate based on the beacon interval. + * Setup the number of consecutive beacons to miss + * before taking a BMISS interrupt. * Note that we clamp the result to at most 10 beacons. */ - bmisstime = (isc->isc_bmisstimeout * 1000) / 1024; - bs.bs_bmissthreshold = howmany(bmisstime, in->in_intval); + bs.bs_bmissthreshold = ic->ic_bmissthreshold; if (bs.bs_bmissthreshold > 10) bs.bs_bmissthreshold = 10; else if (bs.bs_bmissthreshold <= 0) @@ -521,52 +572,93 @@ ath_beacon_config(ath_t *asc) } } +/* + * Allocate one or more key cache slots for a unicast key. The + * key itself is needed only to identify the cipher. For hardware + * TKIP with split cipher+MIC keys we allocate two key cache slot + * pairs so that we can setup separate TX and RX MIC keys. Note + * that the MIC key for a TKIP key at slot i is assumed by the + * hardware to be at slot i+64. This limits TKIP keys to the first + * 64 entries. + */ +/* ARGSUSED */ +int +ath_key_alloc(ieee80211com_t *ic, const struct ieee80211_key *k, + ieee80211_keyix *keyix, ieee80211_keyix *rxkeyix) +{ + *keyix = *rxkeyix = 0; + return (1); +} + +int +ath_key_delete(ieee80211com_t *ic, const struct ieee80211_key *k) +{ + struct ath_hal *ah = ((ath_t *)ic)->asc_ah; + ATH_HAL_KEYRESET(ah, k->wk_keyix); + return (1); +} /* - * Fill the hardware key cache with key entries. + * Set the key cache contents for the specified key. Key cache + * slot(s) must already have been allocated by ath_key_alloc. */ -void -ath_initkeytable(ath_t *asc) +int +ath_key_set(ieee80211com_t *ic, const struct ieee80211_key *k, + const uint8_t mac[IEEE80211_ADDR_LEN]) { - ieee80211com_t *isc = (ieee80211com_t *)asc; + static const uint8_t ciphermap[] = { + HAL_CIPHER_WEP, /* IEEE80211_CIPHER_WEP */ + HAL_CIPHER_TKIP, /* IEEE80211_CIPHER_TKIP */ + HAL_CIPHER_AES_OCB, /* IEEE80211_CIPHER_AES_OCB */ + HAL_CIPHER_AES_CCM, /* IEEE80211_CIPHER_AES_CCM */ + (uint8_t)-1, /* 4 is not allocated */ + HAL_CIPHER_CKIP, /* IEEE80211_CIPHER_CKIP */ + HAL_CIPHER_CLR, /* IEEE80211_CIPHER_NONE */ + }; + ath_t *asc = (ath_t *)ic; struct ath_hal *ah = asc->asc_ah; - int32_t i; - - for (i = 0; i < IEEE80211_WEP_NKID; i++) { - struct ieee80211_wepkey *k = &isc->isc_nw_keys[i]; - if (k->iwk_len == 0) - ATH_HAL_KEYRESET(ah, i); - else { - HAL_KEYVAL hk; - -#ifdef DEBUG - char tmp[200], stmp[10]; - int j; - bzero(tmp, 200); - bzero(stmp, 10); - for (j = 0; j < k->iwk_len; j++) { - (void) sprintf(stmp, "0x%02x ", k->iwk_key[j]); - (void) strcat(tmp, stmp); - } - ATH_DEBUG((ATH_DBG_AUX, "ath: ath_initkeytable(): " - "key%d val=%s\n", i, tmp)); -#endif /* DEBUG */ - bzero(&hk, sizeof (hk)); - hk.kv_type = HAL_CIPHER_WEP; - hk.kv_len = k->iwk_len; - bcopy(k->iwk_key, hk.kv_val, k->iwk_len); - ATH_HAL_KEYSET(ah, i, &hk); - } + const struct ieee80211_cipher *cip = k->wk_cipher; + HAL_KEYVAL hk; + + bzero(&hk, sizeof (hk)); + /* + * Software crypto uses a "clear key" so non-crypto + * state kept in the key cache are maintainedd so that + * rx frames have an entry to match. + */ + if ((k->wk_flags & IEEE80211_KEY_SWCRYPT) == 0) { + ASSERT(cip->ic_cipher < ATH_N(ciphermap)); + hk.kv_type = ciphermap[cip->ic_cipher]; + hk.kv_len = k->wk_keylen; + bcopy(k->wk_key, hk.kv_val, k->wk_keylen); + } else { + hk.kv_type = HAL_CIPHER_CLR; } + + return (ATH_HAL_KEYSET(ah, k->wk_keyix, &hk, mac)); } +/* + * Enable/Disable short slot timing + */ void -ath_reset(ath_t *asc) +ath_set_shortslot(ieee80211com_t *ic, int onoff) { - ieee80211com_t *isc = (ieee80211com_t *)asc; + struct ath_hal *ah = ((ath_t *)ic)->asc_ah; + + if (onoff) + ATH_HAL_SETSLOTTIME(ah, HAL_SLOT_TIME_9); + else + ATH_HAL_SETSLOTTIME(ah, HAL_SLOT_TIME_20); +} + +int +ath_reset(ieee80211com_t *ic) +{ + ath_t *asc = (ath_t *)ic; struct ath_hal *ah = asc->asc_ah; - struct ieee80211channel *ch; + struct ieee80211_channel *ch; HAL_STATUS status; HAL_CHANNEL hchan; @@ -574,28 +666,31 @@ ath_reset(ath_t *asc) * Convert to a HAL channel description with the flags * constrained to reflect the current operating mode. */ - ch = isc->isc_ibss_chan; - hchan.channel = ch->ich_freq; - hchan.channelFlags = ath_chan2flags(isc, ch); + ch = ic->ic_curchan; + asc->asc_curchan.channel = ch->ich_freq; + asc->asc_curchan.channelFlags = ath_chan2flags(ic, ch); ATH_HAL_INTRSET(ah, 0); /* disable interrupts */ ath_draintxq(asc); /* stop xmit side */ - if (asc->asc_invalid == 0) + if (ATH_IS_RUNNING(asc)) { ath_stoprecv(asc); /* stop recv side */ - /* indicate channel change so we do a full reset */ - if (!ATH_HAL_RESET(ah, (HAL_OPMODE)isc->isc_opmode, &hchan, - AH_TRUE, &status)) { - ath_problem("ath: ath_reset(): " - "reseting hardware failed, HAL status %u\n", status); + /* indicate channel change so we do a full reset */ + if (!ATH_HAL_RESET(ah, (HAL_OPMODE)ic->ic_opmode, &hchan, + AH_TRUE, &status)) { + ath_problem("ath: ath_reset(): " + "resetting hardware failed, HAL status %u\n", + status); + } + ath_chan_change(asc, ch); } - if (asc->asc_invalid == 0) { - ath_initkeytable(asc); + if (ATH_IS_RUNNING(asc)) { if (ath_startrecv(asc) != 0) /* restart recv */ ath_problem("ath: ath_reset(): " "starting receiving logic failed\n"); - if (isc->isc_state == IEEE80211_S_RUN) { + if (ic->ic_state == IEEE80211_S_RUN) { ath_beacon_config(asc); /* restart beacons */ } ATH_HAL_INTRSET(ah, asc->asc_imask); } + return (0); } diff --git a/usr/src/uts/common/io/ath/ath_aux.h b/usr/src/uts/common/io/ath/ath_aux.h index 6641d72429..d4d09b81ca 100644 --- a/usr/src/uts/common/io/ath/ath_aux.h +++ b/usr/src/uts/common/io/ath/ath_aux.h @@ -1,5 +1,5 @@ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -45,25 +45,31 @@ extern "C" { #endif #include "ath_hal.h" -#include "ath_ieee80211.h" #include "ath_impl.h" uint32_t ath_calcrxfilter(ath_t *asc); void ath_beacon_config(ath_t *asc); -void ath_reset(ath_t *asc); +int ath_reset(ieee80211com_t *ic); int32_t ath_startrecv(ath_t *asc); void ath_stoprecv(ath_t *asc); uint32_t ath_chan2flags(ieee80211com_t *isc, - struct ieee80211channel *chan); + struct ieee80211_channel *chan); int32_t ath_getchannels(ath_t *asc, uint32_t cc, HAL_BOOL outdoor, HAL_BOOL xchanmode); -int32_t ath_chan_set(ath_t *asc, struct ieee80211channel *chan); +void ath_chan_change(ath_t *asc, struct ieee80211_channel *chan); +int32_t ath_chan_set(ath_t *asc, struct ieee80211_channel *chan); int ath_txq_setup(ath_t *asc); +void ath_txq_cleanup(ath_t *asc); void ath_rate_setup(ath_t *asc, uint32_t mode); void ath_setcurmode(ath_t *asc, enum ieee80211_phymode mode); void ath_mode_init(ath_t *asc); void ath_draintxq(ath_t *asc); -void ath_initkeytable(ath_t *asc); +int ath_key_alloc(ieee80211com_t *ic, const struct ieee80211_key *k, + ieee80211_keyix *keyix, ieee80211_keyix *rxkeyix); +int ath_key_delete(ieee80211com_t *ic, const struct ieee80211_key *k); +int ath_key_set(ieee80211com_t *ic, const struct ieee80211_key *k, + const uint8_t mac[IEEE80211_ADDR_LEN]); +void ath_set_shortslot(ieee80211com_t *ic, int onoff); #ifdef __cplusplus } diff --git a/usr/src/uts/common/io/ath/ath_hal.h b/usr/src/uts/common/io/ath/ath_hal.h index 59ac8aed84..7e1a3cf0df 100644 --- a/usr/src/uts/common/io/ath/ath_hal.h +++ b/usr/src/uts/common/io/ath/ath_hal.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002-2005 Sam Leffler, Errno Consulting, Atheros + * Copyright (c) 2002-2006 Sam Leffler, Errno Consulting, Atheros * Communications, Inc. All rights reserved. * * Use is subject to license terms. @@ -57,12 +57,12 @@ extern "C" { #endif /* HAL version of this release */ -#define HAL_ABI_VERSION 0x04112900 /* YYMMDDnn */ +#define HAL_ABI_VERSION 0x06052200 /* YYMMDDnn */ /* HAL data type definition */ -typedef void * HAL_SOFTC; -typedef int HAL_BUS_TAG; -typedef void * HAL_BUS_HANDLE; +typedef void * HAL_SOFTC; /* pointer to driver/OS state */ +typedef void * HAL_BUS_TAG; /* opaque bus i/o id tag */ +typedef void * HAL_BUS_HANDLE; /* opaque bus i/o handle */ typedef uint32_t HAL_BUS_ADDR; typedef uint16_t HAL_CTRY_CODE; /* country code */ typedef uint16_t HAL_REG_DOMAIN; /* regulatory domain code */ @@ -84,19 +84,35 @@ typedef uint16_t HAL_REG_DOMAIN; /* regulatory domain code */ #define CHANNEL_PASSIVE 0x0200 /* Only passive scan allowed in the channel */ #define CHANNEL_DYN 0x0400 /* dynamic CCK-OFDM channel */ #define CHANNEL_XR 0x0800 /* XR channel */ -#define CHANNEL_AR 0x8000 /* Software use: radar detected */ +#define CHANNEL_STURBO 0x2000 /* Static turbo, no 11a-only usage */ +#define CHANNEL_HALF 0x4000 /* Half rate channel */ +#define CHANNEL_QUARTER 0x8000 /* Quarter rate channel */ #define CHANNEL_A (CHANNEL_5GHZ|CHANNEL_OFDM) #define CHANNEL_B (CHANNEL_2GHZ|CHANNEL_CCK) #define CHANNEL_PUREG (CHANNEL_2GHZ|CHANNEL_OFDM) #define CHANNEL_G (CHANNEL_2GHZ|CHANNEL_OFDM) #define CHANNEL_T (CHANNEL_5GHZ|CHANNEL_OFDM|CHANNEL_TURBO) +#define CHANNEL_ST (CHANNEL_T|CHANNEL_STURBO) #define CHANNEL_108G (CHANNEL_2GHZ|CHANNEL_OFDM|CHANNEL_TURBO) +#define CHANNEL_108A CHANNEL_T #define CHANNEL_X (CHANNEL_5GHZ|CHANNEL_OFDM|CHANNEL_XR) #define CHANNEL_ALL \ (CHANNEL_OFDM|CHANNEL_CCK|CHANNEL_5GHZ|CHANNEL_2GHZ|CHANNEL_TURBO) #define CHANNEL_ALL_NOTURBO (CHANNEL_ALL &~ CHANNEL_TURBO) +#define CHANNEL_COMPAT (CHANNEL_ALL_NOTURBO | CHANNEL_PASSIVE) + +/* privFlags */ +/* + * Software use: channel interference used for AR as well as RADAR + * interference detection + */ +#define CHANNEL_INTERFERENCE 0x01 +#define CHANNEL_DFS 0x02 /* DFS required on channel */ +#define CHANNEL_4MS_LIMIT 0x04 /* 4msec packet limit on this channel */ +#define CHANNEL_DFS_CLEAR 0x08 /* if channel has been checked DFS */ + #define HAL_RSSI_EP_MULTIPLIER (1<<7) /* pow2 to optimize out * and / */ /* flags passed to tx descriptor setup methods */ @@ -106,6 +122,8 @@ typedef uint16_t HAL_REG_DOMAIN; /* regulatory domain code */ #define HAL_TXDESC_CTSENA 0x0008 /* enable CTS */ #define HAL_TXDESC_INTREQ 0x0010 /* enable per-descriptor interrupt */ #define HAL_TXDESC_VEOL 0x0020 /* mark virtual EOL */ +/* NB: this only affects frame, not any RTS/CTS */ +#define HAL_TXDESC_DURENA 0x0040 /* enable h/w write of duration field */ /* flags passed to rx descriptor setup methods */ #define HAL_RXDESC_INTREQ 0x0020 /* enable per-descriptor interrupt */ @@ -129,6 +147,16 @@ typedef uint16_t HAL_REG_DOMAIN; /* regulatory domain code */ /* value used to specify no encryption key for xmit */ #define HAL_TXKEYIX_INVALID ((uint32_t)-1) +/* compression definitions */ +#define HAL_COMP_BUF_MAX_SIZE 9216 /* 9k */ +#define HAL_COMP_BUF_ALIGN_SIZE 512 +#define HAL_DECOMP_MASK_SIZE 128 + +#define HAL_ANTENNA_MIN_MODE 0 +#define HAL_ANTENNA_FIXED_A 1 +#define HAL_ANTENNA_FIXED_B 2 +#define HAL_ANTENNA_MAX_MODE 3 + /* * Status codes that may be returned by the HAL. Note that * interfaces that return a status code set it only when an @@ -175,7 +203,23 @@ typedef enum { HAL_CAP_BURST = 13, /* hardware supports packet bursting */ HAL_CAP_FASTFRAME = 14, /* hardware supoprts fast frames */ HAL_CAP_TXPOW = 15, /* global tx power limit */ - HAL_CAP_TPC = 16 /* per-packet tx power control */ + HAL_CAP_TPC = 16, /* per-packet tx power control */ + HAL_CAP_PHYDIAG = 17, /* hardware phy error diagnostic */ + HAL_CAP_BSSIDMASK = 18, /* hardware supports bssid mask */ + HAL_CAP_MCAST_KEYSRCH = 19, /* hardware has multicast key search */ + HAL_CAP_TSF_ADJUST = 20, /* hardware has beacon tsf adjust */ + HAL_CAP_XR = 21, /* hardware has XR support */ + /* hardware can support TKIP MIC when WMM is turned on */ + HAL_CAP_WME_TKIPMIC = 22, + /* hardware can support half rate channels */ + HAL_CAP_CHAN_HALFRATE = 23, + /* hardware can support quarter rate channels */ + HAL_CAP_CHAN_QUARTERRATE = 24, + HAL_CAP_RFSILENT = 25, /* hardware has rfsilent support */ + HAL_CAP_TPC_ACK = 26, /* ack txpower with per-packet tpc */ + HAL_CAP_TPC_CTS = 27, /* cts txpower with per-packet tpc */ + HAL_CAP_11D = 28, /* 11d beacon support for changing cc */ + HAL_CAP_INTMIT = 29 /* interference mitigation */ } HAL_CAPABILITY_TYPE; /* @@ -203,7 +247,7 @@ typedef enum { HAL_TX_QUEUE_DATA = 1, /* data xmit q's */ HAL_TX_QUEUE_BEACON = 2, /* beacon xmit q */ HAL_TX_QUEUE_CAB = 3, /* "crap after beacon" xmit q */ - HAL_TX_QUEUE_PSPOLL = 4 /* power-save poll xmit q */ + HAL_TX_QUEUE_UAPSD = 4 /* u-apsd power save xmit q */ } HAL_TX_QUEUE; @@ -217,7 +261,8 @@ typedef enum { HAL_WME_AC_BE = 1, /* best effort access category */ HAL_WME_AC_VI = 2, /* video access category */ HAL_WME_AC_VO = 3, /* voice access category */ - HAL_WME_UPSD = 4 /* uplink power save */ + HAL_WME_UPSD = 4, /* uplink power save */ + HAL_XR_DATA = 5 /* entended range data */ } HAL_TX_QUEUE_SUBTYPE; /* @@ -225,17 +270,86 @@ typedef enum { * operational parameters. */ typedef enum { - TXQ_FLAG_TXOKINT_ENABLE = 0x0001, /* enable TXOK interrupt */ - TXQ_FLAG_TXERRINT_ENABLE = 0x0001, /* enable TXERR interrupt */ - TXQ_FLAG_TXDESCINT_ENABLE = 0x0002, /* enable TXDESC interrupt */ - TXQ_FLAG_TXEOLINT_ENABLE = 0x0004, /* enable TXEOL interrupt */ - TXQ_FLAG_TXURNINT_ENABLE = 0x0008, /* enable TXURN interrupt */ - TXQ_FLAG_BACKOFF_DISABLE = 0x0010, /* disable Post Backoff */ - TXQ_FLAG_COMPRESSION_ENABLE = 0x0020, /* compression enabled */ - /* enable ready time expiry policy */ - TXQ_FLAG_RDYTIME_EXP_POLICY_ENABLE = 0x0040, - /* enable backoff while sending fragment burst */ - TXQ_FLAG_FRAG_BURST_BACKOFF_ENABLE = 0x0080 + /* + * Per queue interrupt enables. When set the associated + * interrupt may be delivered for packets sent through + * the queue. Without these enabled no interrupts will + * be delivered for transmits through the queue. + * + * When 0x0001 is set, both TXQ_TXOKINT and TXQ_TXERRINT + * will be enabled. + */ + HAL_TXQ_TXOKINT_ENABLE = 0x0001, /* enable TXOK interrupt */ + HAL_TXQ_TXERRINT_ENABLE = 0x0001, /* enable TXERR interrupt */ + HAL_TXQ_TXDESCINT_ENABLE = 0x0002, /* enable TXDESC interrupt */ + HAL_TXQ_TXEOLINT_ENABLE = 0x0004, /* enable TXEOL interrupt */ + HAL_TXQ_TXURNINT_ENABLE = 0x0008, /* enable TXURN interrupt */ + /* + * Enable hardware compression for packets sent through + * the queue. The compression buffer must be setup and + * packets must have a key entry marked in the tx descriptor. + */ + HAL_TXQ_COMPRESSION_ENABLE = 0x0010, /* enable h/w compression */ + /* + * Disable queue when veol is hit or ready time expires. + * By default the queue is disabled only on reaching the + * physical end of queue (i.e. a null link ptr in the + * descriptor chain). + */ + HAL_TXQ_RDYTIME_EXP_POLICY_ENABLE = 0x0020, + /* + * Schedule frames on delivery of a DBA (DMA Beacon Alert) + * event. Frames will be transmitted only when this timer + * fires, e.g to transmit a beacon in ap or adhoc modes. + */ + HAL_TXQ_DBA_GATED = 0x0040, /* schedule based on DBA */ + /* + * Each transmit queue has a counter that is incremented + * each time the queue is enabled and decremented when + * the list of frames to transmit is traversed (or when + * the ready time for the queue expires). This counter + * must be non-zero for frames to be scheduled for + * transmission. The following controls disable bumping + * this counter under certain conditions. Typically this + * is used to gate frames based on the contents of another + * queue (e.g. CAB traffic may only follow a beacon frame). + * These are meaningful only when frames are scheduled + * with a non-ASAP policy (e.g. DBA-gated). + */ + HAL_TXQ_CBR_DIS_QEMPTY = 0x0080, /* disable on this q empty */ + HAL_TXQ_CBR_DIS_BEMPTY = 0x0100, /* disable on beacon q empty */ + + /* + * Fragment burst backoff policy. Normally no backoff + * is done after a successful transmission, the next fragment + * is sent at SIFS. If this flag is set backoff is done + * after each fragment, regardless whether it was ack'd or + * not, after the backoff count reaches zero a normal channel + * access procedure is done before the next transmit (i.e. + * wait AIFS instead of SIFS). + */ + HAL_TXQ_FRAG_BURST_BACKOFF_ENABLE = 0x00800000, + /* + * Disable post-tx backoff following each frame. + */ + HAL_TXQ_BACKOFF_DISABLE = 0x00010000, /* disable post backoff */ + /* + * DCU arbiter lockout control. This controls how + * lower priority tx queues are handled with respect + * to a specific queue when multiple queues have frames + * to send. No lockout means lower priority queues arbitrate + * concurrently with this queue. Intra-frame lockout + * means lower priority queues are locked out until the + * current frame transmits (e.g. including backoffs and bursting). + * Global lockout means nothing lower can arbitrary so + * long as there is traffic activity on this queue (frames, + * backoff, etc). + */ + HAL_TXQ_ARB_LOCKOUT_INTRA = 0x00020000, /* intra-frame lockout */ + HAL_TXQ_ARB_LOCKOUT_GLOBAL = 0x00040000, /* full lockout s */ + + HAL_TXQ_IGNORE_VIRTCOL = 0x00080000, /* ignore virt collisions */ + HAL_TXQ_SEQNUM_INC_DIS = 0x00100000 /* disable seqnum increment */ } HAL_TX_QUEUE_FLAGS; typedef struct { @@ -252,8 +366,11 @@ typedef struct { uint32_t tqi_cbrOverflowLimit; uint32_t tqi_burstTime; uint32_t tqi_readyTime; + uint32_t tqi_compBuf; /* compress buffer phys addr */ } HAL_TXQ_INFO; +#define HAL_TQI_NONVAL 0xffff + /* token to use for aifs, cwmin, cwmax */ #define HAL_TXQ_USEDEFAULT ((uint32_t)-1) @@ -270,7 +387,9 @@ typedef enum { HAL_PKT_TYPE_ATIM = 1, HAL_PKT_TYPE_PSPOLL = 2, HAL_PKT_TYPE_BEACON = 3, - HAL_PKT_TYPE_PROBE_RESP = 4 + HAL_PKT_TYPE_PROBE_RESP = 4, + HAL_PKT_TYPE_CHIRP = 5, + HAL_PKT_TYPE_GRP_POLL = 6 } HAL_PKT_TYPE; /* Rx Filter Frame Types */ @@ -281,17 +400,17 @@ typedef enum { HAL_RX_FILTER_CONTROL = 0x00000008, /* Allow control frames */ HAL_RX_FILTER_BEACON = 0x00000010, /* Allow beacon frames */ HAL_RX_FILTER_PROM = 0x00000020, /* Promiscuous mode */ + HAL_RX_FILTER_XRPOLL = 0x00000040, /* Allow XR poll frmae */ HAL_RX_FILTER_PROBEREQ = 0x00000080, /* Allow probe request frames */ HAL_RX_FILTER_PHYERR = 0x00000100, /* Allow phy errors */ HAL_RX_FILTER_PHYRADAR = 0x00000200 /* Allow phy radar errors */ } HAL_RX_FILTER; typedef enum { - HAL_PM_UNDEFINED = 0, - HAL_PM_AUTO = 1, - HAL_PM_AWAKE = 2, - HAL_PM_FULL_SLEEP = 3, - HAL_PM_NETWORK_SLEEP = 4 + HAL_PM_AWAKE = 0, + HAL_PM_FULL_SLEEP = 1, + HAL_PM_NETWORK_SLEEP = 2, + HAL_PM_UNDEFINED = 3 } HAL_POWER_MODE; /* @@ -318,9 +437,17 @@ typedef enum { HAL_INT_SWBA = 0x00010000, HAL_INT_BMISS = 0x00040000, HAL_INT_BNR = 0x00100000, /* Non-common mapping */ + HAL_INT_TIM = 0x00200000, /* Non-common mapping */ + HAL_INT_DTIM = 0x00400000, /* Non-common mapping */ + HAL_INT_DTIMSYNC = 0x00800000, /* Non-common mapping */ HAL_INT_GPIO = 0x01000000, + HAL_INT_CABEND = 0x02000000, /* Non-common mapping */ HAL_INT_FATAL = 0x40000000, /* Non-common mapping */ HAL_INT_GLOBAL = INT_MIN, /* Set/clear IER */ + HAL_INT_BMISC = HAL_INT_TIM + | HAL_INT_DTIM + | HAL_INT_DTIMSYNC + | HAL_INT_CABEND, /* Interrupt bits that map directly to ISR/IMR bits */ HAL_INT_COMMON = HAL_INT_RXNOFRM @@ -374,6 +501,10 @@ typedef enum { typedef struct { uint16_t channel; /* setting in Mhz */ uint16_t channelFlags; /* see below */ + uint8_t privFlags; + int8_t maxRegTxPower; /* max regulatory tx power in dBm */ + int8_t maxTxPower; /* max true tx power in 0.5 dBm */ + int8_t minTxPower; /* min true tx power in 0.5 dBm */ } HAL_CHANNEL; @@ -392,12 +523,16 @@ enum { }; enum { - HAL_MODE_11A = 0x001, - HAL_MODE_TURBO = 0x002, - HAL_MODE_11B = 0x004, - HAL_MODE_PUREG = 0x008, - HAL_MODE_11G = 0x008, - HAL_MODE_108G = 0x020, + HAL_MODE_11A = 0x001, /* 11a channels */ + HAL_MODE_TURBO = 0x002, /* 11a turbo-only channels */ + HAL_MODE_11B = 0x004, /* 11b channels */ + HAL_MODE_PUREG = 0x008, /* 11g channels (OFDM only) */ + HAL_MODE_11G = 0x008, /* XXX historical */ + HAL_MODE_108G = 0x020, /* 11g+Turbo channels */ + HAL_MODE_108A = 0x040, /* 11a+Turbo channels */ + HAL_MODE_XR = 0x100, /* XR channels */ + HAL_MODE_11A_HALF_RATE = 0x200, /* 11A half rate channels */ + HAL_MODE_11A_QUARTER_RATE = 0x400, /* 11A quarter rate channels */ HAL_MODE_ALL = 0xfff }; @@ -425,10 +560,16 @@ typedef struct { uint8_t rs_rates[32]; /* rates */ } HAL_RATE_SET; +/* + * Antenna switch control. By default antenna selection + * enables multiple (2) antenna use. To force use of the + * A or B antenna only specify a fixed setting. Fixing + * the antenna will also disable any diversity support. + */ typedef enum { HAL_ANT_VARIABLE = 0, /* variable by programming */ - HAL_ANT_FIXED_A = 1, /* fixed to 11a frequencies */ - HAL_ANT_FIXED_B = 2 /* fixed to 11b frequencies */ + HAL_ANT_FIXED_A = 1, /* fixed antenna A */ + HAL_ANT_FIXED_B = 2 /* fixed antenna B */ } HAL_ANT_SETTING; typedef enum { @@ -458,6 +599,7 @@ typedef enum { } HAL_CIPHER; enum { + HAL_SLOT_TIME_6 = 6, /* NB: for turbo mode */ HAL_SLOT_TIME_9 = 9, HAL_SLOT_TIME_20 = 20 }; @@ -483,6 +625,18 @@ typedef struct { } HAL_BEACON_STATE; /* + * Like HAL_BEACON_STATE but for non-station mode setup. + * NB: see above flag definitions + */ +typedef struct { + uint32_t bt_intval; /* beacon interval+flags */ + uint32_t bt_nexttbtt; /* next beacon in TU */ + uint32_t bt_nextatim; /* next ATIM in TU */ + uint32_t bt_nextdba; /* next DBA in 1/8th TU */ + uint32_t bt_nextswba; /* next SWBA in 1/8th TU */ +} HAL_BEACON_TIMERS; + +/* * Per-node statistics maintained by the driver for use in * optimizing signal quality and other operational aspects. */ @@ -575,6 +729,7 @@ struct ath_desc { struct ath_tx_status tx; /* xmit status */ struct ath_rx_status rx; /* recv status */ } ds_us; + void *ds_vdata; /* virtual addr of data buffer */ }; #pragma pack() @@ -604,8 +759,11 @@ struct ath_hal { uint32_t ah_macVersion; /* MAC version id */ uint16_t ah_macRev; /* MAC revision */ uint16_t ah_phyRev; /* PHY revision */ - uint16_t ah_analog5GhzRev; /* 2GHz radio revision */ - uint16_t ah_analog2GhzRev; /* 5GHz radio revision */ + /* NB: when only one radio is present the rev is in 5Ghz */ + uint16_t ah_analog5GhzRev; /* 5GHz radio revision */ + uint16_t ah_analog2GhzRev; /* 2GHz radio revision */ + /* decomp mask array */ + uint8_t ah_decompMask[HAL_DECOMP_MASK_SIZE]; const HAL_RATE_TABLE *(*ah_getRateTable)(struct ath_hal *, uint32_t mode); @@ -615,11 +773,21 @@ struct ath_hal { HAL_BOOL (*ah_reset) (struct ath_hal *, HAL_OPMODE, HAL_CHANNEL *, HAL_BOOL bChannelChange, HAL_STATUS *status); - HAL_BOOL (*ah_phyDisable) (struct ath_hal *); - void (*ah_setPCUConfig) (struct ath_hal *); - HAL_BOOL (*ah_perCalibration) (struct ath_hal *, HAL_CHANNEL *); + HAL_BOOL (*ah_phyDisable) (struct ath_hal *); + HAL_BOOL (*ah_disable) (struct ath_hal *); + void (*ah_setPCUConfig) (struct ath_hal *); + HAL_BOOL (*ah_perCalibration) (struct ath_hal *, HAL_CHANNEL *, + HAL_BOOL *); HAL_BOOL (*ah_setTxPowerLimit)(struct ath_hal *, uint32_t); + void (*ah_arEnable)(struct ath_hal *); + void (*ah_arDisable)(struct ath_hal *); + void (*ah_arReset)(struct ath_hal *); + HAL_BOOL (*ah_radarHaveEvent)(struct ath_hal *); + HAL_BOOL (*ah_processDfs)(struct ath_hal *, HAL_CHANNEL *); + uint32_t (*ah_dfsNolCheck)(struct ath_hal *, HAL_CHANNEL *, uint32_t); + HAL_BOOL (*ah_radarWait)(struct ath_hal *, HAL_CHANNEL *); + /* Transmit functions */ HAL_BOOL (*ah_updateTxTrigLevel) (struct ath_hal *, HAL_BOOL incTrigLevel); @@ -636,17 +804,15 @@ struct ath_hal { uint32_t (*ah_numTxPending)(struct ath_hal *, uint32_t q); HAL_BOOL (*ah_startTxDma) (struct ath_hal *, uint32_t); HAL_BOOL (*ah_stopTxDma) (struct ath_hal *, uint32_t); - HAL_BOOL (*ah_updateCTSForBursting)(struct ath_hal *, - struct ath_desc *, struct ath_desc *, - struct ath_desc *, struct ath_desc *, - uint32_t, uint32_t); HAL_BOOL (*ah_setupTxDesc) (struct ath_hal *, struct ath_desc *, uint32_t pktLen, uint32_t hdrLen, HAL_PKT_TYPE type, uint32_t txPower, uint32_t txRate0, uint32_t txTries0, uint32_t keyIx, uint32_t antMode, uint32_t flags, uint32_t rtsctsRate, - uint32_t rtsctsDuration); + uint32_t rtsctsDuration, + uint32_t compicvLen, uint32_t compivLen, + uint32_t comp); HAL_BOOL (*ah_setupXTxDesc) (struct ath_hal *, struct ath_desc *, uint32_t txRate1, uint32_t txTries1, uint32_t txRate2, uint32_t txTries2, @@ -656,6 +822,7 @@ struct ath_hal { HAL_BOOL lastSeg, const struct ath_desc *); HAL_STATUS (*ah_procTxDesc) (struct ath_hal *, struct ath_desc *); void (*ah_getTxIntrQueue)(struct ath_hal *, uint32_t *); + void (*ah_reqTxIntrDesc)(struct ath_hal *, struct ath_desc *); /* Receive Functions */ uint32_t (*ah_getRxDP) (struct ath_hal *); @@ -675,9 +842,10 @@ struct ath_hal { HAL_BOOL (*ah_setupRxDesc) (struct ath_hal *, struct ath_desc *, uint32_t size, uint32_t flags); HAL_STATUS (*ah_procRxDesc) (struct ath_hal *, struct ath_desc *, - uint32_t phyAddr, struct ath_desc *next); + uint32_t phyAddr, struct ath_desc *next, + uint64_t tsf); void (*ah_rxMonitor) (struct ath_hal *, - const HAL_NODE_STATS *); + const HAL_NODE_STATS *, HAL_CHANNEL *); void (*ah_procMibEvent) (struct ath_hal *, const HAL_NODE_STATS *); @@ -693,6 +861,8 @@ struct ath_hal { void **result, uint32_t *resultsize); void (*ah_getMacAddress) (struct ath_hal *, uint8_t *); HAL_BOOL (*ah_setMacAddress) (struct ath_hal *, const uint8_t *); + void (*ah_getBssIdMask)(struct ath_hal *, uint8_t *); + HAL_BOOL (*ah_setBssIdMask)(struct ath_hal *, const uint8_t *); HAL_BOOL (*ah_setRegulatoryDomain) (struct ath_hal *, uint16_t, HAL_STATUS *); void (*ah_setLedState) (struct ath_hal *, HAL_LED_STATE); @@ -712,13 +882,18 @@ struct ath_hal { HAL_RFGAIN (*ah_getRfGain) (struct ath_hal *); uint32_t (*ah_getDefAntenna) (struct ath_hal *); void (*ah_setDefAntenna) (struct ath_hal *, uint32_t); + HAL_ANT_SETTING (*ah_getAntennaSwitch) (struct ath_hal *); + HAL_BOOL (*ah_setAntennaSwitch) (struct ath_hal *, HAL_ANT_SETTING); HAL_BOOL (*ah_setSlotTime) (struct ath_hal *, uint32_t); uint32_t (*ah_getSlotTime) (struct ath_hal *); HAL_BOOL (*ah_setAckTimeout) (struct ath_hal *, uint32_t); uint32_t (*ah_getAckTimeout) (struct ath_hal *); + HAL_BOOL (*ah_setAckCTSRate) (struct ath_hal *, uint32_t); + uint32_t (*ah_getAckCTSRate) (struct ath_hal *); HAL_BOOL (*ah_setCTSTimeout) (struct ath_hal *, uint32_t); uint32_t (*ah_getCTSTimeout) (struct ath_hal *); - + HAL_BOOL (*ah_setDecompMask)(struct ath_hal *, uint16_t, int); + void (*ah_setCoverageClass)(struct ath_hal *, uint8_t, int); /* Key Cache Functions */ uint32_t (*ah_getKeyCacheSize) (struct ath_hal *); HAL_BOOL (*ah_resetKeyCacheEntry) (struct ath_hal *, uint16_t); @@ -731,22 +906,19 @@ struct ath_hal { /* Power Management Functions */ HAL_BOOL (*ah_setPowerMode) (struct ath_hal *, - HAL_POWER_MODE mode, int setChip, - uint16_t sleepDuration); + HAL_POWER_MODE mode, int setChip); HAL_POWER_MODE (*ah_getPowerMode) (struct ath_hal *); - HAL_BOOL (*ah_initPSPoll) (struct ath_hal *); - HAL_BOOL (*ah_enablePSPoll) (struct ath_hal *, - uint8_t *, uint16_t); - HAL_BOOL (*ah_disablePSPoll) (struct ath_hal *); + int16_t (*ah_getChanNoise)(struct ath_hal *, HAL_CHANNEL *); /* Beacon Management Functions */ + void (*ah_setBeaconTimers) (struct ath_hal *, + const HAL_BEACON_TIMERS *); + /* NB: deprecated, use ah_setBeaconTimers instead */ void (*ah_beaconInit) (struct ath_hal *, uint32_t nexttbtt, uint32_t intval); void (*ah_setStationBeaconTimers) (struct ath_hal *, const HAL_BEACON_STATE *); void (*ah_resetStationBeaconTimers) (struct ath_hal *); - HAL_BOOL (*ah_waitForBeaconDone) (struct ath_hal *, - HAL_BUS_ADDR); /* Interrupt functions */ HAL_BOOL (*ah_isInterruptPending) (struct ath_hal *); @@ -779,6 +951,13 @@ extern struct ath_hal *ath_hal_attach(uint16_t devid, HAL_SOFTC, HAL_BUS_TAG, HAL_BUS_HANDLE, HAL_STATUS *status); /* + * Set the Vendor ID for Vendor SKU's which can modify the + * channel properties returned by ath_hal_init_channels. + * Return AH_TRUE if set succeeds + */ +extern HAL_BOOL ath_hal_setvendor(struct ath_hal *, uint32_t); + +/* * Return a list of channels available for use with the hardware. * The list is based on what the hardware is capable of, the specified * country code, the modeSelect mask, and whether or not outdoor @@ -791,10 +970,17 @@ extern struct ath_hal *ath_hal_attach(uint16_t devid, HAL_SOFTC, */ extern HAL_BOOL ath_hal_init_channels(struct ath_hal *, HAL_CHANNEL *chans, uint32_t maxchans, uint32_t *nchans, + uint8_t *regclassids, uint32_t maxregids, uint32_t *nregids, HAL_CTRY_CODE cc, uint16_t modeSelect, HAL_BOOL enableOutdoor, HAL_BOOL enableExtendedChannels); /* + * Calibrate noise floor data following a channel scan or similar. + * This must be called prior retrieving noise floor data. + */ +extern void ath_hal_process_noisefloor(struct ath_hal *ah); + +/* * Return bit mask of wireless modes supported by the hardware. */ extern uint32_t ath_hal_getwirelessmodes(struct ath_hal *, HAL_CTRY_CODE); @@ -813,11 +999,15 @@ extern uint16_t ath_hal_computetxtime(struct ath_hal *, uint16_t rateix, HAL_BOOL shortPreamble); /* + * Return if device is public safety. + */ +extern HAL_BOOL ath_hal_ispublicsafetysku(struct ath_hal *); + +/* * Convert between IEEE channel number and channel frequency * using the specified channel flags; e.g. CHANNEL_2GHZ. */ -extern uint32_t ath_hal_mhz2ieee(uint32_t mhz, uint32_t flags); -extern uint32_t ath_hal_ieee2mhz(uint32_t ieee, uint32_t flags); +extern int ath_hal_mhz2ieee(struct ath_hal *, uint32_t mhz, uint32_t flags); /* * Return a version string for the HAL release. @@ -834,8 +1024,12 @@ extern const char *ath_hal_buildopts[]; */ #define ATH_HAL_RESET(_ah, _opmode, _chan, _outdoor, _pstatus) \ ((*(_ah)->ah_reset)((_ah), (_opmode), (_chan), (_outdoor), (_pstatus))) +#define ATH_HAL_PHYDISABLE(_ah) \ + ((*(_ah)->ah_phyDisable)((_ah))) #define ATH_HAL_GETCAPABILITY(_ah, _cap, _param, _result) \ ((*(_ah)->ah_getCapability)((_ah), (_cap), (_param), (_result))) +#define ATH_HAL_SETCAPABILITY(_ah, _type, _cap, _param, _status) \ + ((*ah_setCapability)((_ah), (_type), (_cap), (_param), (_status))) #define ATH_HAL_GETREGDOMAIN(_ah, _prd) \ ATH_HAL_GETCAPABILITY(_ah, HAL_CAP_REG_DMN, 0, (_prd)) #define ATH_HAL_GETCOUNTRYCODE(_ah, _pcc) \ @@ -856,12 +1050,12 @@ extern const char *ath_hal_buildopts[]; ((*(_ah)->ah_getPendingInterrupts)((_ah), (_pmask))) #define ATH_HAL_UPDATETXTRIGLEVEL(_ah, _inc) \ ((*(_ah)->ah_updateTxTrigLevel)((_ah), (_inc))) -#define ATH_HAL_SETPOWER(_ah, _mode, _sleepduration) \ - ((*(_ah)->ah_setPowerMode)((_ah), (_mode), AH_TRUE, (_sleepduration))) +#define ATH_HAL_SETPOWER(_ah, _mode) \ + ((*(_ah)->ah_setPowerMode)((_ah), (_mode), AH_TRUE)) #define ATH_HAL_KEYRESET(_ah, _ix) \ ((*(_ah)->ah_resetKeyCacheEntry)((_ah), (_ix))) -#define ATH_HAL_KEYSET(_ah, _ix, _pk) \ - ((*(_ah)->ah_setKeyCacheEntry)((_ah), (_ix), (_pk), NULL, AH_FALSE)) +#define ATH_HAL_KEYSET(_ah, _ix, _pk, _mac) \ + ((*(_ah)->ah_setKeyCacheEntry)((_ah), (_ix), (_pk), (_mac), AH_FALSE)) #define ATH_HAL_KEYISVALID(_ah, _ix) \ (((*(_ah)->ah_isKeyCacheEntryValid)((_ah), (_ix)))) #define ATH_HAL_KEYSETMAC(_ah, _ix, _mac) \ @@ -896,8 +1090,8 @@ extern const char *ath_hal_buildopts[]; ((*(_ah)->ah_startTxDma)((_ah), (_q))) #define ATH_HAL_SETCHANNEL(_ah, _chan) \ ((*(_ah)->ah_setChannel)((_ah), (_chan))) -#define ATH_HAL_CALIBRATE(_ah, _chan) \ - ((*(_ah)->ah_perCalibration)((_ah), (_chan))) +#define ATH_HAL_CALIBRATE(_ah, _chan, _iqcal) \ + ((*(_ah)->ah_perCalibration)((_ah), (_chan), (_iqcal))) #define ATH_HAL_SETLEDSTATE(_ah, _state) \ ((*(_ah)->ah_setLedState)((_ah), (_state))) #define ATH_HAL_BEACONINIT(_ah, _nextb, _bperiod) \ @@ -936,8 +1130,10 @@ extern const char *ath_hal_buildopts[]; ((*(_ah)->ah_hasVEOL)((_ah))) #define ATH_HAL_GETRFGAIN(_ah) \ ((*(_ah)->ah_getRfGain)((_ah))) -#define ATH_HAL_RXMONITOR(_ah, _arg) \ - ((*(_ah)->ah_rxMonitor)((_ah), (_arg))) +#define ATH_HAL_RXMONITOR(_ah, _arg, _chan) \ + ((*(_ah)->ah_rxMonitor)((_ah), (_arg), (_chan))) +#define ATH_HAL_SETSLOTTIME(_ah, _us) \ + ((*(_ah)->ah_setSlotTime)((_ah), (_us))) #define ATH_HAL_SETUPBEACONDESC(_ah, _ds, _opmode, _flen, _hlen, \ _rate, _antmode) \ ((*(_ah)->ah_setupBeaconDesc)((_ah), (_ds), (_opmode), \ @@ -945,13 +1141,13 @@ extern const char *ath_hal_buildopts[]; #define ATH_HAL_SETUPRXDESC(_ah, _ds, _size, _intreq) \ ((*(_ah)->ah_setupRxDesc)((_ah), (_ds), (_size), (_intreq))) #define ATH_HAL_RXPROCDESC(_ah, _ds, _dspa, _dsnext) \ - ((*(_ah)->ah_procRxDesc)((_ah), (_ds), (_dspa), (_dsnext))) + ((*(_ah)->ah_procRxDesc)((_ah), (_ds), (_dspa), (_dsnext), 0)) #define ATH_HAL_SETUPTXDESC(_ah, _ds, _plen, _hlen, _atype, _txpow, \ _txr0, _txtr0, _keyix, _ant, _flags, \ _rtsrate, _rtsdura) \ ((*(_ah)->ah_setupTxDesc)((_ah), (_ds), (_plen), (_hlen), (_atype), \ (_txpow), (_txr0), (_txtr0), (_keyix), (_ant), \ - (_flags), (_rtsrate), (_rtsdura))) + (_flags), (_rtsrate), (_rtsdura), 0, 0, 0)) #define ATH_HAL_SETUPXTXDESC(_ah, _ds, \ _txr1, _txtr1, _txr2, _txtr2, _txr3, _txtr3) \ ((*(_ah)->ah_setupXTxDesc)((_ah), (_ds), \ @@ -965,6 +1161,34 @@ extern const char *ath_hal_buildopts[]; (ATH_HAL_GETCAPABILITY(_ah, HAL_CAP_CIPHER, _cipher, NULL) == HAL_OK) #define ATH_HAL_TKIPSPLIT(_ah) \ (ATH_HAL_GETCAPABILITY(_ah, HAL_CAP_TKIP_SPLIT, 0, NULL) == HAL_OK) +#define ATH_HAL_HASRFSILENT(ah) \ + (ATH_HAL_GETCAPABILITY(_ah, HAL_CAP_RFSILENT, 0, NULL) == HAL_OK) +#define ATH_HAL_GETRFKILL(_ah) \ + (ATH_HAL_GETCAPABILITY(_ah, HAL_CAP_RFSILENT, 1, NULL) == HAL_OK) +#define ATH_HAL_SETRFKILL(_ah, _onoff) \ + (ATH_HAL_SETCAPABILITY(_ah, HAL_CAP_RFSILENT, 1, _onoff, NULL)) +#define ATH_HAL_GETRFSILENT(_ah, _prfsilent) \ + (ATH_HAL_GETCAPABILITY(_ah, HAL_CAP_RFSILENT, 2, _prfsilent) == HAL_OK) +#define ATH_HAL_SETRFSILENT(_ah, _rfsilent) \ + (ATH_HAL_SETCAPABILITY(_ah, HAL_CAP_RFSILENT, 2, _rfsilent, NULL)) + +#if HAL_ABI_VERSION < 0x05120700 +#define ATH_HAL_PROCESS_NOISEFLOOR(_ah) +#define ATH_HAL_GETCHANNOISE(_ah, _c) (-96) +#define HAL_CAP_TPC_ACK 100 +#define HAL_CAP_TPC_CTS 101 +#else +#define ATH_HAL_GETCHANNOISE(_ah, _c) \ + ((*(_ah)->ah_getChanNoise)((_ah), (_c))) +#endif + +#if HAL_ABI_VERSION < 0x05122200 +#define HAL_TXQ_TXOKINT_ENABLE TXQ_FLAG_TXOKINT_ENABLE +#define HAL_TXQ_TXERRINT_ENABLE TXQ_FLAG_TXERRINT_ENABLE +#define HAL_TXQ_TXDESCINT_ENABLE TXQ_FLAG_TXDESCINT_ENABLE +#define HAL_TXQ_TXEOLINT_ENABLE TXQ_FLAG_TXEOLINT_ENABLE +#define HAL_TXQ_TXURNINT_ENABLE TXQ_FLAG_TXURNINT_ENABLE +#endif #ifdef __cplusplus } diff --git a/usr/src/uts/common/io/ath/ath_ieee80211.c b/usr/src/uts/common/io/ath/ath_ieee80211.c deleted file mode 100644 index 29c0c25fd2..0000000000 --- a/usr/src/uts/common/io/ath/ath_ieee80211.c +++ /dev/null @@ -1,2899 +0,0 @@ -/* - * Copyright 2006 Sun Microsystems, Inc. All rights reserved. - * Use is subject to license terms. - */ - -/* - * Copyright (c) 2002, 2003 Sam Leffler, Errno Consulting - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer, - * without modification. - * 2. Redistributions in binary form must reproduce at minimum a disclaimer - * similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any - * redistribution must be conditioned upon including a substantially - * similar Disclaimer requirement for further binary redistribution. - * 3. Neither the names of the above-listed copyright holders nor the names - * of any contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * NO WARRANTY - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY - * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL - * THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, - * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF - * THE POSSIBILITY OF SUCH DAMAGES. - * - */ - -/* - * IEEE 802.11 generic handler - * - * This code is derived from NetBSD code; their copyright notice follows. - */ - -/* - * Copyright (c) 2001 The NetBSD Foundation, Inc. - * All rights reserved. - * - * This code is derived from software contributed to The NetBSD Foundation - * by Atsushi Onoe. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the NetBSD - * Foundation, Inc. and its contributors. - * 4. Neither the name of The NetBSD Foundation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#pragma ident "%Z%%M% %I% %E% SMI" - -#include <sys/param.h> -#include <sys/types.h> -#include <sys/signal.h> -#include <sys/stream.h> -#include <sys/termio.h> -#include <sys/errno.h> -#include <sys/file.h> -#include <sys/cmn_err.h> -#include <sys/stropts.h> -#include <sys/strsubr.h> -#include <sys/strtty.h> -#include <sys/kbio.h> -#include <sys/cred.h> -#include <sys/stat.h> -#include <sys/consdev.h> -#include <sys/kmem.h> -#include <sys/modctl.h> -#include <sys/ddi.h> -#include <sys/sunddi.h> -#include <sys/pci.h> -#include <sys/errno.h> -#include <sys/gld.h> -#include <sys/dlpi.h> -#include <sys/ethernet.h> -#include <sys/byteorder.h> -#include <sys/proc.h> -#include <sys/note.h> -#include <sys/strsun.h> -#include <sys/list.h> -#include <sys/byteorder.h> -#include <inet/common.h> -#include <inet/nd.h> -#include <inet/mi.h> -#include <inet/wifi_ioctl.h> -#include "ath_ieee80211.h" -#include "ath_impl.h" - -#define list_empty(a) ((a)->list_head.list_next == &(a)->list_head) - -static const char *ieee80211_mgt_subtype_name[] = { - "assoc_req", "assoc_resp", "reassoc_req", "reassoc_resp", - "probe_req", "probe_resp", "reserved#6", "reserved#7", - "beacon", "atim", "disassoc", "auth", - "deauth", "reserved#13", "reserved#14", "reserved#15" -}; - -extern pri_t minclsyspri; - -static void -ieee80211_unref_node(struct ieee80211_node **in) -{ - *in = NULL; -} - -static uint8_t -ieee80211_get_rssi(struct ieee80211_node *in) -{ - /* no recent samples, use last known value */ - return (in->in_recv_hist[in->in_hist_cur].irh_rssi); -} - -static void -ieee80211_reset_recvhist(struct ieee80211_node *in) -{ - int i; - - for (i = 0; i < IEEE80211_RECV_HIST_LEN; ++i) { - in->in_recv_hist[i].irh_jiffies = IEEE80211_JIFFIES_NONE; - in->in_recv_hist[i].irh_rssi = 0; - in->in_recv_hist[i].irh_rstamp = 0; - in->in_recv_hist[i].irh_rantenna = 0; - } - in->in_hist_cur = IEEE80211_RECV_HIST_LEN - 1; -} - - -static void -ieee80211_add_recvhist(struct ieee80211_node *in, uint8_t rssi, - uint32_t rstamp, uint8_t rantenna) -{ - if (++in->in_hist_cur >= IEEE80211_RECV_HIST_LEN) - in->in_hist_cur = 0; - in->in_recv_hist[in->in_hist_cur].irh_rssi = rssi; - in->in_recv_hist[in->in_hist_cur].irh_rstamp = rstamp; - in->in_recv_hist[in->in_hist_cur].irh_rantenna = rantenna; -} - -/* - * Convert MHz frequency to IEEE channel number. - */ -uint32_t -ieee80211_mhz2ieee(uint32_t freq, uint32_t flags) -{ - if (flags & IEEE80211_CHAN_2GHZ) { /* 2GHz band */ - if (freq == 2484) - return (14); - if (freq < 2484) - return ((freq - 2407) / 5); - else - return (15 + ((freq - 2512) / 20)); - } else if (flags & IEEE80211_CHAN_5GHZ) { /* 5Ghz band */ - return ((freq - 5000) / 5); - } else { /* either, guess */ - if (freq == 2484) - return (14); - if (freq < 2484) - return ((freq - 2407) / 5); - if (freq < 5000) - return (15 + ((freq - 2512) / 20)); - return ((freq - 5000) / 5); - } -} - -/* - * Convert channel to IEEE channel number. - */ -uint32_t -ieee80211_chan2ieee(ieee80211com_t *isc, struct ieee80211channel *ch) -{ - if (isc->isc_channels <= ch && - ch <= &isc->isc_channels[IEEE80211_CHAN_MAX]) - return (ch - isc->isc_channels); - else if (ch == IEEE80211_CHAN_ANYC) - return (IEEE80211_CHAN_ANY); - else { - ATH_DEBUG((ATH_DBG_80211, "ath: ieee80211_chan2ieee(): " - "invalid channel freq %u flags %x\n", - ch->ich_freq, ch->ich_flags)); - return (0); - } -} - -/* - * Convert IEEE channel number to MHz frequency. - */ -uint32_t -ieee80211_ieee2mhz(uint32_t chan, uint32_t flags) -{ - if (flags & IEEE80211_CHAN_2GHZ) { /* 2GHz band */ - if (chan == 14) - return (2484); - if (chan < 14) - return (2407 + chan * 5); - else - return (2512 + ((chan-15) * 20)); - } else if (flags & IEEE80211_CHAN_5GHZ) { /* 5Ghz band */ - return (5000 + (chan * 5)); - } else { /* either, guess */ - if (chan == 14) - return (2484); - if (chan < 14) /* 0-13 */ - return (2407 + chan * 5); - if (chan < 27) /* 15-26 */ - return (2512 + ((chan-15) * 20)); - return (5000 + (chan * 5)); - } -} - -static void -ieee80211_free_node(ieee80211com_t *isc, struct ieee80211_node *in) -{ - int32_t i, done; - struct ieee80211_node *in1; - - /* remove in from list of isc->isc_in_list */ - list_remove(&isc->isc_in_list, in); - - /* remove in from list of isc->isc_inhash_list */ - done = 0; - for (i = 0; i < IEEE80211_NODE_HASHSIZE; i++) { - in1 = list_head(&isc->isc_inhash_list[i]); - while (in1 != NULL) { - if (in1 == in) { - list_remove(&isc->isc_inhash_list[i], in); - done = 1; - break; - } - in1 = list_next(&isc->isc_inhash_list[i], in1); - } - if (done) - break; - } - - if (list_empty(&isc->isc_in_list)) - isc->isc_inact_timeout = 0; - if (isc->isc_node_free != NULL) - (*isc->isc_node_free)(isc, in); -} - -/* - * This function is only running in software interrupt thread, - * and it will probably call back to LLD by isc_mgmt_send() or isc_new_state(), - * to avoid recursive mutex entry, we must make sure that - * the callers have release all LLD mutexs before calling ieee80211_input(). - */ -void -ieee80211_input(ieee80211com_t *isc, mblk_t *mp, - int32_t rssi, uint32_t rstamp, uint32_t rantenna) -{ - struct ieee80211_node *in; - gld_mac_info_t *gld_p = isc->isc_dev; - struct ieee80211_frame *wh; - void (*rh)(ieee80211com_t *, mblk_t *, int32_t, uint32_t, uint32_t); - uint8_t dir, subtype; - uint8_t *bssid; - uint16_t rxseq; - - wh = (struct ieee80211_frame *)mp->b_rptr; - if ((wh->ifrm_fc[0] & IEEE80211_FC0_VERSION_MASK) != - IEEE80211_FC0_VERSION_0) { - ATH_DEBUG((ATH_DBG_80211, "ath: ieee80211_input(): " - "discard pkt with wrong version")); - goto out; - } - - dir = wh->ifrm_fc[1] & IEEE80211_FC1_DIR_MASK; - - mutex_enter(&isc->isc_genlock); - if (isc->isc_state != IEEE80211_S_SCAN) { - switch (isc->isc_opmode) { - case IEEE80211_M_STA: - in = isc->isc_bss; - if (!IEEE80211_ADDR_EQ(wh->ifrm_addr2, in->in_bssid)) - goto out_with_mutex; - break; - case IEEE80211_M_IBSS: - case IEEE80211_M_AHDEMO: - case IEEE80211_M_HOSTAP: - if (dir == IEEE80211_FC1_DIR_NODS) - bssid = wh->ifrm_addr3; - else - bssid = wh->ifrm_addr1; - if (!IEEE80211_ADDR_EQ(bssid, isc->isc_bss->in_bssid) && - !IEEE80211_ADDR_EQ(bssid, - gld_p->gldm_broadcast_addr)) { - /* not interested in */ - ATH_DEBUG((ATH_DBG_80211, "ath: " - "ieee80211_input(): other bss %s\n", - ieee80211_ether_sprintf(wh->ifrm_addr3))); - goto out_with_mutex; - } - in = ieee80211_find_node(isc, wh->ifrm_addr2); - if (in == NULL) { - ATH_DEBUG((ATH_DBG_80211, "ath: " - "ieee80211_input(): unknown src %s\n", - ieee80211_ether_sprintf(wh->ifrm_addr2))); - /* - * NB: Node allocation is handled in the - * management handling routines. Just fake - * up a reference to the hosts's node to do - * the stuff below. - */ - in = isc->isc_bss; - } - break; - default: - /* catch bad values */ - break; - } - ieee80211_add_recvhist(in, rssi, rstamp, rantenna); - rxseq = in->in_rxseq; - in->in_rxseq = LE_16(*(uint16_t *)wh->ifrm_seq) - >> IEEE80211_SEQ_SEQ_SHIFT; - /* fragment */ - if ((wh->ifrm_fc[1] & IEEE80211_FC1_RETRY) && - rxseq == in->in_rxseq) { - /* duplicate, silently discarded */ - goto out_with_mutex; - } - in->in_inact = 0; - } - - switch (wh->ifrm_fc[0] & IEEE80211_FC0_TYPE_MASK) { - case IEEE80211_FC0_TYPE_DATA: - switch (isc->isc_opmode) { - case IEEE80211_M_STA: - if (dir != IEEE80211_FC1_DIR_FROMDS) { - ATH_DEBUG((ATH_DBG_80211, "ath: ", - "ieee80211_input(): discard frame " - "with invalid direction %x\n", dir)); - goto out_with_mutex; - } - if (IEEE80211_IS_MULTICAST(wh->ifrm_addr1) && - IEEE80211_ADDR_EQ(wh->ifrm_addr3, - gld_p->gldm_vendor_addr)) { - /* - * In IEEE802.11 network, multicast packet - * sent from me is broadcasted from AP. - * It should be silently discarded for - * SIMPLEX interface. - */ - ATH_DEBUG((ATH_DBG_80211, "ath: " - "ieee80211_input(): " - "discard multicast echo\n")); - goto out_with_mutex; - } - break; - case IEEE80211_M_IBSS: - case IEEE80211_M_AHDEMO: - if (dir != IEEE80211_FC1_DIR_NODS) - goto out_with_mutex; - break; - case IEEE80211_M_HOSTAP: - /* need more work to support HOSTAP */ - break; - } - - mutex_exit(&isc->isc_genlock); - /* copy to listener after decrypt */ - mp = ieee80211_decap(mp); - if (mp == NULL) { - ATH_DEBUG((ATH_DBG_80211, "ath: ", - "ieee80211_input(): decapsulation failed\n")); - goto out; - } - gld_recv(gld_p, mp); - return; - - case IEEE80211_FC0_TYPE_MGT: - if (dir != IEEE80211_FC1_DIR_NODS) - goto out_with_mutex; - if (isc->isc_opmode == IEEE80211_M_AHDEMO) - goto out_with_mutex; - subtype = wh->ifrm_fc[0] & IEEE80211_FC0_SUBTYPE_MASK; - - /* drop uninteresting frames */ - if (isc->isc_state == IEEE80211_S_SCAN) { - if (subtype != IEEE80211_FC0_SUBTYPE_BEACON && - subtype != IEEE80211_FC0_SUBTYPE_PROBE_RESP) - goto out_with_mutex; - } else { - if (isc->isc_opmode != IEEE80211_M_IBSS && - subtype == IEEE80211_FC0_SUBTYPE_BEACON) - goto out_with_mutex; - } - - rh = isc->isc_recv_mgmt[subtype >> IEEE80211_FC0_SUBTYPE_SHIFT]; - if (rh != NULL) - (*rh)(isc, mp, rssi, rstamp, rantenna); - goto out_with_mutex; - - case IEEE80211_FC0_TYPE_CTL: - default: - ATH_DEBUG((ATH_DBG_80211, "ath: ieee80211_input(): " - "bad type %x\n", wh->ifrm_fc[0])); - break; - } -out_with_mutex: - mutex_exit(&isc->isc_genlock); -out: - if (mp != NULL) - freemsg(mp); /* free the buffer alloced in ath_rx_handler */ -} - -static void -ieee80211_free_allnodes(ieee80211com_t *isc) -{ - struct ieee80211_node *in; - - in = list_head(&isc->isc_in_list); - while (in != NULL) { - ieee80211_free_node(isc, in); - in = list_head(&isc->isc_in_list); - } -} - -/* - * Begin an active scan. - */ -static void -ieee80211_begin_scan(ieee80211com_t *isc, struct ieee80211_node *in) -{ - ATH_DEBUG((ATH_DBG_80211, "ath: " - "ieee80211_begin_scan(): begin %s scan\n", - isc->isc_opmode != IEEE80211_M_HOSTAP ? "active" : "passive")); - - /* - * Initialize the active channel set based on the set - * of available channels and the current PHY mode. - */ - bcopy(isc->isc_chan_active, isc->isc_chan_scan, - sizeof (isc->isc_chan_active)); - - /* - * Flush any previously seen AP's. Note that this - * assumes we don't act as both an AP and a station, - * otherwise we'll potentially flush state of stations - * associated with us. - */ - ieee80211_free_allnodes(isc); - - clrbit(isc->isc_chan_scan, ieee80211_chan2ieee(isc, in->in_chan)); - if (isc->isc_opmode != IEEE80211_M_HOSTAP) { - isc->isc_flags |= IEEE80211_F_ASCAN; - IEEE80211_SEND_MGMT(isc, in, - IEEE80211_FC0_SUBTYPE_PROBE_REQ, 0); - } -} - -static void -ieee80211_create_ibss(ieee80211com_t *isc, struct ieee80211channel *chan) -{ - struct ieee80211_node *in; - - in = isc->isc_bss; - ATH_DEBUG((ATH_DBG_80211, "ath: " - "ieee80211_create_ibss(): creating ibss\n")); - isc->isc_flags |= IEEE80211_F_SIBSS; - in->in_chan = chan; - in->in_rates = isc->isc_sup_rates[ - ieee80211_chan2mode(isc, in->in_chan)]; - IEEE80211_ADDR_COPY(in->in_macaddr, isc->isc_macaddr); - IEEE80211_ADDR_COPY(in->in_bssid, isc->isc_macaddr); - - if (isc->isc_opmode == IEEE80211_M_IBSS) - in->in_bssid[0] |= 0x02; /* local bit for IBSS */ - in->in_esslen = isc->isc_des_esslen; - bcopy(isc->isc_des_essid, in->in_essid, in->in_esslen); - ieee80211_reset_recvhist(in); - bzero(in->in_tstamp, sizeof (in->in_tstamp)); - in->in_intval = isc->isc_lintval; - in->in_capinfo = IEEE80211_CAPINFO_IBSS; - if (isc->isc_flags & IEEE80211_F_WEPON) - in->in_capinfo |= IEEE80211_CAPINFO_PRIVACY; - if (isc->isc_phytype == IEEE80211_T_FH) { - in->in_fhdwell = 200; - in->in_fhindex = 1; - } - (void) _ieee80211_new_state(isc, IEEE80211_S_RUN, -1); -} - - -/* - * The difference between _ieee80211_new_state() and ieee80211_new_state() - * is the former asserts isc_genlock is already held. - * _ieee80211_new_state() is called from Multi-func thread and GLD thread, - * because ic_genlock is already owned at its entry in those 2 types of thread. - * ieee80211_new_state() is just for software interrupt thread in LLD. - * - * Because of the reason to avoid recursive mutex entry, the caller can't hold - * any other LLD mutexs before calling ieee80211_new_state(). - */ -int -_ieee80211_new_state(ieee80211com_t *isc, enum ieee80211_state nstate, - int32_t mgt) -{ - gld_mac_info_t *gld_p = isc->isc_dev; - struct ieee80211_node *in; - int error, ostate; - - ASSERT(mutex_owned(&isc->isc_genlock)); - - ostate = isc->isc_state; - if (isc->isc_new_state) { - error = (*isc->isc_new_state)(isc, nstate); - if (error == EINPROGRESS) - return (0); - if (error != 0) - return (error); - } - - isc->isc_state = nstate; - in = isc->isc_bss; - - /* state transition */ - switch (nstate) { - case IEEE80211_S_INIT: - switch (ostate) { - case IEEE80211_S_INIT: - break; - case IEEE80211_S_RUN: - switch (isc->isc_opmode) { - case IEEE80211_M_STA: - IEEE80211_SEND_MGMT(isc, in, - IEEE80211_FC0_SUBTYPE_DISASSOC, - IEEE80211_REASON_ASSOC_LEAVE); - break; - default: - break; - } - case IEEE80211_S_ASSOC: - switch (isc->isc_opmode) { - case IEEE80211_M_STA: - IEEE80211_SEND_MGMT(isc, in, - IEEE80211_FC0_SUBTYPE_DEAUTH, - IEEE80211_REASON_AUTH_LEAVE); - break; - default: - break; - } - case IEEE80211_S_AUTH: - case IEEE80211_S_SCAN: - break; - } - isc->isc_mgt_timeout = 0; - isc->isc_inact_timeout = 0; - break; - case IEEE80211_S_SCAN: - isc->isc_flags &= ~IEEE80211_F_SIBSS; - /* initialize bss for probe request */ - IEEE80211_ADDR_COPY(in->in_macaddr, gld_p->gldm_broadcast_addr); - IEEE80211_ADDR_COPY(in->in_bssid, gld_p->gldm_broadcast_addr); - in->in_rates = isc->isc_sup_rates[ - ieee80211_chan2mode(isc, in->in_chan)]; - in->in_associd = 0; - ieee80211_reset_recvhist(in); - switch (ostate) { - case IEEE80211_S_INIT: - if ((isc->isc_opmode == IEEE80211_M_HOSTAP || - isc->isc_opmode == IEEE80211_M_IBSS) && - isc->isc_des_chan != IEEE80211_CHAN_ANYC) { - /* - * AP operation and we already have a channel; - * bypass the scan and startup immediately. - * Same applies to ad-hoc mode. - */ - ieee80211_create_ibss(isc, isc->isc_des_chan); - } else { - ieee80211_begin_scan(isc, in); - } - break; - case IEEE80211_S_SCAN: - /* scan next */ - if (isc->isc_flags & IEEE80211_F_ASCAN) { - IEEE80211_SEND_MGMT(isc, in, - IEEE80211_FC0_SUBTYPE_PROBE_REQ, 0); - } - break; - case IEEE80211_S_RUN: - /* beacon miss */ - ATH_DEBUG((ATH_DBG_80211, "ath: " - "_ieee80211_new_state(): no recent beacons" - " from %s; rescanning\n", - ieee80211_ether_sprintf(isc->isc_bss->in_bssid))); - ieee80211_free_allnodes(isc); - break; - case IEEE80211_S_AUTH: - case IEEE80211_S_ASSOC: - /* timeout, restart scan */ - in = ieee80211_find_node(isc, isc->isc_bss->in_macaddr); - if (in != NULL) { - in->in_fails++; - } - ieee80211_begin_scan(isc, isc->isc_bss); - break; - default: - break; - } - break; - case IEEE80211_S_AUTH: - switch (ostate) { - case IEEE80211_S_INIT: - ATH_DEBUG((ATH_DBG_80211, "ath(): " - "_ieee80211_new_state(): invalid transition\n")); - break; - case IEEE80211_S_SCAN: - IEEE80211_SEND_MGMT(isc, in, - IEEE80211_FC0_SUBTYPE_AUTH, 1); - break; - case IEEE80211_S_AUTH: - case IEEE80211_S_ASSOC: - switch (mgt) { - case IEEE80211_FC0_SUBTYPE_AUTH: - IEEE80211_SEND_MGMT(isc, in, - IEEE80211_FC0_SUBTYPE_AUTH, 2); - break; - case IEEE80211_FC0_SUBTYPE_DEAUTH: - /* ignore and retry scan on timeout */ - break; - } - break; - case IEEE80211_S_RUN: - switch (mgt) { - case IEEE80211_FC0_SUBTYPE_AUTH: - IEEE80211_SEND_MGMT(isc, in, - IEEE80211_FC0_SUBTYPE_AUTH, 2); - isc->isc_state = ostate; /* stay RUN */ - break; - case IEEE80211_FC0_SUBTYPE_DEAUTH: - /* try to reauth */ - IEEE80211_SEND_MGMT(isc, in, - IEEE80211_FC0_SUBTYPE_AUTH, 1); - break; - } - break; - } - break; - case IEEE80211_S_ASSOC: - switch (ostate) { - case IEEE80211_S_INIT: - case IEEE80211_S_SCAN: - case IEEE80211_S_ASSOC: - ATH_DEBUG((ATH_DBG_80211, "ath: " - "_ieee80211_new_state(): invalid transition\n")); - break; - case IEEE80211_S_AUTH: - IEEE80211_SEND_MGMT(isc, in, - IEEE80211_FC0_SUBTYPE_ASSOC_REQ, 0); - break; - case IEEE80211_S_RUN: - IEEE80211_SEND_MGMT(isc, in, - IEEE80211_FC0_SUBTYPE_ASSOC_REQ, 1); - break; - } - break; - case IEEE80211_S_RUN: - switch (ostate) { - case IEEE80211_S_INIT: - case IEEE80211_S_AUTH: - case IEEE80211_S_RUN: - ATH_DEBUG((ATH_DBG_80211, "ath: " - "_ieee80211_new_state(): invalid transition\n")); - break; - case IEEE80211_S_SCAN: /* adhoc/hostap mode */ - case IEEE80211_S_ASSOC: /* infra mode */ - if (isc->isc_opmode == IEEE80211_M_STA) - ATH_DEBUG((ATH_DBG_80211, "ath: " - "_ieee80211_new_state(): " - "associated with %s\n", - ieee80211_ether_sprintf(in->in_bssid))); - else - ATH_DEBUG((ATH_DBG_80211, "ath: " - "_ieee80211_new_state(): " - "asynchronized with %s\n", - ieee80211_ether_sprintf(in->in_bssid))); - ATH_DEBUG((ATH_DBG_80211, "ath: " - "_ieee80211_new_state(): " - "essid %s, channel %d, start %uMb\n", - ieee80211_essid_sprintf(in->in_essid, - in->in_esslen), - ieee80211_chan2ieee(isc, in->in_chan), - IEEE80211_RATE2MBS(in->in_rates.ir_rates[ - in->in_txrate]))); - isc->isc_mgt_timeout = 0; - break; - } - break; - } - return (0); -} - -int -ieee80211_new_state(ieee80211com_t *isc, enum ieee80211_state nstate, - int32_t mgt) -{ - int result; - - mutex_enter(&isc->isc_genlock); - result = _ieee80211_new_state(isc, nstate, mgt); - mutex_exit(&isc->isc_genlock); - - return (result); -} - -static void -ieee80211_timeout_nodes(ieee80211com_t *isc) -{ - struct ieee80211_node *in, *nextbs; - - for (in = list_head(&isc->isc_in_list); in != NULL; ) { - if (++in->in_inact <= IEEE80211_INACT_MAX) { - in = list_next(&isc->isc_in_list, in); - continue; - } - ATH_DEBUG((ATH_DBG_80211, "ath: " - "station %s timed out due to inactivity" - " (%u secs)\n", ieee80211_ether_sprintf(in->in_macaddr), - in->in_inact)); - nextbs = list_next(&isc->isc_in_list, in); - IEEE80211_SEND_MGMT(isc, in, - IEEE80211_FC0_SUBTYPE_DEAUTH, - IEEE80211_REASON_AUTH_EXPIRE); - ieee80211_free_node(isc, in); - in = nextbs; - } - if (!list_empty(&isc->isc_in_list)) - isc->isc_inact_timeout = IEEE80211_INACT_WAIT; -} - -int -ieee80211_mgmt_output(ieee80211com_t *isc, struct ieee80211_node *in, - mblk_t *mp, int type) -{ - struct ieee80211_frame *wh; - - ASSERT(mutex_owned(&isc->isc_genlock)); - ASSERT(in != NULL); - - in->in_inact = 0; - mp->b_rptr -= sizeof (struct ieee80211_frame); - wh = (struct ieee80211_frame *)mp->b_rptr; - wh->ifrm_fc[0] = IEEE80211_FC0_VERSION_0 | - IEEE80211_FC0_TYPE_MGT | type; - wh->ifrm_fc[1] = IEEE80211_FC1_DIR_NODS; - *(uint16_t *)wh->ifrm_dur = 0; - *(uint16_t *)wh->ifrm_seq = - LE_16(in->in_txseq << IEEE80211_SEQ_SEQ_SHIFT); - in->in_txseq++; - IEEE80211_ADDR_COPY(wh->ifrm_addr1, in->in_macaddr); - IEEE80211_ADDR_COPY(wh->ifrm_addr2, isc->isc_macaddr); - IEEE80211_ADDR_COPY(wh->ifrm_addr3, in->in_bssid); - - (void) (*isc->isc_mgmt_send)(isc, mp); - return (0); -} - -mblk_t * -ieee80211_fill_header(ieee80211com_t *isc, mblk_t *mp_gld, - int32_t wep_txkey, struct ieee80211_node *in) -{ - struct ieee80211_frame *wh; - struct ieee80211_llc *llc; - struct ether_header *eh; - mblk_t *mp_header; - uint32_t iv; - uint8_t *ivp; - - ASSERT(mutex_owned(&isc->isc_genlock)); - - /* - * Alloc a new mblk struct for the whole IEEE80211 header. - */ - if ((mp_header = allocb(HEADERSPACE, BPRI_MED)) == NULL) { - ath_problem("ath: ieee80211_encap(): can't alloc mblk!\n"); - return (NULL); - } - mp_header->b_wptr = mp_header->b_rptr + - sizeof (struct ieee80211_frame); - - eh = (struct ether_header *)mp_gld->b_rptr; - - /* - * Fill 802.11 field. - */ - wh = (struct ieee80211_frame *)mp_header->b_rptr; - wh->ifrm_fc[0] = IEEE80211_FC0_VERSION_0 | IEEE80211_FC0_TYPE_DATA; - *(uint16_t *)wh->ifrm_dur = 0; - *(uint16_t *)wh->ifrm_seq = - LE_16(in->in_txseq << IEEE80211_SEQ_SEQ_SHIFT); - in->in_txseq++; - switch (isc->isc_opmode) { - case IEEE80211_M_STA: - wh->ifrm_fc[1] = IEEE80211_FC1_DIR_TODS; - IEEE80211_ADDR_COPY(wh->ifrm_addr1, in->in_bssid); - IEEE80211_ADDR_COPY(wh->ifrm_addr2, - eh->ether_shost.ether_addr_octet); - IEEE80211_ADDR_COPY(wh->ifrm_addr3, - eh->ether_dhost.ether_addr_octet); - break; - case IEEE80211_M_IBSS: - case IEEE80211_M_AHDEMO: - wh->ifrm_fc[1] = IEEE80211_FC1_DIR_NODS; - IEEE80211_ADDR_COPY(wh->ifrm_addr1, - eh->ether_dhost.ether_addr_octet); - IEEE80211_ADDR_COPY(wh->ifrm_addr2, - eh->ether_shost.ether_addr_octet); - IEEE80211_ADDR_COPY(wh->ifrm_addr3, in->in_bssid); - break; - case IEEE80211_M_HOSTAP: - wh->ifrm_fc[1] = IEEE80211_FC1_DIR_FROMDS; - IEEE80211_ADDR_COPY(wh->ifrm_addr1, - eh->ether_dhost.ether_addr_octet); - IEEE80211_ADDR_COPY(wh->ifrm_addr2, in->in_bssid); - IEEE80211_ADDR_COPY(wh->ifrm_addr3, - eh->ether_shost.ether_addr_octet); - break; - } - - if (isc->isc_flags & IEEE80211_F_WEPON) { - wh->ifrm_fc[1] |= IEEE80211_FC1_WEP; - ivp = mp_header->b_rptr + sizeof (struct ieee80211_frame); - /* - * IV must not duplicate during the lifetime of the key. - * But no mechanism to renew keys is defined in IEEE 802.11 - * WEP. And IV may be duplicated between other stations - * because of the session key itself is shared. - * So we use pseudo random IV for now, though it is not the - * right way. - */ - iv = isc->isc_iv; - /* - * Skip 'bad' IVs from Fluhrer/Mantin/Shamir: - * (B, 255, N) with 3 <= B < 8 - */ - if ((iv & 0xff00) == 0xff00) { - int B = (iv & 0xff0000) >> 16; - if (3 <= B && B < 16) - iv = (B+1) << 16; - } - isc->isc_iv = iv + 1; - -#ifdef ATH_HOST_BIG_ENDIAN - ivp[0] = iv >> 0; - ivp[1] = iv >> 8; - ivp[2] = iv >> 16; -#else - ivp[2] = iv >> 0; - ivp[1] = iv >> 8; - ivp[0] = iv >> 16; -#endif /* ATH_HOST_BIG_ENDIAN */ - - /* Key ID and pad */ - ivp[IEEE80211_WEP_IVLEN] = wep_txkey << 6; - /* - * The ICV length must be included into hdrlen and pktlen. - */ - mp_header->b_wptr += - IEEE80211_WEP_IVLEN + IEEE80211_WEP_KIDLEN; - } - - /* - * CRC are added by H/W, not encaped by driver, - * but we must count it in pkt length. - */ - - /* - * fill LLC and SNAP fields. - */ - llc = (struct ieee80211_llc *)mp_header->b_wptr; - llc->illc_dsap = LLC_DSAP; - llc->illc_ssap = LLC_SSAP; - llc->illc_control = LLC_CONTROL; - llc->illc_oc[0] = SNAP_OC0; - llc->illc_oc[1] = SNAP_OC1; - llc->illc_oc[2] = SNAP_OC2; - llc->illc_ether_type = eh->ether_type; - mp_header->b_wptr += sizeof (struct ieee80211_llc); - - return (mp_header); -} - -mblk_t * -ieee80211_decap(mblk_t *mp) -{ - struct ether_header *eh; - struct ieee80211_frame wh; - struct ieee80211_llc *llc; - - if ((mp->b_wptr - mp->b_rptr) < (sizeof (wh) + sizeof (*llc))) { - freemsg(mp); - return (NULL); - } - - bcopy(mp->b_rptr, &wh, sizeof (struct ieee80211_frame)); - mp->b_rptr += sizeof (struct ieee80211_frame); - llc = (struct ieee80211_llc *)mp->b_rptr; - - if (llc->illc_dsap == LLC_DSAP && llc->illc_ssap == LLC_SSAP && - llc->illc_control == LLC_CONTROL && llc->illc_oc[0] == SNAP_OC0 && - llc->illc_oc[1] == SNAP_OC1 && llc->illc_oc[2] == SNAP_OC2) { - mp->b_rptr += sizeof (struct ieee80211_llc); - llc = NULL; - } - /* - * we are sure that the size of ieee80211_frame plus llc is - * larger than the size of ether_header, - * so there has enough space to encap ether_header in this mblk. - */ - mp->b_rptr -= sizeof (struct ether_header); - eh = (struct ether_header *)mp->b_rptr; - switch (wh.ifrm_fc[1] & IEEE80211_FC1_DIR_MASK) { - case IEEE80211_FC1_DIR_NODS: - IEEE80211_ADDR_COPY(eh->ether_dhost.ether_addr_octet, - wh.ifrm_addr1); - IEEE80211_ADDR_COPY(eh->ether_shost.ether_addr_octet, - wh.ifrm_addr2); - break; - case IEEE80211_FC1_DIR_TODS: - IEEE80211_ADDR_COPY(eh->ether_dhost.ether_addr_octet, - wh.ifrm_addr3); - IEEE80211_ADDR_COPY(eh->ether_shost.ether_addr_octet, - wh.ifrm_addr2); - break; - case IEEE80211_FC1_DIR_FROMDS: - IEEE80211_ADDR_COPY(eh->ether_dhost.ether_addr_octet, - wh.ifrm_addr1); - IEEE80211_ADDR_COPY(eh->ether_shost.ether_addr_octet, - wh.ifrm_addr3); - break; - case IEEE80211_FC1_DIR_DSTODS: - /* not yet supported */ - ATH_DEBUG((ATH_DBG_80211, "ath: " - "ieee80211_decap(): DS to DS\n")); - freemsg(mp); - return (NULL); - } - - if (llc != NULL) - eh->ether_type = htons(mp->b_wptr - mp->b_rptr - sizeof (*eh)); - - return (mp); -} - -/* - * This function doesn't need mutex protection. - */ -void -ieee80211_dump_pkt(uint8_t *buf, int32_t len, int32_t rate, int32_t rssi) -{ - struct ieee80211_frame *wh; - int32_t i; - int8_t buf1[100], buf2[25]; - - bzero(buf1, sizeof (buf1)); - bzero(buf2, sizeof (buf2)); - wh = (struct ieee80211_frame *)buf; - switch (wh->ifrm_fc[1] & IEEE80211_FC1_DIR_MASK) { - case IEEE80211_FC1_DIR_NODS: - (void) sprintf(buf2, "NODS %s", - ieee80211_ether_sprintf(wh->ifrm_addr2)); - (void) strcat(buf1, buf2); - (void) sprintf(buf2, "->%s", - ieee80211_ether_sprintf(wh->ifrm_addr1)); - (void) strcat(buf1, buf2); - (void) sprintf(buf2, "(%s)", - ieee80211_ether_sprintf(wh->ifrm_addr3)); - (void) strcat(buf1, buf2); - break; - case IEEE80211_FC1_DIR_TODS: - (void) sprintf(buf2, "TODS %s", - ieee80211_ether_sprintf(wh->ifrm_addr2)); - (void) strcat(buf1, buf2); - (void) sprintf(buf2, "->%s", - ieee80211_ether_sprintf(wh->ifrm_addr3)); - (void) strcat(buf1, buf2); - (void) sprintf(buf2, "(%s)", - ieee80211_ether_sprintf(wh->ifrm_addr1)); - (void) strcat(buf1, buf2); - break; - case IEEE80211_FC1_DIR_FROMDS: - (void) sprintf(buf2, "FRDS %s", - ieee80211_ether_sprintf(wh->ifrm_addr3)); - (void) strcat(buf1, buf2); - (void) sprintf(buf2, "->%s", - ieee80211_ether_sprintf(wh->ifrm_addr1)); - (void) strcat(buf1, buf2); - (void) sprintf(buf2, "(%s)", - ieee80211_ether_sprintf(wh->ifrm_addr2)); - (void) strcat(buf1, buf2); - break; - case IEEE80211_FC1_DIR_DSTODS: - (void) sprintf(buf2, "DSDS %s", - ieee80211_ether_sprintf((uint8_t *)&wh[1])); - (void) strcat(buf1, buf2); - (void) sprintf(buf2, "->%s ", - ieee80211_ether_sprintf(wh->ifrm_addr3)); - (void) strcat(buf1, buf2); - (void) sprintf(buf2, "%s", - ieee80211_ether_sprintf(wh->ifrm_addr2)); - (void) strcat(buf1, buf2); - (void) sprintf(buf2, "->%s", - ieee80211_ether_sprintf(wh->ifrm_addr1)); - (void) strcat(buf1, buf2); - break; - } - ATH_DEBUG((ATH_DBG_80211, "ath: ieee80211_dump_pkt(): %s", buf1)); - bzero(buf1, sizeof (buf1)); - - switch (wh->ifrm_fc[0] & IEEE80211_FC0_TYPE_MASK) { - case IEEE80211_FC0_TYPE_DATA: - (void) sprintf(buf2, "data"); - break; - case IEEE80211_FC0_TYPE_MGT: - (void) sprintf(buf2, "%s", - ieee80211_mgt_subtype_name[ - (wh->ifrm_fc[0] & IEEE80211_FC0_SUBTYPE_MASK) - >> IEEE80211_FC0_SUBTYPE_SHIFT]); - break; - default: - (void) sprintf(buf2, "type#%d", - wh->ifrm_fc[0] & IEEE80211_FC0_TYPE_MASK); - break; - } - (void) strcat(buf1, buf2); - if (wh->ifrm_fc[1] & IEEE80211_FC1_WEP) { - (void) sprintf(buf2, " WEP"); - (void) strcat(buf1, buf2); - } - if (rate >= 0) { - (void) sprintf(buf2, " %dM", rate / 2); - (void) strcat(buf1, buf2); - } - if (rssi >= 0) { - (void) sprintf(buf2, " +%d", rssi); - (void) strcat(buf1, buf2); - } - ATH_DEBUG((ATH_DBG_80211, "ath: ieee80211_dump_pkt(): %s", buf1)); - bzero(buf1, sizeof (buf1)); - - if (len > 0) { - for (i = 0; i < (len > 40 ? 40 : len); i++) { - if ((i & 0x03) == 0) - (void) strcat(buf1, " "); - (void) sprintf(buf2, "%02x", buf[i]); - (void) strcat(buf1, buf2); - } - ATH_DEBUG((ATH_DBG_80211, "ath: ieee80211_dump_pkt(): %s", - buf1)); - } -} - -/* - * Mark the basic rates for the 11g rate table based on the - * operating mode. For real 11g we mark all the 11b rates - * and 6, 12, and 24 OFDM. For 11b compatibility we mark only - * 11b rates. There's also a pseudo 11a-mode used to mark only - * the basic OFDM rates. - */ -static void -ieee80211_set11gbasicrates(struct ieee80211_rateset *rs, - enum ieee80211_phymode mode) -{ - static const struct ieee80211_rateset basic[] = { - { 3, { 12, 24, 48 } }, /* IEEE80211_MODE_11A */ - { 4, { 2, 4, 11, 22 } }, /* IEEE80211_MODE_11B */ - { 7, { 2, 4, 11, 22, 12, 24, 48 } }, /* IEEE80211_MODE_11G */ - { 0 }, /* IEEE80211_MODE_TURBO */ - }; - int32_t i, j; - - for (i = 0; i < rs->ir_nrates; i++) { - rs->ir_rates[i] &= IEEE80211_RATE_VAL; - for (j = 0; j < basic[mode].ir_nrates; j++) - if (basic[mode].ir_rates[j] == rs->ir_rates[i]) { - rs->ir_rates[i] |= IEEE80211_RATE_BASIC; - break; - } - } -} - -/* - * Set the current phy mode and recalculate the active channel - * set based on the available channels for this mode. Also - * select a new default/current channel if the current one is - * inappropriate for this mode. - */ -static int -ieee80211_setmode(ieee80211com_t *isc, enum ieee80211_phymode mode) -{ - static const uint32_t chanflags[] = { - 0, /* IEEE80211_MODE_AUTO */ - IEEE80211_CHAN_A, /* IEEE80211_MODE_11A */ - IEEE80211_CHAN_B, /* IEEE80211_MODE_11B */ - IEEE80211_CHAN_PUREG, /* IEEE80211_MODE_11G */ - IEEE80211_CHAN_T, /* IEEE80211_MODE_TURBO */ - }; - struct ieee80211channel *ch; - uint32_t modeflags; - int32_t i; - - /* validate new mode */ - if ((isc->isc_modecaps & (1 << mode)) == 0) { - ath_problem("ath: ieee80211_setmode(): mode %u not supported" - " (caps 0x%x)\n", mode, isc->isc_modecaps); - return (EINVAL); - } - - /* - * Verify at least one channel is present in the available - * channel list before committing to the new mode. - */ - ASSERT(mode < ATH_N(chanflags)); - - modeflags = chanflags[mode]; - /* isc_channels size is IEEE80211_CHAN_MAX + 1, so no problem */ - for (i = 0; i <= IEEE80211_CHAN_MAX; i++) { - ch = &isc->isc_channels[i]; - if (mode == IEEE80211_MODE_AUTO) { - /* ignore turbo channels for autoselect */ - if ((ch->ich_flags & ~IEEE80211_CHAN_TURBO) != 0) - break; - } else { - if ((ch->ich_flags & modeflags) == modeflags) - break; - } - } - if (i > IEEE80211_CHAN_MAX) { - ath_problem("ath: ieee80211_setmode(): " - "no channel found for mode %u\n", mode); - return (EINVAL); - } - - /* - * Calculate the active channel set. - */ - bzero(isc->isc_chan_active, sizeof (isc->isc_chan_active)); - for (i = 0; i <= IEEE80211_CHAN_MAX; i++) { - ch = &isc->isc_channels[i]; - if (mode == IEEE80211_MODE_AUTO) { - /* take anything but pure turbo channels */ - if ((ch->ich_flags & ~IEEE80211_CHAN_TURBO) != 0) - setbit(isc->isc_chan_active, i); - } else { - if ((ch->ich_flags & modeflags) == modeflags) - setbit(isc->isc_chan_active, i); - } - } - /* - * If no current/default channel is setup or the current - * channel is wrong for the mode then pick the first - * available channel from the active list. This is likely - * not the right one. - */ - if (isc->isc_ibss_chan == NULL || - isclr(isc->isc_chan_active, - ieee80211_chan2ieee(isc, isc->isc_ibss_chan))) { - for (i = 0; i <= IEEE80211_CHAN_MAX; i++) - if (isset(isc->isc_chan_active, i)) { - isc->isc_ibss_chan = &isc->isc_channels[i]; - break; - } - } - - /* - * Set/reset state flags that influence beacon contents, etc. - */ - - if (isc->isc_caps & IEEE80211_C_SHPREAMBLE) - isc->isc_flags |= IEEE80211_F_SHPREAMBLE; - if (mode == IEEE80211_MODE_11G) { - if (isc->isc_caps & IEEE80211_C_SHSLOT) - isc->isc_flags |= IEEE80211_F_SHSLOT; - ieee80211_set11gbasicrates(&isc->isc_sup_rates[mode], - IEEE80211_MODE_11G); - } else { - isc->isc_flags &= ~(IEEE80211_F_SHSLOT); - } - - /* - * Setup an initial rate set according to the - * current/default channel. This will be changed - * when scanning but must exist now so drivers have - * consistent state of ic_ibss_chan. - */ - if (isc->isc_bss) - isc->isc_bss->in_rates = isc->isc_sup_rates[mode]; - isc->isc_curmode = mode; - - return (0); -} - -/* - * If (its return value & IEEE80211_RATE_BASIC != 0), - * the rate negotiation or fix rate is failed. - */ -static int -ieee80211_fix_rate(ieee80211com_t *isc, - struct ieee80211_node *in, int32_t flags) -{ - int32_t i, j, ignore, error; - int32_t okrate, badrate; - struct ieee80211_rateset *srs, *nrs; - uint8_t r; - - error = 0; - okrate = badrate = 0; - srs = &isc->isc_sup_rates[ieee80211_chan2mode(isc, in->in_chan)]; - nrs = &in->in_rates; - for (i = 0; i < in->in_rates.ir_nrates; ) { - ignore = 0; - if (flags & IEEE80211_F_DOSORT) { - /* - * Sort rates. - */ - for (j = i + 1; j < nrs->ir_nrates; j++) { - if (IEEE80211_RV(nrs->ir_rates[i]) > - IEEE80211_RV(nrs->ir_rates[j])) { - r = nrs->ir_rates[i]; - nrs->ir_rates[i] = nrs->ir_rates[j]; - nrs->ir_rates[j] = r; - } - } - } - r = nrs->ir_rates[i] & IEEE80211_RATE_VAL; - badrate = r; - if (flags & IEEE80211_F_DOFRATE) { - /* - * Apply fixed rate constraint. Note that we do - * not apply the constraint to basic rates as - * otherwise we may not be able to associate if - * the rate set we submit to the AP is invalid - * (e.g. fix rate at 36Mb/s which is not a basic - * rate for 11a operation). - */ - if ((nrs->ir_rates[i] & IEEE80211_RATE_BASIC) == 0 && - isc->isc_fixed_rate >= 0 && - r != IEEE80211_RV(srs->ir_rates - [isc->isc_fixed_rate])) - ignore++; - } - if (flags & IEEE80211_F_DONEGO) { - /* - * Check against supported rates. - */ - for (j = 0; j < srs->ir_nrates; j++) { - if (r == IEEE80211_RV(srs->ir_rates[j])) - break; - } - if (j == srs->ir_nrates) { - if (nrs->ir_rates[i] & IEEE80211_RATE_BASIC) - error++; - ignore++; - } - } - if (flags & IEEE80211_F_DODEL) { - /* - * Delete unacceptable rates. - */ - if (ignore) { - nrs->ir_nrates--; - for (j = i; j < nrs->ir_nrates; j++) - nrs->ir_rates[j] = nrs->ir_rates[j + 1]; - nrs->ir_rates[j] = 0; - continue; - } - } - if (!ignore) - okrate = nrs->ir_rates[i]; - i++; - } - if (okrate == 0 || error != 0) - return (badrate | IEEE80211_RATE_BASIC); - else - return (IEEE80211_RV(okrate)); -} - -/* - * Complete a scan of potential channels. - */ -static void -ieee80211_end_scan(ieee80211com_t *isc) -{ - struct ieee80211_node *in, *selbs; - uint8_t rate; - int32_t fail; - - ASSERT(isc->isc_state == IEEE80211_S_SCAN); - ASSERT(mutex_owned(&isc->isc_genlock)); - - isc->isc_flags &= ~IEEE80211_F_ASCAN; - cv_broadcast(&isc->isc_scan_cv); - in = list_head(&isc->isc_in_list); - - if (in == NULL) { - ATH_DEBUG((ATH_DBG_80211, "ath: ieee80211_end_scan(): " - "no scan candidate\n")); -notfound: - if (isc->isc_opmode == IEEE80211_M_IBSS && - (isc->isc_flags & IEEE80211_F_IBSSON) && - isc->isc_des_esslen != 0) { - ieee80211_create_ibss(isc, isc->isc_ibss_chan); - return; - } - mutex_exit(&isc->isc_genlock); - delay(drv_usectohz(200000)); - mutex_enter(&isc->isc_genlock); - ieee80211_begin_scan(isc, isc->isc_bss); - return; - } - - selbs = NULL; - for (; in != NULL; in = list_next(&isc->isc_in_list, in)) { - ATH_DEBUG((ATH_DBG_80211, "ath: " - "ieee80211_end_scan(): isc_bss->in_bssid=%s", - ieee80211_ether_sprintf(in->in_bssid))); - if (in->in_fails) { - /* - * The configuration of the access points may change - * during my scan. So delete the entry for the AP - * and retry to associate if there is another beacon. - */ - if (in->in_fails++ > 2) - ieee80211_free_node(isc, in); - continue; - } - fail = 0; - if (in->in_chan == NULL || in->in_chan->ich_flags == 0) - fail |= 0x01; - if (isc->isc_des_chan != - (struct ieee80211channel *)IEEE80211_CHAN_ANY && - in->in_chan != isc->isc_des_chan) - fail |= 0x01; - if (isc->isc_opmode == IEEE80211_M_IBSS) { - if ((in->in_capinfo & IEEE80211_CAPINFO_IBSS) == 0) - fail |= 0x02; - } else { - if ((in->in_capinfo & IEEE80211_CAPINFO_ESS) == 0) - fail |= 0x02; - } - - if (isc->isc_flags & IEEE80211_F_WEPON) { - if ((in->in_capinfo & IEEE80211_CAPINFO_PRIVACY) == 0) - fail |= 0x04; - } else { - if (in->in_capinfo & IEEE80211_CAPINFO_PRIVACY) - fail |= 0x04; - } - - rate = ieee80211_fix_rate(isc, in, IEEE80211_F_DONEGO); - if (rate & IEEE80211_RATE_BASIC) - fail |= 0x08; - if (isc->isc_des_esslen != 0 && - (in->in_esslen != isc->isc_des_esslen || - bcmp(in->in_essid, isc->isc_des_essid, - isc->isc_des_esslen) != 0)) - fail |= 0x10; - if ((isc->isc_flags & IEEE80211_F_DESBSSID) && - !IEEE80211_ADDR_EQ(isc->isc_des_bssid, in->in_bssid)) - fail |= 0x20; - if (!fail) { - if (selbs == NULL) - selbs = in; - else if (ieee80211_get_rssi(in) > - ieee80211_get_rssi(selbs)) - selbs = in; - } - } - if (selbs == NULL) - goto notfound; - bcopy(selbs, isc->isc_bss, sizeof (struct ieee80211_node)); - if (isc->isc_opmode == IEEE80211_M_IBSS) { - (void) ieee80211_fix_rate(isc, isc->isc_bss, - IEEE80211_F_DOFRATE | IEEE80211_F_DONEGO | - IEEE80211_F_DODEL); - if (isc->isc_bss->in_rates.ir_nrates == 0) { - selbs->in_fails++; - goto notfound; - } - (void) _ieee80211_new_state(isc, IEEE80211_S_RUN, -1); - } else - (void) _ieee80211_new_state(isc, IEEE80211_S_AUTH, -1); -} - - -/* - * Switch to the next channel marked for scanning. - * This one is only called by multi-func thread. - */ -static void -ieee80211_next_scan(ieee80211com_t *isc) -{ - struct ieee80211channel *chan; - - ASSERT(isc->isc_state == IEEE80211_S_SCAN); - ASSERT(mutex_owned(&isc->isc_genlock)); - - chan = isc->isc_bss->in_chan; - for (;;) { - if (++chan > &isc->isc_channels[IEEE80211_CHAN_MAX]) - chan = &isc->isc_channels[0]; - if (isset(isc->isc_chan_scan, ieee80211_chan2ieee(isc, chan))) { - /* - * Honor channels marked passive-only - * during an active scan. - */ - if ((isc->isc_flags & IEEE80211_F_ASCAN) == 0 || - (chan->ich_flags & IEEE80211_CHAN_PASSIVE) == 0) - break; - } - if (chan == isc->isc_bss->in_chan) { - ieee80211_end_scan(isc); - return; - } - } - clrbit(isc->isc_chan_scan, ieee80211_chan2ieee(isc, chan)); - - isc->isc_bss->in_chan = chan; - (void) _ieee80211_new_state(isc, IEEE80211_S_SCAN, -1); -} - - -static void -ieee80211_setup_node(ieee80211com_t *isc, - struct ieee80211_node *in, uint8_t *macaddr) -{ - int32_t hash; - - ASSERT(mutex_owned(&isc->isc_genlock)); - - IEEE80211_ADDR_COPY(in->in_macaddr, macaddr); - hash = IEEE80211_NODE_HASH(macaddr); - list_insert_tail(&isc->isc_in_list, in); - list_insert_tail(&isc->isc_inhash_list[hash], in); - /* - * Note we don't enable the inactive timer when acting - * as a station. Nodes created in this mode represent - * AP's identified while scanning. If we time them out - * then several things happen: we can't return the data - * to users to show the list of AP's we encountered, and - * more importantly, we'll incorrectly deauthenticate - * ourself because the inactivity timer will kick us off. - */ - if (isc->isc_opmode != IEEE80211_M_STA) - isc->isc_inact_timeout = IEEE80211_INACT_WAIT; -} - -static struct ieee80211_node * -ieee80211_alloc_node(ieee80211com_t *isc, uint8_t *macaddr) -{ - struct ieee80211_node *in = (*isc->isc_node_alloc)(isc); - bzero(in, sizeof (struct ieee80211_node)); - ieee80211_setup_node(isc, in, macaddr); - return (in); -} - -static struct ieee80211_node * -ieee80211_dup_bss(ieee80211com_t *isc, uint8_t *macaddr) -{ - struct ieee80211_node *in; - - in = kmem_zalloc(sizeof (struct ieee80211_node), KM_SLEEP); - ieee80211_setup_node(isc, in, macaddr); - return (in); -} - -/* - * Find a node state block given the mac address. Note that - * this returns the first node found with the mac address. - */ -struct ieee80211_node * -ieee80211_find_node(ieee80211com_t *isc, uint8_t *macaddr) -{ - struct ieee80211_node *in; - int32_t hash; - - hash = IEEE80211_NODE_HASH(macaddr); - in = list_head(&isc->isc_inhash_list[hash]); - while (in != NULL) { - if (IEEE80211_ADDR_EQ(in->in_macaddr, macaddr)) - break; - in = list_next(&isc->isc_inhash_list[hash], in); - } - return (in); -} - -/* - * Like find but search based on the channel too. - */ -struct ieee80211_node * -ieee80211_lookup_node(ieee80211com_t *isc, uint8_t *macaddr, - struct ieee80211channel *chan) -{ - struct ieee80211_node *in; - int32_t hash; - - hash = IEEE80211_NODE_HASH(macaddr); - in = list_head(&isc->isc_inhash_list[hash]); - while (in != NULL) { - if (IEEE80211_ADDR_EQ(in->in_macaddr, macaddr) && - (in->in_chan == chan)) - break; - in = list_next(&isc->isc_inhash_list[hash], in); - } - return (in); -} - - - -/* - * Install received rate set information in the node's state block. - * If (its return value & IEEE80211_RATE_BASIC != 0), - * the rate negotiation or fix rate is failed. - */ -static int32_t -ieee80211_setup_rates(ieee80211com_t *isc, struct ieee80211_node *in, - uint8_t *rates, uint8_t *xrates, int32_t flags) -{ - struct ieee80211_rateset *rs = &in->in_rates; - - bzero(rs, sizeof (*rs)); - rs->ir_nrates = rates[1]; - bcopy(rates + 2, rs->ir_rates, rs->ir_nrates); - if (xrates != NULL) { - uint8_t nxrates; - /* - * Tack on 11g extended supported rate element. - */ - nxrates = xrates[1]; - if (rs->ir_nrates + nxrates > IEEE80211_RATE_MAXSIZE) { - nxrates = IEEE80211_RATE_MAXSIZE - rs->ir_nrates; - ATH_DEBUG((ATH_DBG_80211, "ath: " - "ieee80211_setup_rates(): extended rate set" - " too large; only using %u of %u rates\n", - nxrates, xrates[1])); - } - bcopy(xrates + 2, rs->ir_rates + rs->ir_nrates, nxrates); - rs->ir_nrates += nxrates; - } - return (ieee80211_fix_rate(isc, in, flags)); -} - - -/* - * Misc management frame encapsulation functions. - */ -static uint8_t * -ieee80211_add_rates(uint8_t *frm, const struct ieee80211_rateset *rs) -{ - int32_t nrates; - - *frm++ = IEEE80211_ELEMID_RATES; - nrates = rs->ir_nrates; - if (nrates > IEEE80211_RATE_SIZE) - nrates = IEEE80211_RATE_SIZE; - *frm++ = nrates; - bcopy(rs->ir_rates, frm, nrates); - return (frm + nrates); -} - -static uint8_t * -ieee80211_add_xrates(uint8_t *frm, const struct ieee80211_rateset *rs) -{ - /* - * Add an extended supported rates element if operating in 11g mode. - */ - if (rs->ir_nrates > IEEE80211_RATE_SIZE) { - int32_t nrates = rs->ir_nrates - IEEE80211_RATE_SIZE; - *frm++ = IEEE80211_ELEMID_XRATES; - *frm++ = nrates; - bcopy(rs->ir_rates + IEEE80211_RATE_SIZE, frm, nrates); - frm += nrates; - } - return (frm); -} - -static uint8_t * -ieee80211_add_ssid(uint8_t *frm, const uint8_t *ssid, uint32_t len) -{ - *frm++ = IEEE80211_ELEMID_SSID; - *frm++ = len; - bcopy(ssid, frm, len); - return (frm + len); -} - -/* - * Following functions are responsible for management frame encapsulation. - */ -static int32_t -ieee80211_send_prreq(ieee80211com_t *isc, struct ieee80211_node *in, - int32_t type, int32_t dummy) -{ - int32_t ret, pktlen; - mblk_t *mp; - uint8_t *frm; - enum ieee80211_phymode mode; - - _NOTE(ARGUNUSED(dummy)); - - ASSERT(mutex_owned(&isc->isc_genlock)); - /* - * prreq frame format - * [tlv] ssid - * [tlv] supported rates - * [tlv] extended supported rates - */ - pktlen = sizeof (struct ieee80211_frame) + - 2 + isc->isc_des_esslen + - 2 + IEEE80211_RATE_SIZE + - 2 + (IEEE80211_RATE_MAXSIZE - IEEE80211_RATE_SIZE); - mp = allocb(pktlen, BPRI_MED); - if (mp == NULL) { - ath_problem("ath: ieee80211_send_prreq(): no space\n"); - return (ENOMEM); - } - mp->b_rptr += sizeof (struct ieee80211_frame); - - frm = mp->b_rptr; - frm = ieee80211_add_ssid(frm, isc->isc_des_essid, isc->isc_des_esslen); - mode = ieee80211_chan2mode(isc, in->in_chan); - frm = ieee80211_add_rates(frm, &isc->isc_sup_rates[mode]); - frm = ieee80211_add_xrates(frm, &isc->isc_sup_rates[mode]); - mp->b_wptr = frm; - - ret = ieee80211_mgmt_output(isc, in, mp, type); - isc->isc_mgt_timeout = IEEE80211_TRANS_WAIT; - - ATH_DEBUG((ATH_DBG_80211, "ath: ieee80211_send_prreq() " - "channel=%u\n", ieee80211_chan2ieee(isc, in->in_chan))); - - return (ret); -} - -static int32_t -ieee80211_send_prresp(ieee80211com_t *isc, struct ieee80211_node *bs0, - int32_t type, int32_t dummy) -{ - mblk_t *mp; - uint8_t *frm; - struct ieee80211_node *in = isc->isc_bss; - uint16_t capinfo; - int32_t pktlen; - - _NOTE(ARGUNUSED(dummy)); - - ASSERT(mutex_owned(&isc->isc_genlock)); - /* - * probe response frame format - * [8] time stamp - * [2] beacon interval - * [2] cabability information - * [tlv] ssid - * [tlv] supported rates - * [tlv] parameter set (IBSS) - * [tlv] extended supported rates - */ - pktlen = sizeof (struct ieee80211_frame) + - 8 + 2 + 2 + 2 + - 2 + in->in_esslen + - 2 + IEEE80211_RATE_SIZE + - 6 + - 2 + (IEEE80211_RATE_MAXSIZE - IEEE80211_RATE_SIZE); - mp = allocb(pktlen, BPRI_MED); - if (mp == NULL) { - ath_problem("ath: ieee80211_send_prresp(): alloc failed.\n"); - return (ENOMEM); - } - mp->b_rptr += sizeof (struct ieee80211_frame); - frm = mp->b_rptr; - - bzero(frm, 8); /* timestamp */ - frm += 8; - - *(uint16_t *)frm = LE_16(in->in_intval); - frm += 2; - - if (isc->isc_opmode == IEEE80211_M_IBSS) - capinfo = IEEE80211_CAPINFO_IBSS; - else - capinfo = IEEE80211_CAPINFO_ESS; - if (isc->isc_flags & IEEE80211_F_WEPON) - capinfo |= IEEE80211_CAPINFO_PRIVACY; - *(uint16_t *)frm = LE_16(capinfo); - frm += 2; - - frm = ieee80211_add_ssid(frm, in->in_essid, in->in_esslen); - frm = ieee80211_add_rates(frm, &in->in_rates); - - if (isc->isc_opmode == IEEE80211_M_IBSS) { - *frm++ = IEEE80211_ELEMID_IBSSPARMS; - *frm++ = 2; - *frm++ = 0; *frm++ = 0; /* ATIM window */ - } else { /* IEEE80211_M_HOSTAP */ - /* TIM */ - *frm++ = IEEE80211_ELEMID_TIM; - *frm++ = 4; /* length */ - *frm++ = 0; /* DTIM count */ - *frm++ = 1; /* DTIM period */ - *frm++ = 0; /* bitmap control */ - *frm++ = 0; /* Partial Virtual Bitmap (variable length) */ - } - frm = ieee80211_add_xrates(frm, &in->in_rates); - mp->b_wptr = frm; - - return (ieee80211_mgmt_output(isc, bs0, mp, type)); -} - -static int32_t -ieee80211_send_auth(ieee80211com_t *isc, struct ieee80211_node *in, - int32_t type, int32_t seq) -{ - mblk_t *mp; - uint16_t *frm; - int32_t ret, pktlen; - - ASSERT(mutex_owned(&isc->isc_genlock)); - - pktlen = sizeof (struct ieee80211_frame) + 3 * sizeof (uint16_t); - mp = allocb(pktlen, BPRI_MED); - if (mp == NULL) { - ath_problem("ath: ieee80211_send_auth(): allocb failed\n"); - return (ENOMEM); - } - mp->b_wptr = mp->b_rptr + pktlen; - mp->b_rptr += sizeof (struct ieee80211_frame); - - frm = (uint16_t *)mp->b_rptr; - /* shared key auth */ - frm[0] = LE_16(IEEE80211_AUTH_ALG_OPEN); - frm[1] = LE_16(seq); - frm[2] = 0; /* status */ - ret = ieee80211_mgmt_output(isc, in, mp, type); - if (isc->isc_opmode == IEEE80211_M_STA) - isc->isc_mgt_timeout = IEEE80211_TRANS_WAIT; - return (ret); -} - -static int32_t -ieee80211_send_deauth(ieee80211com_t *isc, struct ieee80211_node *in, - int32_t type, int32_t reason) -{ - mblk_t *mp; - uint16_t *frm; - int32_t pktlen; - - ASSERT(mutex_owned(&isc->isc_genlock)); - ATH_DEBUG((ATH_DBG_80211, "ath: " - "ieee80211_send_deauth(): station %s deauthenticate", - " (reason %d)\n", ieee80211_ether_sprintf(in->in_macaddr), reason)); - pktlen = sizeof (struct ieee80211_frame) + sizeof (uint16_t); - mp = allocb(pktlen, BPRI_MED); - if (mp == NULL) { - ath_problem("ath: ieee80211_send_deauth(): allocb failed\n"); - return (ENOMEM); - } - mp->b_wptr = mp->b_rptr + pktlen; - mp->b_rptr += sizeof (struct ieee80211_frame); - - frm = (uint16_t *)mp->b_rptr; - frm[0] = LE_16(reason); - - return (ieee80211_mgmt_output(isc, in, mp, type)); -} - -static int32_t -ieee80211_send_asreq(ieee80211com_t *isc, struct ieee80211_node *in, - int32_t type, int32_t dummy) -{ - mblk_t *mp; - uint8_t *frm; - uint16_t capinfo = 0; - int32_t ret, pktlen; - - _NOTE(ARGUNUSED(dummy)); - - ASSERT(mutex_owned(&isc->isc_genlock)); - /* - * asreq frame format - * [2] capability information - * [2] listen interval - * [6*] current AP address (reassoc only) - * [tlv] ssid - * [tlv] supported rates - * [tlv] extended supported rates - */ - pktlen = sizeof (struct ieee80211_frame) + - sizeof (capinfo) + sizeof (uint16_t) + IEEE80211_ADDR_LEN + - 2 + in->in_esslen + 2 + IEEE80211_RATE_SIZE + - 2 + (IEEE80211_RATE_MAXSIZE - IEEE80211_RATE_SIZE); - mp = allocb(pktlen, BPRI_MED); - if (mp == NULL) { - ath_problem("ath: ieee80211_send_asreq: allocb failed\n"); - return (ENOMEM); - } - mp->b_rptr += sizeof (struct ieee80211_frame); - - frm = (uint8_t *)mp->b_rptr; - - capinfo = 0; - if (isc->isc_opmode == IEEE80211_M_IBSS) - capinfo |= IEEE80211_CAPINFO_IBSS; - else /* IEEE80211_M_STA */ - capinfo |= IEEE80211_CAPINFO_ESS; - if (isc->isc_flags & IEEE80211_F_WEPON) - capinfo |= IEEE80211_CAPINFO_PRIVACY; - if (isc->isc_flags & IEEE80211_F_SHPREAMBLE) - capinfo |= IEEE80211_CAPINFO_SHORT_PREAMBLE; - if (isc->isc_flags & IEEE80211_F_SHSLOT) - capinfo |= IEEE80211_CAPINFO_SHORT_SLOTTIME; - capinfo |= 0x0020; - *(uint16_t *)frm = LE_16(capinfo); - frm += 2; - - *(uint16_t *)frm = LE_16(isc->isc_lintval); - frm += 2; - - if (type == IEEE80211_FC0_SUBTYPE_REASSOC_REQ) { - IEEE80211_ADDR_COPY(frm, isc->isc_bss->in_bssid); - frm += IEEE80211_ADDR_LEN; - } - - frm = ieee80211_add_ssid(frm, in->in_essid, in->in_esslen); - frm = ieee80211_add_rates(frm, &in->in_rates); - frm = ieee80211_add_xrates(frm, &in->in_rates); - mp->b_wptr = frm; - ret = ieee80211_mgmt_output(isc, in, mp, type); - isc->isc_mgt_timeout = IEEE80211_TRANS_WAIT; - return (ret); -} - -static int32_t -ieee80211_send_asresp(ieee80211com_t *isc, struct ieee80211_node *in, - int32_t type, int32_t status) -{ - mblk_t *mp; - uint8_t *frm; - uint16_t capinfo; - int32_t pktlen; - - ASSERT(mutex_owned(&isc->isc_genlock)); - /* - * asreq frame format - * [2] capability information - * [2] status - * [2] association ID - * [tlv] supported rates - * [tlv] extended supported rates - */ - pktlen = sizeof (struct ieee80211_frame) + - sizeof (capinfo) + - sizeof (uint16_t) + - sizeof (uint16_t) + - 2 + IEEE80211_RATE_SIZE + - 2 + (IEEE80211_RATE_MAXSIZE - IEEE80211_RATE_SIZE); - mp = allocb(pktlen, BPRI_MED); - if (mp == NULL) { - ath_problem("ath: ieee80211_send_asresp: allocb failed\n"); - return (ENOMEM); - } - mp->b_rptr += sizeof (struct ieee80211_frame); - frm = (uint8_t *)mp->b_rptr; - - capinfo = IEEE80211_CAPINFO_ESS; - if (isc->isc_flags & IEEE80211_F_WEPON) - capinfo |= IEEE80211_CAPINFO_PRIVACY; - *(uint16_t *)frm = LE_16(capinfo); - frm += 2; - - *(uint16_t *)frm = LE_16(status); - frm += 2; - - if (status == IEEE80211_STATUS_SUCCESS && in != NULL) - *(uint16_t *)frm = LE_16(in->in_associd); - else - *(uint16_t *)frm = LE_16(0); - frm += 2; - - if (in != NULL) { - frm = ieee80211_add_rates(frm, &in->in_rates); - frm = ieee80211_add_xrates(frm, &in->in_rates); - } else { - frm = ieee80211_add_rates(frm, &isc->isc_bss->in_rates); - frm = ieee80211_add_xrates(frm, &isc->isc_bss->in_rates); - } - mp->b_wptr = frm; - - return (ieee80211_mgmt_output(isc, in, mp, type)); -} - -static int32_t -ieee80211_send_disassoc(ieee80211com_t *isc, struct ieee80211_node *in, - int32_t type, int32_t reason) -{ - mblk_t *mp; - uint16_t *frm; - int32_t pktlen; - - _NOTE(ARGUNUSED(type)) - - ASSERT(mutex_owned(&isc->isc_genlock)); - - ATH_DEBUG((ATH_DBG_80211, "ath: " - "ieee80211_send_disassoc(): station %s disassociate", - " (reason %d)\n", ieee80211_ether_sprintf(in->in_macaddr), reason)); - pktlen = sizeof (struct ieee80211_frame) + sizeof (uint16_t); - mp = allocb(pktlen, BPRI_MED); - if (mp == NULL) { - ath_problem("ath: ieee80211_send_asresp: allocb failed\n"); - return (ENOMEM); - } - mp->b_wptr = mp->b_rptr + pktlen; - mp->b_rptr += sizeof (struct ieee80211_frame); - frm = (uint16_t *)mp->b_rptr; - frm[0] = LE_16(reason); - return (ieee80211_mgmt_output(isc, in, mp, - IEEE80211_FC0_SUBTYPE_DISASSOC)); -} - -/* - * This handles both beacon and probe response frames. - */ -static void -ieee80211_recv_beacon(ieee80211com_t *isc, mblk_t *mp, int32_t rssi, - uint32_t rstamp, uint32_t rantenna) -{ - struct ieee80211_frame *wh; - struct ieee80211_node *in; - uint8_t *frm, *efrm, *tstamp, *bintval, *capinfo, *ssid; - uint8_t *rates, *xrates; - uint8_t chan, bchan, fhindex, erp; - uint16_t fhdwell; - - ASSERT(mutex_owned(&isc->isc_genlock)); - - if (isc->isc_opmode != IEEE80211_M_IBSS && - isc->isc_state != IEEE80211_S_SCAN) { - return; - } - - wh = (struct ieee80211_frame *)mp->b_rptr; - frm = (uint8_t *)&wh[1]; - efrm = mp->b_wptr; - /* - * beacon frame format - * [8] time stamp - * [2] beacon interval - * [2] cabability information - * [tlv] ssid - * [tlv] supported rates - * [tlv] country information - * [tlv] parameter set (FH/DS) - * [tlv] erp information - * [tlv] extended supported rates - */ - tstamp = frm; - frm += 8; - bintval = frm; - frm += 2; - capinfo = frm; - frm += 2; - ssid = rates = xrates = NULL; - bchan = ieee80211_chan2ieee(isc, isc->isc_bss->in_chan); - chan = bchan; - fhdwell = 0; - fhindex = 0; - erp = 0; - while (frm < efrm) { - switch (*frm) { - case IEEE80211_ELEMID_SSID: - ssid = frm; - break; - case IEEE80211_ELEMID_RATES: - rates = frm; - break; - case IEEE80211_ELEMID_COUNTRY: - /* - * don't care 'country', otherwise, - * just do: - * country = frm; - */ - break; - case IEEE80211_ELEMID_FHPARMS: - if (isc->isc_phytype == IEEE80211_T_FH) { - fhdwell = (frm[3] << 8) | frm[2]; - chan = IEEE80211_FH_CHAN(frm[4], frm[5]); - fhindex = frm[6]; - } - break; - case IEEE80211_ELEMID_DSPARMS: - /* - * hack this since depending on phytype - * is problematic for multi-mode devices. - */ - if (isc->isc_phytype != IEEE80211_T_FH) - chan = frm[2]; - break; - case IEEE80211_ELEMID_TIM: - break; - case IEEE80211_ELEMID_XRATES: - xrates = frm; - break; - case IEEE80211_ELEMID_ERP: - if (frm[1] != 1) { - ATH_DEBUG((ATH_DBG_80211, "ath: " - "ieee80211_recv_beacon(): " - "%s: invalid ERP element; " - "length %u, expecting 1\n", - "ieee80211_recv_beacon", frm[1])); - break; - } - erp = frm[2]; - break; - default: - break; - } - frm += frm[1] + 2; - } - IEEE80211_VERIFY_ELEMENT(rates, IEEE80211_RATE_SIZE, wh); - IEEE80211_VERIFY_ELEMENT(ssid, IEEE80211_NWID_LEN, wh); - - if (isclr(isc->isc_chan_active, chan)) { - ATH_DEBUG((ATH_DBG_80211, "ath: ieee80211_recv_beacon(): " - "ignore %s with invalid channel %u\n", - IEEE80211_ISPROBE(wh) ? "probe response" : "beacon", chan)); - return; - } - if (chan != bchan && isc->isc_phytype != IEEE80211_T_FH) { - /* - * Frame was received on a channel different from the - * one indicated in the DS/FH params element id; silently - * discard it. - * - * NB: this can happen due to signal leakage. - */ - ATH_DEBUG((ATH_DBG_80211, "ath: ieee80211_recv_beacon(): " - "ignore %s phytype %u on channel %u marked for %u\n", - IEEE80211_ISPROBE(wh) ? "probe response" : "beacon", - isc->isc_phytype, - bchan, chan)); - return; - } - - /* - * Use mac and channel for lookup so we collect all - * potential AP's when scanning. Otherwise we may - * see the same AP on multiple channels and will only - * record the last one. We could filter APs here based - * on rssi, etc. but leave that to the end of the scan - * so we can keep the selection criteria in one spot. - * This may result in a bloat of the scanned AP list but - * it shouldn't be too much. - */ - in = ieee80211_lookup_node(isc, wh->ifrm_addr2, - &isc->isc_channels[chan]); - if (in == NULL || isc->isc_state == IEEE80211_S_SCAN) { - ATH_DEBUG((ATH_DBG_80211, "ath: " - "ieee80211_recv_beacon(): essid = %s\n", - ieee80211_essid_sprintf(ssid + 2, ssid[1]))); - ATH_DEBUG((ATH_DBG_80211, "ath: ieee80211_recv_beacon(): " - "from %s\n", ieee80211_ether_sprintf(wh->ifrm_addr2))); - ATH_DEBUG((ATH_DBG_80211, "ath: " - "ieee80211_recv_beacon(): to %s\n", - ieee80211_ether_sprintf(wh->ifrm_addr1))); - ATH_DEBUG((ATH_DBG_80211, "ath: ieee80211_recv_beacon(): " - "caps 0x%x bintval %u erp 0x%x\n", - LE_16(*(uint16_t *)capinfo), - LE_16(*(uint16_t *)bintval), erp)); - } - - if (in == NULL) { - in = ieee80211_alloc_node(isc, wh->ifrm_addr2); - if (in == NULL) - return; - in->in_esslen = ssid[1]; - bzero(in->in_essid, sizeof (in->in_essid)); - bcopy(ssid + 2, in->in_essid, ssid[1]); - } else if (ssid[1] != 0 && IEEE80211_ISPROBE(wh)) { - /* - * Update ESSID at probe response to adopt hidden AP by - * Lucent/Cisco, which announces null ESSID in beacon. - */ - in->in_esslen = ssid[1]; - bzero(in->in_essid, sizeof (in->in_essid)); - bcopy(ssid + 2, in->in_essid, ssid[1]); - } - - IEEE80211_ADDR_COPY(in->in_bssid, wh->ifrm_addr3); - ieee80211_add_recvhist(in, rssi, rstamp, rantenna); - bcopy(tstamp, in->in_tstamp, sizeof (in->in_tstamp)); - in->in_intval = LE_16(*(uint16_t *)bintval); - in->in_capinfo = LE_16(*(uint16_t *)capinfo); - in->in_chan = &isc->isc_channels[chan]; - in->in_fhdwell = fhdwell; - in->in_fhindex = fhindex; - in->in_erp = erp; - /* in_chan must have been setup */ - (void) ieee80211_setup_rates(isc, in, rates, xrates, - IEEE80211_F_DOSORT); -} - -static void -ieee80211_recv_prreq(ieee80211com_t *isc, mblk_t *mp, int32_t rssi, - uint32_t rstamp, uint32_t rantenna) -{ - struct ieee80211_frame *wh; - struct ieee80211_node *in; - uint8_t *frm, *efrm, *ssid, *rates, *xrates; - uint8_t rate; - int32_t allocbs; - - ASSERT(mutex_owned(&isc->isc_genlock)); - - if (isc->isc_opmode == IEEE80211_M_STA) - return; - if (isc->isc_state != IEEE80211_S_RUN) - return; - - wh = (struct ieee80211_frame *)mp->b_rptr; - frm = (uint8_t *)&wh[1]; - efrm = mp->b_wptr; - /* - * prreq frame format - * [tlv] ssid - * [tlv] supported rates - * [tlv] extended supported rates - */ - ssid = rates = xrates = NULL; - while (frm < efrm) { - switch (*frm) { - case IEEE80211_ELEMID_SSID: - ssid = frm; - break; - case IEEE80211_ELEMID_RATES: - rates = frm; - break; - case IEEE80211_ELEMID_XRATES: - xrates = frm; - break; - } - frm += frm[1] + 2; - } - IEEE80211_VERIFY_ELEMENT(rates, IEEE80211_RATE_SIZE, wh); - IEEE80211_VERIFY_ELEMENT(ssid, IEEE80211_NWID_LEN, wh); - if (ssid[1] != 0 && - (ssid[1] != isc->isc_bss->in_esslen || - bcmp(ssid + 2, isc->isc_bss->in_essid, - isc->isc_bss->in_esslen) != 0)) { - ATH_DEBUG((ATH_DBG_80211, "ath: ieee80211_recv_prreq(): " - "ssid unmatch %s from %s", - ieee80211_essid_sprintf(ssid + 2, ssid[1]), - ieee80211_ether_sprintf(wh->ifrm_addr2))); - return; - } - - in = ieee80211_find_node(isc, wh->ifrm_addr2); - if (in == NULL) { - in = ieee80211_dup_bss(isc, wh->ifrm_addr2); - if (in == NULL) { - ath_problem("ath: ieee80211_recv_prreq(): " - "dup bss failed\n"); - return; - } - ATH_DEBUG((ATH_DBG_80211, "ath: " - "ieee80211_recv_prreq: new req from %s\n", - ieee80211_ether_sprintf(wh->ifrm_addr2))); - allocbs = 1; - } else - allocbs = 0; - ieee80211_add_recvhist(in, rssi, rstamp, rantenna); - rate = ieee80211_setup_rates(isc, in, rates, xrates, - IEEE80211_F_DOSORT | IEEE80211_F_DOFRATE - | IEEE80211_F_DONEGO | IEEE80211_F_DODEL); - if (rate & IEEE80211_RATE_BASIC) { - ATH_DEBUG((ATH_DBG_80211, "ath: ieee80211_recv_prreq(): " - "rate negotiation fail: %s\n", - ieee80211_ether_sprintf(wh->ifrm_addr2))); - } else { - IEEE80211_SEND_MGMT(isc, in, IEEE80211_FC0_SUBTYPE_PROBE_RESP, - 0); - } - - if (allocbs && isc->isc_opmode == IEEE80211_M_HOSTAP) - ieee80211_free_node(isc, in); - else - ieee80211_unref_node(&in); -} - -static void -ieee80211_recv_auth(ieee80211com_t *isc, mblk_t *mp, int32_t rssi, - uint32_t rstamp, uint32_t rantenna) -{ - struct ieee80211_frame *wh; - struct ieee80211_node *in; - uint8_t *frm, *efrm; - uint16_t algo, seq, status; - - _NOTE(ARGUNUSED(rssi)) - _NOTE(ARGUNUSED(rstamp)) - _NOTE(ARGUNUSED(rantenna)) - _NOTE(ARGUNUSED(mp)) - - ASSERT(mutex_owned(&isc->isc_genlock)); - - wh = (struct ieee80211_frame *)mp->b_rptr; - frm = (uint8_t *)&wh[1]; - efrm = mp->b_wptr; - /* - * auth frame format - * [2] algorithm - * [2] sequence - * [2] status - * [tlv*] challenge - */ - if (frm + 6 > efrm) { - ATH_DEBUG((ATH_DBG_80211, "ath: " - "ieee80211_recv_auth: too short from %s\n", - ieee80211_ether_sprintf(wh->ifrm_addr2))); - return; - } - - algo = LE_16(*(uint16_t *)frm); - seq = LE_16(*(uint16_t *)(frm + 2)); - status = LE_16(*(uint16_t *)(frm + 4)); - if (algo != IEEE80211_AUTH_ALG_OPEN) { - /* shared key auth */ - ath_problem("ath: ieee80211_recv_auth(): " - "unsupported auth %d from %s\n", - algo, ieee80211_ether_sprintf(wh->ifrm_addr2)); - return; - } - switch (isc->isc_opmode) { - case IEEE80211_M_IBSS: - if (isc->isc_state != IEEE80211_S_RUN || seq != 1) - return; - (void) _ieee80211_new_state(isc, IEEE80211_S_AUTH, - wh->ifrm_fc[0] & IEEE80211_FC0_SUBTYPE_MASK); - break; - - case IEEE80211_M_AHDEMO: - break; - - case IEEE80211_M_HOSTAP: - break; - - case IEEE80211_M_STA: - if (isc->isc_state != IEEE80211_S_AUTH || seq != 2) - return; - if (status != 0) { - ath_log("ath: ieee80211_recv_auth(): " - "authentication failed (reason %d) for %s\n", - status, ieee80211_ether_sprintf(wh->ifrm_addr3)); - in = ieee80211_find_node(isc, wh->ifrm_addr2); - if (in != NULL) - in->in_fails++; - return; - } - (void) _ieee80211_new_state(isc, IEEE80211_S_ASSOC, - wh->ifrm_fc[0] & IEEE80211_FC0_SUBTYPE_MASK); - break; - } -} - -static void -ieee80211_recv_asreq(ieee80211com_t *isc, mblk_t *mp, int32_t rssi, - uint32_t rstamp, uint32_t rantenna) -{ - _NOTE(ARGUNUSED(isc)) - _NOTE(ARGUNUSED(rssi)) - _NOTE(ARGUNUSED(rstamp)) - _NOTE(ARGUNUSED(rantenna)) - _NOTE(ARGUNUSED(mp)) - - /* doesn't support HOST-AP mode yet */ -} - -static void -ieee80211_recv_asresp(ieee80211com_t *isc, mblk_t *mp, int32_t rssi, - uint32_t rstamp, uint32_t rantenna) -{ - struct ieee80211_frame *wh; - struct ieee80211_node *in; - uint8_t *frm, *efrm, *rates, *xrates; - int32_t status; - - _NOTE(ARGUNUSED(rssi)) - _NOTE(ARGUNUSED(rstamp)) - _NOTE(ARGUNUSED(rantenna)) - _NOTE(ARGUNUSED(mp)) - - ASSERT(mutex_owned(&isc->isc_genlock)); - - if (isc->isc_opmode != IEEE80211_M_STA || - isc->isc_state != IEEE80211_S_ASSOC) - return; - - wh = (struct ieee80211_frame *)mp->b_rptr; - frm = (uint8_t *)&wh[1]; - efrm = mp->b_wptr; - /* - * asresp frame format - * [2] capability information - * [2] status - * [2] association ID - * [tlv] supported rates - * [tlv] extended supported rates - */ - if (frm + 6 > efrm) { - ath_log("ath: ieee80211_recv_asresp(): too short from %s\n", - ieee80211_ether_sprintf(wh->ifrm_addr2)); - return; - } - - in = isc->isc_bss; - in->in_capinfo = LE_16(*(uint16_t *)frm); - frm += 2; - - status = LE_16(*(uint16_t *)frm); - frm += 2; - - if (status != 0) { - ATH_DEBUG((ATH_DBG_80211, "ath: ieee80211_recv_asresp(): " - "association failed (reason %d)\n", status)); - in = ieee80211_find_node(isc, wh->ifrm_addr2); - if (in != NULL) { - in->in_fails++; - } - return; - } - - in->in_associd = LE_16(*(uint16_t *)frm); - frm += 2; - - rates = xrates = NULL; - while (frm < efrm) { - switch (*frm) { - case IEEE80211_ELEMID_RATES: - rates = frm; - break; - case IEEE80211_ELEMID_XRATES: - xrates = frm; - break; - } - frm += frm[1] + 2; - } - - IEEE80211_VERIFY_ELEMENT(rates, IEEE80211_RATE_SIZE, wh); - (void) ieee80211_setup_rates(isc, in, rates, xrates, - IEEE80211_F_DOSORT | IEEE80211_F_DOFRATE | - IEEE80211_F_DONEGO | IEEE80211_F_DODEL); - if (in->in_rates.ir_nrates != 0) - (void) _ieee80211_new_state(isc, IEEE80211_S_RUN, - wh->ifrm_fc[0] & IEEE80211_FC0_SUBTYPE_MASK); -} - -static void -ieee80211_recv_disassoc(ieee80211com_t *isc, mblk_t *mp, int32_t rssi, - uint32_t rstamp, uint32_t rantenna) -{ - struct ieee80211_frame *wh; - uint8_t *frm, *efrm; - uint16_t reason; - - _NOTE(ARGUNUSED(rssi)) - _NOTE(ARGUNUSED(rstamp)) - _NOTE(ARGUNUSED(rantenna)) - _NOTE(ARGUNUSED(mp)) - - ASSERT(mutex_owned(&isc->isc_genlock)); - - wh = (struct ieee80211_frame *)mp->b_rptr; - frm = (uint8_t *)&wh[1]; - efrm = mp->b_wptr; - /* - * disassoc frame format - * [2] reason - */ - if (frm + 2 > efrm) { - ath_log("ath: ieee80211_recv_disassoc(): too short from %s\n", - ieee80211_ether_sprintf(wh->ifrm_addr2)); - return; - } - reason = LE_16(*(uint16_t *)frm); - ATH_DEBUG((ATH_DBG_80211, "ath: ieee80211_recv_disassoc(): " - "disassociation packet, reason:0x%x\n", reason)); - switch (isc->isc_opmode) { - case IEEE80211_M_STA: - (void) _ieee80211_new_state(isc, IEEE80211_S_ASSOC, - wh->ifrm_fc[0] & IEEE80211_FC0_SUBTYPE_MASK); - break; - case IEEE80211_M_HOSTAP: - /* don't support HOSTAP */ - break; - default: - break; - } -} - -static void -ieee80211_recv_deauth(ieee80211com_t *isc, mblk_t *mp, int32_t rssi, - uint32_t rstamp, uint32_t rantenna) -{ - struct ieee80211_frame *wh; - uint8_t *frm, *efrm; - uint16_t reason; - - _NOTE(ARGUNUSED(rssi)) - _NOTE(ARGUNUSED(rstamp)) - _NOTE(ARGUNUSED(rantenna)) - _NOTE(ARGUNUSED(mp)) - - ASSERT(mutex_owned(&isc->isc_genlock)); - - wh = (struct ieee80211_frame *)mp->b_rptr; - frm = (uint8_t *)&wh[1]; - efrm = mp->b_wptr; - /* - * dauth frame format - * [2] reason - */ - if (frm + 2 > efrm) { - ath_log("ath: ieee80211_recv_deauth(): too short from %s\n", - ieee80211_ether_sprintf(wh->ifrm_addr2)); - return; - } - reason = LE_16(*(uint16_t *)frm); - ATH_DEBUG((ATH_DBG_80211, "ath: ieee80211_recv_deauth(): " - "deauthentication packet, reason: 0x%x\n", reason)); - switch (isc->isc_opmode) { - case IEEE80211_M_STA: - (void) _ieee80211_new_state(isc, IEEE80211_S_AUTH, - wh->ifrm_fc[0] & IEEE80211_FC0_SUBTYPE_MASK); - break; - case IEEE80211_M_HOSTAP: - break; - default: - break; - } -} - -/* - * Return the phy mode for with the specified channel so the - * caller can select a rate set. This is problematic and the - * work here assumes how things work elsewhere in this code. - */ -enum ieee80211_phymode -ieee80211_chan2mode(ieee80211com_t *isc, struct ieee80211channel *chan) -{ - /* - * NB: this assumes the channel would not be supplied to us - * unless it was already compatible with the current mode. - */ - if (isc->isc_curmode != IEEE80211_MODE_AUTO) - return (isc->isc_curmode); - /* - * In autoselect mode; deduce a mode based on the channel - * characteristics. We assume that turbo-only channels - * are not considered when the channel set is constructed. - */ - if (IEEE80211_IS_CHAN_5GHZ(chan)) - return (IEEE80211_MODE_11A); - else if (chan->ich_flags & (IEEE80211_CHAN_OFDM | IEEE80211_CHAN_DYN)) - return (IEEE80211_MODE_11G); - else - return (IEEE80211_MODE_11B); -} - - -/* - * Format an Ethernet MAC for printing, - * and this function adds NULL byte at the end of string. - */ -const char * -ieee80211_ether_sprintf(const uint8_t *mac) -{ - static char etherbuf[18]; - (void) snprintf(etherbuf, sizeof (etherbuf), - "%02x:%02x:%02x:%02x:%02x:%02x", - mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); - return (etherbuf); -} - -/* - * Format an essid for printing, - * and this function adds NULL byte at the end of string. - */ -const int8_t * -ieee80211_essid_sprintf(uint8_t *essid, uint32_t len) -{ - static int8_t essidbuf[IEEE80211_NWID_LEN * 2 + 1]; - uint32_t i; - uint8_t *p; - int8_t tmp[3]; - - bzero(essidbuf, sizeof (essidbuf)); - if (len > IEEE80211_NWID_LEN) - len = IEEE80211_NWID_LEN; - /* determine printable or not */ - for (i = 0, p = essid; i < len; i++, p++) { - if (*p < ' ' || *p > 0x7e) - break; - } - if (i == len) { - for (i = 0; i < len; i++) - essidbuf[i] = essid[i]; - essidbuf[i] = '\0'; - } else { - for (i = 0; i < len; i++) { - (void) sprintf(tmp, "%02x", essid[i]); - (void) strcat(essidbuf, tmp); - } - } - return (essidbuf); -} - -/* - * Following fucntions are registerd to GLD and intercepting - * the function calls from GLD to LLD to add appropriate ic_genlock protection. - * - * We have to protect ieee80211_gld_send() by isc_genlock, - * because there have many references to isc struct on this transimit path, - * and this may affect performace. - */ -static int32_t -ieee80211_gld_send(gld_mac_info_t *gld_p, mblk_t *mp) -{ - ieee80211com_t *isc = (ieee80211com_t *)gld_p->gldm_private; - int32_t result; - - mutex_enter(&isc->isc_genlock); - result = (*isc->isc_gld_send)(gld_p, mp); - mutex_exit(&isc->isc_genlock); - return (result); -} - -static int32_t -ieee80211_gld_reset(gld_mac_info_t *gld_p) -{ - int32_t result; - ieee80211com_t *isc = (ieee80211com_t *)gld_p->gldm_private; - - mutex_enter(&isc->isc_genlock); - result = (*isc->isc_gld_reset)(gld_p); - mutex_exit(&isc->isc_genlock); - return (result); -} - - -/* - * Following function is for Multi_func thread. - * The smallest timing unit is 100ms. - * It is created in ieee80211_gld_start(), - * and destroy in ieee80211_gld_stop(). - */ -void -ieee80211_mf_thread(ieee80211com_t *isc) -{ - struct ieee80211_node *in; - uint32_t scan_ticks = 0; - uint32_t ratectl_ticks = 0; - uint32_t cali_ticks = 0; - uint32_t mgt_ticks = 0; - enum ieee80211_state ostate = IEEE80211_S_INIT; - - mutex_enter(&isc->isc_genlock); - while (isc->isc_mfthread_switch) { - if (isc->isc_state == IEEE80211_S_SCAN && - ostate != IEEE80211_S_SCAN) - scan_ticks = 0; - - if (isc->isc_state == IEEE80211_S_SCAN) { - if (scan_ticks >= (isc->isc_scan_interval/100 - 1)) { - ieee80211_next_scan(isc); - scan_ticks = 0; - } else - scan_ticks++; - } - - if (ratectl_ticks >= (isc->isc_ratectl_interval/100 - 1)) { - if (isc->isc_opmode == IEEE80211_M_STA) - (*isc->isc_rate_ctl)(isc, isc->isc_bss); - else { - in = list_head(&isc->isc_in_list); - while (in != NULL) { - (*isc->isc_rate_ctl)(isc, in); - in = list_next(&isc->isc_in_list, in); - } - } - ratectl_ticks = 0; - } else - ratectl_ticks++; - - if (cali_ticks >= (isc->isc_cali_interval/100 - 1)) { - (*isc->isc_calibrate)(isc); - cali_ticks = 0; - } else - cali_ticks++; - - if (mgt_ticks >= 10) { /* one second */ - if (isc->isc_mgt_timeout && - --isc->isc_mgt_timeout == 0) { - (void) _ieee80211_new_state(isc, - IEEE80211_S_SCAN, -1); - } - if (isc->isc_inact_timeout && - --isc->isc_inact_timeout == 0) - ieee80211_timeout_nodes(isc); - mgt_ticks = 0; - } else - mgt_ticks++; - - ostate = isc->isc_state; - mutex_exit(&isc->isc_genlock); - delay(drv_usectohz(100000)); /* delay 100ms */ - mutex_enter(&isc->isc_genlock); - } - isc->isc_mf_thread = NULL; - cv_broadcast(&isc->isc_mfthread_cv); - mutex_exit(&isc->isc_genlock); - thread_exit(); -} - -/* - * This function is responsible for creating multi-func thread. - */ -static int32_t -ieee80211_gld_start(gld_mac_info_t *gld_p) -{ - int32_t result; - ieee80211com_t *isc = (ieee80211com_t *)gld_p->gldm_private; - - mutex_enter(&isc->isc_genlock); - isc->isc_mfthread_switch = 1; - if (isc->isc_mf_thread == NULL) - isc->isc_mf_thread = thread_create((caddr_t)NULL, 0, - ieee80211_mf_thread, isc, 0, &p0, TS_RUN, minclsyspri); - result = (*isc->isc_gld_start)(gld_p); - mutex_exit(&isc->isc_genlock); - return (result); -} - -/* - * This function is responsible for destory multi-func thread. - */ -static int32_t -ieee80211_gld_stop(gld_mac_info_t *gld_p) -{ - int32_t result; - ieee80211com_t *isc = (ieee80211com_t *)gld_p->gldm_private; - - mutex_enter(&isc->isc_genlock); - isc->isc_mfthread_switch = 0; - while (isc->isc_mf_thread != NULL) { - if (cv_wait_sig(&isc->isc_mfthread_cv, &isc->isc_genlock) == 0) - break; - } - result = (*isc->isc_gld_stop)(gld_p); - mutex_exit(&isc->isc_genlock); - return (result); -} - -static int32_t -ieee80211_gld_saddr(gld_mac_info_t *gld_p, uint8_t *macaddr) -{ - int32_t result; - ieee80211com_t *isc = (ieee80211com_t *)gld_p->gldm_private; - - mutex_enter(&isc->isc_genlock); - result = (*isc->isc_gld_saddr)(gld_p, macaddr); - mutex_exit(&isc->isc_genlock); - return (result); -} - -static int -ieee80211_gld_set_promiscuous(gld_mac_info_t *gld_p, int mode) -{ - int result; - ieee80211com_t *isc = (ieee80211com_t *)gld_p->gldm_private; - - mutex_enter(&isc->isc_genlock); - result = (*isc->isc_gld_set_promiscuous)(gld_p, mode); - mutex_exit(&isc->isc_genlock); - return (result); -} - -static int32_t -ieee80211_gld_gstat(gld_mac_info_t *gld_p, struct gld_stats *glds_p) -{ - int32_t result; - ieee80211com_t *isc = (ieee80211com_t *)gld_p->gldm_private; - - mutex_enter(&isc->isc_genlock); - result = (*isc->isc_gld_gstat)(gld_p, glds_p); - mutex_exit(&isc->isc_genlock); - return (result); -} - -static int32_t -ieee80211_gld_ioctl(gld_mac_info_t *gld_p, queue_t *wq, mblk_t *mp) -{ - int32_t result; - ieee80211com_t *isc = (ieee80211com_t *)gld_p->gldm_private; - - mutex_enter(&isc->isc_genlock); - result = (*isc->isc_gld_ioctl)(gld_p, wq, mp); - mutex_exit(&isc->isc_genlock); - return (result); -} - -static int -ieee80211_gld_set_multicast(gld_mac_info_t *gld_p, uint8_t *eth_p, int flag) -{ - int result; - ieee80211com_t *isc = (ieee80211com_t *)gld_p->gldm_private; - - mutex_enter(&isc->isc_genlock); - result = (*isc->isc_gld_set_multicast)(gld_p, eth_p, flag); - mutex_exit(&isc->isc_genlock); - return (result); -} - -static uint32_t -ieee80211_gld_intr(gld_mac_info_t *gld_p) -{ - ieee80211com_t *isc = (ieee80211com_t *)gld_p->gldm_private; - return ((*isc->isc_gld_intr)(gld_p)); -} - - - -int32_t -ieee80211_ifattach(gld_mac_info_t *gld_p) -{ - ieee80211com_t *isc = - (ieee80211com_t *)gld_p->gldm_private; - struct ieee80211channel *ch; - int32_t i; - - mutex_init(&isc->isc_genlock, NULL, MUTEX_DRIVER, NULL); - - /* - * Fill in 802.11 available channel set, mark - * all available channels as active, and pick - * a default channel if not already specified. - */ - bzero(isc->isc_chan_avail, sizeof (isc->isc_chan_avail)); - isc->isc_modecaps |= 1 << IEEE80211_MODE_AUTO; - for (i = 0; i <= IEEE80211_CHAN_MAX; i++) { - ch = &isc->isc_channels[i]; - if (ch->ich_flags) { - setbit(isc->isc_chan_avail, i); - /* - * Identify mode capabilities. - */ - if (IEEE80211_IS_CHAN_A(ch)) - isc->isc_modecaps |= 1 << IEEE80211_MODE_11A; - if (IEEE80211_IS_CHAN_B(ch)) - isc->isc_modecaps |= 1 << IEEE80211_MODE_11B; - if (IEEE80211_IS_CHAN_PUREG(ch)) - isc->isc_modecaps |= 1 << IEEE80211_MODE_11G; - if (IEEE80211_IS_CHAN_T(ch)) - isc->isc_modecaps |= 1 << IEEE80211_MODE_TURBO; - } - } - - /* Start from auto mode */ - (void) ieee80211_setmode(isc, IEEE80211_MODE_AUTO); - - /* Initialize WEP related variable */ - isc->isc_wep_txkey = 0; - isc->isc_iv = (int32_t)(gethrtime() & 0x00000000ffffffff); - - /* Initialize some config variables */ - isc->isc_rtsthreshold = IEEE80211_RTS_MAX; - isc->isc_fragthreshold = 2346; - isc->isc_des_chan = IEEE80211_CHAN_ANYC; /* any channel is ok */ - isc->isc_fixed_rate = -1; /* no fixed rate */ - if (isc->isc_lintval == 0) - isc->isc_lintval = 100; /* default sleep */ - isc->isc_txpower = IEEE80211_TXPOWER_MAX; /* default tx power */ - isc->isc_bmisstimeout = 7 * isc->isc_lintval; /* default 7 beacons */ - - list_create(&isc->isc_in_list, - sizeof (struct ieee80211_node), - offsetof(struct ieee80211_node, in_node)); - for (i = 0; i < IEEE80211_NODE_HASHSIZE; i++) - list_create(&isc->isc_inhash_list[i], - sizeof (struct ieee80211_node), - offsetof(struct ieee80211_node, in_hash_node)); - - /* Initialize management frame handlers */ - isc->isc_recv_mgmt[IEEE80211_FC0_SUBTYPE_PROBE_RESP - >> IEEE80211_FC0_SUBTYPE_SHIFT] = ieee80211_recv_beacon; - isc->isc_recv_mgmt[IEEE80211_FC0_SUBTYPE_BEACON - >> IEEE80211_FC0_SUBTYPE_SHIFT] = ieee80211_recv_beacon; - isc->isc_recv_mgmt[IEEE80211_FC0_SUBTYPE_PROBE_REQ - >> IEEE80211_FC0_SUBTYPE_SHIFT] = ieee80211_recv_prreq; - isc->isc_recv_mgmt[IEEE80211_FC0_SUBTYPE_AUTH - >> IEEE80211_FC0_SUBTYPE_SHIFT] = ieee80211_recv_auth; - isc->isc_recv_mgmt[IEEE80211_FC0_SUBTYPE_ASSOC_REQ - >> IEEE80211_FC0_SUBTYPE_SHIFT] = ieee80211_recv_asreq; - isc->isc_recv_mgmt[IEEE80211_FC0_SUBTYPE_REASSOC_REQ - >> IEEE80211_FC0_SUBTYPE_SHIFT] = ieee80211_recv_asreq; - isc->isc_recv_mgmt[IEEE80211_FC0_SUBTYPE_ASSOC_RESP - >> IEEE80211_FC0_SUBTYPE_SHIFT] = ieee80211_recv_asresp; - isc->isc_recv_mgmt[IEEE80211_FC0_SUBTYPE_REASSOC_RESP - >> IEEE80211_FC0_SUBTYPE_SHIFT] = ieee80211_recv_asresp; - isc->isc_recv_mgmt[IEEE80211_FC0_SUBTYPE_DEAUTH - >> IEEE80211_FC0_SUBTYPE_SHIFT] = ieee80211_recv_deauth; - isc->isc_recv_mgmt[IEEE80211_FC0_SUBTYPE_DISASSOC - >> IEEE80211_FC0_SUBTYPE_SHIFT] = ieee80211_recv_disassoc; - - isc->isc_send_mgmt[IEEE80211_FC0_SUBTYPE_PROBE_REQ - >> IEEE80211_FC0_SUBTYPE_SHIFT] = ieee80211_send_prreq; - isc->isc_send_mgmt[IEEE80211_FC0_SUBTYPE_PROBE_RESP - >> IEEE80211_FC0_SUBTYPE_SHIFT] = ieee80211_send_prresp; - isc->isc_send_mgmt[IEEE80211_FC0_SUBTYPE_AUTH - >> IEEE80211_FC0_SUBTYPE_SHIFT] = ieee80211_send_auth; - isc->isc_send_mgmt[IEEE80211_FC0_SUBTYPE_DEAUTH - >> IEEE80211_FC0_SUBTYPE_SHIFT] = ieee80211_send_deauth; - isc->isc_send_mgmt[IEEE80211_FC0_SUBTYPE_ASSOC_REQ - >> IEEE80211_FC0_SUBTYPE_SHIFT] = ieee80211_send_asreq; - isc->isc_send_mgmt[IEEE80211_FC0_SUBTYPE_REASSOC_REQ - >> IEEE80211_FC0_SUBTYPE_SHIFT] = ieee80211_send_asreq; - isc->isc_send_mgmt[IEEE80211_FC0_SUBTYPE_ASSOC_RESP - >> IEEE80211_FC0_SUBTYPE_SHIFT] = ieee80211_send_asresp; - isc->isc_send_mgmt[IEEE80211_FC0_SUBTYPE_REASSOC_RESP - >> IEEE80211_FC0_SUBTYPE_SHIFT] = ieee80211_send_asresp; - isc->isc_send_mgmt[IEEE80211_FC0_SUBTYPE_DISASSOC - >> IEEE80211_FC0_SUBTYPE_SHIFT] = ieee80211_send_disassoc; - - cv_init(&isc->isc_scan_cv, NULL, CV_DRIVER, NULL); - cv_init(&isc->isc_mfthread_cv, NULL, CV_DRIVER, NULL); - isc->isc_mf_thread = NULL; - isc->isc_mfthread_switch = 0; - - ASSERT(isc->isc_node_alloc != NULL); - isc->isc_bss = (*isc->isc_node_alloc)(isc); - isc->isc_bss->in_chan = IEEE80211_CHAN_ANYC; - isc->isc_bss->in_txpower = IEEE80211_TXPOWER_MAX; - isc->isc_scan_interval = 200; - isc->isc_cali_interval = 30000; - isc->isc_ratectl_interval = 500; - - gld_p->gldm_reset = ieee80211_gld_reset; - gld_p->gldm_start = ieee80211_gld_start; - gld_p->gldm_stop = ieee80211_gld_stop; - gld_p->gldm_set_mac_addr = ieee80211_gld_saddr; - gld_p->gldm_send = ieee80211_gld_send; - gld_p->gldm_set_promiscuous = ieee80211_gld_set_promiscuous; - gld_p->gldm_get_stats = ieee80211_gld_gstat; - gld_p->gldm_ioctl = ieee80211_gld_ioctl; - gld_p->gldm_set_multicast = ieee80211_gld_set_multicast; - gld_p->gldm_intr = ieee80211_gld_intr; - - return (0); -} - -void -ieee80211_ifdetach(gld_mac_info_t *gld_p) -{ - ieee80211com_t *isc = (ieee80211com_t *)gld_p->gldm_private; - - (*isc->isc_node_free)(isc, isc->isc_bss); - ieee80211_free_allnodes(isc); - cv_destroy(&isc->isc_mfthread_cv); - cv_destroy(&isc->isc_scan_cv); - mutex_destroy(&isc->isc_genlock); -} diff --git a/usr/src/uts/common/io/ath/ath_ieee80211.h b/usr/src/uts/common/io/ath/ath_ieee80211.h deleted file mode 100644 index 02abf251ba..0000000000 --- a/usr/src/uts/common/io/ath/ath_ieee80211.h +++ /dev/null @@ -1,743 +0,0 @@ -/* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. - * Use is subject to license terms. - */ - -/* - * Copyright (c) 2002-2004 Sam Leffler, Errno Consulting - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer, - * without modification. - * 2. Redistributions in binary form must reproduce at minimum a disclaimer - * similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any - * redistribution must be conditioned upon including a substantially - * similar Disclaimer requirement for further binary redistribution. - * 3. Neither the names of the above-listed copyright holders nor the names - * of any contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * NO WARRANTY - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY - * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL - * THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, - * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF - * THE POSSIBILITY OF SUCH DAMAGES. - * - */ - -/* - * IEEE 802.11 generic handler definitions. - * - * This code is derived from NetBSD code; their copyright notice follows. - */ - -/* - * Copyright (c) 2000, 2001 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the NetBSD - * Foundation, Inc. and its contributors. - * 4. Neither the name of The NetBSD Foundation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - - -/* - * The atheros IEEE80211a/b/g chipsets just implement a IEEE80211 - * phisical layer protocol, all IEEE80211 MAC layer functions are - * done by the driver. These functions include scan, association/ - * disassociation, authentication/deauthentication, probe request, - * beacon processing, WEP processing, etc. All the data structs, - * constant denifition and function declaration related to IEEE802.11 - * are defined here. Actually, ath_ieee80211.h and ath_ieee80211.c - * are general for most 802.11a/b/g chipsets. GLDv3 should consider - * a WiFi extension and then all IEEE802.11 supporting would be - * integrated into GLDv3. - */ - -#ifndef _ATH_IEEE80211_H -#define _ATH_IEEE80211_H - -#pragma ident "%Z%%M% %I% %E% SMI" - -#ifdef __cplusplus -extern "C" { -#endif - -#include <sys/sysmacros.h> -#include <sys/gld.h> -#include <sys/stream.h> -#include <sys/int_types.h> -#include <sys/note.h> -#include <sys/list.h> - -/* Bit map related macros. */ -#define setbit(a, i) ((a)[(i)/NBBY] |= 1<<((i)%NBBY)) -#define clrbit(a, i) ((a)[(i)/NBBY] &= ~(1<<((i)%NBBY))) -#define isset(a, i) ((a)[(i)/NBBY] & (1<<((i)%NBBY))) -#define isclr(a, i) (((a)[(i)/NBBY] & (1<<((i)%NBBY))) == 0) - - -/* - * We always fill constant in LLC - * and SANP fields of the payload. - */ -#define LLC_DSAP 0xAA -#define LLC_SSAP 0xAA -#define LLC_CONTROL 0x03 -#define SNAP_OC0 0x0 -#define SNAP_OC1 0x0 -#define SNAP_OC2 0x0 - -#define IEEE80211_ADDR_LEN 6 /* size of 802.11 address */ -#define IEEE80211_TXPOWER_MAX 100 /* .5 dbM */ -#define IEEE80211_TXPOWER_MIN 0 /* kill radio */ -/* - * Size of an ACK control frame in bytes. - */ -#define IEEE80211_ACK_SIZE (2 + 2 + IEEE80211_ADDR_LEN + 4) - - -/* Constant for "Frame Control" field of IEEE80211 frame header */ -#define IEEE80211_FC0_VERSION_MASK 0x03 -#define IEEE80211_FC0_VERSION_SHIFT 0 -#define IEEE80211_FC0_VERSION_0 0x00 -#define IEEE80211_FC0_TYPE_MASK 0x0c -#define IEEE80211_FC0_TYPE_SHIFT 2 -#define IEEE80211_FC0_TYPE_MGT 0x00 /* management frame */ -#define IEEE80211_FC0_TYPE_CTL 0x04 /* control frame */ -#define IEEE80211_FC0_TYPE_DATA 0x08 /* data frame */ -#define IEEE80211_FC0_SUBTYPE_MASK 0xf0 -#define IEEE80211_FC0_SUBTYPE_SHIFT 4 - -/* sub types of management frame(bit combination) */ -#define IEEE80211_FC0_SUBTYPE_ASSOC_REQ 0x00 -#define IEEE80211_FC0_SUBTYPE_ASSOC_RESP 0x10 -#define IEEE80211_FC0_SUBTYPE_REASSOC_REQ 0x20 -#define IEEE80211_FC0_SUBTYPE_REASSOC_RESP 0x30 -#define IEEE80211_FC0_SUBTYPE_PROBE_REQ 0x40 -#define IEEE80211_FC0_SUBTYPE_PROBE_RESP 0x50 -#define IEEE80211_FC0_SUBTYPE_BEACON 0x80 -#define IEEE80211_FC0_SUBTYPE_ATIM 0x90 -#define IEEE80211_FC0_SUBTYPE_DISASSOC 0xa0 -#define IEEE80211_FC0_SUBTYPE_AUTH 0xb0 -#define IEEE80211_FC0_SUBTYPE_DEAUTH 0xc0 - -/* sub types of control frame(bit combination) */ -#define IEEE80211_FC0_SUBTYPE_PS_POLL 0xa0 -#define IEEE80211_FC0_SUBTYPE_RTS 0xb0 -#define IEEE80211_FC0_SUBTYPE_CTS 0xc0 -#define IEEE80211_FC0_SUBTYPE_ACK 0xd0 -#define IEEE80211_FC0_SUBTYPE_CF_END 0xe0 -#define IEEE80211_FC0_SUBTYPE_CF_END_ACK 0xf0 - -/* sub types of data frame(bit combination) */ -#define IEEE80211_FC0_SUBTYPE_DATA 0x00 -#define IEEE80211_FC0_SUBTYPE_CF_ACK 0x10 -#define IEEE80211_FC0_SUBTYPE_CF_POLL 0x20 -#define IEEE80211_FC0_SUBTYPE_CF_ACPL 0x30 -#define IEEE80211_FC0_SUBTYPE_NODATA 0x40 -#define IEEE80211_FC0_SUBTYPE_CFACK 0x50 -#define IEEE80211_FC0_SUBTYPE_CFPOLL 0x60 -#define IEEE80211_FC0_SUBTYPE_CF_ACK_CF_ACK 0x70 - -#define IEEE80211_FC1_DIR_MASK 0x03 -#define IEEE80211_FC1_DIR_NODS 0x00 /* STA->STA */ -#define IEEE80211_FC1_DIR_TODS 0x01 /* STA->AP */ -#define IEEE80211_FC1_DIR_FROMDS 0x02 /* AP ->STA */ -#define IEEE80211_FC1_DIR_DSTODS 0x03 /* AP ->AP */ - -#define IEEE80211_FC1_MORE_FRAG 0x04 -#define IEEE80211_FC1_RETRY 0x08 -#define IEEE80211_FC1_PWR_MGT 0x10 -#define IEEE80211_FC1_MORE_DATA 0x20 -#define IEEE80211_FC1_WEP 0x40 -#define IEEE80211_FC1_ORDER 0x80 - -#define IEEE80211_SEQ_FRAG_MASK 0x000f -#define IEEE80211_SEQ_FRAG_SHIFT 0 -#define IEEE80211_SEQ_SEQ_MASK 0xfff0 -#define IEEE80211_SEQ_SEQ_SHIFT 4 - -#define IEEE80211_NWID_LEN 32 - -#define IEEE80211_RATE2MBS(r) (((r) & IEEE80211_RATE_VAL) / 2) -#define IEEE80211_IS_SUBTYPE(_fc, _type) \ - (((_fc) & IEEE80211_FC0_SUBTYPE_MASK) == IEEE80211_FC0_SUBTYPE_##_type) - -#define IEEE80211_BEACON_INTERVAL(beacon) \ - ((beacon)[8] | ((beacon)[9] << 8)) -#define IEEE80211_BEACON_CAPABILITY(beacon) \ - ((beacon)[10] | ((beacon)[11] << 8)) - -#define IEEE80211_CAPINFO_ESS 0x0001 -#define IEEE80211_CAPINFO_IBSS 0x0002 -#define IEEE80211_CAPINFO_CF_POLLABLE 0x0004 -#define IEEE80211_CAPINFO_CF_POLLREQ 0x0008 -#define IEEE80211_CAPINFO_PRIVACY 0x0010 -#define IEEE80211_CAPINFO_SHORT_PREAMBLE 0x0020 -#define IEEE80211_CAPINFO_PBCC 0x0040 -#define IEEE80211_CAPINFO_CHNL_AGILITY 0x0080 -/* bits 8-9 are reserved */ -#define IEEE80211_CAPINFO_SHORT_SLOTTIME 0x0400 -/* bits 11-12 are reserved */ -#define IEEE80211_CAPINFO_DSSSOFDM 0x2000 -/* bits 14-15 are reserved */ - -/* - * Management information elements - */ -#define IEEE80211_ELEMID_SSID 0 -#define IEEE80211_ELEMID_RATES 1 -#define IEEE80211_ELEMID_FHPARMS 2 -#define IEEE80211_ELEMID_DSPARMS 3 -#define IEEE80211_ELEMID_CFPARMS 4 -#define IEEE80211_ELEMID_TIM 5 -#define IEEE80211_ELEMID_IBSSPARMS 6 -#define IEEE80211_ELEMID_COUNTRY 7 -#define IEEE80211_ELEMID_CHALLENGE 16 -#define IEEE80211_ELEMID_ERP 42 -#define IEEE80211_ELEMID_XRATES 50 - - -/* Classes for WME streams */ -#define WME_AC_BE 0 -#define WME_AC_BK 1 -#define WME_AC_VI 2 -#define WME_AC_VO 3 - -#define IEEE80211_RATE_BASIC 0x80 -#define IEEE80211_RATE_VAL 0x7f - -/* EPR information element flags */ -#define IEEE80211_ERP_NON_ERP_PRESENT 0x01 -#define IEEE80211_ERP_USE_PROTECTION 0x02 -#define IEEE80211_ERP_BARKER_MODE 0x04 - -/* - * AUTH management packets - * - * octet algo[2] - * octet seq[2] - * octet status[2] - * octet chal.id - * octet chal.length - * octet chal.text[253] - */ - -#define IEEE80211_AUTH_ALGORITHM(auth) \ - ((auth)[0] | ((auth)[1] << 8)) -#define IEEE80211_AUTH_TRANSACTION(auth) \ - ((auth)[2] | ((auth)[3] << 8)) -#define IEEE80211_AUTH_STATUS(auth) \ - ((auth)[4] | ((auth)[5] << 8)) - -#define IEEE80211_AUTH_ALG_OPEN 0x0000 -#define IEEE80211_AUTH_ALG_SHARED 0x0001 - -#define IEEE80211_AUTH_OPEN_REQUEST 1 -#define IEEE80211_AUTH_OPEN_RESPONSE 2 - -#define IEEE80211_AUTH_SHARED_REQUEST 1 -#define IEEE80211_AUTH_SHARED_CHALLENGE 2 -#define IEEE80211_AUTH_SHARED_RESPONSE 3 -#define IEEE80211_AUTH_SHARED_PASS 4 - -/* - * Reason codes - * Unlisted codes are reserved - */ - -#define IEEE80211_REASON_UNSPECIFIED 1 -#define IEEE80211_REASON_AUTH_EXPIRE 2 -#define IEEE80211_REASON_AUTH_LEAVE 3 -#define IEEE80211_REASON_ASSOC_EXPIRE 4 -#define IEEE80211_REASON_ASSOC_TOOMANY 5 -#define IEEE80211_REASON_NOT_AUTHED 6 -#define IEEE80211_REASON_NOT_ASSOCED 7 -#define IEEE80211_REASON_ASSOC_LEAVE 8 -#define IEEE80211_REASON_ASSOC_NOT_AUTHED 9 - -#define IEEE80211_STATUS_SUCCESS 0 -#define IEEE80211_STATUS_UNSPECIFIED 1 -#define IEEE80211_STATUS_CAPINFO 10 -#define IEEE80211_STATUS_NOT_ASSOCED 11 -#define IEEE80211_STATUS_OTHER 12 -#define IEEE80211_STATUS_ALG 13 -#define IEEE80211_STATUS_SEQUENCE 14 -#define IEEE80211_STATUS_CHALLENGE 15 -#define IEEE80211_STATUS_TIMEOUT 16 -#define IEEE80211_STATUS_TOOMANY 17 -#define IEEE80211_STATUS_BASIC_RATE 18 -#define IEEE80211_STATUS_SP_REQUIRED 19 -#define IEEE80211_STATUS_PBCC_REQUIRED 20 -#define IEEE80211_STATUS_CA_REQUIRED 21 -#define IEEE80211_STATUS_TOO_MANY_STATIONS 22 -#define IEEE80211_STATUS_RATES 23 -#define IEEE80211_STATUS_SHORTSLOT_REQUIRED 25 -#define IEEE80211_STATUS_DSSSOFDM_REQUIRED 26 - -#define IEEE80211_WEP_KEYLEN 5 /* 40bit */ -#define IEEE80211_WEP_IVLEN 3 /* 24bit */ -#define IEEE80211_WEP_KIDLEN 1 /* 1 octet */ -#define IEEE80211_WEP_CRCLEN 4 /* CRC-32 */ -#define IEEE80211_WEP_NKID 4 /* number of key ids */ - -#define IEEE80211_CRC_LEN 4 - -#define IEEE80211_MTU 1500 -#define IEEE80211_MAX_LEN (2300 + IEEE80211_CRC_LEN + \ - (IEEE80211_WEP_IVLEN + IEEE80211_WEP_KIDLEN + IEEE80211_WEP_CRCLEN)) - -/* - * RTS frame length parameters. The default is specified in - * the 802.11 spec. The max may be wrong for jumbo frames. - */ -#define IEEE80211_RTS_DEFAULT 512 -#define IEEE80211_RTS_MIN 1 -#define IEEE80211_RTS_MAX IEEE80211_MAX_LEN - -#define IEEE80211_CHAN_ANY 0xffff /* token for ``any channel'' */ - -#define IEEE80211_AUTH_NONE 0 -#define IEEE80211_AUTH_OPEN 1 -#define IEEE80211_AUTH_SHARED 2 - -#define IEEE80211_PSCAN_WAIT 5 /* passive scan wait */ -#define IEEE80211_TRANS_WAIT 5 /* transition wait */ -#define IEEE80211_INACT_WAIT 5 /* inactivity timer interval */ -#define IEEE80211_INACT_MAX (300/IEEE80211_INACT_WAIT) - -/* - * Structure for IEEE 802.11 drivers. - */ - -#define IEEE80211_CHAN_MAX 255 -#define IEEE80211_CHAN_ANYC \ - ((struct ieee80211channel *)IEEE80211_CHAN_ANY) - -#define IEEE80211_RATE_SIZE 8 /* 802.11 standard */ -#define IEEE80211_RATE_MAXSIZE 15 /* max rates we'll handle */ -#define IEEE80211_KEYBUF_SIZE 16 -#define IEEE80211_NODE_HASHSIZE 32 -/* simple hash is enough for variation of macaddr */ -#define IEEE80211_NODE_HASH(addr) \ - (((uint8_t *)(addr))[IEEE80211_ADDR_LEN - 1] % IEEE80211_NODE_HASHSIZE) -#define IEEE80211_RV(v) ((v) & IEEE80211_RATE_VAL) -#define IEEE80211_ISPROBE(_wh) IEEE80211_IS_SUBTYPE((_wh)->ifrm_fc[0], \ - PROBE_RESP) -#define IEEE80211_RATE(_ix) (in->in_rates.ir_rates[(_ix)] & \ - IEEE80211_RATE_VAL) -/* Verify the existence and length of __elem or get out. */ -#define IEEE80211_VERIFY_ELEMENT(__elem, __maxlen, __wh) do { \ - if ((__elem) == NULL) { \ - ath_problem("ath: no #__elem \n"); \ - return; \ - } \ - if ((__elem)[1] > (__maxlen)) { \ - ath_problem("ath: bad "#__elem " len %d from %s\n", \ - (__elem)[1], \ - ieee80211_ether_sprintf((__wh)->ifrm_addr2)); \ - return; \ - } \ - _NOTE(CONSTANTCONDITION) \ -} while (0) - - -enum ieee80211_phytype { - IEEE80211_T_DS, /* direct sequence spread spectrum */ - IEEE80211_T_FH, /* frequency hopping */ - IEEE80211_T_OFDM, /* frequency division multiplexing */ - IEEE80211_T_TURBO /* high rate OFDM, aka turbo mode */ -}; -#define IEEE80211_T_CCK IEEE80211_T_DS /* more common nomenclature */ - -/* not really a mode; there are really multiple PHY's */ -enum ieee80211_phymode { - IEEE80211_MODE_AUTO = 0, /* autoselect */ - IEEE80211_MODE_11A = 1, /* 5GHz, OFDM */ - IEEE80211_MODE_11B = 2, /* 2GHz, CCK */ - IEEE80211_MODE_11G = 3, /* 2GHz, OFDM */ - IEEE80211_MODE_TURBO = 4 /* 5GHz, OFDM, 2x clock */ -}; -#define IEEE80211_MODE_MAX (IEEE80211_MODE_TURBO+1) - -enum ieee80211_opmode { - IEEE80211_M_STA = 1, /* infrastructure station */ - IEEE80211_M_IBSS = 0, /* IBSS (adhoc) station */ - IEEE80211_M_AHDEMO = 3, /* Old lucent compatible adhoc demo */ - IEEE80211_M_HOSTAP = 6 /* Software Access Point */ -}; - -enum ieee80211_state { - IEEE80211_S_INIT, /* default state */ - IEEE80211_S_SCAN, /* scanning */ - IEEE80211_S_AUTH, /* try to authenticate */ - IEEE80211_S_ASSOC, /* try to assoc */ - IEEE80211_S_RUN /* associated */ -}; - -/* - * Channels are specified by frequency and attributes. - */ -struct ieee80211channel { - uint16_t ich_freq; /* setting in Mhz */ - uint16_t ich_flags; /* see below */ -}; - -/* bits 0-3 are for private use by drivers */ -/* channel attributes */ -#define IEEE80211_CHAN_TURBO 0x0010 /* Turbo channel */ -#define IEEE80211_CHAN_CCK 0x0020 /* CCK channel */ -#define IEEE80211_CHAN_OFDM 0x0040 /* OFDM channel */ -#define IEEE80211_CHAN_2GHZ 0x0080 /* 2 GHz spectrum channel. */ -#define IEEE80211_CHAN_5GHZ 0x0100 /* 5 GHz spectrum channel */ -#define IEEE80211_CHAN_PASSIVE 0x0200 /* Only passive scan allowed */ -#define IEEE80211_CHAN_DYN 0x0400 /* Dynamic CCK-OFDM channel */ - -/* - * Useful combinations of channel characteristics. - */ -#define IEEE80211_CHAN_A \ - (IEEE80211_CHAN_5GHZ | IEEE80211_CHAN_OFDM) -#define IEEE80211_CHAN_B \ - (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_CCK) -#define IEEE80211_CHAN_PUREG \ - (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_OFDM) -#define IEEE80211_CHAN_G \ - (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_DYN) -#define IEEE80211_CHAN_T \ - (IEEE80211_CHAN_5GHZ | IEEE80211_CHAN_OFDM | IEEE80211_CHAN_TURBO) - -#define IEEE80211_IS_CHAN_A(_ch) \ - (((_ch)->ich_flags & IEEE80211_CHAN_A) == IEEE80211_CHAN_A) -#define IEEE80211_IS_CHAN_B(_ch) \ - (((_ch)->ich_flags & IEEE80211_CHAN_B) == IEEE80211_CHAN_B) -#define IEEE80211_IS_CHAN_PUREG(_ch) \ - (((_ch)->ich_flags & IEEE80211_CHAN_PUREG) == IEEE80211_CHAN_PUREG) -#define IEEE80211_IS_CHAN_G(_ch) \ - (((_ch)->ich_flags & IEEE80211_CHAN_G) == IEEE80211_CHAN_G) -#define IEEE80211_IS_CHAN_T(_ch) \ - (((_ch)->ich_flags & IEEE80211_CHAN_T) == IEEE80211_CHAN_T) - -#define IEEE80211_IS_CHAN_2GHZ(_ch) \ - (((_ch)->ich_flags & IEEE80211_CHAN_2GHZ) != 0) -#define IEEE80211_IS_CHAN_5GHZ(_ch) \ - (((_ch)->ich_flags & IEEE80211_CHAN_5GHZ) != 0) -#define IEEE80211_IS_CHAN_OFDM(_ch) \ - (((_ch)->ich_flags & IEEE80211_CHAN_OFDM) != 0) -#define IEEE80211_IS_CHAN_CCK(_ch) \ - (((_ch)->ich_flags & IEEE80211_CHAN_CCK) != 0) - -#pragma pack(1) -/* Header of IEEE 802.11 frame */ -struct ieee80211_frame { - uint8_t ifrm_fc[2]; - uint8_t ifrm_dur[2]; - uint8_t ifrm_addr1[IEEE80211_ADDR_LEN]; - uint8_t ifrm_addr2[IEEE80211_ADDR_LEN]; - uint8_t ifrm_addr3[IEEE80211_ADDR_LEN]; - uint8_t ifrm_seq[2]; - /* - * i_addr4 is present only when it's a data - * frame from one AP to another AP. The driver - * doesn't work in AP mode, so we never transmit - * or receive a frame containing i_addr4 field. - */ -}; - -/* Start part(LLC and SNAP) of payload of IEEE80211 frame */ -struct ieee80211_llc { - /* LLC */ - uint8_t illc_dsap; - uint8_t illc_ssap; - uint8_t illc_control; - /* SNAP */ - uint8_t illc_oc[3]; /* protocol ID or organization code */ - uint16_t illc_ether_type; /* ethernet type */ -}; -#pragma pack() - -struct ieee80211_rateset { - uint8_t ir_nrates; - uint8_t ir_rates[IEEE80211_RATE_MAXSIZE]; -}; - -/* Number of history entries to keep (per node) */ -#define IEEE80211_RECV_HIST_LEN 16 -#define IEEE80211_JIFFIES_NONE ((uint32_t)(~0)) - -struct ieee80211_recv_hist { - uint32_t irh_jiffies; /* kernel timestamp */ - uint8_t irh_rssi; /* recv ssi */ - uint32_t irh_rstamp; /* recv timestamp */ - uint8_t irh_rantenna; /* recv antenna */ -}; - - -/* - * Node specific information. - */ -struct ieee80211_node { - /* hardware */ - struct ieee80211_recv_hist in_recv_hist[IEEE80211_RECV_HIST_LEN]; - int32_t in_hist_cur; - uint16_t in_txpower; /* current transmit power */ - - /* header */ - uint8_t in_macaddr[IEEE80211_ADDR_LEN]; - uint8_t in_bssid[IEEE80211_ADDR_LEN]; - - /* beacon, probe response */ - uint8_t in_tstamp[8]; /* from last rcv'd beacon */ - uint16_t in_intval; /* beacon interval */ - uint16_t in_capinfo; /* capabilities */ - uint8_t in_esslen; - uint8_t in_essid[IEEE80211_NWID_LEN]; - struct ieee80211_rateset in_rates; /* negotiated rate set */ - uint8_t *in_country; /* country information */ - struct ieee80211channel *in_chan; - uint16_t in_fhdwell; /* FH only */ - uint8_t in_fhindex; /* FH only */ - uint8_t in_erp; /* 11g only */ - - /* DTIM and contention free period (CFP) */ - uint8_t in_dtimperiod; - uint8_t in_cfpperiod; /* # of DTIMs between CFPs */ - uint16_t in_cfpduremain; /* remaining cfp duration */ - uint16_t in_cfpmaxduration; /* max CFP duration in TU */ - uint16_t in_nextdtim; /* time to next DTIM */ - uint16_t in_timoffset; - - /* others */ - uint16_t in_associd; /* assoc response */ - uint16_t in_txseq; /* seq to be transmitted */ - uint16_t in_rxseq; /* seq previous received */ - int32_t in_fails; /* failure count to associate */ - int32_t in_inact; /* inactivity mark count */ - int32_t in_txrate; /* index to in_rates[] */ - - /* we're in the list of isc->isc_in_list */ - list_node_t in_node; - - /* we're in the list of isc->isc_inhash_list */ - list_node_t in_hash_node; -}; - -/* in_chan encoding for FH phy */ -#define IEEE80211_FH_CHANMOD 80 -#define IEEE80211_FH_CHAN(set, pat) \ - (((set)-1) * IEEE80211_FH_CHANMOD + (pat)) -#define IEEE80211_FH_CHANSET(chan) ((chan)/IEEE80211_FH_CHANMOD+1) -#define IEEE80211_FH_CHANPAT(chan) ((chan)%IEEE80211_FH_CHANMOD) - -#define HEADERSPACE roundup(sizeof (struct ieee80211_frame) + \ - IEEE80211_WEP_IVLEN + IEEE80211_WEP_KIDLEN + \ - sizeof (struct ieee80211_llc) + 1, 4) - -struct ieee80211_wepkey { - int32_t iwk_len; - uint8_t iwk_key[IEEE80211_KEYBUF_SIZE]; -}; - -typedef struct ieee80211com { - /* The following items are not changed during their lifetime */ - gld_mac_info_t *isc_dev; - struct ieee80211_rateset isc_sup_rates[IEEE80211_MODE_MAX]; - struct ieee80211channel isc_channels[IEEE80211_CHAN_MAX + 1]; - uint8_t isc_chan_avail[ - roundup(IEEE80211_CHAN_MAX, NBBY)]; - uint32_t isc_caps; /* capabilities */ - uint16_t isc_modecaps; /* set of mode capabilities */ - enum ieee80211_phytype isc_phytype; /* wrong for multi-mode */ - uint16_t isc_bmisstimeout; /* beacon miss threshold ms */ - uint16_t isc_scan_interval; /* scan interval(ms) */ - uint16_t isc_cali_interval; /* calibrate interval(ms) */ - uint16_t isc_ratectl_interval; /* rate ctl interval(ms) */ - int32_t (*isc_mgmt_send)(struct ieee80211com *, mblk_t *); - void (*isc_recv_mgmt[16])(struct ieee80211com *, mblk_t *, - int32_t, uint32_t, uint32_t); - int32_t (*isc_send_mgmt[16])(struct ieee80211com *, - struct ieee80211_node *, int32_t, int32_t); - int32_t (*isc_new_state)(struct ieee80211com *, - enum ieee80211_state); - struct ieee80211_node *(*isc_node_alloc)(struct ieee80211com *); - void (*isc_node_free)(struct ieee80211com *, - struct ieee80211_node *); - void (*isc_node_copy)(struct ieee80211_node *, - const struct ieee80211_node *); - void (*isc_calibrate)(struct ieee80211com *); - void (*isc_rate_ctl)(struct ieee80211com *, - struct ieee80211_node *); - int (*isc_gld_send)(gld_mac_info_t *, mblk_t *); - int (*isc_gld_reset)(gld_mac_info_t *); - int (*isc_gld_start)(gld_mac_info_t *); - int (*isc_gld_stop)(gld_mac_info_t *); - int32_t (*isc_gld_saddr)(gld_mac_info_t *, uint8_t *macaddr); - int (*isc_gld_set_promiscuous)(gld_mac_info_t *, - int mode); - int (*isc_gld_gstat)(gld_mac_info_t *, - struct gld_stats *); - int (*isc_gld_ioctl)(gld_mac_info_t *, queue_t *, mblk_t *); - int (*isc_gld_set_multicast)(gld_mac_info_t *, - uint8_t *, int); - uint32_t (*isc_gld_intr)(gld_mac_info_t *); - - /* - * The following items could only be - * changed by ioctl after initialization. - */ - uint8_t isc_macaddr[IEEE80211_ADDR_LEN]; - int32_t isc_fixed_rate; /* index to ic_sup_rates[] */ - uint16_t isc_rtsthreshold; - uint16_t isc_fragthreshold; - uint16_t isc_lintval; /* listen interval */ - uint16_t isc_txpower; /* tx power setting (dbM) */ - int32_t isc_des_esslen; - uint8_t isc_des_essid[IEEE80211_NWID_LEN]; - struct ieee80211channel *isc_des_chan; /* desired channel */ - uint8_t isc_des_bssid[IEEE80211_ADDR_LEN]; - struct ieee80211_wepkey isc_nw_keys[IEEE80211_WEP_NKID]; - int32_t isc_wep_txkey; /* default tx key index */ - uint8_t isc_nickname[IEEE80211_NWID_LEN]; - int32_t isc_nicknamelen; - - /* The following items are changed dynamically */ - kthread_t *isc_mf_thread; - uint32_t isc_mfthread_switch; /* 0/1 indicate off/on */ - kcondvar_t isc_mfthread_cv; - kcondvar_t isc_scan_cv; - int32_t isc_mgt_timeout; /* mgmt timeout */ - int32_t isc_inact_timeout; /* inactivity timer wait */ - uint8_t isc_chan_active[ - roundup(IEEE80211_CHAN_MAX, NBBY)]; - uint8_t isc_chan_scan[ - roundup(IEEE80211_CHAN_MAX, NBBY)]; - uint32_t isc_flags; /* state flags */ - uint16_t isc_curmode; /* current mode */ - enum ieee80211_opmode isc_opmode; /* operation mode */ - enum ieee80211_state isc_state; /* 802.11 state */ - struct ieee80211_node *isc_bss; /* info for this node */ - struct ieee80211channel *isc_ibss_chan; /* current channel */ - list_t isc_in_list; /* information of all nodes */ - list_t isc_inhash_list[IEEE80211_NODE_HASHSIZE]; - uint32_t isc_iv; /* initial vector for wep */ - kmutex_t isc_genlock; /* mutex for the whole struct */ -}ieee80211com_t; - -#define IEEE80211_SEND_MGMT(isc, in, type, arg) do { \ -if ((isc)->isc_send_mgmt[(type)>>IEEE80211_FC0_SUBTYPE_SHIFT] != NULL) \ - (*(isc)->isc_send_mgmt[(type)>>IEEE80211_FC0_SUBTYPE_SHIFT]) \ - (isc, in, type, arg); \ -_NOTE(CONSTANTCONDITION) \ -} while (0) - -#define IEEE80211_ADDR_EQ(a1, a2) (bcmp(a1, a2, IEEE80211_ADDR_LEN) == 0) -#define IEEE80211_ADDR_COPY(dst, src) bcopy(src, dst, IEEE80211_ADDR_LEN) - -/* multicast, broadcast */ -#define ETHER_IS_MULTICAST(addr) (*(addr) & 0x01) -#define IEEE80211_IS_MULTICAST(a) ETHER_IS_MULTICAST(a) - -/* ic_flags */ -#define IEEE80211_F_ASCAN 0x00000001 /* STATUS: active scan */ -#define IEEE80211_F_SIBSS 0x00000002 /* STATUS: start IBSS */ -#define IEEE80211_F_WEPON 0x00000100 /* CONF: WEP enabled */ -#define IEEE80211_F_IBSSON 0x00000200 /* CONF: IBSS creation enable */ -#define IEEE80211_F_PMGTON 0x00000400 /* CONF: Power mgmt enable */ -#define IEEE80211_F_DESBSSID 0x00000800 /* CONF: des_bssid is set */ -#define IEEE80211_F_SCANAP 0x00001000 /* CONF: Scanning AP */ -#define IEEE80211_F_ROAMING 0x00002000 /* CONF: roaming enabled */ -#define IEEE80211_F_SWRETRY 0x00004000 /* CONF: sw tx retry enabled */ -#define IEEE80211_F_TXPMGT 0x00018000 /* STATUS: tx power */ -#define IEEE80211_F_TXPOW_OFF 0x00000000 /* TX Power: radio disabled */ -#define IEEE80211_F_TXPOW_FIXED 0x00008000 /* TX Power: fixed rate */ -#define IEEE80211_F_TXPOW_AUTO 0x00010000 /* TX Power: undefined */ -#define IEEE80211_F_SHSLOT 0x00020000 /* CONF: short slot time */ -#define IEEE80211_F_SHPREAMBLE 0x00040000 /* CONF: short preamble */ - -/* ic_capabilities */ -#define IEEE80211_C_WEP 0x00000001 /* CAPABILITY: WEP available */ -#define IEEE80211_C_IBSS 0x00000002 /* CAPABILITY: IBSS available */ -#define IEEE80211_C_PMGT 0x00000004 /* CAPABILITY: Power mgmt */ -#define IEEE80211_C_HOSTAP 0x00000008 /* CAPABILITY: HOSTAP avail */ -#define IEEE80211_C_AHDEMO 0x00000010 /* CAPABILITY: Old Adhoc Demo */ -#define IEEE80211_C_SWRETRY 0x00000020 /* CAPABILITY: sw tx retry */ -#define IEEE80211_C_TXPMGT 0x00000040 /* CAPABILITY: tx power mgmt */ -#define IEEE80211_C_SHSLOT 0x00000080 /* CAPABILITY: short slottime */ -#define IEEE80211_C_SHPREAMBLE 0x00000100 /* CAPABILITY: short preamble */ - -/* flags for ieee80211_fix_rate() */ -#define IEEE80211_F_DOSORT 0x00000001 /* sort rate list */ -#define IEEE80211_F_DOFRATE 0x00000002 /* use fixed rate */ -#define IEEE80211_F_DONEGO 0x00000004 /* calc negotiated rate */ -#define IEEE80211_F_DODEL 0x00000008 /* delete ignore rate */ - -int32_t ieee80211_ifattach(gld_mac_info_t *); -void ieee80211_ifdetach(gld_mac_info_t *); -void ieee80211_input(ieee80211com_t *, mblk_t *, - int32_t, uint32_t, uint32_t); -int32_t ieee80211_mgmt_output(ieee80211com_t *, struct ieee80211_node *, - mblk_t *, int32_t); -mblk_t *ieee80211_fill_header(ieee80211com_t *isc, mblk_t *mp_gld, - int32_t wep_txkey, struct ieee80211_node *in); -mblk_t *ieee80211_decap(mblk_t *); -extern const int8_t *ieee80211_essid_sprintf(uint8_t *, uint32_t); -void ieee80211_dump_pkt(uint8_t *, int32_t, int32_t, int32_t); -struct ieee80211_node *ieee80211_find_node(ieee80211com_t *, uint8_t *); -struct ieee80211_node *ieee80211_lookup_node(ieee80211com_t *, - uint8_t *macaddr, struct ieee80211channel *); - -/* - * The following functions are almost the same, except that we should - * already hold isc_genlock before calling _ieee80211_new_state. - */ -int ieee80211_new_state(ieee80211com_t *, enum ieee80211_state, int32_t); -int _ieee80211_new_state(ieee80211com_t *, enum ieee80211_state, int32_t); - -uint32_t ieee80211_mhz2ieee(uint32_t, uint32_t); -uint32_t ieee80211_chan2ieee(ieee80211com_t *, struct ieee80211channel *); -uint32_t ieee80211_ieee2mhz(uint32_t, uint32_t); -enum ieee80211_phymode ieee80211_chan2mode(ieee80211com_t *, - struct ieee80211channel *); -const int8_t *ieee80211_ether_sprintf(const uint8_t *); - -#ifdef __cplusplus -} -#endif - -#endif /* _ATH_IEEE80211_H */ diff --git a/usr/src/uts/common/io/ath/ath_impl.h b/usr/src/uts/common/io/ath/ath_impl.h index 13c574accb..b99cfbd238 100644 --- a/usr/src/uts/common/io/ath/ath_impl.h +++ b/usr/src/uts/common/io/ath/ath_impl.h @@ -1,5 +1,5 @@ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -56,8 +56,9 @@ extern "C" { * Defintions for the Atheros Wireless LAN controller driver. */ +#include <sys/note.h> #include <sys/list.h> -#include "ath_ieee80211.h" +#include <sys/net80211.h> #include "ath_hal.h" /* @@ -211,6 +212,7 @@ struct dma_area { typedef struct dma_area dma_area_t; struct ath_buf { + int bf_flags; /* tx descriptor flags */ struct ath_desc *bf_desc; /* virtual addr of desc */ uint32_t bf_daddr; /* physical addr of desc */ dma_area_t bf_dma; /* dma area for buf */ @@ -251,7 +253,8 @@ typedef struct ath { uint32_t asc_invalid : 1, /* being detached */ asc_mrretry : 1, /* multi-rate retry support */ asc_have11g : 1, /* have 11g support */ - asc_splitmic : 1; /* Split TKIP mic keys */ + asc_splitmic : 1, /* Split TKIP mic keys */ + asc_hasclrkey: 1; /* CLR key supported */ const HAL_RATE_TABLE *asc_rates[IEEE80211_MODE_MAX]; /* h/w rate */ ddi_acc_handle_t asc_cfg_handle; /* DDI I/O handle */ @@ -283,6 +286,7 @@ typedef struct ath { const HAL_RATE_TABLE *asc_currates; /* current rate table */ enum ieee80211_phymode asc_curmode; /* current phy mode */ + HAL_CHANNEL asc_curchan; /* current h/w channel */ uint8_t asc_rixmap[256]; /* IEEE to h/w rate table ix */ HAL_INT asc_imask; /* interrupt mask copy */ struct ath_stats asc_stats; /* interface statistics */ @@ -291,12 +295,22 @@ typedef struct ath { uint32_t asc_mfilt[2]; kmutex_t asc_genlock; - uint32_t asc_need_gld_sched; - kmutex_t asc_gld_sched_lock; + boolean_t asc_resched_needed; + kmutex_t asc_resched_lock; + + timeout_id_t asc_scan_timer; + int (*asc_newstate)(ieee80211com_t *, + enum ieee80211_state, int); } ath_t; #define ATH_STATE(macinfo) ((ath_t *)((macinfo)->gldm_private)) +#define ATH_LOCK(_asc) mutex_enter(&(_asc)->asc_genlock) +#define ATH_UNLOCK(_asc) mutex_exit(&(_asc)->asc_genlock) +#define ATH_LOCK_ASSERT(_asc) ASSERT(mutex_owned(&(_asc)->asc_genlock)) + +#define ATH_IS_RUNNING(_asc) ((_asc)->asc_invalid == 0) + /* Debug and log functions */ void ath_dbg(uint32_t dbg_flags, const char *fmt, ...); /* debug function */ void ath_log(const char *fmt, ...); /* event log function */ diff --git a/usr/src/uts/common/io/ath/ath_main.c b/usr/src/uts/common/io/ath/ath_main.c index 4add9a873b..936c6cdaf6 100644 --- a/usr/src/uts/common/io/ath/ath_main.c +++ b/usr/src/uts/common/io/ath/ath_main.c @@ -1,5 +1,5 @@ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -41,66 +41,57 @@ /* * Driver for the Atheros Wireless LAN controller. * - * The Atheros driver can be devided into 2 parts: H/W related(we called LLD: - * Low Level Driver) and IEEE80211 protocol related(we called IEEE80211), - * and each part has several sub modules. + * The Atheros driver calls into net80211 module for IEEE80211 protocol + * management functionalities. The driver includes a LLD(Low Level Driver) + * part to implement H/W related operations. * The following is the high level structure of ath driver. * (The arrows between modules indicate function call direction.) * * - * ^ | - * | | GLD thread - * | V - * ================== ========================================= - * |[1] | |[2] | - * | | | GLD Callback functions registered | - * | IEEE80211 | ========================= by | - * | | | | IEEE80211 | - * | Internal | V | | - * ========= | |======================== | | - * |[3] | | Functions | | | - * | | | | | | - * |Multi- | ========================================== ================= - * | | ^ | | | - * |Func | | V V V - * | | ====================== ------------------------------------ - * |Thread | |[4] | |[5] | - * | |-->| Functions exported | | IEEE80211 Callback functions | - * | | | by IEEE80211 | | registered by LLD | - * ========= ====================== ------------------------------------ - * ^ | - * | V - * ------------------------------------------------------------- - * |[6] | - * | LLD Internal functions | - * | | - * ------------------------------------------------------------- - * ^ - * | Software interrupt thread - * | + * | + * | GLD thread + * V + * ================== ========================================= + * | | |[1] | + * | | | GLDv3 Callback functions registered | + * | Net80211 | ========================= by | + * | module | | | driver | + * | | V | | + * | |======================== | | + * | Functions exported by net80211 | | | + * | | | | + * ========================================== ================= + * | | + * V | + * +----------------------------------+ | + * |[2] | | + * | Net80211 Callback functions | | + * | registered by LLD | | + * +----------------------------------+ | + * | | + * V v + * +-----------------------------------------------------------+ + * |[3] | + * | LLD Internal functions | + * | | + * +-----------------------------------------------------------+ + * ^ + * | Software interrupt thread + * | * - * Modules 1/2/3/4 constitute part IEEE80211, and modules 5/6 constitute LLD. * The short description of each module is as below: - * Module 1: IEEE80211 Internal functions, including ieee80211 state - * machine, convert functions between 802.3 frame and - * 802.11 frame, and node maintain function, etc. - * Module 2: GLD callback functions, which are intercepting the calls from - * GLD to LLD, and adding IEEE80211's mutex protection. - * Module 3: Multi-func thread, which is responsible for scan timing, - * rate control timing and calibrate timing. - * Module 4: Functions exported by IEEE80211, which can be called from - * other modules. - * Module 5: IEEE80211 callback functions registered by LLD, which include - * GLD related callbacks and some other functions needed by - * IEEE80211. - * Module 6: LLD Internal functions, which are responsible for allocing + * Module 1: GLD callback functions, which are intercepting the calls from + * GLD to LLD. + * Module 2: Net80211 callback functions registered by LLD, which + * calls into LLD for H/W related functions needed by net80211. + * Module 3: LLD Internal functions, which are responsible for allocing * descriptor/buffer, handling interrupt and other H/W * operations. * * All functions are running in 3 types of thread: * 1. GLD callbacks threads, such as ioctl, intr, etc. - * 2. Multi-Func thread in IEEE80211 which is responsible for scan, - * rate control and calibrate. + * 2. Clock interruptt thread which is responsible for scan, rate control and + * calibration. * 3. Software Interrupt thread originated in LLD. * * The lock strategy is as below: @@ -117,40 +108,9 @@ * operational data in ath_softc struct and HAL accesses. * It is acquired by the interupt handler and most "mode-ctrl" routines. * - * In ieee80211com struct, isc_genlock is a general lock to protect - * necessary data and functions in ieee80211_com struct. Some data in - * ieee802.11_com don't need protection. For example, isc_dev is writen - * only in ath_attach(), but read in many other functions, so protection - * is not necessary. - * * Any of the locks can be acquired singly, but where multiple * locks are acquired, they *must* be in the order: - * - * isc_genlock >> asc_genlock >> asc_txqlock[i] >> - * asc_txbuflock >> asc_rxbuflock - * - * Note: - * 1. All the IEEE80211 callback functions(except isc_gld_intr) - * registered by LLD in module [5] are protected by isc_genlock before - * calling from IEEE80211. - * 2. Module [4] have 3 important functions ieee80211_input(), - * ieee80211_new_state() and _ieee80211_new_state(). - * The functions in module [6] should avoid holding mutex or other locks - * during the call to ieee80211_input(). - * In particular, the soft interrupt thread that calls ieee80211_input() - * may in some cases carry out processing that includes sending an outgoing - * packet, resulting in a call to the driver's ath_mgmt_send() routine. - * If the ath_mgmt_send() routine were to try to acquire a mutex being held - * by soft interrupt thread at the time it calls ieee80211_input(), - * this could result in a panic due to recursive mutex entry. - * ieee80211_new_state() and _ieee80211_new_state() are almost the same - * except that the latter function asserts isc_genlock is owned in its entry. - * so ieee80211_new_state() is only called by ath_bmiss_handler() - * from soft interrupt handler thread. - * As the same reason to ieee80211_input, we can't hold any other mutex. - * 3. *None* of these locks may be held across calls out to the - * GLD routines gld_recv() in ieee80211_input(). - * + * asc_genlock >> asc_txqlock[i] >> asc_txbuflock >> asc_rxbuflock */ #include <sys/param.h> @@ -174,7 +134,7 @@ #include <sys/sunddi.h> #include <sys/pci.h> #include <sys/errno.h> -#include <sys/gld.h> +#include <sys/mac.h> #include <sys/dlpi.h> #include <sys/ethernet.h> #include <sys/list.h> @@ -185,11 +145,14 @@ #include <inet/nd.h> #include <inet/mi.h> #include <inet/wifi_ioctl.h> +#include <sys/mac_wifi.h> #include "ath_hal.h" #include "ath_impl.h" #include "ath_aux.h" #include "ath_rate.h" +#define ATH_MAX_RSSI 63 /* max rssi */ + extern void ath_halfix_init(void); extern void ath_halfix_finit(void); extern int32_t ath_getset(ath_t *asc, mblk_t *mp, uint32_t cmd); @@ -230,12 +193,31 @@ static ddi_dma_attr_t dma_attr = { 0 /* dma_attr_flags */ }; -static uint8_t ath_broadcast_addr[] = { - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff -}; - static kmutex_t ath_loglock; static void *ath_soft_state_p = NULL; +static int ath_dwelltime = 150; /* scan interval, ms */ + +static int ath_m_stat(void *, uint_t, uint64_t *); +static int ath_m_start(void *); +static void ath_m_stop(void *); +static int ath_m_promisc(void *, boolean_t); +static int ath_m_multicst(void *, boolean_t, const uint8_t *); +static int ath_m_unicst(void *, const uint8_t *); +static mblk_t *ath_m_tx(void *, mblk_t *); +static void ath_m_ioctl(void *, queue_t *, mblk_t *); +static mac_callbacks_t ath_m_callbacks = { + MC_IOCTL, + ath_m_stat, + ath_m_start, + ath_m_stop, + ath_m_promisc, + ath_m_multicst, + ath_m_unicst, + ath_m_tx, + NULL, /* mc_resources; */ + ath_m_ioctl, + NULL /* mc_getcapab */ +}; /* * Available debug flags: @@ -300,6 +282,7 @@ ath_setup_desc(ath_t *asc, struct ath_buf *bf) ds = bf->bf_desc; ds->ds_link = bf->bf_daddr; ds->ds_data = bf->bf_dma.cookie.dmac_address; + ds->ds_vdata = bf->bf_dma.mem_va; ATH_HAL_SETUPRXDESC(asc->asc_ah, ds, bf->bf_dma.alength, /* buffer size */ 0); @@ -434,7 +417,8 @@ ath_desc_alloc(dev_info_t *devinfo, ath_t *asc) list_insert_tail(&asc->asc_txbuf_list, bf); /* alloc DMA memory */ - err = ath_alloc_dma_mem(devinfo, size, &ath_desc_accattr, + err = ath_alloc_dma_mem(devinfo, asc->asc_dmabuf_size, + &ath_desc_accattr, DDI_DMA_STREAMING, DDI_DMA_STREAMING, &bf->bf_dma); if (err != DDI_SUCCESS) return (err); @@ -490,16 +474,17 @@ ath_printrxbuf(struct ath_buf *bf, int32_t done) static void ath_rx_handler(ath_t *asc) { - ieee80211com_t *isc = (ieee80211com_t *)asc; + ieee80211com_t *ic = (ieee80211com_t *)asc; struct ath_buf *bf; struct ath_hal *ah = asc->asc_ah; struct ath_desc *ds; mblk_t *rx_mp; - struct ieee80211_frame *wh, whbuf; + struct ieee80211_frame *wh; int32_t len, loop = 1; uint8_t phyerr; HAL_STATUS status; HAL_NODE_STATS hal_node_stats; + struct ieee80211_node *in; do { mutex_enter(&asc->asc_rxbuflock); @@ -564,7 +549,7 @@ ath_rx_handler(ath_t *asc) rx_mp->b_wptr += len; wh = (struct ieee80211_frame *)rx_mp->b_rptr; - if ((wh->ifrm_fc[0] & IEEE80211_FC0_TYPE_MASK) == + if ((wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK) == IEEE80211_FC0_TYPE_CTL) { /* * Ignore control frame received in promisc mode. @@ -574,32 +559,25 @@ ath_rx_handler(ath_t *asc) } /* Remove the CRC at the end of IEEE80211 frame */ rx_mp->b_wptr -= IEEE80211_CRC_LEN; - if (wh->ifrm_fc[1] & IEEE80211_FC1_WEP) { - /* - * WEP is decrypted by hardware. Clear WEP bit - * and trim WEP header for ieee80211_input(). - */ - wh->ifrm_fc[1] &= ~IEEE80211_FC1_WEP; - bcopy(wh, &whbuf, sizeof (whbuf)); - /* - * Remove WEP related fields between - * header and payload. - */ - rx_mp->b_rptr += IEEE80211_WEP_IVLEN + - IEEE80211_WEP_KIDLEN; - bcopy(&whbuf, rx_mp->b_rptr, sizeof (whbuf)); - /* - * Remove WEP CRC from the tail. - */ - rx_mp->b_wptr -= IEEE80211_WEP_CRCLEN; - } #ifdef DEBUG ath_printrxbuf(bf, status == HAL_OK); #endif /* DEBUG */ - ieee80211_input(isc, rx_mp, + /* + * Locate the node for sender, track state, and then + * pass the (referenced) node up to the 802.11 layer + * for its use. + */ + in = ieee80211_find_rxnode(ic, wh); + + /* + * Send frame up for processing. + */ + (void) ieee80211_input(ic, rx_mp, in, ds->ds_rxstat.rs_rssi, - ds->ds_rxstat.rs_tstamp, - ds->ds_rxstat.rs_antenna); + ds->ds_rxstat.rs_tstamp); + + ieee80211_free_node(in); + rx_next: mutex_enter(&asc->asc_rxbuflock); list_insert_tail(&asc->asc_rxbuf_list, bf); @@ -608,8 +586,7 @@ rx_next: } while (loop); /* rx signal state monitoring */ - ATH_HAL_RXMONITOR(ah, &hal_node_stats); - ATH_HAL_RXENA(ah); /* in case of RXEOL */ + ATH_HAL_RXMONITOR(ah, &hal_node_stats, &asc->asc_curchan); } static void @@ -628,27 +605,28 @@ ath_printtxbuf(struct ath_buf *bf, int done) /* * The input parameter mp has following assumption: - * the first mblk is for ieee80211 header, and there has enough space left - * for WEP option at the end of this mblk. - * The continue mblks are for payload. + * For data packets, GLDv3 mac_wifi plugin allocates and fills the + * ieee80211 header. For management packets, net80211 allocates and + * fills the ieee80211 header. In both cases, enough spaces in the + * header are left for encryption option. */ static int32_t -ath_xmit(ath_t *asc, struct ieee80211_node *in, - struct ath_buf *bf, mblk_t *mp, mblk_t *mp_header) +ath_tx_start(ath_t *asc, struct ieee80211_node *in, struct ath_buf *bf, + mblk_t *mp) { - ieee80211com_t *isc = (ieee80211com_t *)asc; + ieee80211com_t *ic = (ieee80211com_t *)asc; struct ieee80211_frame *wh; struct ath_hal *ah = asc->asc_ah; - uint32_t subtype, flags, ctsduration, antenna; + uint32_t subtype, flags, ctsduration; int32_t keyix, iswep, hdrlen, pktlen, mblen, mbslen, try0; - uint8_t rix, cix, txrate, ctsrate, *tmp_ptr; + uint8_t rix, cix, txrate, ctsrate; struct ath_desc *ds; struct ath_txq *txq; HAL_PKT_TYPE atype; const HAL_RATE_TABLE *rt; HAL_BOOL shortPreamble; - mblk_t *mp0; struct ath_node *an; + caddr_t dest; /* * CRC are added by H/W, not encaped by driver, @@ -656,62 +634,71 @@ ath_xmit(ath_t *asc, struct ieee80211_node *in, */ pktlen = IEEE80211_CRC_LEN; - wh = (struct ieee80211_frame *)mp_header->b_rptr; - iswep = wh->ifrm_fc[1] & IEEE80211_FC1_WEP; + wh = (struct ieee80211_frame *)mp->b_rptr; + iswep = wh->i_fc[1] & IEEE80211_FC1_WEP; keyix = HAL_TXKEYIX_INVALID; hdrlen = sizeof (struct ieee80211_frame); - if (iswep) { - hdrlen += IEEE80211_WEP_IVLEN + IEEE80211_WEP_KIDLEN; - pktlen += IEEE80211_WEP_CRCLEN; - keyix = isc->isc_wep_txkey; - } - tmp_ptr = (uint8_t *)bf->bf_dma.mem_va; + if (iswep != 0) { + const struct ieee80211_cipher *cip; + struct ieee80211_key *k; - /* Copy 80211 header from mblk to DMA txbuf */ - mblen = mp_header->b_wptr - mp_header->b_rptr; - bcopy(mp_header->b_rptr, tmp_ptr, mblen); - tmp_ptr += mblen; - pktlen += mblen; - mbslen = mblen; - - /* - * If mp==NULL, then it's a management frame, - * else it's a data frame. - */ - if (mp != NULL) { /* - * Copy the first mblk to DMA txbuf - * (this mblk includes ether header). + * Construct the 802.11 header+trailer for an encrypted + * frame. The only reason this can fail is because of an + * unknown or unsupported cipher/key type. */ - mblen = mp->b_wptr - mp->b_rptr - sizeof (struct ether_header); - bcopy(mp->b_rptr + sizeof (struct ether_header), - tmp_ptr, mblen); - tmp_ptr += mblen; - pktlen += mblen; - mbslen += mblen; - - /* Copy subsequent mblks to DMA txbuf */ - for (mp0 = mp->b_cont; mp0 != NULL; mp0 = mp0->b_cont) { - mblen = mp0->b_wptr - mp0->b_rptr; - bcopy(mp0->b_rptr, tmp_ptr, mblen); - tmp_ptr += mblen; - pktlen += mblen; - mbslen += mblen; + k = ieee80211_crypto_encap(ic, mp); + if (k == NULL) { + ATH_DEBUG((ATH_DBG_AUX, "crypto_encap failed\n")); + /* + * This can happen when the key is yanked after the + * frame was queued. Just discard the frame; the + * 802.11 layer counts failures and provides + * debugging/diagnostics. + */ + return (EIO); } + cip = k->wk_cipher; + /* + * Adjust the packet + header lengths for the crypto + * additions and calculate the h/w key index. When + * a s/w mic is done the frame will have had any mic + * added to it prior to entry so m0->m_pkthdr.len above will + * account for it. Otherwise we need to add it to the + * packet length. + */ + hdrlen += cip->ic_header; + pktlen += cip->ic_header + cip->ic_trailer; + if ((k->wk_flags & IEEE80211_KEY_SWMIC) == 0) + pktlen += cip->ic_miclen; + keyix = k->wk_keyix; + + /* packet header may have moved, reset our local pointer */ + wh = (struct ieee80211_frame *)mp->b_rptr; } + dest = bf->bf_dma.mem_va; + for (; mp != NULL; mp = mp->b_cont) { + mblen = MBLKL(mp); + bcopy(mp->b_rptr, dest, mblen); + dest += mblen; + } + mbslen = dest - bf->bf_dma.mem_va; + pktlen += mbslen; + bf->bf_in = in; /* setup descriptors */ ds = bf->bf_desc; rt = asc->asc_currates; + ASSERT(rt != NULL); /* * The 802.11 layer marks whether or not we should * use short preamble based on the current mode and * negotiated parameters. */ - if ((isc->isc_flags & IEEE80211_F_SHPREAMBLE) && + if ((ic->ic_flags & IEEE80211_F_SHPREAMBLE) && (in->in_capinfo & IEEE80211_CAPINFO_SHORT_PREAMBLE)) { shortPreamble = AH_TRUE; asc->asc_stats.ast_tx_shortpre++; @@ -725,9 +712,9 @@ ath_xmit(ath_t *asc, struct ieee80211_node *in, * Calculate Atheros packet type from IEEE80211 packet header * and setup for rate calculations. */ - switch (wh->ifrm_fc[0] & IEEE80211_FC0_TYPE_MASK) { + switch (wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK) { case IEEE80211_FC0_TYPE_MGT: - subtype = wh->ifrm_fc[0] & IEEE80211_FC0_SUBTYPE_MASK; + subtype = wh->i_fc[0] & IEEE80211_FC0_SUBTYPE_MASK; if (subtype == IEEE80211_FC0_SUBTYPE_BEACON) atype = HAL_PKT_TYPE_BEACON; else if (subtype == IEEE80211_FC0_SUBTYPE_PROBE_RESP) @@ -747,7 +734,7 @@ ath_xmit(ath_t *asc, struct ieee80211_node *in, break; case IEEE80211_FC0_TYPE_CTL: atype = HAL_PKT_TYPE_PSPOLL; - subtype = wh->ifrm_fc[0] & IEEE80211_FC0_SUBTYPE_MASK; + subtype = wh->i_fc[0] & IEEE80211_FC0_SUBTYPE_MASK; rix = 0; /* lowest rate */ try0 = ATH_TXMAXTRY; if (shortPreamble) @@ -777,10 +764,10 @@ ath_xmit(ath_t *asc, struct ieee80211_node *in, * Calculate miscellaneous flags. */ flags = HAL_TXDESC_CLRDMASK; - if (IEEE80211_IS_MULTICAST(wh->ifrm_addr1)) { + if (IEEE80211_IS_MULTICAST(wh->i_addr1)) { flags |= HAL_TXDESC_NOACK; /* no ack on broad/multicast */ asc->asc_stats.ast_tx_noack++; - } else if (pktlen > isc->isc_rtsthreshold) { + } else if (pktlen > ic->ic_rtsthreshold) { flags |= HAL_TXDESC_RTSENA; /* RTS based on frame length */ asc->asc_stats.ast_tx_rts++; } @@ -790,12 +777,12 @@ ath_xmit(ath_t *asc, struct ieee80211_node *in, * layer but it lacks sufficient information to calculate it. */ if ((flags & HAL_TXDESC_NOACK) == 0 && - (wh->ifrm_fc[0] & IEEE80211_FC0_TYPE_MASK) != + (wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK) != IEEE80211_FC0_TYPE_CTL) { uint16_t dur; dur = ath_hal_computetxtime(ah, rt, IEEE80211_ACK_SIZE, rix, shortPreamble); - *(uint16_t *)wh->ifrm_dur = LE_16(dur); + *(uint16_t *)wh->i_dur = LE_16(dur); } /* @@ -832,17 +819,6 @@ ath_xmit(ath_t *asc, struct ieee80211_node *in, } else ctsrate = 0; - /* - * For now use the antenna on which the last good - * frame was received on. We assume this field is - * initialized to 0 which gives us ``auto'' or the - * ``default'' antenna. - */ - if (an->an_tx_antenna) - antenna = an->an_tx_antenna; - else - antenna = in->in_recv_hist[in->in_hist_cur].irh_rantenna; - if (++txq->axq_intrcnt >= ATH_TXINTR_PERIOD) { flags |= HAL_TXDESC_INTREQ; txq->axq_intrcnt = 0; @@ -857,18 +833,19 @@ ath_xmit(ath_t *asc, struct ieee80211_node *in, atype, /* Atheros packet type */ MIN(in->in_txpower, 60), /* txpower */ txrate, try0, /* series 0 rate/tries */ - keyix, - antenna, /* antenna mode */ + keyix, /* key cache index */ + an->an_tx_antenna, /* antenna mode */ flags, /* flags */ ctsrate, /* rts/cts rate */ ctsduration); /* rts/cts duration */ + bf->bf_flags = flags; ATH_DEBUG((ATH_DBG_SEND, "ath: ath_xmit(): to %s totlen=%d " "an->an_tx_rate1sp=%d tx_rate2sp=%d tx_rate3sp=%d " "qnum=%d rix=%d sht=%d dur = %d\n", - ieee80211_ether_sprintf(wh->ifrm_addr1), mbslen, an->an_tx_rate1sp, + ieee80211_macaddr_sprintf(wh->i_addr1), mbslen, an->an_tx_rate1sp, an->an_tx_rate2sp, an->an_tx_rate3sp, - txq->axq_qnum, rix, shortPreamble, *(uint16_t *)wh->ifrm_dur)); + txq->axq_qnum, rix, shortPreamble, *(uint16_t *)wh->i_dur)); /* * Setup the multi-rate retry state only when we're @@ -905,94 +882,153 @@ ath_xmit(ath_t *asc, struct ieee80211_node *in, ATH_HAL_TXSTART(ah, txq->axq_qnum); + ic->ic_stats.is_tx_frags++; + ic->ic_stats.is_tx_bytes += pktlen; + return (0); } - +/* + * Transmit a management frame. On failure we reclaim the skbuff. + * Note that management frames come directly from the 802.11 layer + * and do not honor the send queue flow control. Need to investigate + * using priority queueing so management frames can bypass data. + */ static int -ath_gld_send(gld_mac_info_t *gld_p, mblk_t *mp) +ath_xmit(ieee80211com_t *ic, mblk_t *mp, uint8_t type) { - int err; - ath_t *asc = ATH_STATE(gld_p); - ieee80211com_t *isc = (ieee80211com_t *)asc; - struct ieee80211_node *in; - mblk_t *mp_header; + ath_t *asc = (ath_t *)ic; + struct ath_hal *ah = asc->asc_ah; + struct ieee80211_node *in = NULL; struct ath_buf *bf = NULL; + struct ieee80211_frame *wh; + int error = 0; - /* - * No data frames go out unless we're associated; this - * should not happen as the 802.11 layer does not enable - * the xmit queue until we enter the RUN state. - */ - if (isc->isc_state != IEEE80211_S_RUN) { - ATH_DEBUG((ATH_DBG_SEND, "ath: ath_gld_send(): " - "discard, state %u\n", isc->isc_state)); - asc->asc_stats.ast_tx_discard++; - return (GLD_NOLINK); - } - - /* - * Only supports STA mode - */ - if (isc->isc_opmode != IEEE80211_M_STA) - return (GLD_NOLINK); + ASSERT(mp->b_next == NULL); - /* - * Locate AP information, so we can fill MAC address. - */ - in = isc->isc_bss; - in->in_inact = 0; - - /* - * Grab a TX buffer. - */ + /* Grab a TX buffer */ mutex_enter(&asc->asc_txbuflock); bf = list_head(&asc->asc_txbuf_list); - if (bf != NULL) list_remove(&asc->asc_txbuf_list, bf); + if (list_empty(&asc->asc_txbuf_list)) { + ATH_DEBUG((ATH_DBG_SEND, "ath: ath_mgmt_send(): " + "stop queue\n")); + asc->asc_stats.ast_tx_qstop++; + } mutex_exit(&asc->asc_txbuflock); - if (bf == NULL) { - ATH_DEBUG((ATH_DBG_SEND, "ath: ath_gld_send(): " - "no TX DMA buffer available: 100 times\n")); - asc->asc_stats.ast_tx_nobuf++; - - mutex_enter(&asc->asc_gld_sched_lock); - asc->asc_need_gld_sched = 1; - mutex_exit(&asc->asc_gld_sched_lock); - return (GLD_NORESOURCES); + ATH_DEBUG((ATH_DBG_SEND, "ath: ath_mgmt_send(): discard, " + "no xmit buf\n")); + ic->ic_stats.is_tx_nobuf++; + if ((type & IEEE80211_FC0_TYPE_MASK) == + IEEE80211_FC0_TYPE_DATA) { + asc->asc_stats.ast_tx_nobuf++; + mutex_enter(&asc->asc_resched_lock); + asc->asc_resched_needed = B_TRUE; + mutex_exit(&asc->asc_resched_lock); + } else { + asc->asc_stats.ast_tx_nobufmgt++; + freemsg(mp); + } + return (ENOMEM); } - mp_header = ieee80211_fill_header(isc, mp, isc->isc_wep_txkey, in); - if (mp_header == NULL) { - /* Push back the TX buf */ - mutex_enter(&asc->asc_txbuflock); - list_insert_tail(&asc->asc_txbuf_list, bf); - mutex_exit(&asc->asc_txbuflock); - return (GLD_FAILURE); + wh = (struct ieee80211_frame *)mp->b_rptr; + + /* Locate node */ + in = ieee80211_find_txnode(ic, wh->i_addr1); + if (in == NULL) { + error = EIO; + goto bad; } - err = ath_xmit(asc, in, bf, mp, mp_header); - freemsg(mp_header); + in->in_inact = 0; + switch (type & IEEE80211_FC0_TYPE_MASK) { + case IEEE80211_FC0_TYPE_DATA: + (void) ieee80211_encap(ic, mp, in); + break; + default: + if ((wh->i_fc[0] & IEEE80211_FC0_SUBTYPE_MASK) == + IEEE80211_FC0_SUBTYPE_PROBE_RESP) { + /* fill time stamp */ + uint64_t tsf; + uint32_t *tstamp; + + tsf = ATH_HAL_GETTSF64(ah); + /* adjust 100us delay to xmit */ + tsf += 100; + tstamp = (uint32_t *)&wh[1]; + tstamp[0] = LE_32(tsf & 0xffffffff); + tstamp[1] = LE_32(tsf >> 32); + } + asc->asc_stats.ast_tx_mgmt++; + break; + } - if (!err) { + error = ath_tx_start(asc, in, bf, mp); + if (error != 0) { +bad: + ic->ic_stats.is_tx_failed++; + if (bf != NULL) { + mutex_enter(&asc->asc_txbuflock); + list_insert_tail(&asc->asc_txbuf_list, bf); + mutex_exit(&asc->asc_txbuflock); + } + } + if (in != NULL) + ieee80211_free_node(in); + if ((type & IEEE80211_FC0_TYPE_MASK) != IEEE80211_FC0_TYPE_DATA || + error == 0) { freemsg(mp); - return (GLD_SUCCESS); - } else { - return (GLD_FAILURE); } + + return (error); } -static void +static mblk_t * +ath_m_tx(void *arg, mblk_t *mp) +{ + ath_t *asc = arg; + ieee80211com_t *ic = (ieee80211com_t *)asc; + mblk_t *next; + + /* + * No data frames go out unless we're associated; this + * should not happen as the 802.11 layer does not enable + * the xmit queue until we enter the RUN state. + */ + if (ic->ic_state != IEEE80211_S_RUN) { + ATH_DEBUG((ATH_DBG_SEND, "ath: ath_m_tx(): " + "discard, state %u\n", ic->ic_state)); + asc->asc_stats.ast_tx_discard ++; + return (mp); + } + + while (mp != NULL) { + next = mp->b_next; + mp->b_next = NULL; + + if (ath_xmit(ic, mp, IEEE80211_FC0_TYPE_DATA) != 0) { + mp->b_next = next; + break; + } + mp = next; + } + + return (mp); + +} + +static int ath_tx_processq(ath_t *asc, struct ath_txq *txq) { - ieee80211com_t *isc = (ieee80211com_t *)asc; + ieee80211com_t *ic = (ieee80211com_t *)asc; struct ath_hal *ah = asc->asc_ah; struct ath_buf *bf; struct ath_desc *ds; struct ieee80211_node *in; - int32_t sr, lr; + int32_t sr, lr, nacked = 0; HAL_STATUS status; struct ath_node *an; @@ -1050,22 +1086,39 @@ ath_tx_processq(ath_t *asc, struct ath_txq *txq) lr = ds->ds_txstat.ts_longretry; asc->asc_stats.ast_tx_shortretry += sr; asc->asc_stats.ast_tx_longretry += lr; - an->an_tx_retr += sr + lr; + /* + * Hand the descriptor to the rate control algorithm. + */ + if ((ds->ds_txstat.ts_status & HAL_TXERR_FILT) == 0 && + (bf->bf_flags & HAL_TXDESC_NOACK) == 0) { + /* + * If frame was ack'd update the last rx time + * used to workaround phantom bmiss interrupts. + */ + if (ds->ds_txstat.ts_status == 0) { + nacked++; + an->an_tx_ok++; + } else { + an->an_tx_err++; + } + an->an_tx_retr += sr + lr; + } } bf->bf_in = NULL; mutex_enter(&asc->asc_txbuflock); list_insert_tail(&asc->asc_txbuf_list, bf); mutex_exit(&asc->asc_txbuflock); - mutex_enter(&asc->asc_gld_sched_lock); /* * Reschedule stalled outbound packets */ - if (asc->asc_need_gld_sched) { - asc->asc_need_gld_sched = 0; - gld_sched(isc->isc_dev); + mutex_enter(&asc->asc_resched_lock); + if (asc->asc_resched_needed) { + asc->asc_resched_needed = B_FALSE; + mac_tx_update(ic->ic_mach); } - mutex_exit(&asc->asc_gld_sched_lock); + mutex_exit(&asc->asc_resched_lock); } + return (nacked); } @@ -1079,16 +1132,16 @@ ath_tx_handler(ath_t *asc) */ for (i = 0; i < HAL_NUM_TX_QUEUES; i++) { if (ATH_TXQ_SETUP(asc, i)) { - ath_tx_processq(asc, &asc->asc_txq[i]); + (void) ath_tx_processq(asc, &asc->asc_txq[i]); } } } static struct ieee80211_node * -ath_node_alloc(ieee80211com_t *isc) +ath_node_alloc(ieee80211com_t *ic) { struct ath_node *an; - ath_t *asc = (ath_t *)isc; + ath_t *asc = (ath_t *)ic; an = kmem_zalloc(sizeof (struct ath_node), KM_SLEEP); ath_rate_update(asc, &an->an_node, 0); @@ -1096,9 +1149,10 @@ ath_node_alloc(ieee80211com_t *isc) } static void -ath_node_free(ieee80211com_t *isc, struct ieee80211_node *in) +ath_node_free(struct ieee80211_node *in) { - ath_t *asc = (ath_t *)isc; + ieee80211com_t *ic = in->in_ic; + ath_t *asc = (ath_t *)ic; struct ath_buf *bf; struct ath_txq *txq; int32_t i; @@ -1117,93 +1171,40 @@ ath_node_free(ieee80211com_t *isc, struct ieee80211_node *in) mutex_exit(&txq->axq_lock); } } + ic->ic_node_cleanup(in); kmem_free(in, sizeof (struct ath_node)); } static void -ath_node_copy(struct ieee80211_node *dst, const struct ieee80211_node *src) +ath_next_scan(void *arg) { - bcopy(src, dst, sizeof (struct ieee80211_node)); + ieee80211com_t *ic = arg; + ath_t *asc = (ath_t *)ic; + + asc->asc_scan_timer = 0; + if (ic->ic_state == IEEE80211_S_SCAN) { + asc->asc_scan_timer = timeout(ath_next_scan, (void *)asc, + drv_usectohz(ath_dwelltime * 1000)); + ieee80211_next_scan(ic); + } } -/* - * Transmit a management frame. On failure we reclaim the skbuff. - * Note that management frames come directly from the 802.11 layer - * and do not honor the send queue flow control. Need to investigate - * using priority queueing so management frames can bypass data. - */ -static int32_t -ath_mgmt_send(ieee80211com_t *isc, mblk_t *mp) +static void +ath_stop_scantimer(ath_t *asc) { - ath_t *asc = (ath_t *)isc; - struct ath_hal *ah = asc->asc_ah; - struct ieee80211_node *in; - struct ath_buf *bf = NULL; - struct ieee80211_frame *wh; - int32_t error = 0; - - /* Grab a TX buffer */ - mutex_enter(&asc->asc_txbuflock); - bf = list_head(&asc->asc_txbuf_list); - if (bf != NULL) - list_remove(&asc->asc_txbuf_list, bf); - if (list_empty(&asc->asc_txbuf_list)) { - ATH_DEBUG((ATH_DBG_SEND, "ath: ath_mgmt_send(): " - "stop queue\n")); - asc->asc_stats.ast_tx_qstop++; - } - mutex_exit(&asc->asc_txbuflock); - if (bf == NULL) { - ATH_DEBUG((ATH_DBG_SEND, "ath: ath_mgmt_send(): discard, " - "no xmit buf\n")); - asc->asc_stats.ast_tx_nobufmgt++; - goto bad; - } - wh = (struct ieee80211_frame *)mp->b_rptr; - if ((wh->ifrm_fc[0] & IEEE80211_FC0_SUBTYPE_MASK) == - IEEE80211_FC0_SUBTYPE_PROBE_RESP) { - /* fill time stamp */ - uint64_t tsf; - uint32_t *tstamp; - - tsf = ATH_HAL_GETTSF64(ah); - /* adjust 100us delay to xmit */ - tsf += 100; - tstamp = (uint32_t *)&wh[1]; - tstamp[0] = LE_32(tsf & 0xffffffff); - tstamp[1] = LE_32(tsf >> 32); - } - /* - * Locate node state. When operating - * in station mode we always use ic_bss. - */ - if (isc->isc_opmode != IEEE80211_M_STA) { - in = ieee80211_find_node(isc, wh->ifrm_addr1); - if (in == NULL) - in = isc->isc_bss; - } else - in = isc->isc_bss; + timeout_id_t tmp_id = 0; - error = ath_xmit(asc, in, bf, NULL, mp); - if (error == 0) { - asc->asc_stats.ast_tx_mgmt++; - freemsg(mp); - return (0); + while ((asc->asc_scan_timer != 0) && (tmp_id != asc->asc_scan_timer)) { + tmp_id = asc->asc_scan_timer; + (void) untimeout(tmp_id); } -bad: - if (bf != NULL) { - mutex_enter(&asc->asc_txbuflock); - list_insert_tail(&asc->asc_txbuf_list, bf); - mutex_exit(&asc->asc_txbuflock); - } - freemsg(mp); - return (error); + asc->asc_scan_timer = 0; } static int32_t -ath_new_state(ieee80211com_t *isc, enum ieee80211_state nstate) +ath_newstate(ieee80211com_t *ic, enum ieee80211_state nstate, int arg) { - ath_t *asc = (ath_t *)isc; + ath_t *asc = (ath_t *)ic; struct ath_hal *ah = asc->asc_ah; struct ieee80211_node *in; int32_t i, error; @@ -1218,36 +1219,44 @@ ath_new_state(ieee80211com_t *isc, enum ieee80211_state nstate) HAL_LED_ASSOC, /* IEEE80211_S_ASSOC */ HAL_LED_RUN, /* IEEE80211_S_RUN */ }; - if (asc->asc_invalid == 1) + if (!ATH_IS_RUNNING(asc)) return (0); - ostate = isc->isc_state; + ostate = ic->ic_state; + if (nstate != IEEE80211_S_SCAN) + ath_stop_scantimer(asc); + ATH_LOCK(asc); ATH_HAL_SETLEDSTATE(ah, leds[nstate]); /* set LED */ if (nstate == IEEE80211_S_INIT) { asc->asc_imask &= ~(HAL_INT_SWBA | HAL_INT_BMISS); - ATH_HAL_INTRSET(ah, asc->asc_imask); - error = 0; /* cheat + use error return */ - goto bad; + ATH_HAL_INTRSET(ah, asc->asc_imask &~ HAL_INT_GLOBAL); + ATH_UNLOCK(asc); + goto done; + } + in = ic->ic_bss; + error = ath_chan_set(asc, ic->ic_curchan); + if (error != 0) { + if (nstate != IEEE80211_S_SCAN) { + ATH_UNLOCK(asc); + ieee80211_reset_chan(ic); + goto bad; + } } - in = isc->isc_bss; - error = ath_chan_set(asc, in->in_chan); - if (error != 0) - goto bad; rfilt = ath_calcrxfilter(asc); if (nstate == IEEE80211_S_SCAN) - bssid = isc->isc_macaddr; + bssid = ic->ic_macaddr; else bssid = in->in_bssid; ATH_HAL_SETRXFILTER(ah, rfilt); - if (nstate == IEEE80211_S_RUN && isc->isc_opmode != IEEE80211_M_IBSS) + if (nstate == IEEE80211_S_RUN && ic->ic_opmode != IEEE80211_M_IBSS) ATH_HAL_SETASSOCID(ah, bssid, in->in_associd); else ATH_HAL_SETASSOCID(ah, bssid, 0); - if (isc->isc_flags & IEEE80211_F_WEPON) { + if (ic->ic_flags & IEEE80211_F_PRIVACY) { for (i = 0; i < IEEE80211_WEP_NKID; i++) { if (ATH_HAL_KEYISVALID(ah, i)) ATH_HAL_KEYSETMAC(ah, i, bssid); @@ -1267,7 +1276,7 @@ ath_new_state(ieee80211com_t *isc, enum ieee80211_state nstate) */ ath_rate_ctl_reset(asc, nstate); - if (nstate == IEEE80211_S_RUN) { + if (nstate == IEEE80211_S_RUN && (ostate != IEEE80211_S_RUN)) { nvlist_t *attr_list = NULL; sysevent_id_t eid; int32_t err = 0; @@ -1277,11 +1286,11 @@ ath_new_state(ieee80211com_t *isc, enum ieee80211_state nstate) ATH_DEBUG((ATH_DBG_80211, "ath: ath new state(RUN): " "ic_flags=0x%08x iv=%d" " bssid=%s capinfo=0x%04x chan=%d\n", - isc->isc_flags, + ic->ic_flags, in->in_intval, - ieee80211_ether_sprintf(in->in_bssid), + ieee80211_macaddr_sprintf(in->in_bssid), in->in_capinfo, - ieee80211_chan2ieee(isc, in->in_chan))); + ieee80211_chan2ieee(ic, in->in_chan))); (void) sprintf(str_value, "%s%s%d", "-i ", ddi_driver_name(asc->asc_dev), @@ -1304,7 +1313,23 @@ ath_new_state(ieee80211com_t *isc, enum ieee80211_state nstate) } } - return (0); + ATH_UNLOCK(asc); +done: + /* + * Invoke the parent method to complete the work. + */ + error = asc->asc_newstate(ic, nstate, arg); + /* + * Finally, start any timers. + */ + if (nstate == IEEE80211_S_RUN) { + ieee80211_start_watchdog(ic, 1); + } else if ((nstate == IEEE80211_S_SCAN) && (ostate != nstate)) { + /* start ap/neighbor scan timer */ + ASSERT(asc->asc_scan_timer == 0); + asc->asc_scan_timer = timeout(ath_next_scan, (void *)asc, + drv_usectohz(ath_dwelltime * 1000)); + } bad: return (error); } @@ -1314,23 +1339,13 @@ bad: * for temperature/environment changes. */ static void -ath_calibrate(ieee80211com_t *isc) +ath_calibrate(ath_t *asc) { - ath_t *asc = (ath_t *)isc; struct ath_hal *ah = asc->asc_ah; - struct ieee80211channel *ch; - HAL_CHANNEL hchan; + HAL_BOOL iqcaldone; asc->asc_stats.ast_per_cal++; - /* - * Convert to a HAL channel description with the flags - * constrained to reflect the current operating mode. - */ - ch = isc->isc_ibss_chan; - hchan.channel = ch->ich_freq; - hchan.channelFlags = ath_chan2flags(isc, ch); - if (ATH_HAL_GETRFGAIN(ah) == HAL_RFGAIN_NEED_CHANGE) { /* * Rfgain is out of bounds, reset the chip @@ -1339,29 +1354,77 @@ ath_calibrate(ieee80211com_t *isc) ATH_DEBUG((ATH_DBG_HAL, "ath: ath_calibrate(): " "Need change RFgain\n")); asc->asc_stats.ast_per_rfgain++; - ath_reset(asc); + (void) ath_reset(&asc->asc_isc); } - if (!ATH_HAL_CALIBRATE(ah, &hchan)) { + if (!ATH_HAL_CALIBRATE(ah, &asc->asc_curchan, &iqcaldone)) { ATH_DEBUG((ATH_DBG_HAL, "ath: ath_calibrate(): " "calibration of channel %u failed\n", - ch->ich_freq)); + asc->asc_curchan.channel)); asc->asc_stats.ast_per_calfail++; } } +static void +ath_watchdog(void *arg) +{ + ath_t *asc = arg; + ieee80211com_t *ic = &asc->asc_isc; + int ntimer = 0; + + ATH_LOCK(asc); + ic->ic_watchdog_timer = 0; + if (!ATH_IS_RUNNING(asc)) { + ATH_UNLOCK(asc); + return; + } + + if (ic->ic_state == IEEE80211_S_RUN) { + /* periodic recalibration */ + ath_calibrate(asc); + + /* + * Start the background rate control thread if we + * are not configured to use a fixed xmit rate. + */ + if (ic->ic_fixed_rate == IEEE80211_FIXED_RATE_NONE) { + asc->asc_stats.ast_rate_calls ++; + if (ic->ic_opmode == IEEE80211_M_STA) + ath_rate_ctl(ic, ic->ic_bss); + else + ieee80211_iterate_nodes(&ic->ic_sta, + ath_rate_cb, asc); + } + + ntimer = 1; + } + ATH_UNLOCK(asc); + + ieee80211_watchdog(ic); + if (ntimer != 0) + ieee80211_start_watchdog(ic, ntimer); +} + static uint_t -ath_gld_intr(gld_mac_info_t *gld_p) +ath_intr(caddr_t arg) { - ath_t *asc = ATH_STATE(gld_p); + ath_t *asc = (ath_t *)arg; struct ath_hal *ah = asc->asc_ah; HAL_INT status; - enum ieee80211_state isc_state; - ieee80211com_t *isc = (ieee80211com_t *)asc; + ieee80211com_t *ic = (ieee80211com_t *)asc; - mutex_enter(&asc->asc_genlock); + ATH_LOCK(asc); + + if (!ATH_IS_RUNNING(asc)) { + /* + * The hardware is not ready/present, don't touch anything. + * Note this can happen early on if the IRQ is shared. + */ + ATH_UNLOCK(asc); + return (DDI_INTR_UNCLAIMED); + } if (!ATH_HAL_INTRPEND(ah)) { /* shared irq, not for us */ - mutex_exit(&asc->asc_genlock); + ATH_UNLOCK(asc); return (DDI_INTR_UNCLAIMED); } @@ -1369,11 +1432,9 @@ ath_gld_intr(gld_mac_info_t *gld_p) status &= asc->asc_imask; if (status & HAL_INT_FATAL) { asc->asc_stats.ast_hardware++; - mutex_exit(&asc->asc_genlock); goto reset; } else if (status & HAL_INT_RXORN) { asc->asc_stats.ast_rxorn++; - mutex_exit(&asc->asc_genlock); goto reset; } else { if (status & HAL_INT_RXEOL) { @@ -1384,6 +1445,7 @@ ath_gld_intr(gld_mac_info_t *gld_p) asc->asc_stats.ast_txurn++; ATH_HAL_UPDATETXTRIGLEVEL(ah, AH_TRUE); } + if (status & HAL_INT_RX) { asc->asc_rx_pend = 1; ddi_trigger_softintr(asc->asc_softint_id); @@ -1391,19 +1453,15 @@ ath_gld_intr(gld_mac_info_t *gld_p) if (status & HAL_INT_TX) { ath_tx_handler(asc); } - - mutex_exit(&asc->asc_genlock); + ATH_UNLOCK(asc); if (status & HAL_INT_SWBA) { /* This will occur only in Host-AP or Ad-Hoc mode */ return (DDI_INTR_CLAIMED); } if (status & HAL_INT_BMISS) { - mutex_enter(&isc->isc_genlock); - isc_state = isc->isc_state; - mutex_exit(&isc->isc_genlock); - if (isc_state == IEEE80211_S_RUN) { - (void) ieee80211_new_state(isc, + if (ic->ic_state == IEEE80211_S_RUN) { + (void) ieee80211_new_state(ic, IEEE80211_S_ASSOC, -1); } } @@ -1411,9 +1469,8 @@ ath_gld_intr(gld_mac_info_t *gld_p) return (DDI_INTR_CLAIMED); reset: - mutex_enter(&isc->isc_genlock); - ath_reset(asc); - mutex_exit(&isc->isc_genlock); + (void) ath_reset(ic); + ATH_UNLOCK(asc); return (DDI_INTR_CLAIMED); } @@ -1426,14 +1483,14 @@ ath_softint_handler(caddr_t data) * Check if the soft interrupt is triggered by another * driver at the same level. */ - mutex_enter(&asc->asc_genlock); + ATH_LOCK(asc); if (asc->asc_rx_pend) { /* Soft interrupt for this driver */ asc->asc_rx_pend = 0; - mutex_exit(&asc->asc_genlock); - ath_rx_handler((ath_t *)data); + ATH_UNLOCK(asc); + ath_rx_handler(asc); return (DDI_INTR_CLAIMED); } - mutex_exit(&asc->asc_genlock); + ATH_UNLOCK(asc); return (DDI_INTR_UNCLAIMED); } @@ -1448,56 +1505,69 @@ ath_softint_handler(caddr_t data) * and to reset the hardware when rf gain settings must be reset. */ -static int -ath_gld_reset(gld_mac_info_t *gld_p) -{ - ath_t *asc = ATH_STATE(gld_p); - - ath_reset(asc); - return (GLD_SUCCESS); -} - - -static int -ath_gld_stop(gld_mac_info_t *gld_p) +static void +ath_stop_locked(ath_t *asc) { - ath_t *asc = ATH_STATE(gld_p); - ieee80211com_t *isc = (ieee80211com_t *)asc; + ieee80211com_t *ic = (ieee80211com_t *)asc; struct ath_hal *ah = asc->asc_ah; - (void) _ieee80211_new_state(isc, IEEE80211_S_INIT, -1); + ATH_LOCK_ASSERT(asc); + /* + * Shutdown the hardware and driver: + * reset 802.11 state machine + * turn off timers + * disable interrupts + * turn off the radio + * clear transmit machinery + * clear receive machinery + * drain and release tx queues + * reclaim beacon resources + * power down hardware + * + * Note that some of this work is not possible if the + * hardware is gone (invalid). + */ + ATH_UNLOCK(asc); + ieee80211_new_state(ic, IEEE80211_S_INIT, -1); + ieee80211_stop_watchdog(ic); + ATH_LOCK(asc); ATH_HAL_INTRSET(ah, 0); ath_draintxq(asc); - if (! asc->asc_invalid) + if (ATH_IS_RUNNING(asc)) { ath_stoprecv(asc); - else + ATH_HAL_PHYDISABLE(ah); + } else { asc->asc_rxlink = NULL; - ATH_HAL_SETPOWER(ah, HAL_PM_FULL_SLEEP, 0); + } +} - asc->asc_invalid = 1; +static void +ath_m_stop(void *arg) +{ + ath_t *asc = arg; + struct ath_hal *ah = asc->asc_ah; - return (GLD_SUCCESS); + ATH_LOCK(asc); + ath_stop_locked(asc); + ATH_HAL_SETPOWER(ah, HAL_PM_AWAKE); + asc->asc_invalid = 1; + ATH_UNLOCK(asc); } int -ath_gld_start(gld_mac_info_t *gld_p) +ath_m_start(void *arg) { - int ret; - ath_t *asc = ATH_STATE(gld_p); - ieee80211com_t *isc = (ieee80211com_t *)asc; - struct ieee80211_node *in; - enum ieee80211_phymode mode; + ath_t *asc = arg; + ieee80211com_t *ic = (ieee80211com_t *)asc; struct ath_hal *ah = asc->asc_ah; HAL_STATUS status; - HAL_CHANNEL hchan; + ATH_LOCK(asc); /* * Stop anything previously setup. This is safe * whether this is the first time through or not. */ - ret = ath_gld_stop(gld_p); - if (ret != GLD_SUCCESS) - return (ret); + ath_stop_locked(asc); /* * The basic interface to setting the hardware in a good @@ -1506,25 +1576,17 @@ ath_gld_start(gld_mac_info_t *gld_p) * be followed by initialization of the appropriate bits * and then setup of the interrupt mask. */ - hchan.channel = isc->isc_ibss_chan->ich_freq; - hchan.channelFlags = ath_chan2flags(isc, isc->isc_ibss_chan); - if (!ATH_HAL_RESET(ah, (HAL_OPMODE)isc->isc_opmode, - &hchan, AH_FALSE, &status)) { - ATH_DEBUG((ATH_DBG_HAL, "ath: ath_gld_start(): " - "unable to reset hardware, hal status %u\n", status)); - return (GLD_FAILURE); + asc->asc_curchan.channel = ic->ic_curchan->ich_freq; + asc->asc_curchan.channelFlags = ath_chan2flags(ic, ic->ic_curchan); + if (!ATH_HAL_RESET(ah, (HAL_OPMODE)ic->ic_opmode, + &asc->asc_curchan, AH_FALSE, &status)) { + ATH_DEBUG((ATH_DBG_HAL, "ath: ath_m_start(): " + "reset hardware failed, hal status %u\n", status)); + ATH_UNLOCK(asc); + return (ENOTACTIVE); } - /* - * Setup the hardware after reset: the key cache - * is filled as needed and the receive engine is - * set going. Frame transmit is handled entirely - * in the frame output path; there's nothing to do - * here except setup the interrupt mask. - */ - ath_initkeytable(asc); - if (ath_startrecv(asc)) - return (GLD_FAILURE); + (void) ath_startrecv(asc); /* * Enable interrupts. @@ -1534,27 +1596,24 @@ ath_gld_start(gld_mac_info_t *gld_p) | HAL_INT_FATAL | HAL_INT_GLOBAL; ATH_HAL_INTRSET(ah, asc->asc_imask); - isc->isc_state = IEEE80211_S_INIT; + ic->ic_state = IEEE80211_S_INIT; /* * The hardware should be ready to go now so it's safe * to kick the 802.11 state machine as it's likely to * immediately call back to us to send mgmt frames. */ - in = isc->isc_bss; - in->in_chan = isc->isc_ibss_chan; - mode = ieee80211_chan2mode(isc, in->in_chan); - if (mode != asc->asc_curmode) - ath_setcurmode(asc, mode); + ath_chan_change(asc, ic->ic_curchan); asc->asc_invalid = 0; - return (GLD_SUCCESS); + ATH_UNLOCK(asc); + return (0); } -static int32_t -ath_gld_saddr(gld_mac_info_t *gld_p, unsigned char *macaddr) +static int +ath_m_unicst(void *arg, const uint8_t *macaddr) { - ath_t *asc = ATH_STATE(gld_p); + ath_t *asc = arg; struct ath_hal *ah = asc->asc_ah; ATH_DEBUG((ATH_DBG_GLD, "ath: ath_gld_saddr(): " @@ -1562,54 +1621,50 @@ ath_gld_saddr(gld_mac_info_t *gld_p, unsigned char *macaddr) macaddr[0], macaddr[1], macaddr[2], macaddr[3], macaddr[4], macaddr[5])); - IEEE80211_ADDR_COPY(asc->asc_isc.isc_macaddr, macaddr); - ATH_HAL_SETMAC(ah, asc->asc_isc.isc_macaddr); + ATH_LOCK(asc); + IEEE80211_ADDR_COPY(asc->asc_isc.ic_macaddr, macaddr); + ATH_HAL_SETMAC(ah, asc->asc_isc.ic_macaddr); - ath_reset(asc); - return (GLD_SUCCESS); + (void) ath_reset(&asc->asc_isc); + ATH_UNLOCK(asc); + return (0); } static int -ath_gld_set_promiscuous(gld_mac_info_t *macinfo, int mode) +ath_m_promisc(void *arg, boolean_t on) { - ath_t *asc = ATH_STATE(macinfo); + ath_t *asc = arg; struct ath_hal *ah = asc->asc_ah; uint32_t rfilt; + ATH_LOCK(asc); rfilt = ATH_HAL_GETRXFILTER(ah); - switch (mode) { - case GLD_MAC_PROMISC_PHYS: - ATH_HAL_SETRXFILTER(ah, rfilt | HAL_RX_FILTER_PROM); - break; - case GLD_MAC_PROMISC_MULTI: - rfilt |= HAL_RX_FILTER_MCAST; + if (on) + rfilt |= HAL_RX_FILTER_PROM; + else rfilt &= ~HAL_RX_FILTER_PROM; - ATH_HAL_SETRXFILTER(ah, rfilt); - break; - case GLD_MAC_PROMISC_NONE: - ATH_HAL_SETRXFILTER(ah, rfilt & (~HAL_RX_FILTER_PROM)); - break; - default: - break; - } + ATH_HAL_SETRXFILTER(ah, rfilt); + ATH_UNLOCK(asc); - return (GLD_SUCCESS); + return (0); } static int -ath_gld_set_multicast(gld_mac_info_t *macinfo, uchar_t *mca, int flag) +ath_m_multicst(void *arg, boolean_t add, const uint8_t *mca) { + ath_t *asc = arg; + struct ath_hal *ah = asc->asc_ah; uint32_t mfilt[2], val, rfilt; uint8_t pos; - ath_t *asc = ATH_STATE(macinfo); - struct ath_hal *ah = asc->asc_ah; + ATH_LOCK(asc); rfilt = ATH_HAL_GETRXFILTER(ah); /* disable multicast */ - if (flag == GLD_MULTI_DISABLE) { + if (!add) { ATH_HAL_SETRXFILTER(ah, rfilt & (~HAL_RX_FILTER_MCAST)); - return (GLD_SUCCESS); + ATH_UNLOCK(asc); + return (0); } /* enable multicast */ @@ -1626,117 +1681,104 @@ ath_gld_set_multicast(gld_mac_info_t *macinfo, uchar_t *mca, int flag) mfilt[pos / 32] |= (1 << (pos % 32)); ATH_HAL_SETMCASTFILTER(ah, mfilt[0], mfilt[1]); - return (GLD_SUCCESS); + ATH_UNLOCK(asc); + return (0); } static void -ath_wlan_ioctl(ath_t *asc, queue_t *wq, mblk_t *mp, uint32_t cmd) +ath_m_ioctl(void *arg, queue_t *wq, mblk_t *mp) { - - struct iocblk *iocp = (struct iocblk *)mp->b_rptr; - uint32_t len, ret; - mblk_t *mp1; - - /* sanity check */ - if (iocp->ioc_count == 0 || !(mp1 = mp->b_cont)) { - miocnak(wq, mp, 0, EINVAL); - return; - } - - /* assuming single data block */ - if (mp1->b_cont) { - freemsg(mp1->b_cont); - mp1->b_cont = NULL; + ath_t *asc = arg; + int32_t err; + + err = ieee80211_ioctl(&asc->asc_isc, wq, mp); + ATH_LOCK(asc); + if (err == ENETRESET) { + if (ATH_IS_RUNNING(asc)) { + ATH_UNLOCK(asc); + (void) ath_m_start(asc); + (void) ieee80211_new_state(&asc->asc_isc, + IEEE80211_S_SCAN, -1); + ATH_LOCK(asc); + } } - - /* we will overwrite everything */ - mp1->b_wptr = mp1->b_rptr; - - ret = ath_getset(asc, mp1, cmd); - - len = msgdsize(mp1); - - miocack(wq, mp, len, ret); + ATH_UNLOCK(asc); } static int -ath_gld_ioctl(gld_mac_info_t *gld_p, queue_t *wq, mblk_t *mp) +ath_m_stat(void *arg, uint_t stat, uint64_t *val) { - struct iocblk *iocp; - int32_t cmd, err; - ath_t *asc = ATH_STATE(gld_p); - boolean_t need_privilege; + ath_t *asc = arg; + ieee80211com_t *ic = (ieee80211com_t *)asc; + struct ieee80211_node *in = ic->ic_bss; + struct ieee80211_rateset *rs = &in->in_rates; - /* - * Validate the command before bothering with the mutexen ... - */ - iocp = (struct iocblk *)mp->b_rptr; - cmd = iocp->ioc_cmd; - need_privilege = B_TRUE; - switch (cmd) { - case WLAN_SET_PARAM: - case WLAN_COMMAND: + ATH_LOCK(asc); + switch (stat) { + case MAC_STAT_IFSPEED: + *val = (rs->ir_rates[in->in_txrate] & IEEE80211_RATE_VAL) / 2 * + 1000000ull; + break; + case MAC_STAT_NOXMTBUF: + *val = asc->asc_stats.ast_tx_nobuf + + asc->asc_stats.ast_tx_nobufmgt; break; - case WLAN_GET_PARAM: - need_privilege = B_FALSE; + case MAC_STAT_IERRORS: + *val = asc->asc_stats.ast_rx_tooshort; break; + case MAC_STAT_OERRORS: + *val = asc->asc_stats.ast_tx_fifoerr + + asc->asc_stats.ast_tx_xretries; + break; + case MAC_STAT_RBYTES: + *val = ic->ic_stats.is_rx_bytes; + break; + case MAC_STAT_IPACKETS: + *val = ic->ic_stats.is_rx_frags; + break; + case MAC_STAT_OBYTES: + *val = ic->ic_stats.is_tx_bytes; + break; + case MAC_STAT_OPACKETS: + *val = ic->ic_stats.is_tx_frags; + break; + case WIFI_STAT_TX_FAILED: + *val = asc->asc_stats.ast_tx_fifoerr + + asc->asc_stats.ast_tx_xretries; + break; + case WIFI_STAT_TX_RETRANS: + *val = asc->asc_stats.ast_tx_xretries; + break; + case WIFI_STAT_FCS_ERRORS: + *val = asc->asc_stats.ast_rx_crcerr; + break; + case WIFI_STAT_WEP_ERRORS: + *val = asc->asc_stats.ast_rx_badcrypt; + break; + case WIFI_STAT_TX_FRAGS: + case WIFI_STAT_MCAST_TX: + case WIFI_STAT_RTS_SUCCESS: + case WIFI_STAT_RTS_FAILURE: + case WIFI_STAT_ACK_FAILURE: + case WIFI_STAT_RX_FRAGS: + case WIFI_STAT_MCAST_RX: + case WIFI_STAT_RX_DUPS: + ATH_UNLOCK(asc); + return (ieee80211_stat(ic, stat, val)); default: - ATH_DEBUG((ATH_DBG_GLD, "ath: ath_gld_ioctl(): " - "unknown cmd 0x%x", cmd)); - miocnak(wq, mp, 0, EINVAL); - return (GLD_SUCCESS); - } - - if (need_privilege) { - /* - * Check for specific net_config privilege on Solaris 10+. - * Otherwise just check for root access ... - */ - if (secpolicy_net_config != NULL) - err = secpolicy_net_config(iocp->ioc_cr, B_FALSE); - else - err = drv_priv(iocp->ioc_cr); - if (err != 0) { - miocnak(wq, mp, 0, err); - return (GLD_SUCCESS); - } + ATH_UNLOCK(asc); + return (ENOTSUP); } + ATH_UNLOCK(asc); - ath_wlan_ioctl(asc, wq, mp, cmd); - return (GLD_SUCCESS); -} - -static int -ath_gld_gstat(gld_mac_info_t *gld_p, struct gld_stats *glds_p) -{ - ath_t *asc = ATH_STATE(gld_p); - ieee80211com_t *isc = (ieee80211com_t *)asc; - struct ieee80211_node *in = isc->isc_bss; - struct ath_node *an = ATH_NODE(in); - struct ieee80211_rateset *rs = &in->in_rates; - - glds_p->glds_crc = asc->asc_stats.ast_rx_crcerr; - glds_p->glds_multircv = 0; - glds_p->glds_multixmt = 0; - glds_p->glds_excoll = 0; - glds_p->glds_xmtretry = an->an_tx_retr; - glds_p->glds_defer = 0; - glds_p->glds_noxmtbuf = asc->asc_stats.ast_tx_nobuf; - glds_p->glds_norcvbuf = asc->asc_stats.ast_rx_fifoerr; - glds_p->glds_short = asc->asc_stats.ast_rx_tooshort; - glds_p->glds_missed = asc->asc_stats.ast_rx_badcrypt; - glds_p->glds_speed = 1000000*(rs->ir_rates[in->in_txrate] & - IEEE80211_RATE_VAL) / 2; - glds_p->glds_duplex = GLD_DUPLEX_FULL; - - return (GLD_SUCCESS); + return (0); } static int ath_attach(dev_info_t *devinfo, ddi_attach_cmd_t cmd) { ath_t *asc; - ieee80211com_t *isc; + ieee80211com_t *ic; struct ath_hal *ah; uint8_t csz; HAL_STATUS status; @@ -1747,33 +1789,28 @@ ath_attach(dev_info_t *devinfo, ddi_attach_cmd_t cmd) int32_t ath_countrycode = CTRY_DEFAULT; /* country code */ int32_t err, ath_regdomain = 0; /* regulatory domain */ char strbuf[32]; + int instance; + wifi_data_t wd = { 0 }; + mac_register_t *macp; - switch (cmd) { - case DDI_RESUME: + if (cmd != DDI_ATTACH) return (DDI_FAILURE); - case DDI_ATTACH: - break; - default: - return (DDI_FAILURE); - } - if (ddi_soft_state_zalloc(ath_soft_state_p, - ddi_get_instance(devinfo)) != DDI_SUCCESS) { + instance = ddi_get_instance(devinfo); + if (ddi_soft_state_zalloc(ath_soft_state_p, instance) != DDI_SUCCESS) { ATH_DEBUG((ATH_DBG_ATTACH, "ath: ath_attach(): " "Unable to alloc softstate\n")); return (DDI_FAILURE); } asc = ddi_get_soft_state(ath_soft_state_p, ddi_get_instance(devinfo)); - isc = (ieee80211com_t *)asc; + ic = (ieee80211com_t *)asc; asc->asc_dev = devinfo; - ath_halfix_init(); - mutex_init(&asc->asc_genlock, NULL, MUTEX_DRIVER, NULL); mutex_init(&asc->asc_txbuflock, NULL, MUTEX_DRIVER, NULL); mutex_init(&asc->asc_rxbuflock, NULL, MUTEX_DRIVER, NULL); - mutex_init(&asc->asc_gld_sched_lock, NULL, MUTEX_DRIVER, NULL); + mutex_init(&asc->asc_resched_lock, NULL, MUTEX_DRIVER, NULL); err = pci_config_setup(devinfo, &asc->asc_cfg_handle); if (err != DDI_SUCCESS) { @@ -1883,7 +1920,7 @@ ath_attach(dev_info_t *devinfo, ddi_attach_cmd_t cmd) ath_rate_setup(asc, IEEE80211_MODE_11A); ath_rate_setup(asc, IEEE80211_MODE_11B); ath_rate_setup(asc, IEEE80211_MODE_11G); - ath_rate_setup(asc, IEEE80211_MODE_TURBO); + ath_rate_setup(asc, IEEE80211_MODE_TURBO_A); /* Setup here so ath_rate_update is happy */ ath_setcurmode(asc, IEEE80211_MODE_11A); @@ -1899,55 +1936,56 @@ ath_attach(dev_info_t *devinfo, ddi_attach_cmd_t cmd) if (ath_txq_setup(asc)) goto attach_fail4; - ATH_HAL_GETMAC(ah, asc->asc_isc.isc_macaddr); + ATH_HAL_GETMAC(ah, ic->ic_macaddr); - /* setup gld */ - if ((isc->isc_dev = gld_mac_alloc(devinfo)) == NULL) { - ATH_DEBUG((ATH_DBG_ATTACH, "ath: ath_attach(): " - "gld_mac_alloc = %p\n", (void *)isc->isc_dev)); - goto attach_fail4; - } - - /* pre initialize some variables for isc */ - isc->isc_dev->gldm_private = (caddr_t)asc; - - isc->isc_gld_reset = ath_gld_reset; - isc->isc_gld_start = ath_gld_start; - isc->isc_gld_stop = ath_gld_stop; - isc->isc_gld_saddr = ath_gld_saddr; - isc->isc_gld_send = ath_gld_send; - isc->isc_gld_set_promiscuous = ath_gld_set_promiscuous; - isc->isc_gld_gstat = ath_gld_gstat; - isc->isc_gld_ioctl = ath_gld_ioctl; - isc->isc_gld_set_multicast = ath_gld_set_multicast; - isc->isc_gld_intr = ath_gld_intr; - - isc->isc_mgmt_send = ath_mgmt_send; - isc->isc_new_state = ath_new_state; - isc->isc_phytype = IEEE80211_T_OFDM; - isc->isc_opmode = IEEE80211_M_STA; - isc->isc_caps = IEEE80211_C_WEP | IEEE80211_C_IBSS | - IEEE80211_C_HOSTAP; + /* + * Initialize pointers to device specific functions which + * will be used by the generic layer. + */ /* 11g support is identified when we fetch the channel set */ if (asc->asc_have11g) - isc->isc_caps |= IEEE80211_C_SHPREAMBLE; - isc->isc_node_alloc = ath_node_alloc; - isc->isc_node_free = ath_node_free; - isc->isc_node_copy = ath_node_copy; - isc->isc_rate_ctl = ath_rate_ctl; - isc->isc_calibrate = ath_calibrate; - (void) ieee80211_ifattach(isc->isc_dev); - - isc->isc_dev->gldm_devinfo = devinfo; - isc->isc_dev->gldm_vendor_addr = asc->asc_isc.isc_macaddr; - isc->isc_dev->gldm_broadcast_addr = ath_broadcast_addr; - isc->isc_dev->gldm_ident = "Atheros driver"; - isc->isc_dev->gldm_type = DL_ETHER; - isc->isc_dev->gldm_minpkt = 0; - isc->isc_dev->gldm_maxpkt = 1500; - isc->isc_dev->gldm_addrlen = ETHERADDRL; - isc->isc_dev->gldm_saplen = -2; - isc->isc_dev->gldm_ppa = ddi_get_instance(devinfo); + ic->ic_caps |= IEEE80211_C_SHPREAMBLE; + /* + * Query the hal to figure out h/w crypto support. + */ + if (ATH_HAL_CIPHERSUPPORTED(ah, HAL_CIPHER_WEP)) + ic->ic_caps |= IEEE80211_C_WEP; + if (ATH_HAL_CIPHERSUPPORTED(ah, HAL_CIPHER_AES_OCB)) + ic->ic_caps |= IEEE80211_C_AES; + if (ATH_HAL_CIPHERSUPPORTED(ah, HAL_CIPHER_AES_CCM)) + ic->ic_caps |= IEEE80211_C_AES_CCM; + if (ATH_HAL_CIPHERSUPPORTED(ah, HAL_CIPHER_CKIP)) { + ic->ic_caps |= IEEE80211_C_CKIP; + /* + * Check if h/w does the MIC and/or whether the + * separate key cache entries are required to + * handle both tx+rx MIC keys. + */ + if (ATH_HAL_CIPHERSUPPORTED(ah, HAL_CIPHER_MIC)) + ic->ic_caps |= IEEE80211_C_TKIPMIC; + if (ATH_HAL_TKIPSPLIT(ah)) + asc->asc_splitmic = 1; + } + asc->asc_hasclrkey = ATH_HAL_CIPHERSUPPORTED(ah, HAL_CIPHER_CLR); + ic->ic_phytype = IEEE80211_T_OFDM; + ic->ic_opmode = IEEE80211_M_STA; + ic->ic_state = IEEE80211_S_INIT; + ic->ic_maxrssi = ATH_MAX_RSSI; + ic->ic_set_shortslot = ath_set_shortslot; + ic->ic_xmit = ath_xmit; + ieee80211_attach(ic); + + /* Override 80211 default routines */ + ic->ic_reset = ath_reset; + asc->asc_newstate = ic->ic_newstate; + ic->ic_newstate = ath_newstate; + ic->ic_watchdog = ath_watchdog; + ic->ic_node_alloc = ath_node_alloc; + ic->ic_node_free = ath_node_free; + ic->ic_crypto.cs_key_alloc = ath_key_alloc; + ic->ic_crypto.cs_key_delete = ath_key_delete; + ic->ic_crypto.cs_key_set = ath_key_set; + ieee80211_media_init(ic); asc->asc_rx_pend = 0; ATH_HAL_INTRSET(ah, 0); @@ -1955,7 +1993,7 @@ ath_attach(dev_info_t *devinfo, ddi_attach_cmd_t cmd) &asc->asc_softint_id, NULL, 0, ath_softint_handler, (caddr_t)asc); if (err != DDI_SUCCESS) { ATH_DEBUG((ATH_DBG_ATTACH, "ath: ath_attach(): " - "ddi_add_softintr() failed")); + "ddi_add_softintr() failed\n")); goto attach_fail5; } @@ -1966,29 +2004,55 @@ ath_attach(dev_info_t *devinfo, ddi_attach_cmd_t cmd) goto attach_fail6; } - if (ddi_add_intr(devinfo, 0, NULL, NULL, gld_intr, - (caddr_t)asc->asc_isc.isc_dev) != DDI_SUCCESS) { + if (ddi_add_intr(devinfo, 0, NULL, NULL, ath_intr, + (caddr_t)asc) != DDI_SUCCESS) { ATH_DEBUG((ATH_DBG_ATTACH, "ath: ath_attach(): " "Can not set intr for ATH driver\n")); goto attach_fail6; } - isc->isc_dev->gldm_cookie = asc->asc_iblock; - if (err = gld_register(devinfo, "ath", isc->isc_dev)) { + /* + * Provide initial settings for the WiFi plugin; whenever this + * information changes, we need to call mac_plugindata_update() + */ + wd.wd_opmode = ic->ic_opmode; + wd.wd_secalloc = WIFI_SEC_NONE; + IEEE80211_ADDR_COPY(wd.wd_bssid, ic->ic_bss->in_bssid); + + if ((macp = mac_alloc(MAC_VERSION)) == NULL) { ATH_DEBUG((ATH_DBG_ATTACH, "ath: ath_attach(): " - "gld_register err %x\n", err)); + "MAC version mismatch\n")); + goto attach_fail7; + } + + macp->m_type_ident = MAC_PLUGIN_IDENT_WIFI; + macp->m_driver = asc; + macp->m_dip = devinfo; + macp->m_src_addr = ic->ic_macaddr; + macp->m_callbacks = &ath_m_callbacks; + macp->m_min_sdu = 0; + macp->m_max_sdu = IEEE80211_MTU; + macp->m_pdata = &wd; + macp->m_pdata_size = sizeof (wd); + + err = mac_register(macp, &ic->ic_mach); + mac_free(macp); + if (err != 0) { + ATH_DEBUG((ATH_DBG_ATTACH, "ath: ath_attach(): " + "mac_register err %x\n", err)); goto attach_fail7; } /* Create minor node of type DDI_NT_NET_WIFI */ (void) snprintf(strbuf, sizeof (strbuf), "%s%d", - ATH_NODENAME, isc->isc_dev->gldm_ppa); + ATH_NODENAME, instance); err = ddi_create_minor_node(devinfo, strbuf, S_IFCHR, - isc->isc_dev->gldm_ppa + 1, DDI_NT_NET_WIFI, 0); + instance + 1, DDI_NT_NET_WIFI, 0); if (err != DDI_SUCCESS) ATH_DEBUG((ATH_DBG_ATTACH, "WARN: ath: ath_attach(): " "Create minor node failed - %d\n", err)); + mac_link_update(ic->ic_mach, LINK_STATE_DOWN); asc->asc_invalid = 1; return (DDI_SUCCESS); attach_fail7: @@ -1996,7 +2060,7 @@ attach_fail7: attach_fail6: ddi_remove_softintr(asc->asc_softint_id); attach_fail5: - gld_mac_free(isc->isc_dev); + (void) ieee80211_detach(ic); attach_fail4: ath_desc_free(asc); attach_fail3: @@ -2016,8 +2080,8 @@ attach_fail0: } mutex_destroy(&asc->asc_rxbuflock); mutex_destroy(&asc->asc_genlock); - mutex_destroy(&asc->asc_gld_sched_lock); - ddi_soft_state_free(ath_soft_state_p, ddi_get_instance(devinfo)); + mutex_destroy(&asc->asc_resched_lock); + ddi_soft_state_free(ath_soft_state_p, instance); return (DDI_FAILURE); } @@ -2026,57 +2090,52 @@ static int32_t ath_detach(dev_info_t *devinfo, ddi_detach_cmd_t cmd) { ath_t *asc; - int32_t i; asc = ddi_get_soft_state(ath_soft_state_p, ddi_get_instance(devinfo)); ASSERT(asc != NULL); - switch (cmd) { - default: + if (cmd != DDI_DETACH) return (DDI_FAILURE); - case DDI_SUSPEND: - return (DDI_FAILURE); - - case DDI_DETACH: - break; - } - - ASSERT(asc->asc_isc.isc_mf_thread == NULL); + ath_stop_scantimer(asc); /* disable interrupts */ ATH_HAL_INTRSET(asc->asc_ah, 0); + /* + * Unregister from the MAC layer subsystem + */ + if (mac_unregister(asc->asc_isc.ic_mach) != 0) + return (DDI_FAILURE); + /* free intterrupt resources */ ddi_remove_intr(devinfo, 0, asc->asc_iblock); ddi_remove_softintr(asc->asc_softint_id); - /* detach 802.11 and Atheros HAL */ - ieee80211_ifdetach(asc->asc_isc.isc_dev); + /* + * NB: the order of these is important: + * o call the 802.11 layer before detaching the hal to + * insure callbacks into the driver to delete global + * key cache entries can be handled + * o reclaim the tx queue data structures after calling + * the 802.11 layer as we'll get called back to reclaim + * node state and potentially want to use them + * o to cleanup the tx queues the hal is called, so detach + * it last + */ + ieee80211_detach(&asc->asc_isc); ath_desc_free(asc); + ath_txq_cleanup(asc); asc->asc_ah->ah_detach(asc->asc_ah); - ath_halfix_finit(); - - /* detach gld */ - if (gld_unregister(asc->asc_isc.isc_dev) != 0) - return (DDI_FAILURE); - gld_mac_free(asc->asc_isc.isc_dev); /* free io handle */ ddi_regs_map_free(&asc->asc_io_handle); pci_config_teardown(&asc->asc_cfg_handle); /* destroy locks */ - mutex_destroy(&asc->asc_txbuflock); - for (i = 0; i < HAL_NUM_TX_QUEUES; i++) { - if (ATH_TXQ_SETUP(asc, i)) { - struct ath_txq *txq = &asc->asc_txq[i]; - mutex_destroy(&txq->axq_lock); - } - } mutex_destroy(&asc->asc_rxbuflock); mutex_destroy(&asc->asc_genlock); - mutex_destroy(&asc->asc_gld_sched_lock); + mutex_destroy(&asc->asc_resched_lock); ddi_remove_minor_node(devinfo, NULL); ddi_soft_state_free(ath_soft_state_p, ddi_get_instance(devinfo)); @@ -2084,80 +2143,12 @@ ath_detach(dev_info_t *devinfo, ddi_detach_cmd_t cmd) return (DDI_SUCCESS); } -static struct module_info ath_module_info = { - 0, /* ATH_IDNUM, */ - "ath", /* ATH_DRIVER_NAME, */ - 0, - INFPSZ, - 4096, /* ATH_HIWAT, */ - 128, /* ATH_LOWAT */ -}; - -static struct qinit ath_r_qinit = { /* read queues */ - NULL, - gld_rsrv, - gld_open, - gld_close, - NULL, - &ath_module_info, - NULL -}; - -static struct qinit ath_w_qinit = { /* write queues */ - gld_wput, - gld_wsrv, - NULL, - NULL, - NULL, - &ath_module_info, - NULL -}; - -static struct streamtab ath_streamtab = { - &ath_r_qinit, - &ath_w_qinit, - NULL, - NULL -}; - -static struct cb_ops ath_cb_ops = { - nulldev, /* cb_open */ - nulldev, /* cb_close */ - nodev, /* cb_strategy */ - nodev, /* cb_print */ - nodev, /* cb_dump */ - nodev, /* cb_read */ - nodev, /* cb_write */ - nodev, /* cb_ioctl */ - nodev, /* cb_devmap */ - nodev, /* cb_mmap */ - nodev, /* cb_segmap */ - nochpoll, /* cb_chpoll */ - ddi_prop_op, /* cb_prop_op */ - &ath_streamtab, /* cb_stream */ - D_MP, /* cb_flag */ - 0, /* cb_rev */ - nodev, /* cb_aread */ - nodev /* cb_awrite */ -}; - -static struct dev_ops ath_dev_ops = { - DEVO_REV, /* devo_rev */ - 0, /* devo_refcnt */ - gld_getinfo, /* devo_getinfo */ - nulldev, /* devo_identify */ - nulldev, /* devo_probe */ - ath_attach, /* devo_attach */ - ath_detach, /* devo_detach */ - nodev, /* devo_reset */ - &ath_cb_ops, /* devo_cb_ops */ - (struct bus_ops *)NULL, /* devo_bus_ops */ - NULL /* devo_power */ -}; +DDI_DEFINE_STREAM_OPS(ath_dev_ops, nulldev, nulldev, ath_attach, ath_detach, + nodev, NULL, D_MP, NULL); static struct modldrv ath_modldrv = { &mod_driverops, /* Type of module. This one is a driver */ - "ath driver 1.1", /* short description */ + "ath driver 1.2/HAL 0.9.17.2", /* short description */ &ath_dev_ops /* driver specific ops */ }; @@ -2182,10 +2173,14 @@ _init(void) return (status); mutex_init(&ath_loglock, NULL, MUTEX_DRIVER, NULL); + ath_halfix_init(); + mac_init_ops(&ath_dev_ops, "ath"); status = mod_install(&modlinkage); if (status != 0) { - ddi_soft_state_fini(&ath_soft_state_p); + mac_fini_ops(&ath_dev_ops); + ath_halfix_finit(); mutex_destroy(&ath_loglock); + ddi_soft_state_fini(&ath_soft_state_p); } return (status); @@ -2198,8 +2193,10 @@ _fini(void) status = mod_remove(&modlinkage); if (status == 0) { - ddi_soft_state_fini(&ath_soft_state_p); + mac_fini_ops(&ath_dev_ops); + ath_halfix_finit(); mutex_destroy(&ath_loglock); + ddi_soft_state_fini(&ath_soft_state_p); } return (status); } diff --git a/usr/src/uts/common/io/ath/ath_osdep.c b/usr/src/uts/common/io/ath/ath_osdep.c index 6b6def64a2..8551b9e3d3 100644 --- a/usr/src/uts/common/io/ath/ath_osdep.c +++ b/usr/src/uts/common/io/ath/ath_osdep.c @@ -1,5 +1,5 @@ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -43,17 +43,15 @@ #include <sys/sunddi.h> #include <sys/varargs.h> #include "ath_hal.h" -#include "ath_ieee80211.h" #include "ath_impl.h" struct ath_halfix { void *p; size_t size; - int malloced; - int freed; }; -static struct ath_halfix ath_halfix[32]; +#define ATH_MAX_HALMEM 1024 +static struct ath_halfix ath_halfix[ATH_MAX_HALMEM]; /* HAL layer needs these definitions */ int ath_hal_dma_beacon_response_time = 2; /* in TU's */ @@ -96,20 +94,17 @@ ath_hal_malloc(size_t size) void *p; int i; - /* support 16 devices(max leakage of one device is 8) */ - for (i = 0; i < 32; i++) { - if (ath_halfix[i].malloced == 0) + for (i = 0; i < ATH_MAX_HALMEM; i++) { + if (ath_halfix[i].p == NULL) break; } - if (i >= 32) { + if (i >= ATH_MAX_HALMEM) { ath_problem("ath: ath_hal_malloc(): too many malloc\n"); return (NULL); } p = kmem_zalloc(size, KM_SLEEP); ath_halfix[i].p = p; ath_halfix[i].size = size; - ath_halfix[i].malloced = 1; - ath_halfix[i].freed = 0; ATH_DEBUG((ATH_DBG_OSDEP, "ath: ath_hal_malloc(): " "%d: p=%p, size=%d\n", i, p, size)); return (p); @@ -119,17 +114,16 @@ void ath_hal_free(void* p) { int i; - for (i = 0; i < 32; i++) { + for (i = 0; i < ATH_MAX_HALMEM; i++) { if (ath_halfix[i].p == p) break; } - if (i >= 32) { + if (i >= ATH_MAX_HALMEM) { ath_problem("ath: ath_hal_free(): no record for %p\n", p); return; } kmem_free(p, ath_halfix[i].size); - ath_halfix[i].malloced = 0; - ath_halfix[i].freed = 1; + ath_halfix[i].p = NULL; ATH_DEBUG((ATH_DBG_OSDEP, "ath: ath_hal_free(): %d: p=%p, size=%d\n", i, p, ath_halfix[i].size)); } @@ -147,24 +141,13 @@ ath_hal_memzero(void *dst, size_t n) bzero(dst, n); } -/* - * So far as I know and test, hal.o has a bug that when attaching, - * it calls ath_hal_malloc() four times while detaching it calls - * ath_hal_free() only 3 times, so everytime when a pair of driver - * load/unload is done, a memory leak occurs. The function - * free_hal_leaked_mem() just help free the memory that alloced by - * hal.o but not freed by it. In fact, when attaching, hal.o only - * call ath_hal_alloc() four times, here assuming a maximum times of - * 8 just considers some special cases, we have no source after all! - */ void ath_halfix_init(void) { int i; - for (i = 0; i < 32; i++) { - ath_halfix[i].malloced = 0; - } + for (i = 0; i < ATH_MAX_HALMEM; i++) + ath_halfix[i].p = NULL; } void @@ -172,10 +155,11 @@ ath_halfix_finit(void) { int i; - for (i = 0; i < 32; i++) { - if ((ath_halfix[i].malloced == 1) && - (ath_halfix[i].freed == 0)) { + for (i = 0; i < ATH_MAX_HALMEM; i++) + if (ath_halfix[i].p != NULL) { kmem_free(ath_halfix[i].p, ath_halfix[i].size); + ATH_DEBUG((ATH_DBG_OSDEP, "ath_halfix: " + "Free %d: p=%x size=%d\n", + i, ath_halfix[i].p, ath_halfix[i].size)); } - } } diff --git a/usr/src/uts/common/io/ath/ath_rate.c b/usr/src/uts/common/io/ath/ath_rate.c index 8ebf4f9091..d8cc78b845 100644 --- a/usr/src/uts/common/io/ath/ath_rate.c +++ b/usr/src/uts/common/io/ath/ath_rate.c @@ -1,5 +1,5 @@ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -58,7 +58,6 @@ #include <sys/sunddi.h> #include <sys/pci.h> #include <sys/errno.h> -#include <sys/gld.h> #include <sys/dlpi.h> #include <sys/ethernet.h> #include <sys/list.h> @@ -70,7 +69,7 @@ #include <inet/wifi_ioctl.h> #include "ath_hal.h" #include "ath_impl.h" -#include "ath_ieee80211.h" +#include "ath_rate.h" void ath_rate_update(ath_t *asc, struct ieee80211_node *in, int32_t rate) @@ -151,10 +150,10 @@ done: void ath_rate_ctl_start(ath_t *asc, struct ieee80211_node *in) { - ieee80211com_t *isc = (ieee80211com_t *)asc; + ieee80211com_t *ic = (ieee80211com_t *)asc; int32_t srate; - if (isc->isc_fixed_rate == -1) { + if (ic->ic_fixed_rate == IEEE80211_FIXED_RATE_NONE) { /* * No fixed rate is requested. For 11b start with * the highest negotiated rate; otherwise, for 11g @@ -172,25 +171,25 @@ ath_rate_ctl_start(ath_t *asc, struct ieee80211_node *in) } } else { /* - * A fixed rate is to be used; ic_fixed_rate is an - * index into the supported rate set. Convert this - * to the index into the negotiated rate set for - * the node. We know the rate is there because the - * rate set is checked when the station associates. + * A fixed rate is to be used; We know the rate is + * there because the rate set is checked when the + * station associates. */ - const struct ieee80211_rateset *rs = - &isc->isc_sup_rates[isc->isc_curmode]; - int32_t r = rs->ir_rates[isc->isc_fixed_rate] & - IEEE80211_RATE_VAL; /* NB: the rate set is assumed sorted */ srate = in->in_rates.ir_nrates - 1; - for (; srate >= 0 && IEEE80211_RATE(srate) != r; srate--); + for (; srate >= 0 && IEEE80211_RATE(srate) != ic->ic_fixed_rate; + srate--); } ATH_DEBUG((ATH_DBG_RATE, "ath: ath_rate_ctl_start(): " "srate=%d rate=%d\n", srate, IEEE80211_RATE(srate))); ath_rate_update(asc, in, srate); } +void +ath_rate_cb(void *arg, struct ieee80211_node *in) +{ + ath_rate_update((ath_t *)arg, in, 0); +} /* * Reset the rate control state for each 802.11 state transition. @@ -198,15 +197,15 @@ ath_rate_ctl_start(ath_t *asc, struct ieee80211_node *in) void ath_rate_ctl_reset(ath_t *asc, enum ieee80211_state state) { - ieee80211com_t *isc = (ieee80211com_t *)asc; + ieee80211com_t *ic = (ieee80211com_t *)asc; struct ieee80211_node *in; - if (isc->isc_opmode == IEEE80211_M_STA) { + if (ic->ic_opmode == IEEE80211_M_STA) { /* * Reset local xmit state; this is really only * meaningful when operating in station mode. */ - in = (struct ieee80211_node *)isc->isc_bss; + in = (struct ieee80211_node *)ic->ic_bss; if (state == IEEE80211_S_RUN) { ath_rate_ctl_start(asc, in); } else { @@ -219,12 +218,8 @@ ath_rate_ctl_reset(ath_t *asc, enum ieee80211_state state) * For any other operating mode we want to reset the * tx rate state of each node. */ - in = list_head(&isc->isc_in_list); - while (in != NULL) { - ath_rate_update(asc, in, 0); - in = list_next(&isc->isc_in_list, in); - } - ath_rate_update(asc, isc->isc_bss, 0); + ieee80211_iterate_nodes(&ic->ic_sta, ath_rate_cb, asc); + ath_rate_update(asc, ic->ic_bss, 0); } } @@ -305,7 +300,7 @@ ath_rate_setup(ath_t *asc, uint32_t mode) int32_t i, maxrates; struct ieee80211_rateset *rs; struct ath_hal *ah = asc->asc_ah; - ieee80211com_t *isc = (ieee80211com_t *)asc; + ieee80211com_t *ic = (ieee80211com_t *)asc; const HAL_RATE_TABLE *rt; switch (mode) { @@ -318,9 +313,12 @@ ath_rate_setup(ath_t *asc, uint32_t mode) case IEEE80211_MODE_11G: asc->asc_rates[mode] = ATH_HAL_GETRATETABLE(ah, HAL_MODE_11G); break; - case IEEE80211_MODE_TURBO: + case IEEE80211_MODE_TURBO_A: asc->asc_rates[mode] = ATH_HAL_GETRATETABLE(ah, HAL_MODE_TURBO); break; + case IEEE80211_MODE_TURBO_G: + asc->asc_rates[mode] = ATH_HAL_GETRATETABLE(ah, HAL_MODE_108G); + break; default: ATH_DEBUG((ATH_DBG_RATE, "ath: ath_rate_setup(): " "invalid mode %u\n", mode)); @@ -337,7 +335,7 @@ ath_rate_setup(ath_t *asc, uint32_t mode) maxrates = IEEE80211_RATE_MAXSIZE; } else maxrates = rt->rateCount; - rs = &isc->isc_sup_rates[mode]; + rs = &ic->ic_sup_rates[mode]; for (i = 0; i < maxrates; i++) rs->ir_rates[i] = rt->info[i].dot11Rate; rs->ir_nrates = maxrates; diff --git a/usr/src/uts/common/io/ath/ath_rate.h b/usr/src/uts/common/io/ath/ath_rate.h index 98ed99da93..347580e686 100644 --- a/usr/src/uts/common/io/ath/ath_rate.h +++ b/usr/src/uts/common/io/ath/ath_rate.h @@ -1,5 +1,5 @@ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -44,7 +44,6 @@ extern "C" { #endif -#include "ath_ieee80211.h" #include "ath_impl.h" void ath_rate_ctl_start(ath_t *asc, struct ieee80211_node *in); @@ -52,6 +51,7 @@ void ath_rate_ctl_reset(ath_t *asc, enum ieee80211_state state); void ath_rate_ctl(ieee80211com_t *isc, struct ieee80211_node *in); void ath_rate_update(ath_t *asc, struct ieee80211_node *in, int32_t rate); void ath_rate_setup(ath_t *asc, uint32_t mode); +void ath_rate_cb(void *arg, struct ieee80211_node *in); #ifdef __cplusplus } diff --git a/usr/src/uts/common/io/ath/ath_wificonfig.c b/usr/src/uts/common/io/ath/ath_wificonfig.c deleted file mode 100644 index cc6c7d1a67..0000000000 --- a/usr/src/uts/common/io/ath/ath_wificonfig.c +++ /dev/null @@ -1,818 +0,0 @@ -/* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. - * Use is subject to license terms. - */ - -/* - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer, - * without modification. - * 2. Redistributions in binary form must reproduce at minimum a disclaimer - * similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any - * redistribution must be conditioned upon including a substantially - * similar Disclaimer requirement for further binary redistribution. - * 3. Neither the names of the above-listed copyright holders nor the names - * of any contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * NO WARRANTY - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY - * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL - * THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, - * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF - * THE POSSIBILITY OF SUCH DAMAGES. - * - */ - -#pragma ident "%Z%%M% %I% %E% SMI" - -#include <sys/param.h> -#include <sys/types.h> -#include <sys/signal.h> -#include <sys/stream.h> -#include <sys/termio.h> -#include <sys/errno.h> -#include <sys/file.h> -#include <sys/cmn_err.h> -#include <sys/stropts.h> -#include <sys/strsubr.h> -#include <sys/strtty.h> -#include <sys/kbio.h> -#include <sys/cred.h> -#include <sys/stat.h> -#include <sys/consdev.h> -#include <sys/kmem.h> -#include <sys/modctl.h> -#include <sys/ddi.h> -#include <sys/sunddi.h> -#include <sys/pci.h> -#include <sys/errno.h> -#include <sys/gld.h> -#include <sys/dlpi.h> -#include <sys/ethernet.h> -#include <sys/note.h> -#include <sys/strsun.h> -#include <sys/list.h> -#include <inet/common.h> -#include <inet/nd.h> -#include <inet/mi.h> -#include <inet/wifi_ioctl.h> -#include "ath_impl.h" -#include "ath_hal.h" -#include "ath_ieee80211.h" - -extern int -ath_gld_start(gld_mac_info_t *gld_p); - -static int -ath_wificfg_essid(ath_t *asc, mblk_t *mp, uint32_t cmd) -{ - uint32_t i; - char *value, *buf; - int len; - wldp_t *infp, *outfp; - ieee80211com_t *isc = (ieee80211com_t *)asc; - - buf = kmem_zalloc(MAX_BUF_LEN, KM_SLEEP); - - outfp = (wldp_t *)buf; - infp = (wldp_t *)mp->b_rptr; - - bcopy(mp->b_rptr, buf, sizeof (wldp_t)); - - if (cmd == WLAN_GET_PARAM) { - if (mi_strlen((const char *)isc->isc_des_essid) == 0) { - outfp->wldp_length = offsetof(wldp_t, wldp_buf) + - offsetof(wl_essid_t, wl_essid_essid) + - mi_strlen((const char *) - isc->isc_bss->in_essid); - ((wl_essid_t *)(outfp->wldp_buf))->wl_essid_length = - mi_strlen((const char *) - isc->isc_bss->in_essid); - bcopy(isc->isc_bss->in_essid, - buf + offsetof(wldp_t, wldp_buf) + - offsetof(wl_essid_t, wl_essid_essid), - mi_strlen((const char *) - isc->isc_bss->in_essid)); - } else { - outfp->wldp_length = offsetof(wldp_t, wldp_buf) + - offsetof(wl_essid_t, wl_essid_essid) + - mi_strlen((const char *)isc->isc_des_essid); - ((wl_essid_t *)(outfp->wldp_buf))->wl_essid_length = - mi_strlen((const char *)isc->isc_des_essid); - bcopy(isc->isc_des_essid, - buf + offsetof(wldp_t, wldp_buf) + - offsetof(wl_essid_t, wl_essid_essid), - mi_strlen((const char *) - isc->isc_des_essid)); - } - } else if (cmd == WLAN_SET_PARAM) { - value = ((wl_essid_t *)(infp->wldp_buf))->wl_essid_essid; - bzero(isc->isc_des_essid, IEEE80211_NWID_LEN); - if (mi_strlen(value) == 0) - isc->isc_des_esslen = 0; - else { - len = mi_strlen((const char *)value); - if (len > IEEE80211_NWID_LEN) - len = IEEE80211_NWID_LEN; - bcopy(value, isc->isc_des_essid, len); - isc->isc_des_esslen = len; - ATH_DEBUG((ATH_DBG_WIFICFG, - "ath: ath_wificfg_essid(): " - "set essid=%s len=%d\n", value, len)); - } - if (asc->asc_invalid == 0) { - (void) ath_gld_start(isc->isc_dev); - (void) _ieee80211_new_state(isc, IEEE80211_S_SCAN, -1); - } - } - - outfp->wldp_result = WL_SUCCESS; - for (i = 0; i < (outfp->wldp_length); i++) - (void) mi_mpprintf_putc((char *)mp, buf[i]); - kmem_free(buf, MAX_BUF_LEN); - return (WL_SUCCESS); -} - -static int -ath_wificfg_bssid(ath_t *asc, mblk_t *mp, uint32_t cmd) -{ - uint32_t i; - char *buf; - wldp_t *outfp; - ieee80211com_t *isc = (ieee80211com_t *)asc; - - buf = kmem_zalloc(MAX_BUF_LEN, KM_SLEEP); - outfp = (wldp_t *)buf; - bcopy(mp->b_rptr, buf, sizeof (wldp_t)); - - outfp->wldp_length = WIFI_BUF_OFFSET + sizeof (wl_bssid_t); - if (cmd == WLAN_GET_PARAM) { - if (isc->isc_flags & IEEE80211_F_DESBSSID) - bcopy(isc->isc_des_bssid, - buf + WIFI_BUF_OFFSET, sizeof (wl_bssid_t)); - else - bcopy(isc->isc_bss->in_bssid, - buf + WIFI_BUF_OFFSET, sizeof (wl_bssid_t)); - outfp->wldp_result = WL_SUCCESS; - - ATH_DEBUG((ATH_DBG_WIFICFG, "ath: ath_wificfg_bssid(): " - "get bssid=%x %x %x %x %x %x\n", - buf[WIFI_BUF_OFFSET+0], buf[WIFI_BUF_OFFSET+1], - buf[WIFI_BUF_OFFSET+2], buf[WIFI_BUF_OFFSET+3], - buf[WIFI_BUF_OFFSET+4], buf[WIFI_BUF_OFFSET+5])); - } else if (cmd == WLAN_SET_PARAM) { - outfp->wldp_result = WL_READONLY; - } - - for (i = 0; i < (outfp->wldp_length); i++) - (void) mi_mpprintf_putc((char *)mp, buf[i]); - kmem_free(buf, MAX_BUF_LEN); - return (WL_SUCCESS); -} - -static int -ath_wificfg_nodename(ath_t *asc, mblk_t *mp, uint32_t cmd) -{ - char *value, *buf; - int iret, nickname_len; - uint32_t i; - wldp_t *infp, *outfp; - ieee80211com_t *isc = (ieee80211com_t *)asc; - - ATH_DEBUG((ATH_DBG_WIFICFG, "ath: ath_wificfg_nodename(): " - "nodename entry\n")); - buf = kmem_zalloc(MAX_BUF_LEN, KM_SLEEP); - outfp = (wldp_t *)buf; - bcopy(mp->b_rptr, buf, sizeof (wldp_t)); - infp = (wldp_t *)mp->b_rptr; - - nickname_len = MIN(isc->isc_nicknamelen, IEEE80211_NWID_LEN); - - if (cmd == WLAN_GET_PARAM) { - outfp->wldp_length = WIFI_BUF_OFFSET + - offsetof(wl_nodename_t, wl_nodename_name) + nickname_len; - ((wl_nodename_t *)(buf + WIFI_BUF_OFFSET))->wl_nodename_length = - nickname_len; - bcopy(isc->isc_nickname, buf + WIFI_BUF_OFFSET + - offsetof(wl_nodename_t, wl_nodename_name), nickname_len); - outfp->wldp_result = WL_SUCCESS; - ATH_DEBUG((ATH_DBG_WIFICFG, "ath: ath_wificfg_nodename(): " - "get nodename=%s\n", isc->isc_nickname)); - } else if (cmd == WLAN_SET_PARAM) { - value = ((wl_nodename_t *)(infp->wldp_buf))->wl_nodename_name; - (void) strncpy((char *)isc->isc_nickname, value, - MIN(32, strlen(value))); - isc->isc_nickname[strlen(value)] = '\0'; - isc->isc_nicknamelen = - ((wl_nodename_t *)(infp->wldp_buf))->wl_nodename_length; - outfp->wldp_length = WIFI_BUF_OFFSET; - outfp->wldp_result = WL_SUCCESS; - ATH_DEBUG((ATH_DBG_WIFICFG, "ath: ath_wificfg_nodename(): " - "set nodename=%s\n", value)); - ATH_DEBUG((ATH_DBG_WIFICFG, "ath: ath_wificfg_nodename(): " - "set nodename_len=%d\n", isc->isc_nicknamelen)); - } - - for (i = 0; i < (outfp->wldp_length); i++) - (void) mi_mpprintf_putc((char *)mp, buf[i]); - iret = (int)(outfp->wldp_result); - kmem_free(buf, MAX_BUF_LEN); - return (iret); -} - -static int -ath_wificfg_encryption(ath_t *asc, mblk_t *mp, uint32_t cmd) -{ - uint32_t i; - char *buf; - int iret; - wldp_t *infp, *outfp; - ieee80211com_t *isc = (ieee80211com_t *)asc; - - buf = kmem_zalloc(MAX_BUF_LEN, KM_SLEEP); - outfp = (wldp_t *)buf; - bcopy(mp->b_rptr, buf, sizeof (wldp_t)); - infp = (wldp_t *)mp->b_rptr; - outfp->wldp_length = offsetof(wldp_t, wldp_buf) + - sizeof (wl_encryption_t); - if (cmd == WLAN_GET_PARAM) { - *(wl_encryption_t *)(outfp->wldp_buf) = - (isc->isc_flags & IEEE80211_F_WEPON) ? 1 : 0; - outfp->wldp_result = WL_SUCCESS; - } else if (cmd == WLAN_SET_PARAM) { - if (*(wl_encryption_t *)(infp->wldp_buf) == - WL_NOENCRYPTION) { - isc->isc_flags &= ~IEEE80211_F_WEPON; - } else if (*(wl_encryption_t *)(infp->wldp_buf) == - WL_ENC_WEP) { - isc->isc_flags |= IEEE80211_F_WEPON; - } - ATH_DEBUG((ATH_DBG_WIFICFG, "ath: " - "ath_wificfg_encryption(): set encryption=%d\n", - (isc->isc_flags & IEEE80211_F_WEPON) ? 1 : 0)); - if (asc->asc_invalid == 0) { - (void) ath_gld_start(isc->isc_dev); - (void) _ieee80211_new_state(isc, IEEE80211_S_SCAN, -1); - } - outfp->wldp_result = WL_SUCCESS; - } - - for (i = 0; i < (outfp->wldp_length); i++) - (void) mi_mpprintf_putc((char *)mp, buf[i]); - iret = (int)(outfp->wldp_result); - kmem_free(buf, MAX_BUF_LEN); - return (iret); -} - -static int -ath_wificfg_wepkey(ath_t *asc, mblk_t *mp, uint32_t cmd) -{ - uint32_t i; - wldp_t *infp, *outfp; - char *buf; - int iret; - wl_wep_key_t *p_wepkey_tab; - ieee80211com_t *isc = (ieee80211com_t *)asc; - - buf = kmem_zalloc(MAX_BUF_LEN, KM_SLEEP); - outfp = (wldp_t *)buf; - bcopy(mp->b_rptr, buf, sizeof (wldp_t)); - infp = (wldp_t *)mp->b_rptr; - - outfp->wldp_length = offsetof(wldp_t, wldp_buf) + - sizeof (wl_wep_key_tab_t); - - if (cmd == WLAN_GET_PARAM) { - outfp->wldp_result = WL_WRITEONLY; - } else if (cmd == WLAN_SET_PARAM) { - p_wepkey_tab = (wl_wep_key_t *)(infp->wldp_buf); - for (i = 0; i < MAX_NWEPKEYS; i++) { - if (p_wepkey_tab[i].wl_wep_operation == WL_ADD) { - isc->isc_nw_keys[i].iwk_len = - p_wepkey_tab[i].wl_wep_length; - bcopy(p_wepkey_tab[i].wl_wep_key, - isc->isc_nw_keys[i].iwk_key, - p_wepkey_tab[i].wl_wep_length); - } - } - if (asc->asc_invalid == 0) { - (void) ath_gld_start(isc->isc_dev); - (void) _ieee80211_new_state(isc, IEEE80211_S_SCAN, -1); - } - outfp->wldp_result = WL_SUCCESS; - } - - for (i = 0; i < (outfp->wldp_length); i++) - (void) mi_mpprintf_putc((char *)mp, buf[i]); - iret = (int)(outfp->wldp_result); - kmem_free(buf, MAX_BUF_LEN); - return (iret); - -} - -static int -ath_wificfg_keyid(ath_t *asc, mblk_t *mp, uint32_t cmd) -{ - uint32_t i; - char *buf; - int iret; - wldp_t *infp, *outfp; - ieee80211com_t *isc = (ieee80211com_t *)asc; - wl_wep_key_id_t keyid; - - buf = kmem_zalloc(MAX_BUF_LEN, KM_SLEEP); - outfp = (wldp_t *)buf; - bcopy(mp->b_rptr, buf, sizeof (wldp_t)); - infp = (wldp_t *)mp->b_rptr; - - outfp->wldp_length = offsetof(wldp_t, wldp_buf) + - sizeof (wl_wep_key_id_t); - - if (cmd == WLAN_GET_PARAM) { - *(wl_wep_key_id_t *)(outfp->wldp_buf) = - isc->isc_wep_txkey; - outfp->wldp_result = WL_SUCCESS; - } else if (cmd == WLAN_SET_PARAM) { - keyid = *(wl_wep_key_id_t *)(infp->wldp_buf); - if (keyid >= MAX_NWEPKEYS) { - outfp->wldp_result = WL_NOTSUPPORTED; - } else { - isc->isc_wep_txkey = keyid; - ATH_DEBUG((ATH_DBG_WIFICFG, - "ath: ath_wificfg_keyid(): set wepkeyid=%d\n", - isc->isc_wep_txkey)); - if (asc->asc_invalid == 0) { - (void) ath_gld_start(isc->isc_dev); - (void) _ieee80211_new_state(isc, - IEEE80211_S_SCAN, -1); - } - outfp->wldp_result = WL_SUCCESS; - } - } - - for (i = 0; i < (outfp->wldp_length); i++) - (void) mi_mpprintf_putc((char *)mp, buf[i]); - iret = (int)(outfp->wldp_result); - kmem_free(buf, MAX_BUF_LEN); - return (iret); -} - -/* - * Units are in db above the noise floor. That means the - * rssi values reported in the tx/rx descriptors in the - * driver are the SNR expressed in db. - */ -static void -ath_getrssi(struct ieee80211_node *in, wl_rssi_t *rssi) -{ - wl_rssi_t val, max_val; - - max_val = 63; /* Max rssi */ - val = (wl_rssi_t)in->in_recv_hist[in->in_hist_cur].irh_rssi; - ATH_DEBUG((ATH_DBG_WIFICFG, "ath: ath_getrssi(): " - "rssi: %d\n", val)); - if (val > max_val) - val = max_val; /* Max rssi */ - if (max_val > MAX_RSSI) - *rssi = (wl_rssi_t)((val + (double)max_val / MAX_RSSI - 1) / - max_val * MAX_RSSI); - else - *rssi = (wl_rssi_t)((double)val / max_val * MAX_RSSI); -} - -static void -ath_wait_scan(ath_t *asc) -{ - ieee80211com_t *isc = (ieee80211com_t *)asc; - - while (isc->isc_flags & IEEE80211_F_ASCAN) { - if (cv_timedwait(&isc->isc_scan_cv, &isc->isc_genlock, - ddi_get_lbolt() + drv_usectohz(6000000)) != 0) - break; - } -} - -static int -ath_wificfg_esslist(ath_t *asc, mblk_t *mp, uint32_t cmd) -{ - _NOTE(ARGUNUSED(cmd)) - - char *buf; - int iret; - uint32_t i, essid_num; - struct ieee80211_node *in; - wldp_t *outfp; - wl_ess_conf_t *p_ess_conf; - ieee80211com_t *isc = (ieee80211com_t *)asc; - - /* Wait scan finish */ - ath_wait_scan(asc); - - buf = kmem_zalloc(MAX_BUF_LEN, KM_SLEEP); - outfp = (wldp_t *)buf; - bcopy(mp->b_rptr, buf, sizeof (wldp_t)); - - essid_num = 0; - in = list_head(&isc->isc_in_list); - while (in != NULL) { - p_ess_conf = (wl_ess_conf_t *) - (buf + offsetof(wldp_t, wldp_buf) + - offsetof(wl_ess_list_t, wl_ess_list_ess) + - essid_num * sizeof (wl_ess_conf_t)); - - if (p_ess_conf > (wl_ess_conf_t *) - (buf + MAX_BUF_LEN - sizeof (wl_ess_conf_t))) - break; - - bcopy(in->in_essid, - p_ess_conf->wl_ess_conf_essid.wl_essid_essid, - in->in_esslen); - bcopy(in->in_bssid, p_ess_conf->wl_ess_conf_bssid, 6); - (p_ess_conf->wl_phy_conf).wl_phy_dsss_conf.wl_dsss_subtype = - WL_DSSS; - p_ess_conf->wl_ess_conf_wepenabled = - (in->in_capinfo & IEEE80211_CAPINFO_PRIVACY ? - WL_ENC_WEP : WL_NOENCRYPTION); - p_ess_conf->wl_ess_conf_bsstype = - (in->in_capinfo & IEEE80211_CAPINFO_ESS ? - WL_BSS_BSS : WL_BSS_IBSS); - ath_getrssi(in, &(p_ess_conf->wl_ess_conf_sl)); - - essid_num++; - in = list_next(&isc->isc_in_list, in); - } - - ((wl_ess_list_t *)(outfp->wldp_buf))->wl_ess_list_num = essid_num; - outfp->wldp_length = offsetof(wldp_t, wldp_buf) + - offsetof(wl_ess_list_t, wl_ess_list_ess) + - essid_num * sizeof (wl_ess_conf_t); - outfp->wldp_result = WL_SUCCESS; - - for (i = 0; i < (outfp->wldp_length); i++) - (void) mi_mpprintf_putc((char *)mp, buf[i]); - iret = (int)(outfp->wldp_result); - kmem_free(buf, MAX_BUF_LEN); - return (iret); -} - -static int -ath_wificfg_supportrates(ath_t *asc, mblk_t *mp, uint32_t cmd) -{ - _NOTE(ARGUNUSED(asc)) - - uint16_t i; - wldp_t *outfp; - char *buf; - ieee80211com_t *isc = (ieee80211com_t *)asc; - struct ieee80211_node *in = isc->isc_bss; - const struct ieee80211_rateset *rs; - wl_rates_t *rates; - - buf = kmem_zalloc(MAX_BUF_LEN, KM_SLEEP); - outfp = (wldp_t *)buf; - bcopy(mp->b_rptr, buf, sizeof (wldp_t)); - - rs = &isc->isc_sup_rates[ieee80211_chan2mode(isc, in->in_chan)]; - rates = (wl_rates_t *)(outfp->wldp_buf); - if (cmd == WLAN_GET_PARAM) { - rates->wl_rates_num = rs->ir_nrates; - for (i = 0; i < rs->ir_nrates; i++) { - rates->wl_rates_rates[i] = rs->ir_rates[i] & - IEEE80211_RATE_VAL; - } - outfp->wldp_length = WIFI_BUF_OFFSET + - offsetof(wl_rates_t, wl_rates_rates) + - rs->ir_nrates * sizeof (char); - outfp->wldp_result = WL_SUCCESS; - for (i = 0; i < (outfp->wldp_length); i++) - (void) mi_mpprintf_putc((char *)mp, buf[i]); - } - - kmem_free(buf, MAX_BUF_LEN); - return (WL_SUCCESS); -} - -static int -ath_wificfg_desiredrates(ath_t *asc, mblk_t *mp, uint32_t cmd) -{ - uint32_t i; - int rate, iret; - char *buf; - wldp_t *outfp; - - ieee80211com_t *isc = (ieee80211com_t *)asc; - struct ieee80211_node *in = isc->isc_bss; - struct ieee80211_rateset *rs = &in->in_rates; - - /* - * Here rate is a full duplex speed, wificonfig will divide it - * by 2 when display to user. From the wificonfig point of view, - * 'rate' is just a transmiting rate. - */ - rate = (rs->ir_rates[in->in_txrate] & IEEE80211_RATE_VAL); - - buf = kmem_zalloc(MAX_BUF_LEN, KM_SLEEP); - outfp = (wldp_t *)buf; - bcopy(mp->b_rptr, buf, sizeof (wldp_t)); - - if (cmd == WLAN_GET_PARAM) { - ((wl_rates_t *)(outfp->wldp_buf))->wl_rates_num = 1; - (((wl_rates_t *)(outfp->wldp_buf))->wl_rates_rates)[0] = rate; - outfp->wldp_length = WIFI_BUF_OFFSET + - offsetof(wl_rates_t, wl_rates_rates) + sizeof (char); - ATH_DEBUG((ATH_DBG_WIFICFG, "ath: " - "ath_wificfg_desiredrates(): current rate=%dM\n", rate)); - outfp->wldp_result = WL_SUCCESS; - } else if (cmd == WLAN_SET_PARAM) { - outfp->wldp_length = WIFI_BUF_OFFSET; - outfp->wldp_result = WL_SUCCESS; - } - - for (i = 0; i < (outfp->wldp_length); i++) - (void) mi_mpprintf_putc((char *)mp, buf[i]); - iret = (int)(outfp->wldp_result); - kmem_free(buf, MAX_BUF_LEN); - return (iret); -} - -static int -ath_wificfg_authmode(ath_t *asc, mblk_t *mp, uint32_t cmd) -{ - _NOTE(ARGUNUSED(asc)) - - uint32_t i, authmode; - char *buf; - int iret; - wldp_t *infp, *outfp; - - buf = kmem_zalloc(MAX_BUF_LEN, KM_SLEEP); - outfp = (wldp_t *)buf; - bcopy(mp->b_rptr, buf, sizeof (wldp_t)); - infp = (wldp_t *)mp->b_rptr; - - outfp->wldp_length = WIFI_BUF_OFFSET + sizeof (wl_authmode_t); - outfp->wldp_result = WL_SUCCESS; - if (cmd == WLAN_GET_PARAM) { - *(wl_authmode_t *)(outfp->wldp_buf) = WL_OPENSYSTEM; - } else if (cmd == WLAN_SET_PARAM) { - authmode = *(wl_authmode_t *)(infp->wldp_buf); - if (authmode != WL_OPENSYSTEM) { - outfp->wldp_length = WIFI_BUF_OFFSET; - outfp->wldp_result = WL_LACK_FEATURE; - } - } - - for (i = 0; i < (outfp->wldp_length); i++) - (void) mi_mpprintf_putc((char *)mp, buf[i]); - iret = (int)(outfp->wldp_result); - kmem_free(buf, MAX_BUF_LEN); - return (iret); -} - -static int -ath_wificfg_bsstype(ath_t *asc, mblk_t *mp, uint32_t cmd) -{ - _NOTE(ARGUNUSED(asc)) - - uint32_t i, bss_type; - char *buf; - int iret; - wldp_t *infp, *outfp; - - buf = kmem_zalloc(MAX_BUF_LEN, KM_SLEEP); - outfp = (wldp_t *)buf; - bcopy(mp->b_rptr, buf, sizeof (wldp_t)); - infp = (wldp_t *)mp->b_rptr; - outfp->wldp_length = WIFI_BUF_OFFSET + sizeof (wl_bss_type_t); - outfp->wldp_result = WL_SUCCESS; - if (cmd == WLAN_GET_PARAM) { - *(wl_bss_type_t *)(outfp->wldp_buf) = WL_BSS_BSS; - } else if (cmd == WLAN_SET_PARAM) { - bss_type = (uint16_t)(*(wl_bss_type_t *)(infp->wldp_buf)); - if (bss_type != WL_BSS_BSS) { - outfp->wldp_length = WIFI_BUF_OFFSET; - outfp->wldp_result = WL_LACK_FEATURE; - } - } - - for (i = 0; i < (outfp->wldp_length); i++) - (void) mi_mpprintf_putc((char *)mp, buf[i]); - iret = (int)(outfp->wldp_result); - kmem_free(buf, MAX_BUF_LEN); - return (iret); -} - -static int -ath_wificfg_linkstatus(ath_t *asc, mblk_t *mp, uint32_t cmd) -{ - uint32_t i; - char *buf; - int iret; - wldp_t *outfp; - ieee80211com_t *isc = (ieee80211com_t *)asc; - - buf = kmem_zalloc(MAX_BUF_LEN, KM_SLEEP); - outfp = (wldp_t *)buf; - bcopy(mp->b_rptr, buf, sizeof (wldp_t)); - - outfp->wldp_length = WIFI_BUF_OFFSET + sizeof (wl_linkstatus_t); - outfp->wldp_result = WL_SUCCESS; - - if (cmd == WLAN_GET_PARAM) { - *(wl_linkstatus_t *)(outfp->wldp_buf) = - (IEEE80211_S_RUN == isc->isc_state) ? - WL_CONNECTED : WL_NOTCONNECTED; - } else if (cmd == WLAN_SET_PARAM) { - outfp->wldp_length = WIFI_BUF_OFFSET; - outfp->wldp_result = WL_NOTSUPPORTED; - } - - for (i = 0; i < (outfp->wldp_length); i++) - (void) mi_mpprintf_putc((char *)mp, buf[i]); - iret = (int)(outfp->wldp_result); - kmem_free(buf, MAX_BUF_LEN); - return (iret); -} - -static int -ath_wificfg_rssi(ath_t *asc, mblk_t *mp, uint32_t cmd) -{ - uint32_t i; - char *buf; - int iret; - wldp_t *outfp; - - ieee80211com_t *isc = (ieee80211com_t *)asc; - struct ieee80211_node *in = isc->isc_bss; - - buf = kmem_zalloc(MAX_BUF_LEN, KM_SLEEP); - outfp = (wldp_t *)buf; - bcopy(mp->b_rptr, buf, sizeof (wldp_t)); - - outfp->wldp_length = WIFI_BUF_OFFSET + sizeof (wl_rssi_t); - outfp->wldp_result = WL_SUCCESS; - - if (cmd == WLAN_GET_PARAM) { - ath_getrssi(in, (wl_rssi_t *)(outfp->wldp_buf)); - } else if (cmd == WLAN_SET_PARAM) { - outfp->wldp_length = WIFI_BUF_OFFSET; - outfp->wldp_result = WL_NOTSUPPORTED; - } - - for (i = 0; i < (outfp->wldp_length); i++) - (void) mi_mpprintf_putc((char *)mp, buf[i]); - iret = (int)(outfp->wldp_result); - kmem_free(buf, MAX_BUF_LEN); - return (iret); -} - -static int -ath_wificfg_scan(ath_t *asc) -{ - int iret = WL_SUCCESS; - ieee80211com_t *isc = (ieee80211com_t *)asc; - - if (asc->asc_invalid == 0 && isc->isc_state == IEEE80211_S_INIT) { - (void) _ieee80211_new_state(isc, IEEE80211_S_SCAN, -1); - ath_wait_scan(asc); - (void) _ieee80211_new_state(isc, IEEE80211_S_INIT, -1); - } - return (iret); -} - -static void -ath_loaddefdata(ath_t *asc) -{ - int i; - ieee80211com_t *isc = (ieee80211com_t *)asc; - struct ieee80211_node *in = isc->isc_bss; - struct ieee80211_rateset *rs = &in->in_rates; - - if (isc->isc_flags & IEEE80211_F_DESBSSID) - bzero(isc->isc_des_bssid, IEEE80211_ADDR_LEN); - else - bzero(isc->isc_bss->in_bssid, IEEE80211_ADDR_LEN); - isc->isc_des_esslen = 0; - isc->isc_des_essid[0] = 0; - isc->isc_bss->in_essid[0] = 0; - rs->ir_rates[in->in_txrate] = 0; /* rate */ - isc->isc_flags &= ~IEEE80211_F_WEPON; /* encryption */ - isc->isc_wep_txkey = 0; /* wepkey id */ - for (i = 0; i < MAX_NWEPKEYS; i++) /* wepkey */ - isc->isc_nw_keys[i].iwk_len = 0; - for (i = 0; i < IEEE80211_RECV_HIST_LEN; ++i) - in->in_recv_hist[i].irh_rssi = 0; - in->in_hist_cur = IEEE80211_RECV_HIST_LEN - 1; -} - -static int -ath_wificfg_loaddefaults(ath_t *asc) -{ - ieee80211com_t *isc = (ieee80211com_t *)asc; - - ath_loaddefdata(asc); - - if (asc->asc_invalid == 0) { - (void) ath_gld_start(isc->isc_dev); - (void) _ieee80211_new_state(isc, IEEE80211_S_SCAN, -1); - } - - return (WL_SUCCESS); -} - -static int -ath_wificfg_disassoc(ath_t *asc) -{ - ieee80211com_t *isc = (ieee80211com_t *)asc; - - if (! asc->asc_invalid) { - (void) _ieee80211_new_state(isc, IEEE80211_S_INIT, -1); - ath_loaddefdata(asc); - } - return (WL_SUCCESS); -} - -int32_t -ath_getset(ath_t *asc, mblk_t *mp, uint32_t cmd) -{ - uint32_t i, id; - char *buf; - int ret; - wldp_t *infp, *outfp; - - ret = WL_SUCCESS; - infp = (wldp_t *)mp->b_rptr; - id = infp->wldp_id; - - switch (id) { - case WL_ESSID: - ret = ath_wificfg_essid(asc, mp, cmd); - break; - case WL_BSSID: - ret = ath_wificfg_bssid(asc, mp, cmd); - break; - case WL_NODE_NAME: - ret = ath_wificfg_nodename(asc, mp, cmd); - break; - case WL_ENCRYPTION: - ret = ath_wificfg_encryption(asc, mp, cmd); - break; - case WL_WEP_KEY_TAB: - ret = ath_wificfg_wepkey(asc, mp, cmd); - break; - case WL_WEP_KEY_ID: - ret = ath_wificfg_keyid(asc, mp, cmd); - break; - case WL_ESS_LIST: - ret = ath_wificfg_esslist(asc, mp, cmd); - break; - case WL_SUPPORTED_RATES: - ret = ath_wificfg_supportrates(asc, mp, cmd); - break; - case WL_DESIRED_RATES: - ret = ath_wificfg_desiredrates(asc, mp, cmd); - break; - case WL_AUTH_MODE: - ret = ath_wificfg_authmode(asc, mp, cmd); - break; - case WL_BSS_TYPE: - ret = ath_wificfg_bsstype(asc, mp, cmd); - break; - case WL_LINKSTATUS: - ret = ath_wificfg_linkstatus(asc, mp, cmd); - break; - case WL_RSSI: - ret = ath_wificfg_rssi(asc, mp, cmd); - break; - case WL_SCAN: - ret = ath_wificfg_scan(asc); - break; - case WL_LOAD_DEFAULTS: - ret = ath_wificfg_loaddefaults(asc); - break; - case WL_DISASSOCIATE: - ret = ath_wificfg_disassoc(asc); - break; - default: - buf = kmem_zalloc(MAX_BUF_LEN, KM_SLEEP); - outfp = (wldp_t *)buf; - bcopy(mp->b_rptr, buf, sizeof (wldp_t)); - outfp->wldp_length = offsetof(wldp_t, wldp_buf); - outfp->wldp_result = WL_LACK_FEATURE; - for (i = 0; i < (outfp->wldp_length); i++) - (void) mi_mpprintf_putc((char *)mp, buf[i]); - kmem_free(buf, MAX_BUF_LEN); - break; - } - return (ret); -} diff --git a/usr/src/uts/common/io/ath/hal_x86_32.o.uu b/usr/src/uts/common/io/ath/hal_x86_32.o.uu index fb7d44642e..300c95a2fe 100644 --- a/usr/src/uts/common/io/ath/hal_x86_32.o.uu +++ b/usr/src/uts/common/io/ath/hal_x86_32.o.uu @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002-2005 Sam Leffler, Errno Consulting, Atheros + * Copyright (c) 2002-2006 Sam Leffler, Errno Consulting, Atheros * Communications, Inc. All rights reserved. * * Use is subject to license terms. @@ -36,1961 +36,2226 @@ * SUCH DAMAGES. * */ -#define ATH_HAL_VERSION "0.9.14.9" #pragma ident "%Z%%M% %I% %E% SMI" +#define ATH_HAL_VERSION "0.9.17.2" begin-base64 644 hal.o -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 -/P///4PEFGoAaAEBAABqAotUJFQPt0ICUFPo/P///4PEIItEJDT2QAJAD4S3AAAAg+wM -agNoqAAAAGoBi1QkHItCHA+/QAJQU+j8////g8QUagNoqQAAAGoBi1QkHItCHA+/QARQ -U+j8////g8QUagNoqgAAAGoBi1QkHItCHA+/QAZQU+j8////g8QUagNorgAAAGoBi1Qk -HItCHA+/QAhQU+j8////g8QUagNorwAAAGoBi1QkHItCHA+/QApQU+j8////g8QUagNo -sAAAAGoBi1QkHItCHA+/QAxQU+j8////g8Qgi0QkNPZAAoB0OIPsDGoAaB8BAABqAw+3 -RCQiUI1eDFPo/P///4PEFGoAaCIBAABqAw+3RCQgUFPo/P///4PEIOs2g+wMagBoFwEA -AGoDD7dEJCZQjV4MU+j8////g8QUagBoGgEAAGoDD7dEJCRQU+j8////g8QgD7eFrAEA -ACXwAAAAg/gvfmFmg72sAQAANXQKZoO9rAEAAEV1TYPsDGoCalpqAmoCjV4MU+j8//// -g8QUagJqXGoCagJT6Pz///+DxBRqAmpeagJqAlPo/P///4PEFGoCaP4AAABqAWoCU+j8 -////g8QgZoO9qgEAAEF2ZIPsDGoBaBkBAABqAWoBjV4MU+j8////g8QUagNqAWoCagFT -6Pz///+DxBRqA2oDagJqAVPo/P///4PEFGoDaIsAAABqAWoBU+j8////g8QUagNojAAA -AGoBagFT6Pz///+DxCC6AAAAAA+3TCQau4BpAACJ9o0EUo0EQYsEg4mElqwAAABCg/oM -duqLVCQ09kICQHQjg+wMagBqJWoCi1QkHItCHA+/AFCNhqwAAABQ6Pz///+DxCCD7Axq -AGoOagYPt0QkKFCNhqwAAABQ6Pz///+7AAAAAIPEIItNFIsU3YBlAACLBJ6JBBFH98c/ -AAAAdQ2D7AxqAej8////g8QQQ3TXuwAAAACNBFuLTRSLFMWIZQAAi0SeBIkEEUf3xz8A -AAB1DYPsDGoB6Pz///+DxBBDdNO7AAAAAI0EW4tNFIsUxaBlAACLRJ4IiQQRR/fHPwAA -AHUNg+wMagHo/P///4PEEEN007sAAAAAjQRbi00UixTFwGUAAItEngyJBBFH98c/AAAA -dQ+D7AxqAej8////g8QQifZDg/snds67AAAAAJCNBFuLTRSLFMWAaQAAi4SerAAAAIkE -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 -AQAAEQEAAAEAAAAAAAAAAQAAAHAAAwAZAQAAHAEAAAEAAAAAAAAAAQAAADgAMAAkAQAA -JwEAAAEAAAAAAAAAAQAAAFQAVQAvAQAAMgEAAAEAAAABAAAAAQAAAEQAVQA5AQAAPAEA -AAEAAAABAAAAAQAAAEwACABDAQAARgEAAAAAAAAAAAAAAAAAAGAAUgBNAQAAUAEAAAEA -AAABAAAAAQAAAGQANABiAQAAZQEAAAEAAAAAAAAAAQAAAHwAIABuAQAAcQEAAAEAAAAB -AAAAAQAAAJgAWAB4AQAAewEAAAAAAAABAAAAAAAAAJwAUgCBAQAAhAEAAAEAAAABAAAA -AQAAAKoAEACKAQAAjQEAAAEAAAAAAAAAAQAAALwAAwCWAQAAmQEAAAEAAAAAAAAAAQAA -AL8ANgCkAQAApwEAAAEAAAAAAAAAAQAAAMQANwCvAQAAsgEAAAEAAAABAAAAAQAAAMsA -NgC5AQAAvAEAAAAAAAAAAAAAAAAAANAANwDLAQAAzgEAAAEAAAAAAAAAAQAAANYAEADW -AQAA2QEAAAEAAAABAAAAAQAAANoAAwDsAQAA7wEAAAAAAAAAAAAAAAAAADIDAwD3AQAA -+gEAAAEAAAAAAAAAAQAAAN4AAwAAAgAAAwIAAAEAAAAAAAAAAQAAAOkANwAPAgAAEgIA -AAEAAAAAAAAAAQAAAPYANwAaAgAAHQIAAAEAAAAAAAAAAQAAAPoANgAlAgAAKAIAAAEA -AAAAAAAAAQAAAP8ANgAvAgAAMgIAAAEAAAAAAAAAAQAAAAwBMAA9AgAAQAIAAAEAAAAB -AAAAAQAAABQBNwBIAgAASwIAAAEAAAAAAAAAAQAAACwBAwBTAgAAVgIAAAEAAAAAAAAA -AQAAAEABEABdAgAAYAIAAAEAAAABAAAAAQAAAFQBAwBqAgAAbQIAAAEAAAAAAAAAAQAA -AFgBIQB2AgAAeQIAAAEAAAABAAAAAQAAAFwBNQCDAgAAhgIAAAEAAAAAAAAAAQAAAGAB -NwCOAgAAkQIAAAEAAAAAAAAAAQAAAGQBAwCZAgAAnAIAAAEAAAAAAAAAAQAAAGgBAwCi -AgAApQIAAAEAAAAAAAAAAQAAAGwBUgCvAgAAsgIAAAEAAAABAAAAAQAAAHQBNwC3AgAA -ugIAAAEAAAAAAAAAAQAAAHgBAwDCAgAAxQIAAAEAAAAAAAAAAQAAAHwBNwDMAgAAzwIA -AAEAAAAAAAAAAQAAAIgBQADVAgAA2AIAAAEAAAAAAAAAAAAAAIkBQQDeAgAA4QIAAAEA -AAAAAAAAAAAAAIoBSADoAgAA6wIAAAEAAAAAAAAAAAAAAIsBQwDyAgAA9QIAAAEAAAAA -AAAAAAAAAIwBSgD8AgAA/wIAAAEAAAAAAAAAAAAAAI0BSwAGAwAACQMAAAEAAAAAAAAA -AAAAAJABAwAQAwAAEwMAAAEAAAAAAAAAAQAAAI4BAwAaAwAAHQMAAAEAAAAAAAAAAQAA -AJgBRQAoAwAAKwMAAAEAAAABAAAAAQAAAJoBRQA3AwAAOgMAAAEAAAAAAAAAAAAAAJsB -SQBJAwAATAMAAAEAAAAAAAAAAAAAAJ4BAwBcAwAAXwMAAAEAAAAAAAAAAQAAAKwBAwBm -AwAAaQMAAAEAAAAAAAAAAQAAAKYBAwBwAwAAcwMAAAEAAAAAAAAAAQAAALYBNQB7AwAA -fgMAAAEAAAAAAAAAAQAAALgBNwCMAwAAjwMAAAEAAAAAAAAAAQAAALoBNwCZAwAAnAMA -AAEAAAAAAAAAAQAAAL4BIQCnAwAAqgMAAAEAAAABAAAAAQAAACcDAwCwAwAAswMAAAEA -AAAAAAAAAQAAAMoBAwC9AwAAwAMAAAAAAAAAAAAAAAAAAOQBEADJAwAAzAMAAAEAAAAB -AAAAAQAAAOwBMADTAwAA1gMAAAEAAAABAAAAAQAAAPgBAwDdAwAA4AMAAAEAAAAAAAAA -AQAAABACNwDoAwAA6wMAAAEAAAAAAAAAAQAAACoCIgD3AwAA+gMAAAEAAAAAAAAAAQAA -AEICNwAGBAAACQQAAAEAAAAAAAAAAQAAAAACAwAQBAAAEwQAAAEAAAAAAAAAAQAAAEoC -AwAYBAAAGwQAAAEAAAAAAAAAAQAAAE8CEAAkBAAAJwQAAAEAAAABAAAAAQAAAFwCAwAu -BAAAMQQAAAEAAAAAAAAAAQAAAGACEQA2BAAAOQQAAAEAAAABAAAAAQAAAGgCNwBFBAAA -SAQAAAEAAAAAAAAAAQAAAGwCNwBPBAAAUgQAAAEAAAAAAAAAAQAAAHYCEABbBAAAXgQA -AAEAAAABAAAAAQAAAHoCAwBqBAAAbQQAAAEAAAAAAAAAAQAAAIICAwBzBAAAdgQAAAEA -AAAAAAAAAQAAAIMCAwB+BAAAgQQAAAEAAAAAAAAAAQAAAKoCAwCIBAAAiwQAAAEAAAAA -AAAAAQAAAL4CQgCYBAAAmwQAAAEAAAABAAAAAQAAAL8CNgClBAAAqAQAAAEAAAAAAAAA -AQAAAMECNwC4BAAAuwQAAAEAAAAAAAAAAQAAAMYCNwDEBAAAxwQAAAEAAAABAAAAAQAA -ANQCNwDUBAAA1wQAAAEAAAAAAAAAAQAAAPACNwDdBAAA4AQAAAEAAAAAAAAAAQAAAPQC -NQDnBAAA6gQAAAEAAAAAAAAAAQAAAPgCAwD2BAAA+QQAAAEAAAAAAAAAAQAAAJ4ARwD/ -BAAAAgUAAAEAAAABAAAAAQAAAPwCRQAJBQAADAUAAAEAAAABAAAAAQAAAAwDMAAVBQAA -GAUAAAEAAAAAAAAAAQAAABQDNgAqBQAALQUAAAEAAAAAAAAAAQAAABgDNgA1BQAAOAUA -AAEAAAAAAAAAAQAAACQDAwA/BQAAQgUAAAEAAAAAAAAAAQAAABADAwBKBQAATQUAAAEA -AAAAAAAAAQAAADoDNwBiBQAAZQUAAAEAAAAAAAAAAQAAAEgDEAB0BQAAdwUAAAEAAAAB -AAAAAQAAAFoDRQCFBQAAiAUAAAEAAAAAAAAAAQAAAFwDOgCQBQAAkwUAAAEAAAABAAAA -AQAAAF4DVgCeBQAAoQUAAAEAAAAAAAAAAQAAAMACAwCrBQAArgUAAAEAAAAAAAAAAQAA -AHcDAwC3BQAAugUAAAEAAAAAAAAAAQAAAMwCAwDABQAAwwUAAAEAAAAAAAAAAQAAAAAA -AAAAAAAAAAD/Af8BAwCYAZkBBwCYATALCACYATAMIAAgARAKIQAgAZkBIgAgATAMOgBg -ARAKNwAwAZkBNQAwApkBNgAwA5kBMAAwBJkBOQAwBZkBNAAwBpkBMgAwA5kBMQAwA5kB -EQAQAZkBEAAQARAKUgBQAZkBRQBQApkBRwBQA5kBQgBQBJkBWABQBZkBVQBQATAMVgBQ -AjAMSQBQAlANQABAAUAKQQBAAUAKQwBAAkAKSABAARAKSgBAAUAKSwBAAUAKYABgAGAA -YQBhAGEAYgBiAGIAYwBjAGMAZABkAGQAZQBlAGUAZgBmAGYAZwBnAGcAaABoAGgAaQBp -AGkAagBqAGoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wECABAAABREFgUG -cRbBFgUGAAAAAAAAAAAAAAAAUAEBABAAcRbBFh4AAAAAAAAAAAAAAAAAAAAAAAAAUAIB -ABAAcRatFhcAAAAAAAAAAAAAAAAAAAAAAAAAUAMCABAAoBTIFBEGcRatFh4GAAAAAAAA -AAAAAAAAUAQCABAAPBR4FBQAcRbBFhQAAAAAAAAAAAAAAAAAUAUCABAAcRbBFhEAAAAA -AAAAAAAAAAAAAAAAAAAAMAECADAAPBTIFBQAfBVEFhsAAAAAAAAAAAAAAAAAMAIBADAA -PBR4FBIAAAAAAAAAAAAAAAAAAAAAAAAAMAMBADAAPBTIFBQAAAAAAAAAAAAAAAAAAAAA -AAAAMAQBADAAPBTIFBIAAAAAAAAAAAAAAAAAAAAAAAAAMAUBADAAPBR4FA8AAAAAAAAA -AAAAAAAAAAAAAAAAMAYCADAAPBSgFBcAfBVEFh4AAAAAAAAAAAAAAAAAEAEDABAAjBTI -FBcGPBR4FBEGcRbBFh4GAAAAAAAAIAECABAAPBTIFBcGcRbBFh4GAAAAAAAAAAAAAAAA -YAEEABAAPBR4FBEGjBTIFBQGfBVEFhQGcRbBFh4GQAEBAEAAMhRuFBcAAAAAAAAAAAAA -AAAAAAAAAAAAQAIDAEAAMhRuFBcAsBPYExcAOBN0ExcAAAAAAAAAAAD/AQIAEwAKFCYW -BQYeFBIWBQYAAAAAAAAAAAAAAAAQAQMAEwCCFKoUFwZaFFoUEQaAFqgWHgYAAAAAAABg -AQMAEwCCFKoUFwZaFFoUEQaAFqgWHgYAAAAAAABgAQQAEwB4FKAUFwZQFFAUEQaFFq0W -HgakFRwWHgYQCgEAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wED -AP8ACAlECQUGhQmFCQUG0AmsCgUGAAAAAAAAEAoBABQAhQmFCRQGAAAAAAAAAAAAAAAA -AAAAAAAAMAoBADQAhQmFCRQGAAAAAAAAAAAAAAAAAAAAAAAAMAsBADQAhQmFCRQGAAAA -AAAAAAAAAAAAAAAAAAAAMAwBADQAhQmFCRQGAAAAAAAAAAAAAAAAAAAAAAAAQAoBAEQA -hQmFCRQGAAAAAAAAAAAAAAAAAAAAAAAAmQEBADQAhQmFCRQGAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAD/AQQA/wAICUQJBQZsCagJBQa0CbQJBQbQCawKBQZQDQIA -/wBsCagJFAAICUQJFAAAAAAAAAAAAAAAAAAwCgEA/wCZCagJFAAAAAAAAAAAAAAAAAAA -AAAAAAAwCwEAMQCACYoJFAAAAAAAAAAAAAAAAAAAAAAAAAAwDAEAMQBsCagJHgAAAAAA -AAAAAAAAAAAAAAAAAAAQCgEAEQBsCZ4JGwYAAAAAAAAAAAAAAAAAAAAAAABACgIAQQBs -CagJFAC0CbQJFAAAAAAAAAAAAAAAAACZAQEAMQBsCagJFAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABg -AAAAAQAAAAAAAAAKAAAAOAEAAEABAABIAQAAaAEAAHABAAB4AQAAgAEAAIgBAACoAQAA -sAEAAGYAAAABAAAAAAAAAAkAAAA4AQAAQAEAAFABAABoAQAAcAEAAHgBAACAAQAAkAEA -ALABAAAAAAAAZwAAAAEAAAAAAAAACQAAADgBAABAAQAASAEAAGgBAABwAQAAeAEAAIAB -AACIAQAAsAEAAAAAAABoAAAAAQAAAAAAAAAJAAAAOAEAAEABAABIAQAAaAEAAHABAAB4 -AQAAgAEAAIgBAACwAQAAAAAAAGEAAAAAAAAAAAAAAAgAAAA4AQAAQAEAAEgBAABoAQAA -gAEAAIgBAACoAQAAsAEAAAAAAAAAAAAAYgAAAAIAAAAsAQAACgAAADgBAABAAQAASAEA -AGgBAABwAQAAeAEAAIABAACIAQAAqAEAALABAABjAAAAAQAAAAAAAAAIAAAAOAEAAEAB -AABIAQAAaAEAAHABAAB4AQAAiAEAALABAAAAAAAAAAAAAGQAAAAAAAAAAAAAAAcAAAA4 -AQAAWAEAAGgBAABwAQAAeAEAAJgBAACwAQAAAAAAAAAAAAAAAAAAZQAAAAAAAAAAAAAA -BQAAADgBAABIAQAAaAEAAIgBAACwAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABpAAAAAAAA -AAAAAAAIAAAAOAEAAFgBAABoAQAAcAEAAHgBAACAAQAAmAEAALABAAAAAAAAAAAAAGoA -AAAAAAAAAAAAAAYAAAA4AQAASAEAAGgBAACAAQAAiAEAALABAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAACQAAADgBAABAAQAA -UAEAAGgBAABwAQAAeAEAAIABAACQAQAAsAEAAAAAAABmAAAAAQAAAAAAAAAJAAAAOAEA -AEABAABQAQAAaAEAAHABAAB4AQAAgAEAAJABAACwAQAAAAAAAGcAAAABAAAAAAAAAAkA -AAA4AQAAQAEAAEgBAABoAQAAcAEAAHgBAACAAQAAkAEAALABAAAAAAAAaAAAAAEAAAAA -AAAACQAAADgBAABAAQAASAEAAGgBAABwAQAAeAEAAIABAACQAQAAsAEAAAAAAABhAAAA -AAAAAAAAAAAHAAAAOAEAAEABAABQAQAAaAEAAIABAACQAQAAsAEAAAAAAAAAAAAAAAAA -AGIAAAACAAAALAEAAAkAAAA4AQAAQAEAAFABAABoAQAAcAEAAHgBAACAAQAAkAEAALAB -AAAAAAAAYwAAAAEAAAAAAAAACAAAADgBAABAAQAAUAEAAGgBAABwAQAAeAEAAJABAACw -AQAAAAAAAAAAAABkAAAAAAAAAAAAAAAHAAAAOAEAAGABAABoAQAAcAEAAHgBAACgAQAA -sAEAAAAAAAAAAAAAAAAAAGUAAAAAAAAAAAAAAAUAAAA4AQAAYAEAAGgBAACgAQAAsAEA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAaQAAAAAAAAAAAAAACAAAADgBAABgAQAAaAEAAHAB -AAB4AQAAgAEAAKABAACwAQAAAAAAAAAAAABqAAAAAAAAAAAAAAAGAAAAOAEAAGABAABo -AQAAgAEAAKABAACwAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAEABiAFAAQAAuAEAABABSANQAQAAwgEAADABEAJAAQAAzgEAAAIAUAEBAEABBACg -AAgAwAAgANAAuDwAAJg8AACqPAAAuDwAAJ48AAC4PAAAuDwAALg8AACkPAAAuDwAALg8 -AAC4PAAAuDwAALg8AAC4PAAAuDwAALg8AAC4PAAAuDwAALg8AAC4PAAAuDwAALg8AAC4 -PAAAuDwAALg8AAC4PAAAuDwAALg8AAC4PAAAuDwAALg8AACwPAAAij0AAJE9AAC8PQAA -mD0AALw9AAC8PQAAvD0AALw9AACfPQAAvD0AAKY9AACtPQAAjBSgFLQUyBQAAHwVkBWk -FbgVzBXgFfQVCBYcFjAWRBYAAAAAQAECAMwWAADWFgAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAYAE6AEABAADwFgAAMAEAAEABAAAAAAAAMAIAAEABAAAA -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 @@ -1998,10 +2263,11 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAA4FUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAACoWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA @@ -2030,36 +2296,6 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYAABH -AAAACJgAAAAAAAAMmAAApo6ECRCYAAAA4DI9FJgAAGsHAAAcmAAAAAAAACCYAAAAAgIC -JJgAAA4OAAAomAAAAQICCiyYAAD8bwMAMJgAAAAAAAA0mAAADg4AADiYAAAHAAAAPJgA -AAABAgBAmAAAAABjiUSYAACcFnITSJgAADO2GABMmAAAPGGEElCYAADguOgNVJgAAFlI -BwBYmAAAur6AflyYAABeZjoxYJgAAAgdAABkmAAAAM4BAGiYAACQQZpAcJgAAA8AAAB0 -mAAAgAAAAHiYAAAEAAAAAJkAAAAAAAAEmQAAAAAAAAiZAAAAAAAADJkAAAAAgAAQmQAA -AwAAAACbAAAAAAAABJsAACAAAAAImwAAEAAAAAybAAAwAAAAEJsAAAgAAAAUmwAAKAAA -ABibAAAoAAAAHJsAAAQAAAAgmwAAJAAAACSbAAAUAAAAKJsAADQAAAAsmwAADAAAADCb -AAAsAAAANJsAAAIAAAA4mwAAIgAAADybAAASAAAAQJsAADIAAABEmwAACgAAAEibAAAq -AAAATJsAAAEAAABQmwAAIQAAAFSbAAARAAAAWJsAADEAAABcmwAACQAAAGCbAAApAAAA -ZJsAAAUAAABomwAAJQAAAGybAAAVAAAAcJsAADUAAAB0mwAADQAAAHibAAAtAAAAfJsA -AAMAAACAmwAAIwAAAISbAAATAAAAiJsAADMAAACMmwAACwAAAJCbAAArAAAAlJsAAAcA -AACYmwAAJwAAAJybAAAXAAAAoJsAADcAAACkmwAADwAAAKibAAAvAAAArJsAAC8AAACw -mwAALwAAALSbAAAvAAAAuJsAAC8AAAC8mwAALwAAAMCbAAAvAAAAxJsAAC8AAADImwAA -LwAAAMybAAAvAAAA0JsAAC8AAADUmwAALwAAANibAAAvAAAA3JsAAC8AAADgmwAALwAA -AOSbAAAvAAAA6JsAAC8AAADsmwAALwAAAPCbAAAvAAAA9JsAAC8AAAD4mwAALwAAAPyb -AAAvAAAAAJoAAB0AAAAEmgAAXQAAAAiaAACdAAAADJoAAN0AAAAQmgAAHQEAABSaAAAh -AAAAGJoAAGEAAAAcmgAAoQAAACCaAADhAAAAJJoAADEAAAAomgAAcQAAACyaAACxAAAA -MJoAABwAAAA0mgAAXAAAADiaAAApAAAAPJoAAGkAAABAmgAAqQAAAESaAAAgAAAASJoA -ABkAAABMmgAAWQAAAFCaAACZAAAAVJoAADAAAABYmgAABQAAAFyaAAAlAAAAYJoAAGUA -AABkmgAApQAAAGiaAAAoAAAAbJoAAGgAAABwmgAAHwAAAHSaAAAeAAAAeJoAABgAAAB8 -mgAAWAAAAICaAACYAAAAhJoAAAMAAACImgAABAAAAIyaAABEAAAAkJoAAIQAAACUmgAA -EwAAAJiaAAASAAAAnJoAAFIAAACgmgAAkgAAAKSaAADSAAAAqJoAACsAAACsmgAAKgAA -ALCaAABqAAAAtJoAAKoAAAC4mgAAGwAAALyaAAAaAAAAwJoAAFoAAADEmgAAmgAAAMia -AADaAAAAzJoAAAYAAADQmgAABgAAANSaAAAGAAAA2JoAAAYAAADcmgAABgAAAOCaAAAG -AAAA5JoAAAYAAADomgAABgAAAOyaAAAGAAAA8JoAAAYAAAD0mgAABgAAAPiaAAAGAAAA -/JoAAAYAAADUmAAAIAAAAMyYAAAEAAAAyJgAAAYBBgCcmAAAbQAAAMCYAAAAAAAA0JgA -ABQAAAAJCQAAAAAAAgIGBgYGBgYCAgAAAAMABgAJADwAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAADwAAAAzAAAAAAAAAAAAAAAAAAAAAriAAAAIAAACgIAAAEY -AAABAAAAQBgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQRXGQApEQQAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA @@ -2067,7 +2303,6 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAANyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA @@ -2099,88 +2334,43 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsCY8J -tAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAEAAAABAAAAAAAAG -AAAABgAAAAYAMAAAABUAAAAVAAAAHQAAABUAAABAEAAAD/wvAA/8LwAf/C8AD/wvAEQQ -AAAP/C8AD/wvAB/8LwAP/C8ASBAAAA/8LwAP/C8AH/wvAA/8LwBMEAAAD/wvAA/8LwAf -/C8AD/wvAFAQAAAP/C8AD/wvAB/8LwAP/C8AVBAAAA/8LwAP/C8AH/wvAA/8LwBYEAAA -D/wvAA/8LwAf/C8AD/wvAFwQAAAP/C8AD/wvAB/8LwAP/C8AYBAAAA/8LwAP/C8AH/wv -AA/8LwBkEAAAD/wvAA/8LwAf/C8AD/wvAHAQAABoAQAA4AEAALgBAABoAQAAMBAAADAC -AADgAQAAsAAAADACAACwEAAAmA0AAIARAABIHwAAmA0AAPAQAADgoAAAaEABAIBYAADg -oAAAFIAAAAAEAAQACAAIADAAIAAEAAQcgAAAp4+NDs+PjQ6Vj2ABp4+NDgSYAAAAAAAA -AwAAAAAAAAAAAAAAIJgAAAACAgIAAgICAAIBAgACAgIkmAAADg4AAA4OAAAHBwAADg4A -ACiYAAABAAIKAQACCgAAAQUBAAIKNJgAAA4OAAAODgAADg4AAA4OAAA4mAAABwAAAAcA -AAALAAAACwAAAESYAACcFnITpRZyE6gWchOcFnITSJgAAGe6GABnuhgAaboYAGm6GABQ -mAAA4LQoDOC0KAzgtCgM4LQoDFiYAAAuDYB+Lg2Afi4NwH4uDYB+XJgAAF5dNzFeXTcx -Xl06MV5dNzFgmAAAEL0AABC9AAA4vQAAEL0AAGSYAAAAzgEAAM4BAADOAQAAzgEAFJkA -ABAnAAAQJwAAfBUAABAnAAAYmQAAkAEAAJABAACEAAAAkAEAAESZAAAgEOBvIBDgbyAJ -4G8gEOBvgKEAAP8U/wX/FP8F/xT/Bf8Z/wXUmAAAEAAAABQAAAAQAAAAEAAAAAAAAAAM -AAAAAAAAACgAAACcnISELAAAAHx8fHw0AAAABQAAAEAAAAAAAAAARAAAAAgAAABIAAAA -CAAAAEwAAAAQAAAAUAAAAAAAAABUAAAAHwAAAAAIAAAAAAAABAgAAAAAAAAICAAAAAAA -AAwIAAAAAAAAEAgAAAAAAAAUCAAAAAAAABgIAAAAAAAAHAgAAAAAAAAgCAAAAAAAACQI -AAAAAAAAMBIAAAAAAAAEgAAAAAAAAAiAAAAAAAAADIAAAAAAAAAYgAAAAAAAACSAAAAA -AAAAKIAAADAAAAAsgAAA//8HADCAAAD///8BNIAAADEAAAA4gAAAAAAAADyAAAAAAAAA -QIAAAAAAAABEgAAAAgAAAEiAAAAAAAAAVIAAAAAAAABYgAAAAAAAAAiYAAAAAAAADJgA -AJOQhC0QmAAAAOAyfRSYAABrDwAAHJgAAAAAAAAsmAAA/m8CADCYAAAAAAAAPJgAAAAB -AgBAmAAAegFqIEyYAAA8YYQSVJgAAFkIAABomAAAkEGaQGyYAACBsAwFcJgAAA8AAAB0 -mAAAgAAAAHiYAAAMAAAAAJkAAAAAAAAEmQAAAAAAAAiZAAAAAAAADJkAAAAAgAAQmQAA -AQAAAByZAAAqCQAAIJkAAAAAAAAkmQAABYoFACiZAAABAAAALJkAAAAAAAAwmQAAAAAA -ADSZAAAAAAAAOJkAAAAAAAA8mQAAPwAAAECZAAAEAAAASJkAAAAAAABMmQAAAAAAAFCZ -AAAAAAAAVJkAAEzxUF1YmQAAGAAAAFyZAACOaksAhKEAAP8F/waIoQAA/wf/B4yhAAD/ -CP8IkKEAAP8J/wmUoQAA/wr/CpihAAD/C/8LnKEAAP8M/wygoQAA/w3/DaShAAD/Dv8P -qKEAAP8S/xKsoQAA/xP/FLChAAD/Ff8WtKEAAP8X/xm4oQAA/xr/G7yhAAD/Hf8ewKEA -AP8g/yPEoQAA/yX/J8ihAAD/Kf8szKEAAP8v/zHQoQAA/zT/N9ShAAD/Ov862KEAAP86 -/zrcoQAA/zr/OuChAAD/Ov865KEAAP86/zrooQAA/zr/OuyhAAD/Ov868KEAAP86/zr0 -oQAA/zr/OvihAAD/Ov86/KEAAP86/zoAmwAAAAAAAASbAAAgAAAACJsAABAAAAAMmwAA -MAAAABCbAAAIAAAAFJsAACgAAAAYmwAABAAAABybAAAkAAAAIJsAABQAAAAkmwAANAAA -ACibAAAMAAAALJsAACwAAAAwmwAAAgAAADSbAAAiAAAAOJsAABIAAAA8mwAAMgAAAECb -AAAKAAAARJsAACoAAABImwAABgAAAEybAAAmAAAAUJsAABYAAABUmwAANgAAAFibAAAO -AAAAXJsAAC4AAABgmwAAAQAAAGSbAAAhAAAAaJsAABEAAABsmwAAMQAAAHCbAAAJAAAA -dJsAACkAAAB4mwAABQAAAHybAAAlAAAAgJsAABUAAACEmwAANQAAAIibAAANAAAAjJsA -AC0AAACQmwAAAwAAAJSbAAAjAAAAmJsAABMAAACcmwAAMwAAAKCbAAALAAAApJsAACsA -AAComwAAKwAAAKybAAArAAAAsJsAACsAAAC0mwAAKwAAALibAAArAAAAvJsAACsAAADA -mwAAKwAAAMSbAAArAAAAyJsAACsAAADMmwAAKwAAANCbAAArAAAA1JsAACsAAADYmwAA -KwAAANybAAArAAAA4JsAACsAAADkmwAAKwAAAOibAAArAAAA7JsAACsAAADwmwAAKwAA -APSbAAArAAAA+JsAAAIAAAD8mwAAFgAAANSYAAAgAAAA2JgAAGgQYAAAAAAAAAAAAACa -AACpAQAAAAAAAASaAADpAQAAQAAAAAiaAAApAAAAgAAAAAyaAABpAAAAUAEAABCaAACZ -AQAAkAEAABSaAADZAQAA0AEAABiaAAAZAAAAEAAAAByaAABZAAAARAAAACCaAACZAAAA -hAAAACSaAAClAQAASAEAACiaAADlAQAAiAEAACyaAAAlAAAAyAEAADCaAADIAQAAFAAA -ADSaAAAIAAAAQgAAADiaAABIAAAAggAAADyaAACIAAAAeAEAAECaAACYAQAAuAEAAESa -AADYAQAA+AEAAEiaAAAYAAAAEgAAAEyaAABYAAAAUgAAAFCaAACYAAAAkgAAAFSaAACk -AQAAfAEAAFiaAADkAQAAvAEAAFyaAAAkAAAA/AEAAGCaAABkAAAACgAAAGSaAACkAAAA -SgAAAGiaAADkAAAAigAAAGyaAAAKAQAAWgEAAHCaAABKAQAAmgEAAHSaAACKAQAA2gEA -AHiaAADKAQAADgAAAHyaAAAKAAAATgAAAICaAABKAAAAjgAAAISaAACKAAAAXgEAAIia -AAC6AQAAngEAAIyaAAD6AQAA3gEAAJCaAAA6AAAACQAAAJSaAAB6AAAASQAAAJiaAACG -AQAAiQAAAJyaAADGAQAAeQEAAKCaAAAGAAAAuQEAAKSaAABGAAAA+QEAAKiaAACGAAAA -OQAAAKyaAADGAAAAeQAAALCaAADGAAAAuQAAALSaAADGAAAAvQEAALiaAADGAAAA/QEA -ALyaAADGAAAAPQAAAMCaAADGAAAAfQAAAMSaAADGAAAAvQAAAMiaAADGAAAA/QAAAMya -AADGAAAA/QAAANCaAADGAAAA/QAAANSaAADGAAAA/QAAANiaAADGAAAA/QAAANyaAADG -AAAA/QAAAOCaAADGAAAA/QAAAOSaAADGAAAA/QAAAOiaAADGAAAA/QAAAOyaAADGAAAA -/QAAAPCaAADGAAAA/QAAAPSaAADGAAAA/QAAAPiaAADGAAAA/QAAAPyaAADGAAAA/QAA -AAEAAABGAAAAYAAAAAEAAABGAAAAYQAAAAEAAABGAAAAYgAAAAEAAABGAAAAYwAAAAEA -AABGAAAAZAAAAAEAAABGAAAAZQAAAAEAAABGAAAAZgAAAAEAAABGAAAAZwAAAAEAAABG -AAAAaAAAAAEAAABGAAAAaQAAAAEAAABGAAAAagAAAAEAAABGAAAAawAAAAEAAABGAAAA -bAAAAAEAAABGAAAAdAAAAAEAAABGAAAAdAAAAAEAAABGAAAAdAAAAAEAAABGAAAAdAAA -AAEAAABGAAAAdAAAAAEAAABGAAAAdAAAAAEAAABGAAAAdAAAAAEAAABGAAAAdAAAAAEA -AABGAAAAdQAAAAEAAABGAAAAdgAAAAEAAABGAAAAdwAAAAEAAABGAAAAeAAAAAEAAABG -AAAAeQAAAAEAAABGAAAAegAAAAEAAABGAAAAewAAAAEAAABGAAAAfAAAAAEAAABGAAAA -fQAAAAEAAABGAAAAfgAAAAEAAABGAAAAfwAAAAEAAABGAAAAgAAAAAEAAABEAAAAfAAA -AAEAAABGAAAAiAAAAAEAAABGAAAAjAAAAAEAAABGAAAAkAAAAAEAAABGAAAAlAAAAAEA -AABGAAAAmAAAAAEAAABGAAAAnAAAAAEAAABGAAAAoAAAAAEAAABGAAAApAAAAAEAAABG -AAAAqAAAAAEAAABGAAAArAAAAAEAAABGAAAAsAAAAAEAAABGAAAAtAAAAAACBwAAAAMA -BgAJADwAAABjuwAAY7sAAI27AACNuwAAt7sAALe7AADhuwAA4bsAAAAAAAAAAAAACQAA -AAQAAAAEAAEAAQABAAYAAABGRzgAAAAAAAAAAAAAAAAABAAAAAEAAQAEAAAARkc3AAAA -AAAAAAAAAAAAAAMAAQABAAEAAwAAAEZHNgAAAAAAAAAAAAAAAAAEAAAAAAABAAEAAABG -RzUAAAAAAAAAAAAAAAAABAABAAEAAAAAAAAARkc0AAAAAAAAAAAAAAAAAAQAAAABAAAA -/v///0ZHMwAAAAAAAAAAAAAAAAADAAEAAQAAAP3///9GRzIAAAAAAAAAAAAAAAAABAAA -AAAAAAD8////RkcxAAAAAAAAAAAAAAAAAAIAAQABAAAA+v///0ZHMAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBBUGQApEQQAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////8A +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYAABHAAAACJgAAAAAAAAMmAAApo6ECRCY +AAAA4DI9FJgAAGsHAAAcmAAAAAAAACCYAAAAAgICJJgAAA4OAAAomAAAAQICCiyYAAD8 +bwMAMJgAAAAAAAA0mAAADg4AADiYAAAHAAAAPJgAAAABAgBAmAAAAABjiUSYAACcFnIT +SJgAADO2GABMmAAAPGGEElCYAADguOgNVJgAAFlIBwBYmAAAur6AflyYAABeZjoxYJgA +AAgdAABkmAAAAM4BAGiYAACQQZpAcJgAAA8AAAB0mAAAgAAAAHiYAAAEAAAAAJkAAAAA +AAAEmQAAAAAAAAiZAAAAAAAADJkAAAAAgAAQmQAAAwAAAACbAAAAAAAABJsAACAAAAAI +mwAAEAAAAAybAAAwAAAAEJsAAAgAAAAUmwAAKAAAABibAAAoAAAAHJsAAAQAAAAgmwAA +JAAAACSbAAAUAAAAKJsAADQAAAAsmwAADAAAADCbAAAsAAAANJsAAAIAAAA4mwAAIgAA +ADybAAASAAAAQJsAADIAAABEmwAACgAAAEibAAAqAAAATJsAAAEAAABQmwAAIQAAAFSb +AAARAAAAWJsAADEAAABcmwAACQAAAGCbAAApAAAAZJsAAAUAAABomwAAJQAAAGybAAAV +AAAAcJsAADUAAAB0mwAADQAAAHibAAAtAAAAfJsAAAMAAACAmwAAIwAAAISbAAATAAAA +iJsAADMAAACMmwAACwAAAJCbAAArAAAAlJsAAAcAAACYmwAAJwAAAJybAAAXAAAAoJsA +ADcAAACkmwAADwAAAKibAAAvAAAArJsAAC8AAACwmwAALwAAALSbAAAvAAAAuJsAAC8A +AAC8mwAALwAAAMCbAAAvAAAAxJsAAC8AAADImwAALwAAAMybAAAvAAAA0JsAAC8AAADU +mwAALwAAANibAAAvAAAA3JsAAC8AAADgmwAALwAAAOSbAAAvAAAA6JsAAC8AAADsmwAA +LwAAAPCbAAAvAAAA9JsAAC8AAAD4mwAALwAAAPybAAAvAAAAAJoAAB0AAAAEmgAAXQAA +AAiaAACdAAAADJoAAN0AAAAQmgAAHQEAABSaAAAhAAAAGJoAAGEAAAAcmgAAoQAAACCa +AADhAAAAJJoAADEAAAAomgAAcQAAACyaAACxAAAAMJoAABwAAAA0mgAAXAAAADiaAAAp +AAAAPJoAAGkAAABAmgAAqQAAAESaAAAgAAAASJoAABkAAABMmgAAWQAAAFCaAACZAAAA +VJoAADAAAABYmgAABQAAAFyaAAAlAAAAYJoAAGUAAABkmgAApQAAAGiaAAAoAAAAbJoA +AGgAAABwmgAAHwAAAHSaAAAeAAAAeJoAABgAAAB8mgAAWAAAAICaAACYAAAAhJoAAAMA +AACImgAABAAAAIyaAABEAAAAkJoAAIQAAACUmgAAEwAAAJiaAAASAAAAnJoAAFIAAACg +mgAAkgAAAKSaAADSAAAAqJoAACsAAACsmgAAKgAAALCaAABqAAAAtJoAAKoAAAC4mgAA +GwAAALyaAAAaAAAAwJoAAFoAAADEmgAAmgAAAMiaAADaAAAAzJoAAAYAAADQmgAABgAA +ANSaAAAGAAAA2JoAAAYAAADcmgAABgAAAOCaAAAGAAAA5JoAAAYAAADomgAABgAAAOya +AAAGAAAA8JoAAAYAAAD0mgAABgAAAPiaAAAGAAAA/JoAAAYAAADUmAAAIAAAAMyYAAAE +AAAAyJgAAAYBBgCcmAAAbQAAAMCYAAAAAAAA0JgAABQAAAAJCQAAAAAAAgIGBgYGBgYC +AgAAAAMABgAJADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAA +zAAAAAAAAAAAAAAAAAAAAAriAAAAIAAACgIAAAEYAAABAAAAQBgEAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAABQRXGQAiBQYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA @@ -2191,6 +2381,8 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAABYjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AACojAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA @@ -2214,99 +2406,99 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsCY8JtAkICWwJtAnJ -////yf///8n////J////wv////L////y////8v////L////0////wP///8D////A//// -wP///7r///+y////sv///7L///+y////sP///y3iAADm4QAA8+EAAGziAAAM4gAAX+IA -AAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAEAAAABAAAAAAAAGAAAABgAAAAYAfO8AANDu -AAAO7wAAHe8AACTvAAAz7wAAfO8AAHzvAAB87wAAfO8AAHzvAAB87wAAfO8AAHzvAAB8 -7wAAfO8AAFrvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQBAAAA/8LwAP/C8A -H/wvAA/8LwAP/C8ARBAAAA/8LwAP/C8AH/wvAA/8LwAP/C8ASBAAAA/8LwAP/C8AH/wv -AA/8LwAP/C8ATBAAAA/8LwAP/C8AH/wvAA/8LwAP/C8AUBAAAA/8LwAP/C8AH/wvAA/8 -LwAP/C8AVBAAAA/8LwAP/C8AH/wvAA/8LwAP/C8AWBAAAA/8LwAP/C8AH/wvAA/8LwAP -/C8AXBAAAA/8LwAP/C8AH/wvAA/8LwAP/C8AYBAAAA/8LwAP/C8AH/wvAA/8LwAP/C8A -ZBAAAA/8LwAP/C8AH/wvAA/8LwAP/C8AMBAAADACAADgAQAAsAAAAGABAADgAQAAcBAA -AGgBAADgAQAAuAEAAIwBAADgAQAAsBAAAGAOAACAEQAAHB8AADg+AACAEQAA8BAAAOCg -AABoQAEAgFgAAOCwAABoQAEAFIAAAOgD6APgBuAGIAQgBEAIQAjgBuAGBJgAAAAAAAAD -AAAAAAAAAAAAAAADAAAAIJgAAAACAgIAAgICAAIBAgACAgIAAgICJJgAAA4OAAAODgAA -BwcAAA4OAAAODgAARJgAABwWchMlHHITKBdyE6IWchMlHHITYJgAABCdAAAQnQAAGJ0A -ABidAAAQnQAAZJgAAADOAQAAzgEAAM4BAADOAQAAzgEAaJgAAJBBmkCQQZpAkEGaQJBB -mkCQQZpAGJkAALgBAAC4AQAAhAAAAAgBAAC4AQAAJJkAAAWKBRAFigUQBYoFEAWKBRAF -igUQMKIAAAAAAAAAAAAAAAAAAAgBAAAAAAAAAAAAAAAAAAAMAAAAAAAAADQAAAAFAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsCY8JtAkAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAP///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +ACAAAAAgAAAAQAAAAEAAAAAAAAYAAAAGAAAABgAwAAAAFQAAABUAAAAdAAAAFQAAAEAQ +AAAP/C8AD/wvAB/8LwAP/C8ARBAAAA/8LwAP/C8AH/wvAA/8LwBIEAAAD/wvAA/8LwAf +/C8AD/wvAEwQAAAP/C8AD/wvAB/8LwAP/C8AUBAAAA/8LwAP/C8AH/wvAA/8LwBUEAAA +D/wvAA/8LwAf/C8AD/wvAFgQAAAP/C8AD/wvAB/8LwAP/C8AXBAAAA/8LwAP/C8AH/wv +AA/8LwBgEAAAD/wvAA/8LwAf/C8AD/wvAGQQAAAP/C8AD/wvAB/8LwAP/C8AcBAAAGgB +AADgAQAAuAEAAGgBAAAwEAAAMAIAAOABAACwAAAAMAIAALAQAACYDQAAgBEAAEgfAACY +DQAA8BAAAOCgAABoQAEAgFgAAOCgAAAUgAAAAAQABAAIAAgAMAAgAAQABByAAACnj40O +z4+NDpWPYAGnj40OBJgAAAAAAAADAAAAAAAAAAAAAAAgmAAAAAICAgACAgIAAgECAAIC +AiSYAAAODgAADg4AAAcHAAAODgAAKJgAAAEAAgoBAAIKAAABBQEAAgo0mAAADg4AAA4O +AAAODgAADg4AADiYAAAHAAAABwAAAAsAAAALAAAARJgAAJwWchOlFnITqBZyE5wWchNI +mAAAZ7oYAGe6GABpuhgAaboYAFCYAADgtCgM4LQoDOC0KAzgtCgMWJgAAC4NgH4uDYB+ +Lg3Afi4NgH5cmAAAXl03MV5dNzFeXToxXl03MWCYAAAQvQAAEL0AADi9AAAQvQAAZJgA +AADOAQAAzgEAAM4BAADOAQAUmQAAECcAABAnAAB8FQAAECcAABiZAACQAQAAkAEAAIQA +AACQAQAARJkAACAQ4G8gEOBvIAngbyAQ4G+AoQAA/xT/Bf8U/wX/FP8F/xn/BdSYAAAQ +AAAAFAAAABAAAAAQAAAAAAAAAAwAAAAAAAAAKAAAAJychIQsAAAAfHx8fDQAAAAFAAAA QAAAAAAAAABEAAAACAAAAEgAAAAIAAAATAAAABAAAABQAAAAAAAAAFQAAAAfAAAAAAgA AAAAAAAECAAAAAAAAAgIAAAAAAAADAgAAAAAAAAQCAAAAAAAABQIAAAAAAAAGAgAAAAA -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 -+JkAABgAAAAEogAAAAAAAAiiAACIZz7QKKIAALUBAAA8ogAAr4nIEwSbAAAgAAAACJsA -ABAAAAAMmwAAMAAAABCbAAAIAAAAFJsAACgAAAAYmwAABAAAABybAAAkAAAAIJsAABQA -AAAkmwAANAAAACybAAAsAAAAMJsAAAIAAAA0mwAAIgAAADybAAAyAAAAQJsAAAoAAABE -mwAAKgAAAEibAAAGAAAATJsAACYAAABQmwAAFgAAAFSbAAA2AAAAWJsAAA4AAABcmwAA -LgAAAGCbAAABAAAAaJsAABEAAABsmwAAMQAAAHCbAAAJAAAAdJsAACkAAAB4mwAABQAA -AHybAAAlAAAAgJsAABUAAACEmwAANQAAAIibAAANAAAAkJsAAAMAAACUmwAAIwAAAJib -AAATAAAAoJsAAAsAAACkmwAAKwAAAKibAAArAAAArJsAACsAAACwmwAAKwAAALSbAAAr +AAAcCAAAAAAAACAIAAAAAAAAJAgAAAAAAAAwEgAAAAAAAASAAAAAAAAACIAAAAAAAAAM +gAAAAAAAABiAAAAAAAAAJIAAAAAAAAAogAAAMAAAACyAAAD//wcAMIAAAP///wE0gAAA +MQAAADiAAAAAAAAAPIAAAAAAAABAgAAAAAAAAESAAAACAAAASIAAAAAAAABUgAAAAAAA +AFiAAAAAAAAACJgAAAAAAAAMmAAAk5CELRCYAAAA4DJ9FJgAAGsPAAAcmAAAAAAAACyY +AAD+bwIAMJgAAAAAAAA8mAAAAAECAECYAAB6AWogTJgAADxhhBJUmAAAWQgAAGiYAACQ +QZpAbJgAAIGwDAVwmAAADwAAAHSYAACAAAAAeJgAAAwAAAAAmQAAAAAAAASZAAAAAAAA +CJkAAAAAAAAMmQAAAACAABCZAAABAAAAHJkAACoJAAAgmQAAAAAAACSZAAAFigUAKJkA +AAEAAAAsmQAAAAAAADCZAAAAAAAANJkAAAAAAAA4mQAAAAAAADyZAAA/AAAAQJkAAAQA +AABImQAAAAAAAEyZAAAAAAAAUJkAAAAAAABUmQAATPFQXViZAAAYAAAAXJkAAI5qSwCE +oQAA/wX/BoihAAD/B/8HjKEAAP8I/wiQoQAA/wn/CZShAAD/Cv8KmKEAAP8L/wucoQAA +/wz/DKChAAD/Df8NpKEAAP8O/w+ooQAA/xL/EqyhAAD/E/8UsKEAAP8V/xa0oQAA/xf/ +GbihAAD/Gv8bvKEAAP8d/x7AoQAA/yD/I8ShAAD/Jf8nyKEAAP8p/yzMoQAA/y//MdCh +AAD/NP831KEAAP86/zrYoQAA/zr/OtyhAAD/Ov864KEAAP86/zrkoQAA/zr/OuihAAD/ +Ov867KEAAP86/zrwoQAA/zr/OvShAAD/Ov86+KEAAP86/zr8oQAA/zr/OgCbAAAAAAAA +BJsAACAAAAAImwAAEAAAAAybAAAwAAAAEJsAAAgAAAAUmwAAKAAAABibAAAEAAAAHJsA +ACQAAAAgmwAAFAAAACSbAAA0AAAAKJsAAAwAAAAsmwAALAAAADCbAAACAAAANJsAACIA +AAA4mwAAEgAAADybAAAyAAAAQJsAAAoAAABEmwAAKgAAAEibAAAGAAAATJsAACYAAABQ +mwAAFgAAAFSbAAA2AAAAWJsAAA4AAABcmwAALgAAAGCbAAABAAAAZJsAACEAAABomwAA +EQAAAGybAAAxAAAAcJsAAAkAAAB0mwAAKQAAAHibAAAFAAAAfJsAACUAAACAmwAAFQAA +AISbAAA1AAAAiJsAAA0AAACMmwAALQAAAJCbAAADAAAAlJsAACMAAACYmwAAEwAAAJyb +AAAzAAAAoJsAAAsAAACkmwAAKwAAAKibAAArAAAArJsAACsAAACwmwAAKwAAALSbAAAr AAAAuJsAACsAAAC8mwAAKwAAAMCbAAArAAAAxJsAACsAAADImwAAKwAAAMybAAArAAAA 0JsAACsAAADUmwAAKwAAANibAAArAAAA3JsAACsAAADgmwAAKwAAAOSbAAArAAAA6JsA -ACsAAADsmwAAKwAAAPCbAAArAAAA9JsAACsAAAD4mwAAAgAAAPybAAAWAAAAAAAAAAAA -AAAAAAAAAAAAAJyYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyYAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAJyYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyYAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAJyYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyYAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AJyYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyY -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyYAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAJyYAAAAADgAAAA4AAAAOAAAADgAAAA4AJyYAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAJyYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyYAAAAAAAAAAAA -AMAAAACAAAAAgAAAAJyYAAD5AAQA+QAEAP8ABAD9AAQA/QAEANSYAAAAAAAAAAAAAAQA -AAAEAAAABAAAAAAAAAAAAAAAAJoAAKkBAAAAAAAABJoAAOkBAABAAAAACJoAACkAAACA +ACsAAADsmwAAKwAAAPCbAAArAAAA9JsAACsAAAD4mwAAAgAAAPybAAAWAAAA1JgAACAA +AADYmAAAaBBgAAAAAAAAAAAAAJoAAKkBAAAAAAAABJoAAOkBAABAAAAACJoAACkAAACA AAAADJoAAGkAAABQAQAAEJoAAJkBAACQAQAAFJoAANkBAADQAQAAGJoAABkAAAAQAAAA HJoAAFkAAABEAAAAIJoAAJkAAACEAAAAJJoAAKUBAABIAQAAKJoAAOUBAACIAQAALJoA ACUAAADIAQAAMJoAAMgBAAAUAAAANJoAAAgAAABCAAAAOJoAAEgAAACCAAAAPJoAAIgA @@ -2321,792 +2513,1446 @@ AMYAAAC9AQAAuJoAAMYAAAD9AQAAvJoAAMYAAAA9AAAAwJoAAMYAAAB9AAAAxJoAAMYA AAC9AAAAyJoAAMYAAAD9AAAAzJoAAMYAAAD9AAAA0JoAAMYAAAD9AAAA1JoAAMYAAAD9 AAAA2JoAAMYAAAD9AAAA3JoAAMYAAAD9AAAA4JoAAMYAAAD9AAAA5JoAAMYAAAD9AAAA 6JoAAMYAAAD9AAAA7JoAAMYAAAD9AAAA8JoAAMYAAAD9AAAA9JoAAMYAAAD9AAAA+JoA -AMYAAAD9AAAA/JoAAMYAAAD9AAAA1JgAACAAAADUmAAAEAAAABQAAAAQAAAAEAAAABQA -AADYmAAAaBBgAGgQYABoEGAAaBBgAGgQYAAAAAAAAAAAAJyYAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAJyYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyYAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAJyYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyYAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AJyYAAAAAAAQAAAAEAAAABAAAAAQAAAAEJyYAAAAAAAEAAAABAAAAAQAAAAEAAAABJyY -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyYAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAJyYAAAAAAAAAAAAAAAAAAoAAAAAAAAAAJyYAADAADgA -gAA4AMAAOALAADgAwAA4AJyYAAAGAAIABgACAAYAAAAGAAIABgACAJyYAACJAAAAiQAA -AIkAAACJAAAAiQAAAJyYAACgAAAAoAAAAKAAAACgAAAAoAAAAJyYAAAHAAQABwAEAAcA -BAAHAAQABwAEANSYAAAaAAAAGgAAABoAAAAaAAAAGgAAAAAAAAAAAAAAnJgAAEAAAABI -AAAAQAAAAEAAAABAAAAAnJgAABAAAAAQAAAAEAAAABAAAAAQAAAAnJgAAAgAAAAIAAAA -CAAAAAgAAAAIAAAAnJgAAE8AAABPAAAATwAAAE8AAABPAAAAnJgAAPEAAADxAAAAYQAA -APEAAADxAAAAnJgAAE+QAABPkAAATJAAAE+QAABPkAAAnJgAAFoSAABaEgAAmhIAAFoS -AABaEgAAzJgAAA4AAAAOAAAADwAAAA4AAAAOAAAAAQAAAEYAAABgAAAAAQAAAEYAAABh -AAAAAQAAAEYAAABiAAAAAQAAAEYAAABjAAAAAQAAAEYAAABkAAAAAQAAAEYAAABlAAAA -AQAAAEYAAABmAAAAAQAAAEYAAABnAAAAAQAAAEYAAABoAAAAAQAAAEYAAABpAAAAAQAA -AEYAAABqAAAAAQAAAEYAAABrAAAAAQAAAEYAAABsAAAAAQAAAEYAAAB0AAAAAQAAAEYA -AAB0AAAAAQAAAEYAAAB0AAAAAQAAAEYAAAB0AAAAAQAAAEYAAAB0AAAAAQAAAEYAAAB0 -AAAAAQAAAEYAAAB0AAAAAQAAAEYAAAB0AAAAAQAAAEYAAAB1AAAAAQAAAEYAAAB2AAAA -AQAAAEYAAAB3AAAAAQAAAEYAAAB4AAAAAQAAAEYAAAB5AAAAAQAAAEYAAAB6AAAAAQAA -AEYAAAB7AAAAAQAAAEYAAAB8AAAAAQAAAEYAAAB9AAAAAQAAAEYAAAB+AAAAAQAAAEYA -AAB/AAAAAQAAAEYAAACAAAAAAQAAAEQAAAB8AAAAAQAAAEYAAACIAAAAAQAAAEYAAACM -AAAAAQAAAEYAAACQAAAAAQAAAEYAAACUAAAAAQAAAEYAAACYAAAAAQAAAEYAAACcAAAA -AQAAAEYAAACgAAAAAQAAAEYAAACkAAAAAQAAAEYAAACoAAAAAQAAAEYAAACsAAAAAQAA -AEYAAACwAAAAAQAAAEYAAAC0AAAAlToBAHg6AQB8OgEAgDoBAJA6AQCQOgEAhDoBAIg6 -AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAFYAAABWAAAAVgAAAFYAAABWAAAAc -gAAAp5ONEs8TiAmVE+AEqxPgEs8TiAkomAAAAQACCgEAAgoAAQIFAQACCgEAAgo0mAAA -Dg4AAA4OAAAODgAADg4AAA4OAAA4mAAABwAAAAcAAAALAAAACwAAAAsAAABImAAAbdoY -AG3aGAB1yhgAdcoYAHXKGABQmAAA4LToDeC06A3gtOgN4LToDeC06A1YmAAALg2Afi4N -gH4uDeh+Lg3ofi4NgH5cmAAAXmY3MV5mNzFeZjcxXmY3MV5mNzFsmAAAgbAMBYGwDAWB -sAwFgbAMBYGwDAUUmQAA0AcAANAHAABMBAAAmAgAANAHAABEmQAAIBC49yAQuPcQDbj3 -EBC49xAQuPcEogAAAAAAAAAAAAAIAAAACAAAAAgAAAAIogAAiGe+1ohnvtaIZz7QiGc+ -0IhnPtAMogAAQAEsZEABLGRgwUJkYMFCZGDBQmQcogAACoCDGAqAgxgKgHMYCoCDGAqA -gxgwEgAAAAAAACyYAAD+LwIAPJgAAAABAgBMmAAAPGGEEjCZAACCSAAAQJkAAAQAAAB0 -mQAAAAAAACiiAAC1AQAAPKIAAK+JyBMEmwAAAQAAAAibAAACAAAADJsAAAMAAAAQmwAA -BAAAABSbAAAFAAAAGJsAAAgAAAAcmwAACQAAACCbAAAKAAAAJJsAAAsAAAAsmwAADQAA -ADCbAAAQAAAANJsAABEAAAA8mwAAEwAAAECbAAAUAAAARJsAABUAAABImwAAGAAAAEyb -AAAZAAAAUJsAABoAAABUmwAAGwAAAFibAAAcAAAAXJsAAB0AAABgmwAAIAAAAGibAAAi -AAAAbJsAACMAAABwmwAAJAAAAHSbAAAlAAAAeJsAACgAAAB8mwAAKQAAAICbAAAqAAAA -hJsAACsAAACImwAALAAAAJCbAAAwAAAAlJsAADEAAACYmwAAMgAAAKCbAAA0AAAApJsA -ADUAAAComwAANQAAAKybAAA1AAAAsJsAADUAAAC0mwAANQAAALibAAA1AAAAvJsAADUA -AADAmwAANQAAAMSbAAA1AAAAyJsAADUAAADMmwAANQAAANCbAAA1AAAA1JsAADUAAADY -mwAANQAAANybAAA1AAAA4JsAADUAAADkmwAANQAAAOibAAA1AAAA7JsAADUAAADwmwAA -NQAAAPSbAAA1AAAA+JsAABAAAAD8mwAAGgAAAAAAAAAAAAAAAJoAAAcAAAAHAAAABJoA -AEcAAABHAAAACJoAAIcAAACHAAAADJoAAKABAACgAQAAEJoAAOABAADgAQAAFJoAACAA -AAAgAAAAGJoAAGAAAABgAAAAHJoAAKEBAAChAQAAIJoAAOEBAADhAQAAJJoAACEAAAAh -AAAAKJoAAGEAAABhAAAALJoAAGIBAABiAQAAMJoAAKIBAACiAQAANJoAAOIBAADiAQAA -OJoAACIAAAAiAAAAPJoAAGIAAABiAAAAQJoAAGMBAABjAQAARJoAAKMBAACjAQAASJoA -AOMBAADjAQAATJoAACMAAAAjAAAAUJoAAGMAAABjAAAAVJoAAIQBAACEAQAAWJoAAMQB -AADEAQAAXJoAAAQAAAAEAAAAYJoAAOoBAAALAAAAZJoAACoAAABLAAAAaJoAAGoAAACL -AAAAbJoAAKoAAACsAQAAcJoAAKsBAADsAQAAdJoAAOsBAAAsAAAAeJoAACsAAAASAAAA -fJoAAGsAAABSAAAAgJoAAKsAAACSAAAAhJoAAKwBAACTAQAAiJoAAOwBAADTAQAAjJoA -ACwAAAATAAAAkJoAADoAAABTAAAAlJoAAHoAAACTAAAAmJoAALoAAACUAQAAnJoAALsB -AADUAQAAoJoAAPsBAAAUAAAApJoAADsAAAA6AAAAqJoAAHsAAAB6AAAArJoAALsAAAC6 -AAAAsJoAALwBAAC7AQAAtJoAAPwBAAD7AQAAuJoAADwAAAA7AAAAvJoAAHwAAAB7AAAA -wJoAALwAAAC7AAAAxJoAAPwAAAC8AQAAyJoAAPwAAAD8AQAAzJoAAPwAAAA8AAAA0JoA -APwAAAB8AAAA1JoAAPwAAAC8AAAA2JoAAPwAAAD8AAAA3JoAAPwAAAD8AAAA4JoAAPwA -AAD8AAAA5JoAAPwAAAD8AAAA6JoAAPwAAAD8AAAA7JoAAPwAAAD8AAAA8JoAAPwAAAD8 -AAAA9JoAAPwAAAD8AAAA+JoAAPwAAAD8AAAA/JoAAPwAAAD8AAAA1JgAACAAAADQmAAA -CAQGAwgEBwMIBAYDCAQGAwgEBwPcmAAAwMCgAMDAoADAwOAAwMDgAMDA4AAAAAAAAAAA -AJyYAAAAAAAPAAAADwAAAA8AAAAPAAAAD5yYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyY -AAAAAIAAAACAAAAAgAAAAIAAAACAAJyYAAAAACoAAAAqAAAAKgAAACoAAAAqAJyYAAAA -AAEAAAABAAAAAQAAAAEAAAABAJyYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyYAAAAABgA -AAAYAAAAGAAAABgAAAAYAJyYAAAAAGAAAABgAAAAbgAAAG4AAABuAJyYAAAAAMcAAADH -AAAAxwAAAMcAAADHAJyYAAAAAEsAAABLAAAASwAAAEsAAABLAJyYAAAAAEgEAABIBAAA -SAQAAEgEAABIBJyYAAAAAEwAAABMAAAATAAAAEwAAABMAJyYAAAAAOQAAADkAAAA5AAA -AOQAAADkAJyYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyYAAAAAPwAAAD8AAAA/AAAAPwA -AAD8AJyYAAAAAP8AAAD/AAAA/wAAAP8AAAD/AJyYAAAAAD8EAAA/BAAAPwQAAD8EAAA/ -BJyYAAAAAAwAAAAMAAAADAAAAAwAAAAMAJyYAAAAABkCAAAZAgAAGQIAABkCAAAZApyY -AAAAACQAAAAkAAAAJAAAACQAAAAkAJyYAAAAALQAAAC0AAAAtAAAALQAAAC0AJyYAAAA -AJkAAACZAAAAmQAAAJkAAACZAJyYAAAAAFAAAABQAAAAUAAAAFAAAABQAJyYAAAAACoA -AAAqAAAAKgAAACoAAAAqAJyYAAAAABIAAAASAAAAEgAAABIAAAASAJyYAAAAADLAAAAy -wAAAMsAAADLAAAAywJyYAAAAAHQBAAB0AQAAdAEAAHQBAAB0AZyYAAAAABEAAAARAAAA -EQAAABEAAAARAJyYAAAAACiGAAAohgAAKIYAACiGAAAohpyYAAAAAIQxAACEMQAAhDEA -AIQxAACEMZyYAACAAPIAgADyAIAA8gCAAPIAgADyAJyYAAAZACcAGQAnABkAJwAZACcA -GQAnAJyYAAADAAAAAwAAAAMAAAADAAAAAwAAAJyYAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AJyYAACyAAAAsgAAALIAAACyAAAAsgAAAJyYAACEILAAhCCwAIQgsACEILAAhCCwAJyY -AACkJUEApCVBAKQlQQCkJUEApCVBAJyYAAAgkhEAIJIRACCSEQAgkhEAIJIRAJyYAAAA -SBoAAEgaAABIGgAASBoAAEgaANiYAAAwAgsAMAILADACCwAwAgsAMAILAJyYAACUAAAA -lAAAAJQAAACUAAAAlAAAAJyYAACRAAAAkQAAAJEAAACRAAAAkQAAAJyYAAASAAAAEgAA -ABIAAAASAAAAEgAAAJyYAACAAAAAgAAAAIAAAACAAAAAgAAAAJyYAADZAAAA2QAAANkA -AADZAAAA2QAAAJyYAABgAAAAYAAAAGAAAABgAAAAYAAAAJyYAADwAAAA8AAAAPAAAADw -AAAA8AAAAJyYAACiAAAAogAAAKIAAACiAAAAogAAAJyYAABSAAAAUgAAAFIAAABSAAAA -UgAAAJyYAADUAAAA1AAAANQAAADUAAAA1AAAAJyYAADMFAAAzBQAAMwUAADMFAAAzBQA -AJyYAACMBAAAjAQAAIwEAACMBAAAjAQAAMSYAAADAAAAAwAAAAMAAAADAAAAAwAAAOhK -AQDtSgEA1EoBANhKAQDoSgEA6EoBANxKAQDgSgEAAAAAAAAAAAAwAAAAFQAAABUAAAAV -AAAAFQAAABUAAAAcgAAAp5ONEs8TiAmVE+AEqxPgEs8TiAkomAAAAQACCgEAAgoAAAIF -AQACCgEAAgo0mAAAAA4AAAAOAAAADgAAAA4AAAAOAAA4mAAAAgAAAAIAAAAKAAAACgAA -AAoAAABImAAAbdoYAG3aGABkahoAZGoaAGRqGgBQmAAA4LToDeC06A3asOgN2rCYDNqw -6A1YmAAALg2Afi4NgH4uDeh+Lg3Ifi4NgH5cmAAAXmY3MV5mNzFeZjcxXmA5MV5mNzFs -mAAAgbAMBYGwDAWBsAwFgbAMBYGwDAUUmQAA0AcAANAHAABMBAAAmAgAANAHAABEmQAA -ABC49wAQuPcADbj3ABC49wAQuPcEogAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIogAAiGe+ -1ohnvtaIZz7QiGc+0IhnPtAMogAAQAEsAEABLABAwUIAQMFCAEDBQgAcogAACoCDGAqA -gxgKgGMYCoCDGAqAgxgwEgAA4AMAAGCAAAAPAAAAGIEAAAAAAAAcgQAAAAAAACCBAAAA -AAAAJIEAAAAAAAAogQAAAAAAACyBAAAAAAAAMIEAAAAAAAA0gQAAAAAAADiBAAAAAAAA -PIEAAAAAAABAgQAAqAAAgESBAAAAAAAALJgAAACgAAA8mAAAAAQgAEyYAAA8I4QScJgA -AB8AAAB0mAAAgAAAAHiYAAAOAAAAgJkAAAAAAACEmQAAAACAAqCZAAAAAAAA4JkAAAAA -AADkmQAAqqqqquiZAAB4ZEY87JkAAKoAAADwmQAADAAAAPSZAAD/AAAA+JkAABQAAAAo -ogAAtQkAADyiAACviciTTKIAAAEAAABQogAAAKAAAFSiAAAAAAAAWKIAAIBTxwxcogAA -AQ8PD2CiAAABD2lfZKIAABGKQQBoogAAAAAAAGyiAABqwTAMcKIAACAIggB0ogAAqnwb -AHiiAADOOeccfKIAAM4BFwUAowAAAAABGASjAAACJgMwCKMAAAY+B0gMowAACkwLVhCj -AAAPYBpkFKMAABtuT3gYowAAWnyPhhyjAABbhs+OIKMAAA+XT50kowAAj6HPpSijAAAf -r1+1LKMAAJ+5370wowAAP8d/zTSjAAC/0f/VOKMAAAAAAAA8owAAAAAAAECjAAAAAAAA -RKMAAAAAAABIowAA////P0yjAAD///8/UKMAAP///z9UowAA//8DAFijAAAfqqh5XKMA -AA9CbAZgowAAByIoD2SjAACFFmAXaKMAAAQRgB9sowAAAwygN3CjAACDCMQ/dKMAAAMI -wFd4owAAggbYX3yjAACCBOB/gKMAALp7PH+EowAA8H8w8wSbAAABAAAACJsAAAIAAAAM -mwAAAwAAABCbAAAEAAAAFJsAAAUAAAAYmwAACAAAABybAAAJAAAAIJsAAAoAAAAkmwAA -CwAAACybAAANAAAAMJsAABAAAAA0mwAAEQAAADybAAATAAAAQJsAABQAAABEmwAAFQAA -AEibAAAYAAAATJsAABkAAABQmwAAGgAAAFSbAAAbAAAAWJsAABwAAABcmwAAHQAAAGCb -AAAgAAAAaJsAACIAAABsmwAAIwAAAHCbAAAkAAAAdJsAACUAAAB4mwAAKAAAAHybAAAp -AAAAgJsAACoAAACEmwAAKwAAAIibAAAsAAAAkJsAADAAAACUmwAAMQAAAJibAAAyAAAA -oJsAADQAAACkmwAANQAAAKibAAA1AAAArJsAADUAAACwmwAANQAAALSbAAA1AAAAuJsA -ADUAAAC8mwAANQAAAMCbAAA1AAAAxJsAADUAAADImwAANQAAAMybAAA1AAAA0JsAADUA -AADUmwAANQAAANibAAA1AAAA3JsAADUAAADgmwAANQAAAOSbAAA1AAAA6JsAADUAAADs -mwAANQAAAPCbAAA1AAAA9JsAADUAAAD4mwAAEAAAAPybAAAaAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAJoAAAAAAAAAAAAABJoAAAAAAABAAAAACJoAAAAAAACAAAAADJoA -AAAAAACBAQAAEJoAAAAAAADBAQAAFJoAAAAAAAABAAAAGJoAAAAAAABBAAAAHJoAAAAA -AACBAAAAIJoAAAAAAABoAQAAJJoAAAAAAACoAQAAKJoAAAAAAADoAQAALJoAAAAAAAAo -AAAAMJoAAAAAAABoAAAANJoAAAAAAACJAQAAOJoAAAAAAADJAQAAPJoAAAAAAAAJAAAA -QJoAAAAAAABJAAAARJoAAAAAAACJAAAASJoAAAAAAACQAQAATJoAAAAAAADQAQAAUJoA -AAAAAAAQAAAAVJoAAAAAAABQAAAAWJoAAAAAAACQAAAAXJoAAAAAAACRAQAAYJoAAAAA -AADRAQAAZJoAAAAAAAARAAAAaJoAAAAAAABRAAAAbJoAAAAAAACRAAAAcJoAAAAAAAB4 -AQAAdJoAAAAAAAC4AQAAeJoAAAAAAAD4AQAAfJoAAAAAAAA4AAAAgJoAAAAAAAB4AAAA -hJoAAAAAAACZAQAAiJoAAAAAAADZAQAAjJoAAAAAAAAZAAAAkJoAAAAAAABZAAAAlJoA -AAAAAACZAAAAmJoAAAAAAADZAAAAnJoAAAAAAAD5AAAAoJoAAAAAAAD5AAAApJoAAAAA -AAD5AAAAqJoAAAAAAAD5AAAArJoAAAAAAAD5AAAAsJoAAAAAAAD5AAAAtJoAAAAAAAD5 -AAAAuJoAAAAAAAD5AAAAvJoAAAAAAAD5AAAAwJoAAAAAAAD5AAAAxJoAAAAAAAD5AAAA -yJoAAAAAAAD5AAAAzJoAAAAAAAD5AAAA0JoAAAAAAAD5AAAA1JoAAAAAAAD5AAAA2JoA -AAAAAAD5AAAA3JoAAAAAAAD5AAAA4JoAAAAAAAD5AAAA5JoAAAAAAAD5AAAA6JoAAAAA -AAD5AAAA7JoAAAAAAAD5AAAA8JoAAAAAAAD5AAAA9JoAAAAAAAD5AAAA+JoAAAAAAAD5 -AAAA/JoAAAAAAAD5AAAA1JgAACAAAADQmAAACBQAAggUAQIIFAACCBQAAggUAQLcmAAA -wCCgAMAgoADAIOAAwCDgAMAg4AAAAAAAAAAAAJyYAAAAAADwAAAA8AAAAPAAAADwAAAA -8JyYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyYAAAAAAADAAAAAwAAAAMAAAADAAAAA5yY -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyYAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAJyYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyYAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAJyYAAAAAEBAAABAQAAAQEAAAEBAAABAQJyYAAAAAAVlAAAF -ZQAABWUAAAVlAAAFZZyYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyYAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAJyYAAAAAEIAAABCAAAAQgAAAEIAAABCAJyYAAAAALUAAAC1AAAAtQAA -ALUAAAC1AJyYAAAAAAMAAAADAAAAAwAAAAMAAAADAJyYAAAAAPcAAAD3AAAA9wAAAPcA -AAD3AJyYAAAAAJ0AAACdAAAAnQAAAJ0AAACdAJyYAAAAACIAAAAiAAAAIgAAACIAAAAi -AJyYAAAAACIEAAAiBAAAIgQAACIEAAAiBJyYAAAYACMAGAAjABgAIwAYACMAGAAjAJyY -AAAAACgAAAAoAGAAKABgACgAYAAoAJyYAADAAFAAwABQAMMAUADDAFAAwwBQAJyYAAB/ -AAQAfwAEAH8ABAB/AAQAfwAEAJyYAABYBAAAWAQAAFgEAABYBAAAWAQAAJyYAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAJyYAAAAwAAAAMAAAADAAAAAwAAAAMAAANiYAAAwAkAAMAJA -ADACQAAwAkAAMAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyYAAAAZAAAAGQAAABk +AMYAAAD9AAAA/JoAAMYAAAD9AAAAAQAAAEYAAABgAAAAAQAAAEYAAABhAAAAAQAAAEYA +AABiAAAAAQAAAEYAAABjAAAAAQAAAEYAAABkAAAAAQAAAEYAAABlAAAAAQAAAEYAAABm +AAAAAQAAAEYAAABnAAAAAQAAAEYAAABoAAAAAQAAAEYAAABpAAAAAQAAAEYAAABqAAAA +AQAAAEYAAABrAAAAAQAAAEYAAABsAAAAAQAAAEYAAAB0AAAAAQAAAEYAAAB0AAAAAQAA +AEYAAAB0AAAAAQAAAEYAAAB0AAAAAQAAAEYAAAB0AAAAAQAAAEYAAAB0AAAAAQAAAEYA +AAB0AAAAAQAAAEYAAAB0AAAAAQAAAEYAAAB1AAAAAQAAAEYAAAB2AAAAAQAAAEYAAAB3 +AAAAAQAAAEYAAAB4AAAAAQAAAEYAAAB5AAAAAQAAAEYAAAB6AAAAAQAAAEYAAAB7AAAA +AQAAAEYAAAB8AAAAAQAAAEYAAAB9AAAAAQAAAEYAAAB+AAAAAQAAAEYAAAB/AAAAAQAA +AEYAAACAAAAAAQAAAEQAAAB8AAAAAQAAAEYAAACIAAAAAQAAAEYAAACMAAAAAQAAAEYA +AACQAAAAAQAAAEYAAACUAAAAAQAAAEYAAACYAAAAAQAAAEYAAACcAAAAAQAAAEYAAACg +AAAAAQAAAEYAAACkAAAAAQAAAEYAAACoAAAAAQAAAEYAAACsAAAAAQAAAEYAAACwAAAA +AQAAAEYAAAC0AAAAAAIHAAAAAAAAAAAAAAAAAAAAAAAAAAAAnhYLAGIWCgA6FgkAHBYI +AOoVBwCaFQUAShUEAAMVAgBZFAAAAAABAAAAAwAGAAkAPwAAAEO/AABDvwAAbb8AAG2/ +AACXvwAAl78AAMG/AADBvwAAAAAAAAAAAAAAAAAACQAAAAQAAAAEAAEAAQABAAYAAABG +RzgAAAAAAAAAAAAAAAAABAAAAAEAAQAEAAAARkc3AAAAAAAAAAAAAAAAAAMAAQABAAEA +AwAAAEZHNgAAAAAAAAAAAAAAAAAEAAAAAAABAAEAAABGRzUAAAAAAAAAAAAAAAAABAAB +AAEAAAAAAAAARkc0AAAAAAAAAAAAAAAAAAQAAAABAAAA/v///0ZHMwAAAAAAAAAAAAAA +AAADAAEAAQAAAP3///9GRzIAAAAAAAAAAAAAAAAABAAAAAAAAAD8////RkcxAAAAAAAA +AAAAAAAAAAIAAQABAAAA+v///0ZHMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAFBBUGQAiBQYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsCY8JtAkICWwJtAnJ////yf///8n/ +///J////wv////L////y////8v////L////0////wP///8D////A////wP///7r///+y +////sv///7L///+y////sP///////////wAAQusAAO7qAAD76gAAgOsAABTrAAB06wAA +AAAAAAAAAAAgAAAAIAAAAEAAAABAAAAAAAAGAAAABgAAAAYAnhYLAGIWCgA6FgkAHBYI +AOoVBwCaFQUAShUEAAMVAgBZFAAAuAsBAAAAAAB0/AAA7fkAADL6AABW+gAAkPoAAKL6 +AAB0/AAAdPwAAHT8AAB0/AAAdPwAANT6AAB0/AAAdPwAAHT8AAB0/AAA5voAABP7AAB0 +/AAAYvsAAI37AAB0/AAAYPoAAHT8AAB0/AAAdPwAAMz7AADh+wAAdPwAAPv7AABr/AAA +a/wAAEX8AABN/AAAVfwAAF38AABl/AAAAAAAAAYAAAABAAAAAgAAAAMAAAAEAAAABQAA +APD9AADw/QAAr/wAAPD9AADw/QAA0/wAAPD9AADw/QAA8P0AAPD9AADw/QAA+/wAAPD9 +AADw/QAA8P0AAPD9AAAU/QAA8P0AAPD9AAAs/QAAz/0AAPD9AADw/QAA8P0AAPD9AADw +/QAAUP0AAFD9AADw/QAAr/0AAAAAAAAAAAAAAAAAAEAQAAAP/C8AD/wvAB/8LwAP/C8A +D/wvAEQQAAAP/C8AD/wvAB/8LwAP/C8AD/wvAEgQAAAP/C8AD/wvAB/8LwAP/C8AD/wv +AEwQAAAP/C8AD/wvAB/8LwAP/C8AD/wvAFAQAAAP/C8AD/wvAB/8LwAP/C8AD/wvAFQQ +AAAP/C8AD/wvAB/8LwAP/C8AD/wvAFgQAAAP/C8AD/wvAB/8LwAP/C8AD/wvAFwQAAAP +/C8AD/wvAB/8LwAP/C8AD/wvAGAQAAAP/C8AD/wvAB/8LwAP/C8AD/wvAGQQAAAP/C8A +D/wvAB/8LwAP/C8AD/wvADAQAAAwAgAA4AEAALAAAABgAQAA4AEAAHAQAABoAQAA4AEA +ALgBAACMAQAA4AEAALAQAABgDgAAgBEAABwfAAA4PgAAgBEAAPAQAADgoAAAaEABAIBY +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 +qw/gEs8PiAkomAAAAQACCgEAAgoAAQEFAQACCgEAAgo0mAAADg4AAA4OAAAODgAADg4A +AA4OAAA4mAAABwAAAAcAAAALAAAACwAAAAsAAABImAAAWtoYAFraGABpyhgAacoYAGnK +GABQmAAA4LToDeC06A3gtOgN4LToDeC06A1YmAAALg2Afi4NgH4uTeh+Lk3ofi4NgH5c +mAAAXmY3MV5mNzFeZjcxXmY3MV5hNzFsmAAAgbAMBYGwDAWBsAwFgLAMBYCwDAUUmQAA +ECcAABAnAAB8FQAA+CoAABAnAABEmQAAIBC49yAQuPcgDbj3IBC49yAQuPcMogAAakEs +ZGpBLGRqQUBkakFAZGpBQGQcogAACoCDGAqAgxgKgHMYCoCDGAqAgxgAAAAAAAAAAAAA +AAAAAAAAMBIAAAAAAAAImAAAAAAAACyYAAD+LwIAPJgAAAABAgBMmAAAPGGEEjCZAACD +SAAAQJkAAAQAAABYmQAA/wAAAHSZAAAAAAAA+JkAABgAAAAEogAAAAAAAAiiAACIZz7Q +KKIAALUBAAA8ogAAr4nIEwSbAAAgAAAACJsAABAAAAAMmwAAMAAAABCbAAAIAAAAFJsA +ACgAAAAYmwAABAAAABybAAAkAAAAIJsAABQAAAAkmwAANAAAACybAAAsAAAAMJsAAAIA +AAA0mwAAIgAAADybAAAyAAAAQJsAAAoAAABEmwAAKgAAAEibAAAGAAAATJsAACYAAABQ +mwAAFgAAAFSbAAA2AAAAWJsAAA4AAABcmwAALgAAAGCbAAABAAAAaJsAABEAAABsmwAA +MQAAAHCbAAAJAAAAdJsAACkAAAB4mwAABQAAAHybAAAlAAAAgJsAABUAAACEmwAANQAA +AIibAAANAAAAkJsAAAMAAACUmwAAIwAAAJibAAATAAAAoJsAAAsAAACkmwAAKwAAAKib +AAArAAAArJsAACsAAACwmwAAKwAAALSbAAArAAAAuJsAACsAAAC8mwAAKwAAAMCbAAAr +AAAAxJsAACsAAADImwAAKwAAAMybAAArAAAA0JsAACsAAADUmwAAKwAAANibAAArAAAA +3JsAACsAAADgmwAAKwAAAOSbAAArAAAA6JsAACsAAADsmwAAKwAAAPCbAAArAAAA9JsA +ACsAAAD4mwAAAgAAAPybAAAWAAAAnJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnJgAAAAA +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 +AAABAAAARgAAAGEAAAABAAAARgAAAGIAAAABAAAARgAAAGMAAAABAAAARgAAAGQAAAAB +AAAARgAAAGUAAAABAAAARgAAAGYAAAABAAAARgAAAGcAAAABAAAARgAAAGgAAAABAAAA +RgAAAGkAAAABAAAARgAAAGoAAAABAAAARgAAAGsAAAABAAAARgAAAGwAAAABAAAARgAA +AHQAAAABAAAARgAAAHQAAAABAAAARgAAAHQAAAABAAAARgAAAHQAAAABAAAARgAAAHQA +AAABAAAARgAAAHQAAAABAAAARgAAAHQAAAABAAAARgAAAHQAAAABAAAARgAAAHUAAAAB +AAAARgAAAHYAAAABAAAARgAAAHcAAAABAAAARgAAAHgAAAABAAAARgAAAHkAAAABAAAA +RgAAAHoAAAABAAAARgAAAHsAAAABAAAARgAAAHwAAAABAAAARgAAAH0AAAABAAAARgAA +AH4AAAABAAAARgAAAH8AAAABAAAARgAAAIAAAAABAAAARAAAAHwAAAABAAAARgAAAIgA +AAABAAAARgAAAIwAAAABAAAARgAAAJAAAAABAAAARgAAAJQAAAABAAAARgAAAJgAAAAB +AAAARgAAAJwAAAABAAAARgAAAKAAAAABAAAARgAAAKQAAAABAAAARgAAAKgAAAABAAAA +RgAAAKwAAAABAAAARgAAALAAAAABAAAARgAAALQAAACJaAEAbGgBAHBoAQB0aAEAhGgB +AIRoAQB4aAEAfGgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJ4WBgBiFgQAOhYDABwW +AgDqFQEAmhUAAEoVAAADFQEAWRQDALgLBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAw +AAAAFYAAABWAAAAVgAAAFYAAABWAAAAcgAAAp5ONEs8TiAmVE+AEqxPgEs8TiAkomAAA +AQACCgEAAgoAAQIFAQACCgEAAgo0mAAADg4AAA4OAAAODgAADg4AAA4OAAA4mAAABwAA +AAcAAAALAAAACwAAAAsAAABImAAAbdoYAG3aGAB1yhgAdcoYAHXKGABQmAAA4LToDeC0 +6A3gtOgN4LToDeC06A1YmAAALg2Afi4NgH4uDeh+Lg3ofi4NgH5cmAAAXmY3MV5mNzFe +ZjcxXmY3MV5mNzFsmAAAgbAMBYGwDAWBsAwFgbAMBYGwDAUUmQAA0AcAANAHAABMBAAA +mAgAANAHAABEmQAAIBC49yAQuPcQDbj3EBC49xAQuPcEogAAAAAAAAAAAAAIAAAACAAA +AAgAAAAIogAAiGe+1ohnvtaIZz7QiGc+0IhnPtAMogAAQAEsZEABLGRgwUJkYMFCZGDB +QmQcogAACoCDGAqAgxgKgHMYCoCDGAqAgxgwEgAAAAAAAAiYAAAAAAAALJgAAP4vAgA8 +mAAAAAECAEyYAAA8YYQSMJkAAIJIAABAmQAABAAAAFiZAAD/AAAAdJkAAAAAAAAoogAA +tQEAADyiAACvicgTBJsAAAEAAAAImwAAAgAAAAybAAADAAAAEJsAAAQAAAAUmwAABQAA +ABibAAAIAAAAHJsAAAkAAAAgmwAACgAAACSbAAALAAAALJsAAA0AAAAwmwAAEAAAADSb +AAARAAAAPJsAABMAAABAmwAAFAAAAESbAAAVAAAASJsAABgAAABMmwAAGQAAAFCbAAAa +AAAAVJsAABsAAABYmwAAHAAAAFybAAAdAAAAYJsAACAAAABomwAAIgAAAGybAAAjAAAA +cJsAACQAAAB0mwAAJQAAAHibAAAoAAAAfJsAACkAAACAmwAAKgAAAISbAAArAAAAiJsA +ACwAAACQmwAAMAAAAJSbAAAxAAAAmJsAADIAAACgmwAANAAAAKSbAAA1AAAAqJsAADUA +AACsmwAANQAAALCbAAA1AAAAtJsAADUAAAC4mwAANQAAALybAAA1AAAAwJsAADUAAADE +mwAANQAAAMibAAA1AAAAzJsAADUAAADQmwAANQAAANSbAAA1AAAA2JsAADUAAADcmwAA +NQAAAOCbAAA1AAAA5JsAADUAAADomwAANQAAAOybAAA1AAAA8JsAADUAAAD0mwAANQAA +APibAAAQAAAA/JsAABoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmgAABwAAAAcA +AAAEmgAARwAAAEcAAAAImgAAhwAAAIcAAAAMmgAAoAEAAKABAAAQmgAA4AEAAOABAAAU +mgAAIAAAACAAAAAYmgAAYAAAAGAAAAAcmgAAoQEAAKEBAAAgmgAA4QEAAOEBAAAkmgAA +IQAAACEAAAAomgAAYQAAAGEAAAAsmgAAYgEAAGIBAAAwmgAAogEAAKIBAAA0mgAA4gEA +AOIBAAA4mgAAIgAAACIAAAA8mgAAYgAAAGIAAABAmgAAYwEAAGMBAABEmgAAowEAAKMB +AABImgAA4wEAAOMBAABMmgAAIwAAACMAAABQmgAAYwAAAGMAAABUmgAAhAEAAIQBAABY +mgAAxAEAAMQBAABcmgAABAAAAAQAAABgmgAA6gEAAAsAAABkmgAAKgAAAEsAAABomgAA +agAAAIsAAABsmgAAqgAAAKwBAABwmgAAqwEAAOwBAAB0mgAA6wEAACwAAAB4mgAAKwAA +ABIAAAB8mgAAawAAAFIAAACAmgAAqwAAAJIAAACEmgAArAEAAJMBAACImgAA7AEAANMB +AACMmgAALAAAABMAAACQmgAAOgAAAFMAAACUmgAAegAAAJMAAACYmgAAugAAAJQBAACc +mgAAuwEAANQBAACgmgAA+wEAABQAAACkmgAAOwAAADoAAAComgAAewAAAHoAAACsmgAA +uwAAALoAAACwmgAAvAEAALsBAAC0mgAA/AEAAPsBAAC4mgAAPAAAADsAAAC8mgAAfAAA +AHsAAADAmgAAvAAAALsAAADEmgAA/AAAALwBAADImgAA/AAAAPwBAADMmgAA/AAAADwA +AADQmgAA/AAAAHwAAADUmgAA/AAAALwAAADYmgAA/AAAAPwAAADcmgAA/AAAAPwAAADg +mgAA/AAAAPwAAADkmgAA/AAAAPwAAADomgAA/AAAAPwAAADsmgAA/AAAAPwAAADwmgAA +/AAAAPwAAAD0mgAA/AAAAPwAAAD4mgAA/AAAAPwAAAD8mgAA/AAAAPwAAADUmAAAIAAA +ANCYAAAIBAYDCAQHAwgEBgMIBAYDCAQHA9yYAADAIKAAwCCgAMAg4ADAIOAAwCDgAAAA +AAAAAAAAnJgAAAAAAA8AAAAPAAAADwAAAA8AAAAPnJgAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAnJgAAAAAgAAAAIAAAACAAAAAgAAAAIAAnJgAAAAAKgAAACoAAAAqAAAAKgAAACoA +nJgAAAAAAQAAAAEAAAABAAAAAQAAAAEAnJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnJgA +AAAAGAAAABgAAAAYAAAAGAAAABgAnJgAAAAAYAAAAGAAAABuAAAAbgAAAG4AnJgAAAAA +xwAAAMcAAADHAAAAxwAAAMcAnJgAAAAASwAAAEsAAABLAAAASwAAAEsAnJgAAAAASAQA +AEgEAABIBAAASAQAAEgEnJgAAAAATAAAAEwAAABMAAAATAAAAEwAnJgAAAAA5AAAAOQA +AADkAAAA5AAAAOQAnJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnJgAAAAA/AAAAPwAAAD8 +AAAA/AAAAPwAnJgAAAAA/wAAAP8AAAD/AAAA/wAAAP8AnJgAAAAAPwQAAD8EAAA/BAAA +PwQAAD8EnJgAAAAADAAAAAwAAAAMAAAADAAAAAwAnJgAAAAAGQIAABkCAAAZAgAAGQIA +ABkCnJgAAAAAJAAAACQAAAAkAAAAJAAAACQAnJgAAAAAtAAAALQAAAC0AAAAtAAAALQA +nJgAAAAAmQAAAJkAAACZAAAAmQAAAJkAnJgAAAAAUAAAAFAAAABQAAAAUAAAAFAAnJgA +AAAAKgAAACoAAAAqAAAAKgAAACoAnJgAAAAAEgAAABIAAAASAAAAEgAAABIAnJgAAAAA +MsAAADLAAAAywAAAMsAAADLAnJgAAAAAdAEAAHQBAAB0AQAAdAEAAHQBnJgAAAAAEQAA +ABEAAAARAAAAEQAAABEAnJgAAAAAKIYAACiGAAAohgAAKIYAACiGnJgAAAAAhDEAAIQx +AACEMQAAhDEAAIQxnJgAAIAA8gCAAPIAgADyAIAA8gCAAPIAnJgAABkAJwAZACcAGQAn +ABkAJwAZACcAnJgAAAMAAAADAAAAAwAAAAMAAAADAAAAnJgAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAnJgAALIAAACyAAAAsgAAALIAAACyAAAAnJgAAIQgsACEILAAhCCwAIQgsACE +ILAAnJgAAKQlQQCkJUEApCVBAKQlQQCkJUEAnJgAACCSEQAgkhEAIJIRACCSEQAgkhEA +nJgAAABIGgAASBoAAEgaAABIGgAASBoA2JgAADACCwAwAgsAMAILADACCwAwAgsAnJgA +AJQAAACUAAAAlAAAAJQAAACUAAAAnJgAAJEAAACRAAAAkQAAAJEAAACRAAAAnJgAABIA +AAASAAAAEgAAABIAAAASAAAAnJgAAIAAAACAAAAAgAAAAIAAAACAAAAAnJgAANkAAADZ +AAAA2QAAANkAAADZAAAAnJgAAGAAAABgAAAAYAAAAGAAAABgAAAAnJgAAPAAAADwAAAA +8AAAAPAAAADwAAAAnJgAAKIAAACiAAAAogAAAKIAAACiAAAAnJgAAFIAAABSAAAAUgAA +AFIAAABSAAAAnJgAANQAAADUAAAA1AAAANQAAADUAAAAnJgAAMwUAADMFAAAzBQAAMwU +AADMFAAAnJgAAIwEAACMBAAAjAQAAIwEAACMBAAAxJgAAAMAAAADAAAAAwAAAAMAAAAD +AAAAKHoBAC16AQAUegEAGHoBACh6AQAoegEAHHoBACB6AQAAAAAAAAAAADAAAAAVAAAA +FQAAABUAAAAVAAAAFQAAAByAAACnk40SzxOICZUT4ASrE+ASzxOICSiYAAABAAIKAQAC +CgAAAgUBAAIKAQACCjSYAAAADgAAAA4AAAAOAAAADgAAAA4AADiYAAACAAAAAgAAAAoA +AAAKAAAACgAAAEiYAABt2hgAbdoYAGRqGgBkahoAZGoaAFCYAADgtOgN4LToDdqw6A3a +sJgM2rDoDViYAAAuDYB+Lg2Afi4N6H4uDch+Lg2AflyYAABeZjcxXmY3MV5mNzFeYDkx +XmY3MWyYAACBsAwFgbAMBYGwDAWBsAwFgbAMBRSZAADQBwAA0AcAAEwEAACYCAAA0AcA +AESZAAAAELj3ABC49wANuPcAELj3ABC49wSiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAii +AACIZ77WiGe+1ohnPtCIZz7QiGc+0AyiAABAASwAQAEsAEDBQgBAwUIAQMFCAByiAAAK +gIMYCoCDGAqAYxgKgIMYCoCDGDASAADgAwAAYIAAAA8AAAAYgQAAAAAAAByBAAAAAAAA +IIEAAAAAAAAkgQAAAAAAACiBAAAAAAAALIEAAAAAAAAwgQAAAAAAADSBAAAAAAAAOIEA +AAAAAAA8gQAAAAAAAECBAACoAACARIEAAAAAAAAImAAAAAAAACyYAAAAoAAAPJgAAAAE +IABMmAAAPCOEEnCYAAAfAAAAdJgAAIAAAAB4mAAADgAAAFiZAAD/AAAAgJkAAAAAAACE +mQAAAACAAqCZAAAAAAAA4JkAAAAAAADkmQAAqqqqquiZAAB4ZEY87JkAAKoAAADwmQAA +DAAAAPSZAAD/AAAA+JkAABQAAAAoogAAtQkAADyiAACviciTTKIAAAEAAABQogAAAKAA +AFSiAAAAAAAAWKIAAIBTxwxcogAAAQ8PD2CiAAABD2lfZKIAABGKQQBoogAAAAAAAGyi +AABqwTAMcKIAACAIggB0ogAAqnwbAHiiAADOOeccfKIAAM4BFwUAowAAAAABGASjAAAC +JgMwCKMAAAY+B0gMowAACkwLVhCjAAAPYBpkFKMAABtuT3gYowAAWnyPhhyjAABbhs+O +IKMAAA+XT50kowAAj6HPpSijAAAfr1+1LKMAAJ+5370wowAAP8d/zTSjAAC/0f/VOKMA +AAAAAAA8owAAAAAAAECjAAAAAAAARKMAAAAAAABIowAA////P0yjAAD///8/UKMAAP// +/z9UowAA//8DAFijAAAfqqh5XKMAAA9CbAZgowAAByIoD2SjAACFFmAXaKMAAAQRgB9s +owAAAwygN3CjAACDCMQ/dKMAAAMIwFd4owAAggbYX3yjAACCBOB/gKMAALp7PH+EowAA +8H8w8wSbAAABAAAACJsAAAIAAAAMmwAAAwAAABCbAAAEAAAAFJsAAAUAAAAYmwAACAAA +ABybAAAJAAAAIJsAAAoAAAAkmwAACwAAACybAAANAAAAMJsAABAAAAA0mwAAEQAAADyb +AAATAAAAQJsAABQAAABEmwAAFQAAAEibAAAYAAAATJsAABkAAABQmwAAGgAAAFSbAAAb +AAAAWJsAABwAAABcmwAAHQAAAGCbAAAgAAAAaJsAACIAAABsmwAAIwAAAHCbAAAkAAAA +dJsAACUAAAB4mwAAKAAAAHybAAApAAAAgJsAACoAAACEmwAAKwAAAIibAAAsAAAAkJsA +ADAAAACUmwAAMQAAAJibAAAyAAAAoJsAADQAAACkmwAANQAAAKibAAA1AAAArJsAADUA +AACwmwAANQAAALSbAAA1AAAAuJsAADUAAAC8mwAANQAAAMCbAAA1AAAAxJsAADUAAADI +mwAANQAAAMybAAA1AAAA0JsAADUAAADUmwAANQAAANibAAA1AAAA3JsAADUAAADgmwAA +NQAAAOSbAAA1AAAA6JsAADUAAADsmwAANQAAAPCbAAA1AAAA9JsAADUAAAD4mwAAEAAA +APybAAAaAAAAAAAAAAAAAAAAmgAAAAAAAAAAAAAEmgAAAAAAAEAAAAAImgAAAAAAAIAA +AAAMmgAAAAAAAIEBAAAQmgAAAAAAAMEBAAAUmgAAAAAAAAEAAAAYmgAAAAAAAEEAAAAc +mgAAAAAAAIEAAAAgmgAAAAAAAGgBAAAkmgAAAAAAAKgBAAAomgAAAAAAAOgBAAAsmgAA +AAAAACgAAAAwmgAAAAAAAGgAAAA0mgAAAAAAAIkBAAA4mgAAAAAAAMkBAAA8mgAAAAAA +AAkAAABAmgAAAAAAAEkAAABEmgAAAAAAAIkAAABImgAAAAAAAJABAABMmgAAAAAAANAB +AABQmgAAAAAAABAAAABUmgAAAAAAAFAAAABYmgAAAAAAAJAAAABcmgAAAAAAAJEBAABg +mgAAAAAAANEBAABkmgAAAAAAABEAAABomgAAAAAAAFEAAABsmgAAAAAAAJEAAABwmgAA +AAAAAHgBAAB0mgAAAAAAALgBAAB4mgAAAAAAAPgBAAB8mgAAAAAAADgAAACAmgAAAAAA +AHgAAACEmgAAAAAAAJkBAACImgAAAAAAANkBAACMmgAAAAAAABkAAACQmgAAAAAAAFkA +AACUmgAAAAAAAJkAAACYmgAAAAAAANkAAACcmgAAAAAAAPkAAACgmgAAAAAAAPkAAACk +mgAAAAAAAPkAAAComgAAAAAAAPkAAACsmgAAAAAAAPkAAACwmgAAAAAAAPkAAAC0mgAA +AAAAAPkAAAC4mgAAAAAAAPkAAAC8mgAAAAAAAPkAAADAmgAAAAAAAPkAAADEmgAAAAAA +APkAAADImgAAAAAAAPkAAADMmgAAAAAAAPkAAADQmgAAAAAAAPkAAADUmgAAAAAAAPkA +AADYmgAAAAAAAPkAAADcmgAAAAAAAPkAAADgmgAAAAAAAPkAAADkmgAAAAAAAPkAAADo +mgAAAAAAAPkAAADsmgAAAAAAAPkAAADwmgAAAAAAAPkAAAD0mgAAAAAAAPkAAAD4mgAA +AAAAAPkAAAD8mgAAAAAAAPkAAADUmAAAIAAAANCYAAAIFAACCBQBAggUAAIIFAACCBQB +AtyYAADAIKAAwCCgAMAg4ADAIOAAwCDgAAAAAAAAAAAAnJgAAAAAAPAAAADwAAAA8AAA +APAAAADwnJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnJgAAAAAAAMAAAADAAAAAwAAAAMA +AAADnJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +nJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnJgA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAnJgAAAAAQEAAAEBAAABAQAAAQEAAAEBAnJgAAAAA +BWUAAAVlAAAFZQAABWUAAAVlnJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnJgAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAnJgAAAAAQgAAAEIAAABCAAAAQgAAAEIAnJgAAAAAtQAAALUA +AAC1AAAAtQAAALUAnJgAAAAAAwAAAAMAAAADAAAAAwAAAAMAnJgAAAAA9wAAAPcAAAD3 +AAAA9wAAAPcAnJgAAAAAnQAAAJ0AAACdAAAAnQAAAJ0AnJgAAAAAIgAAACIAAAAiAAAA +IgAAACIAnJgAAAAAIgQAACIEAAAiBAAAIgQAACIEnJgAABgAIwAYACMAGAAjABgAIwAY +ACMAnJgAAAAAKAAAACgAYAAoAGAAKABgACgAnJgAAMAAUADAAFAAwwBQAMMAUADDAFAA +nJgAAH8ABAB/AAQAfwAEAH8ABAB/AAQAnJgAAFgEAABYBAAAWAQAAFgEAABYBAAAnJgA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAnJgAAADAAAAAwAAAAMAAAADAAAAAwAAA2JgAADAC +QAAwAkAAMAJAADACQAAwAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnJgAAABkAAAA +ZAAAAGQAAABkAAAAZAAAnJgAAAAIAAAACAAAAAgAAAAIAAAACAAAzJgAAA4AAAAOAAAA +DgAAAA4AAAAOAAAAWJYBAF2WAQBIlgEATJYBAFiWAQBYlgEAUJYBAFSWAQAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAwAAAAFQAAABUAAAAVAAAAFQAAABUAAAAcgAAAp5ONEs8T +iAmVE+AEqxPgEs8TiAkomAAAAQACCgEAAgoAAQIFAQACCgEAAgo0mAAADg4AAA4OAAAO +DgAADg4AAA4OAAA4mAAABwAAAAcAAAALAAAACwAAAAsAAABImAAAYfoYAGH6GABjGhoA +YxoaAGMaGgBQmAAA4LSYDOC0mAzasJgM2rCYDNqwmAxYmAAALg3Ifi4NyH4uDch+Lg3I +fi4NyH5cmAAAXmA5MV5gOTFeYDkxXmA5MV5gOTFsmAAAgbAMBYGwDAWBsAwFgbAMBYGw +DAUUmQAA0AcAANAHAABMBAAAmAgAANAHAABEmQAAABC49wAQuPcADbj3ABC49wAQuPcE +ogAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIogAAiGe+1ohnvtaIZz7QiGc+0IhnPtAMogAA +4MEuAODBLgAgwSoAIMEqACDBKgAcogAACoCDGAqAgxgKgGMYCoCDGAqAgxgAowAAAAAB +GAAAARgAAAEYAAABGAAAARgEowAAAiYDMAImAzACJgMwAiYDMAImAzAIowAABj4HSAY+ +B0gGPgdIBj4HSAY+B0gMowAACkwLVgpMC1YKTAtWCkwLVgpMC1YQowAAD2AaZA9gGmQP +YBpkD2AaZA9gGmQUowAAG25PeBtuT3gbbk94G25PeBtuT3gYowAAWnyPhlp8j4ZafI+G +WnyPhlp8j4YcowAAW4bPkFuGz5Bbhs+OW4bPjluGz44gowAAD5dPnQ+XT50Pl0+bD5dP +mw+XT5skowAAj6PPp4+jz6ePn8+jj5/Po4+fz6MoowAAH69ftR+vX7Ufr1+zH69fsx+v +X7MsowAAn7nfvZ+5372fud+7n7nfu5+537swowAAP8V/yz/Ff8s/x3/LP8d/yz/Hf8s0 +owAAv9H/1b/R/9W/0f/Tv9H/07/R/9MAAAAAAAAAAAAAAAAAAAAAMBIAAOADAABoQAAA +EAAAAGCAAAAPAAAAnIAAAAAAAACggAAAAAAAABiBAAAAAAAAHIEAAAAAAAAggQAAAAAA +ACSBAAAAAAAAKIEAAAAAAAAsgQAAAAAAADCBAAAAAAAANIEAAAAAAAA4gQAAAAAAADyB +AAAAAAAAQIEAAPkDAIBEgQAAAAAAAAiYAAAAAAAALJgAAACgAAA8mAAAAAQgAEyYAAA8 +I4QScJgAAB8AAAB0mAAAgAAAAHiYAAAOAAAAWJkAAP8fCACAmQAAAAAAAISZAAAAAIAC +oJkAAAAAAADgmQAAAAAAAOSZAACqqqqq6JkAAHhkRjzsmQAAqgAAAPCZAAAMAAAA9JkA +AP8AAAD4mQAAFAAAACiiAAC1CQAAPKIAAK+JyJNMogAAAQAAAFCiAAAAoAAAVKIAAAAA +AABYogAAgFPHDFyiAAABDw8PYKIAAAEPaV9kogAAEYpBAGiiAAAAAAAAbKIAAGrBMAxw +ogAAIAiCAHSiAACqfBsIeKIAAM455xx8ogAAzgEXBTijAAAAAAAAPKMAAAAAAABAowAA +AAAAAESjAAAAAAAASKMAAP///z9MowAA////P1CjAAD///8/VKMAAP//AwBYowAAH6qo +eVyjAAAPQmwGYKMAAAciKA9kowAAhRZgF2ijAAAEEYAfbKMAAAMMoDdwowAAgwjEP3Sj +AAADCMBXeKMAAIIG2F98owAAggTgf4CjAAC6ezx/hKMAAPB/MPMEmwAAAQAAAAibAAAC +AAAADJsAAAMAAAAQmwAABAAAABSbAAAFAAAAGJsAAAgAAAAcmwAACQAAACCbAAAKAAAA +JJsAAAsAAAAsmwAADQAAADCbAAAQAAAANJsAABEAAAA8mwAAEwAAAECbAAAUAAAARJsA +ABUAAABImwAAGAAAAEybAAAZAAAAUJsAABoAAABUmwAAGwAAAFibAAAcAAAAXJsAAB0A +AABgmwAAIAAAAGibAAAiAAAAbJsAACMAAABwmwAAJAAAAHSbAAAlAAAAeJsAACgAAAB8 +mwAAKQAAAICbAAAqAAAAhJsAACsAAACImwAALAAAAJCbAAAwAAAAlJsAADEAAACYmwAA +MgAAAKCbAAA0AAAApJsAADUAAAComwAANQAAAKybAAA1AAAAsJsAADUAAAC0mwAANQAA +ALibAAA1AAAAvJsAADUAAADAmwAANQAAAMSbAAA1AAAAyJsAADUAAADMmwAANQAAANCb +AAA1AAAA1JsAADUAAADYmwAANQAAANybAAA1AAAA4JsAADUAAADkmwAANQAAAOibAAA1 +AAAA7JsAADUAAADwmwAANQAAAPSbAAA1AAAA+JsAABAAAAD8mwAAGgAAAACaAAAAAAAA +AAAAAASaAABAAAAAQAAAAAiaAACAAAAAgAAAAAyaAAChAQAAYQEAABCaAADhAQAAoQEA +ABSaAAAhAAAA4QEAABiaAABhAAAAIQAAAByaAACIAQAAYQAAACCaAADIAQAAiAEAACSa +AAAIAAAAyAEAACiaAABIAAAACAAAACyaAACIAAAASAAAADCaAACpAQAAiAAAADSaAADp +AQAAaQEAADiaAAApAAAAqQEAADyaAABpAAAA6QEAAECaAADQAQAAKQAAAESaAAAQAAAA +aQAAAEiaAABQAAAAkAEAAEyaAACQAAAA0AEAAFCaAACxAQAAEAAAAFSaAADxAQAAUAAA +AFiaAAAxAAAAkAAAAFyaAABxAAAAcQEAAGCaAAC4AQAAsQEAAGSaAAD4AQAA8QEAAGia +AAA4AAAAMQAAAGyaAAB4AAAAcQAAAHCaAACZAQAAmAEAAHSaAADZAQAA2AEAAHiaAAAZ +AAAAGAAAAHyaAABZAAAAWAAAAICaAACZAAAAmAAAAISaAADZAAAAeQEAAIiaAAD5AAAA +uQEAAIyaAAD5AAAA+QEAAJCaAAD5AAAAOQAAAJSaAAD5AAAAeQAAAJiaAAD5AAAAuQAA +AJyaAAD5AAAA+QAAAKCaAAD5AAAA+QAAAKSaAAD5AAAA+QAAAKiaAAD5AAAA+QAAAKya +AAD5AAAA+QAAALCaAAD5AAAA+QAAALSaAAD5AAAA+QAAALiaAAD5AAAA+QAAALyaAAD5 +AAAA+QAAAMCaAAD5AAAA+QAAAMSaAAD5AAAA+QAAAMiaAAD5AAAA+QAAAMyaAAD5AAAA ++QAAANCaAAD5AAAA+QAAANSaAAD5AAAA+QAAANiaAAD5AAAA+QAAANyaAAD5AAAA+QAA +AOCaAAD5AAAA+QAAAOSaAAD5AAAA+QAAAOiaAAD5AAAA+QAAAOyaAAD5AAAA+QAAAPCa +AAD5AAAA+QAAAPSaAAD5AAAA+QAAAPiaAAD5AAAA+QAAAPyaAAD5AAAA+QAAANSYAAAg +AAAA0JgAAAgAAAAIAAAACAAAAAgAAAAIAAAA3JgAAMAAoADAAKAAwADgAMAA4ADAAOAA +AAAAAAAAAACcmAAAAAAAMwAAADMAAAAzAAAAMwAAADOcmAAAAAAAAQAAAAEAAAABAAAA +AQAAAAGcmAAAAAAAAAAAAAAAAAAAAAAAAAAAAACcmAAAAAAAAAAAAAAAAAAAAAAAAAAA +AACcmAAAAAAAAAAAAAAAAAAAAAAAAAAAAACcmAAAAAAAHwAAAB8AAAAfAAAAHwAAAB+c +mAAAAAAAAAAAAAAAAAAAAAAAAAAAAACcmAAAAAC4AAAAuAAAALgAAAC4AAAAuACcmAAA +AAC3AAAAtwAAALcAAAC3AAAAtwCcmAAAAACEAAAAhAAAAIQAAACEAAAAhACcmAAAAACY +AAAAmAAAAJgAAACYAAAAmACcmAAAAADAAAAAwAAAAMAAAADAAAAAwACcmAAAAAD/AAAA +/wAAAP8AAAD/AAAA/wCcmAAAAAD/AAAA/wAAAP8AAAD/AAAA/wCcmAAAAAD/AAAA/wAA +AP8AAAD/AAAA/wCcmAAAAAD/AAAA/wAAAP8AAAD/AAAA/wCcmAAAAADXAAAA1wAAANcA +AADXAAAA1wCcmAAAAABhAAAAYQAAAGEAAABhAAAAYQCcmAAAAAD+AAAA/gAAAP4AAAD+ +AAAA/gCcmAAAAADeAAAA3gAAAN4AAADeAAAA3gCcmAAAAAB/AAAAfwAAAH8AAAB/AAAA +fwCcmAAAAAA9BAAAPQQAAD0EAAA9BAAAPQScmAAAAAB3AAAAdwAAAHcAAAB3AAAAdwCc +mAAAAABEAAAARAAAAEQAAABEAAAARACcmAAAAACYAAAAmAAAAJgAAACYAAAAmACcmAAA +gAAQAIAAEACAABAAgAAQAIAAEACcmAAANMAFADTABQA0wAUANMAFADTABQCcmAAA8AAx +APAAMQDwADEA8AAxAPAAMQCcmAAAHwEMAB8BDAAfAQwAHwEMAB8BDACcmAAAQABRAEAA +UQBAAFEAQABRAEAAUQCcmAAA2gBQANoAUADaAFAA2gBQANoAUACcmAAAAAAAAAAAAAAA +AAAAAAAAAAAAAACcmAAAREAAAERAAABEQAAAREAAAERAAACcmAAAAAAAAAAAAAAAAAAA +AAAAAAAAAACcmAAAwGAAAMBgAADAYAAAwGAAAMBgAACcmAAAACwAAAAsAAAANgAAADYA +AAAsAADImAAAAwQAAAMEAAADBAAAAwQAAAMEAAAAAAAAAAAAAJyYAAAAZAAAAGQAAABk AAAAZAAAAGQAAJyYAAAACAAAAAgAAAAIAAAACAAAAAgAAMyYAAAOAAAADgAAAA4AAAAO -AAAADgAAAPRiAQD5YgEA5GIBAOhiAQD0YgEA9GIBAOxiAQDwYgEAQVI1MjEwAEFSNTIx -MQBBUjUyMTIAUkY1MTExAFJGNTExMgBSRjI0MTMAQXRoZXJvcyAyMzEzIFdpU29DAEF0 -aGVyb3MgNTIxMiAoRlBHQSkAQXRoZXJvcyA1MjExIChGUEdBKQBBdGhlcm9zIDUyMTAA -QXRoZXJvcyA1MjExAEF0aGVyb3MgNTMxMiBXaVNvQwBBdGhlcm9zIDUyMTIAREIAREVC -VUcATkEATk9fQ09VTlRSWV9TRVQAQUwAQUxCQU5JQQBEWgBBTEdFUklBAEFSAEFSR0VO -VElOQQBBTQBBUk1FTklBAEFVAEFVU1RSQUxJQQBBVABBVVNUUklBAEFaAEFaRVJCQUlK -QU4AQkgAQkFIUkFJTgBCWQBCRUxBUlVTAEJFAEJFTEdJVU0AQloAQkVMSVpFAEJPAEJP -TFZJQQBCUgBCUkFaSUwAQk4AQlJVTkVJIERBUlVTU0FMQU0AQkcAQlVMR0FSSUEAQ0EA -Q0FOQURBAENMAENISUxFAENOAENISU5BAENPAENPTE9NQklBAENSAENPU1RBIFJJQ0EA -SFIAQ1JPQVRJQQBDWQBDWVBSVVMAQ1oAQ1pFQ0ggUkVQVUJMSUMAREsAREVOTUFSSwBE -TwBET01JTklDQU4gUkVQVUJMSUMARUMARUNVQURPUgBFRwBFR1lQVABTVgBFTCBTQUxW -QURPUgBFRQBFU1RPTklBAEZJAEZJTkxBTkQARlIARlJBTkNFAEYyAEZSQU5DRV9SRVMA -R0UAR0VPUkdJQQBERQBHRVJNQU5ZAEdSAEdSRUVDRQBHVABHVUFURU1BTEEASE4ASE9O -RFVSQVMASEsASE9ORyBLT05HAEhVAEhVTkdBUlkASVMASUNFTEFORABJTgBJTkRJQQBJ -RABJTkRPTkVTSUEASVIASVJBTgBJRQBJUkVMQU5EAElMAElTUkFFTABJVABJVEFMWQBK -UABKQVBBTgBKMQBKQVBBTjEASjIASkFQQU4yAEozAEpBUEFOMwBKNABKQVBBTjQASjUA -SkFQQU41AEpPAEpPUkRBTgBLWgBLQVpBS0hTVEFOAEtQAE5PUlRIIEtPUkVBAEtSAEtP -UkVBIFJFUFVCTElDAEsyAEtPUkVBIFJFUFVCTElDMgBLVwBLVVdBSVQATFYATEFUVklB -AExCAExFQkFOT04ATEkATElFQ0hURU5TVEVJTgBMVABMSVRIVUFOSUEATFUATFVYRU1C -T1VSRwBNTwBNQUNBVQBNSwBNQUNFRE9OSUEATVkATUFMQVlTSUEATVgATUVYSUNPAE1D -AE1PTkFDTwBNQQBNT1JPQ0NPAE5MAE5FVEhFUkxBTkRTAE5aAE5FVyBaRUFMQU5EAE5P -AE5PUldBWQBPTQBPTUFOAFBLAFBBS0lTVEFOAFBBAFBBTkFNQQBQRQBQRVJVAFBIAFBI -SUxJUFBJTkVTAFBMAFBPTEFORABQVABQT1JUVUdBTABQUgBQVUVSVE8gUklDTwBRQQBR -QVRBUgBSTwBST01BTklBAFJVAFJVU1NJQQBTQQBTQVVESSBBUkFCSUEAU0cAU0lOR0FQ -T1JFAFNLAFNMT1ZBSyBSRVBVQkxJQwBTSQBTTE9WRU5JQQBaQQBTT1VUSCBBRlJJQ0EA -RVMAU1BBSU4AU0UAU1dFREVOAENIAFNXSVRaRVJMQU5EAFNZAFNZUklBAFRXAFRBSVdB -TgBUSABUSEFJTEFORABUVABUUklOSURBRCAmIFRPQkFHTwBUTgBUVU5JU0lBAFRSAFRV -UktFWQBVQQBVS1JBSU5FAEFFAFVOSVRFRCBBUkFCIEVNSVJBVEVTAEdCAFVOSVRFRCBL -SU5HRE9NAFVTAFVOSVRFRCBTVEFURVMAVVkAVVJVR1VBWQBVWgBVWkJFS0lTVEFOAFZF -AFZFTkVaVUVMQQBWTgBWSUVUIE5BTQBZRQBZRU1FTgBaVwBaSU1CQUJXRQAlczogcGh5 -Q250MSAweCV4LCByZXNldHRpbmcgY291bnRlciB2YWx1ZSB0byAweCV4CgAAJXM6IHBo -eUNudDIgMHgleCwgcmVzZXR0aW5nIGNvdW50ZXIgdmFsdWUgdG8gMHgleAoAAAAAAAAw -LjkuMTQuOQAAAAAAAAAABwAAAA4AAAAVAAAAHAAAACMAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAJBOIExEAiBPsExEAHhSCFA8AghTmFBIAXhVdFhQAXRbBFhQAwRba -FhcAjBSgFLQUyBQ8FFAUZBR4FAAAMhRGFFoUbhQAAGwJhQmeCYoJqAkAAGwJhQmeCYoJ -AABsCYUJngmKCQAAbAmFCZ4JigkAAHEWhRaZFq0WwRYAAFoUghSqFAAAgBaoFgAAfBWQ -FaQVuBXMFeAV9BUIFhwWMBZEFgAAcQl2CXsJgAmPCZQJmQmjCQAAcQl2CXsJgAmPCZQJ -mQkAAHEJdgl7CYAJjwmUCZkJAABxCXYJewmACY8JlAmZCQAAtAkAAIUJAAA8FFAUZBR4 -FAAAAAABAAAAagAAAAEAAAB8AAAABAAAAIYAAAAEAAAAkgAAAAQAAACcAAAABAAAAKYA -AAABAAAAsAAAAAIAAAC8AAAAAgAAAMQAAAABAAAAygAAAAQAAADiAAAABAAAAPQAAAAE -AAAABAEAAAQAAAAUAQAABAAAACQBAAAgAAAAKAEAADIURhRaFG4UAABaFIIUqhSAFqgW -AAB8FZAVpBW4FcwV4BX0FQgWHBYwFkQWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AGAAAACoCQAAAQAAAKMJAAABAAAAtAkAAAEAAABnAAAAqAkAAAEAAACjCQAAAQAAALQJ -AAABAAAAYQAAAKgJAAABAAAAowkAAAEAAAC0CQAAAQAAAGUAAACoCQAAAQAAAKMJAAAB -AAAAtAkAAAEAAABKAAAAqAkAAAAAAACjCQAAAAAAALQJAAABAAAASwAAAKgJAAABAAAA -owkAAAEAAAC0CQAAAQAAAGoAAACoCQAAAQAAAKMJAAABAAAAtAkAAAEAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAQJwFwsAjAAAAAAAAQIoIw8AEgAAAAAAAQLgLgoAmAIAAAAAAQJQRg4AJAIA -AAAAAQLAXQkAsAQAAAAAAQKgjA0ASAQAAAAAAQKAuwgAYAQAAAAAAQLw0gwAbAQAAAAA +AAAADgAAABSrAQAZqwEAAKsBAASrAQAUqwEAFKsBAAirAQAMqwEAQVI1MjEwAEFSNTIx +MQBBUjUyMTIAUkY1MTExAFJGNTExMgBSRjI0MTMAUkY1NDEzAEF0aGVyb3MgMjMxMyBX +aVNvQwBBdGhlcm9zIDU0MjQAQXRoZXJvcyAyMzE3IFdpU29DAEF0aGVyb3MgNTIxMiAo +RlBHQSkAQXRoZXJvcyA1MjExIChGUEdBKQBBdGhlcm9zIDUyMTAAQXRoZXJvcyA1MjEx +AEF0aGVyb3MgNTMxMiBXaVNvQwBBdGhlcm9zIDIzMTUgV2lTb0MAQXRoZXJvcyA1MjEy +AERCAERFQlVHAE5BAE5PX0NPVU5UUllfU0VUAEFMAEFMQkFOSUEARFoAQUxHRVJJQQBB +UgBBUkdFTlRJTkEAQU0AQVJNRU5JQQBBVQBBVVNUUkFMSUEAQVQAQVVTVFJJQQBBWgBB +WkVSQkFJSkFOAEJIAEJBSFJBSU4AQlkAQkVMQVJVUwBCRQBCRUxHSVVNAEJaAEJFTEla +RQBCTwBCT0xWSUEAQlIAQlJBWklMAEJOAEJSVU5FSSBEQVJVU1NBTEFNAEJHAEJVTEdB +UklBAENBAENBTkFEQQBDTABDSElMRQBDTgBDSElOQQBDTwBDT0xPTUJJQQBDUgBDT1NU +QSBSSUNBAEhSAENST0FUSUEAQ1kAQ1lQUlVTAENaAENaRUNIIFJFUFVCTElDAERLAERF +Tk1BUksARE8ARE9NSU5JQ0FOIFJFUFVCTElDAEVDAEVDVUFET1IARUcARUdZUFQAU1YA +RUwgU0FMVkFET1IARUUARVNUT05JQQBGSQBGSU5MQU5EAEZSAEZSQU5DRQBGMgBGUkFO +Q0VfUkVTAEdFAEdFT1JHSUEAREUAR0VSTUFOWQBHUgBHUkVFQ0UAR1QAR1VBVEVNQUxB +AEhOAEhPTkRVUkFTAEhLAEhPTkcgS09ORwBIVQBIVU5HQVJZAElTAElDRUxBTkQASU4A +SU5ESUEASUQASU5ET05FU0lBAElSAElSQU4ASUUASVJFTEFORABJTABJU1JBRUwASVQA +SVRBTFkASlAASkFQQU4ASkFQQU4xAEpBUEFOMgBKQVBBTjMASkFQQU40AEpBUEFONQBK +QVBBTjYASkFQQU43AEpBUEFOOABKQVBBTjkASkFQQU4xMABKQVBBTjExAEpBUEFOMTIA +SkFQQU4xMwBKQVBBTjE0AEpBUEFOMTUASkFQQU4xNgBKQVBBTjE3AEpBUEFOMTgASkFQ +QU4xOQBKQVBBTjIwAEpBUEFOMjEASkFQQU4yMgBKQVBBTjIzAEpBUEFOMjQASk8ASk9S +REFOAEtaAEtBWkFLSFNUQU4AS1AATk9SVEggS09SRUEAS1IAS09SRUEgUkVQVUJMSUMA +SzIAS09SRUEgUkVQVUJMSUMyAEszAEtPUkVBIFJFUFVCTElDMwBLVwBLVVdBSVQATFYA +TEFUVklBAExCAExFQkFOT04ATEkATElFQ0hURU5TVEVJTgBMVABMSVRIVUFOSUEATFUA +TFVYRU1CT1VSRwBNTwBNQUNBVQBNSwBNQUNFRE9OSUEATVkATUFMQVlTSUEATVQATUFM +VEEATVgATUVYSUNPAE1DAE1PTkFDTwBNQQBNT1JPQ0NPAE5MAE5FVEhFUkxBTkRTAE5a +AE5FVyBaRUFMQU5EAE5PAE5PUldBWQBPTQBPTUFOAFBLAFBBS0lTVEFOAFBBAFBBTkFN +QQBQRQBQRVJVAFBIAFBISUxJUFBJTkVTAFBMAFBPTEFORABQVABQT1JUVUdBTABQUgBQ +VUVSVE8gUklDTwBRQQBRQVRBUgBSTwBST01BTklBAFJVAFJVU1NJQQBTQQBTQVVESSBB +UkFCSUEAU0cAU0lOR0FQT1JFAFNLAFNMT1ZBSyBSRVBVQkxJQwBTSQBTTE9WRU5JQQBa +QQBTT1VUSCBBRlJJQ0EARVMAU1BBSU4AU0UAU1dFREVOAENIAFNXSVRaRVJMQU5EAFNZ +AFNZUklBAFRXAFRBSVdBTgBUSABUSEFJTEFORABUVABUUklOSURBRCAmIFRPQkFHTwBU +TgBUVU5JU0lBAFRSAFRVUktFWQBVQQBVS1JBSU5FAEFFAFVOSVRFRCBBUkFCIEVNSVJB +VEVTAEdCAFVOSVRFRCBLSU5HRE9NAFVTAFVOSVRFRCBTVEFURVMAUFMAVU5JVEVEIFNU +QVRFUyAoUFVCTElDIFNBRkVUWSkAVVkAVVJVR1VBWQBVWgBVWkJFS0lTVEFOAFZFAFZF +TkVaVUVMQQBWTgBWSUVUIE5BTQBZRQBZRU1FTgBaVwBaSU1CQUJXRQAAAAAAAAAAAAAA +AAAAAAAAMC45LjE3LjIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAA4AAAAV +AAAAHAAAACMAAAAqAAAAAAAAAAAA/wH/AQAAAAAAAAAAAAD/////////fwAAAAADAJgB +mQEAAAAAAAAAAAAA/////////38AAAAABwCYATALAAAAAAAAAAAAAP////////9/AAAA +AAgAmAEwDAAAAAAAAAAAAAD/////////fwAAAAAgACABEAoAAAAAAAAAAAAA//////// +/38AAAAAIQAgAZkBAAAAAAAAAAAAAP////////9/AAAAACIAIAEwDAAAAAAAAAAAAAD/ +////////fwAAAAA6AGABEAoAAAAAAAAAAAAA/////////38AAAAAOwBgAZkBAAAAAAAA +AAAAAP////////9/AAAAABIAZQEQCgAAAwAAAAAAAAD/////////fwAAAAA3ADABmQEA +AAMAAAAAAAAA/////////38AAAAANQAwApkBAAADAAAAAAAAAP////////9/AAAAADYA +MAOZAQAAAwAAAAAAAAD/////////fwAAAAAwADAEmQEAAAMAAAAAAAAA/////////38A +AAAAOQAwBZkBAAADAAAAAAAAAP////////9/AAAAADQAMAaZAQAAAwAAAAAAAAD///// +////fwAAAAAyADADmQEAAAMAAAAAAAAA/////////38AAAAAMQAwA5kBAAAAAAAAAAAA +AP////////9/AAAAABEAEAGZAQAAAAAAAAAAAAD/////////fwAAAAAQABABEAoAAAAA +AAAAAAAA/////////38AAAAAUgBQAZkBAAAAAAAAAAAAAP////////9/AAAAAEUAUAKZ +AQAAAAAAAAAAAAD/////////fwAAAABHAFADmQEAAAAAAAAAAAAA/////////38AAAAA +QgBQBJkBAAAAAAAAAAAAAP////////9/AAAAAFgAUAWZAQAAAAAAAAAAAAD///////// +fwAAAABbAFAGmQEAAAAAAAAAAAAA/////////38AAAAAXQBQCJkBAAAAAAAAAAAAAP// +//////9/AAAAAF4AUAmZAQAAAAAAAAAAAAD/////////fwAAAABQAFADEAoAAAAAAAAA +AAAA/////////38AAAAAVQBQATAMAAAAAAAAAAAAAP////////9/AAAAAFYAUAIwDAAA +AAAAAAAAAAD/////////fwAAAABJAFACUA0AAAAAAAAAAAAA/////////38AAAAAQABA +AUAKAABGAAAABAAAACgAAAAAAAAAiAEAAEEAQAFACgAARwAAAAQAAABoAAAAAAAAAIkB +AABIAEABEAoAAEYAAAAEAAAACAAAAAAAAACKAQAASgBAAUAKAABGAAAABAAAAAgYAAAA +AAAAjAEAAEsAQAFACgAARgAAAAQAAAAIYAAAAAAAAI0BAABMAEABUAoAAEYAAAAEAAAA +CAAAAAAAAACPAQAAQwBAAkAKAABHAAAABAAAAHAAAAAAAAAAiwEAAPAAQANACgAARgAA +AAQAAAAgAAAAAAAAAAAAAACAAEADQAoAAEcAAAAEAAAAYAAAAAAAAACnDwAA8QBAA0AK +AABGAAAABAAAAAAYAAAAAAAAAAAAAIEAQANACgAARgAAAAQAAAAAYAAAAAAAAKgPAACC +AEADUAoAAEYAAAAEAAAAAAAAAAAAAACpDwAA8gBAAxAKAABGAAAABAAAAAAAAAAAAAAA +AAAAAIMAQARACgAARwAAAAQAAABggAAAAAAAAKoPAAD0AEAEQAoAAEYAAAAEAAAAAJgA +AAAAAAAAAAAAhABABEAKAABGAAAABAAAAADgAAAAAAAAqw8AAIUAQARQCgAARgAAAAQA +AAAAgAAAAAAAAKwPAAD1AEAEEAoAAEYAAAAEAAAAAIAAAAAAAAAAAAAAhgBABUAKAABH +AAAABAAAAGCAAAAAAAAArQ8AAIcAQAVACgAARgAAAAQAAAAA4AAAAAAAAK4PAACIAEAF +UAoAAEYAAAAEAAAAAIAAAAAAAACvDwAAiQBABkAKAABHAAAABAAAAGgAAAAAAAAAsA8A +AIoAQAZACgAARgAAAAQAAAAIYAAAAAAAALEPAACLAEAGUAoAAEYAAAAEAAAACAAAAAAA +AACyDwAAjABAB0AKAABHAAAABAAAAGiAAAAAAAAAsw8AAI0AQAdACgAARgAAAAQAAAAI +4AAAAAAAALQPAACOAEAHUAoAAEYAAAAEAAAACIAAAAAAAAC1DwAAjwBACEAKAABHAAAA +BAAAAGiAAAAAAAAAtg8AAJAAQAhACgAARgAAAAQAAAAI4AAAAAAAALcPAACRAEAIUAoA +AEYAAAAEAAAACIAAAAAAAAC4DwAA9gBACUAKAABHAAAABAAAAGCAAAAAAAAAAAAAAPcA +QAtACgAARwAAAAQAAABggAAAAAAAAAAAAABgAGAAYAAAAAAAAAAAAAAA/////////38A +AAAAYQBhAGEAAAADAAAAAAAAAP////////9/AAAAAGIAYgBiAAAAAgAAAAAAAAD///// +////fwAAAABjAGMAYwAAAAAAAAAAAAAA/////////38AAAAAZABkAGQAAAADAAAAAAAA +AP////////9/AAAAAGUAZQBlAAAAAwAAAAAAAAD/////////fwAAAABmAGYAZgAAAAAA +AAAAAAAA/////////38AAAAAZwBnAGcAAAAAAAAAAAAAAP////////9/AAAAAGgAaABo +AAAAAAAAAAAAAAD/////////fwAAAABpAGkAaQAAAAMAAAAAAAAA/////////38AAAAA +agBqAGoAAAADAAAAAAAAAP////////9/AAAAAAAAAAAAAAAAAAAAAGUAAAABAAAA//// +/4AAAAD/////AAAAAEpQAAC0DwAAAAAAAGoAAAABAAAA/////4AAAAD/////AAAAAEpQ +AAC0DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8BAADZAAAA3AAAAAEAAAAB +AAAAAQAAAFgbAAAAABAA4gAAAOUAAAABAAAAAQAAAAEAAABYGwAACAADAPQAAAD3AAAA +AQAAAAAAAAABAAAAWBsAAAwAAwD/AAAAAgEAAAEAAAAAAAAAAQAAAFgbAAAgAEcACgEA +AA0BAAAAAAAAAAAAAAAAAABYGwAAMwAwABcBAAAaAQAAAQAAAAAAAAABAAAAWBsAACQA +IQAiAQAAJQEAAAEAAAABAAAAAQAAAFgbAAAoADcALwEAADIBAAABAAAAAAAAAAEAAABY +GwAAHwAwADoBAAA9AQAAAQAAAAEAAAABAAAAWBsAADAAWwBIAQAASwEAAAEAAAAAAAAA +AQAAAFgbAABwAAMAUwEAAFYBAAABAAAAAAAAAAEAAABYGwAAOAA3AF4BAABhAQAAAQAA +AAAAAAABAAAAWBsAAFQAVQBpAQAAbAEAAAEAAAABAAAAAQAAAFgbAABEAFUAcwEAAHYB +AAABAAAAAQAAAAEAAABYGwAATAA7AH0BAACAAQAAAQAAAAAAAAAAAAAAWBsAAGAAUgCH +AQAAigEAAAEAAAABAAAAAQAAAFgbAABkADQAnAEAAJ8BAAABAAAAAAAAAAEAAABYGwAA +fAAgAKgBAACrAQAAAQAAAAEAAAABAAAAWBsAAJgAWwCyAQAAtQEAAAEAAAABAAAAAQAA +AFgbAACcAFIAuwEAAL4BAAABAAAAAQAAAAEAAABYGwAAqgAQAMQBAADHAQAAAQAAAAAA +AAABAAAAWBsAALwAAwDQAQAA0wEAAAEAAAAAAAAAAQAAAFgbAAC/ADYA3gEAAOEBAAAB +AAAAAAAAAAEAAABYGwAAxAA3AOkBAADsAQAAAQAAAAEAAAABAAAAWBsAAMsANgDzAQAA +9gEAAAEAAAAAAAAAAQAAAFgbAADQADcABQIAAAgCAAABAAAAAAAAAAEAAABYGwAA1gAQ +ABACAAATAgAAAQAAAAEAAAABAAAAWBsAANoAAwAmAgAAKQIAAAAAAAAAAAAAAAAAAFgb +AAAyAzYAMQIAADQCAAABAAAAAAAAAAEAAABYGwAA3gADADoCAAA9AgAAAQAAAAAAAAAB +AAAAWBsAAOkANwBJAgAATAIAAAEAAAAAAAAAAQAAAFgbAAD2ADcAVAIAAFcCAAABAAAA +AAAAAAEAAABYGwAA+gA3AF8CAABiAgAAAQAAAAAAAAABAAAAWBsAAP8ANgBpAgAAbAIA +AAEAAAAAAAAAAQAAAFgbAAAMATAAdwIAAHoCAAABAAAAAQAAAAEAAABYGwAAFAE3AIIC +AACFAgAAAQAAAAAAAAABAAAAWBsAACwBNwCNAgAAkAIAAAEAAAAAAAAAAQAAAFgbAABA +ARAAlwIAAJoCAAABAAAAAQAAAAEAAABYGwAAVAEDAKQCAACnAgAAAQAAAAAAAAABAAAA +WBsAAFgBIQCwAgAAswIAAAEAAAABAAAAAQAAAFgbAABcATcAvQIAAMACAAABAAAAAAAA +AAEAAABYGwAAYAE3AMgCAADLAgAAAQAAAAAAAAABAAAAWBsAAGQBWwDTAgAA1gIAAAEA +AAAAAAAAAQAAAFgbAABoAVIA3AIAAN8CAAABAAAAAAAAAAEAAABYGwAAbAFSAOkCAADs +AgAAAQAAAAEAAAABAAAAWBsAAHQBNwDxAgAA9AIAAAEAAAAAAAAAAQAAAFgbAAB4AQMA +/AIAAP8CAAABAAAAAAAAAAEAAABYGwAAfAE3AAYDAAAJAwAAAQAAAAAAAAABAAAAWBsA +AIgBQAAPAwAAEgMAAAEAAAAAAAAAAAAAAFgbAACJAUEADwMAABgDAAABAAAAAAAAAAAA +AABYGwAAigFIAA8DAAAfAwAAAQAAAAAAAAAAAAAAWBsAAIsBQwAPAwAAJgMAAAEAAAAA +AAAAAAAAAFgbAACMAUoADwMAAC0DAAABAAAAAAAAAAAAAABYGwAAjQFLAA8DAAA0AwAA +AQAAAAAAAAAAAAAAWBsAAI8BTAAPAwAAOwMAAAEAAAAAAAAAAAAAAFgbAACnD4AADwMA +AEIDAAABAAAAAAAAAAAAAABYGwAAqA+BAA8DAABJAwAAAQAAAAAAAAAAAAAAWBsAAKkP +ggAPAwAAUAMAAAEAAAAAAAAAAAAAAFgbAACqD4MADwMAAFcDAAABAAAAAAAAAAAAAABY +GwAAqw+EAA8DAABfAwAAAQAAAAAAAAAAAAAAWBsAAKwPhQAPAwAAZwMAAAEAAAAAAAAA +AAAAAFgbAACtD4YADwMAAG8DAAABAAAAAAAAAAAAAABYGwAArg+HAA8DAAB3AwAAAQAA +AAAAAAAAAAAAWBsAAK8PiAAPAwAAfwMAAAEAAAAAAAAAAAAAAFgbAACwD4kADwMAAIcD +AAABAAAAAAAAAAAAAABYGwAAsQ+KAA8DAACPAwAAAQAAAAAAAAAAAAAAWBsAALIPiwAP +AwAAlwMAAAEAAAAAAAAAAAAAAFgbAACzD4wADwMAAJ8DAAABAAAAAAAAAAAAAABYGwAA +tA+NAA8DAACnAwAAAQAAAAAAAAAAAAAAWBsAALUPjgAPAwAArwMAAAEAAAAAAAAAAAAA +AFgbAAC2D48ADwMAALcDAAABAAAAAAAAAAAAAABYGwAAtw+QAA8DAAC/AwAAAQAAAAAA +AAAAAAAAWBsAALgPkQAPAwAAxwMAAAEAAAAAAAAAAAAAAFgbAACQAUIAzwMAANIDAAAB +AAAAAAAAAAEAAABYGwAAjgEDANkDAADcAwAAAQAAAAAAAAABAAAAWBsAAJgBRQDnAwAA +6gMAAAEAAAABAAAAAQAAAFgbAACaAUUA9gMAAPkDAAABAAAAAAAAAAAAAABYGwAAmwFF +AAgEAAALBAAAAQAAAAAAAAAAAAAAWBsAAJwBXgAbBAAAHgQAAAEAAAAAAAAAAAAAAFgb +AACeAQMALgQAADEEAAABAAAAAAAAAAEAAABYGwAArAE3ADgEAAA7BAAAAQAAAAAAAAAB +AAAAWBsAAKYBAwBCBAAARQQAAAEAAAAAAAAAAQAAAFgbAAC2ATcATQQAAFAEAAABAAAA +AAAAAAEAAABYGwAAuAE3AF4EAABhBAAAAQAAAAAAAAABAAAAWBsAALoBNwBrBAAAbgQA +AAEAAAAAAAAAAQAAAFgbAAC+ASEAeQQAAHwEAAABAAAAAQAAAAEAAABYGwAAJwMDAIIE +AACFBAAAAQAAAAAAAAABAAAAWBsAAMoBXQCPBAAAkgQAAAEAAAAAAAAAAAAAAFgbAADW +ATcAmwQAAJ4EAAABAAAAAAAAAAEAAABYGwAA5AEQAKQEAACnBAAAAQAAAAEAAAABAAAA +WBsAAOwBMACuBAAAsQQAAAEAAAABAAAAAQAAAFgbAAD4AQMAuAQAALsEAAABAAAAAAAA +AAEAAABYGwAAEAI3AMMEAADGBAAAAQAAAAAAAAABAAAAWBsAACoCIgDSBAAA1QQAAAEA +AAAAAAAAAQAAAFgbAABCAjcA4QQAAOQEAAABAAAAAAAAAAEAAABYGwAAAAJbAOsEAADu +BAAAAQAAAAAAAAABAAAAWBsAAEoCAwDzBAAA9gQAAAEAAAAAAAAAAQAAAFgbAABPAhAA +/wQAAAIFAAABAAAAAQAAAAEAAABYGwAAXAJSAAkFAAAMBQAAAQAAAAAAAAABAAAAWBsA +AGACUgARBQAAFAUAAAEAAAABAAAAAQAAAFgbAABoAjcAIAUAACMFAAABAAAAAAAAAAEA +AABYGwAAbAI3ACoFAAAtBQAAAQAAAAAAAAABAAAAWBsAAHYCEAA2BQAAOQUAAAEAAAAB +AAAAAQAAAFgbAAB6AgMARQUAAEgFAAABAAAAAAAAAAEAAABYGwAAggIDAE4FAABRBQAA +AQAAAAAAAAABAAAAWBsAAIMCAwBZBQAAXAUAAAEAAAAAAAAAAQAAAFgbAACqAgMAYwUA +AGYFAAABAAAAAAAAAAEAAABYGwAAvgJbAHMFAAB2BQAAAQAAAAEAAAABAAAAWBsAAL8C +NwCABQAAgwUAAAEAAAAAAAAAAQAAAFgbAADBAjcAkwUAAJYFAAABAAAAAAAAAAEAAABY +GwAAxgI7AJ8FAACiBQAAAQAAAAAAAAABAAAAWBsAANQCNwCvBQAAsgUAAAEAAAAAAAAA +AQAAAFgbAADwAjcAuAUAALsFAAABAAAAAAAAAAEAAABYGwAA9AI3AMIFAADFBQAAAQAA +AAAAAAABAAAAWBsAAPgCAwDRBQAA1AUAAAEAAAAAAAAAAQAAAFgbAACeAFAA2gUAAN0F +AAABAAAAAQAAAAEAAABYGwAA/AIDAOQFAADnBQAAAQAAAAAAAAABAAAAWBsAAAwDMADw +BQAA8wUAAAEAAAAAAAAAAQAAAFgbAAAUAzYABQYAAAgGAAABAAAAAAAAAAEAAABYGwAA +GAM2ABAGAAATBgAAAQAAAAAAAAABAAAAWBsAACQDAwAaBgAAHQYAAAEAAAAAAAAAAQAA +AFgbAAAQAwMAJQYAACgGAAABAAAAAAAAAAEAAABYGwAAOgM3AD0GAABABgAAAQAAAAAA +AAABAAAAWBsAAEgDEABPBgAAUgYAAAEAAAABAAAAAQAAAMEWAABKAxIAYAYAAGMGAAAB +AAAAAQAAAAEAAABYGwAAWgNFAIEGAACEBgAAAQAAAAAAAAABAAAAWBsAAFwDOgCMBgAA +jwYAAAEAAAABAAAAAQAAAFgbAABeA1YAmgYAAJ0GAAABAAAAAAAAAAEAAABYGwAAwAID +AKcGAACqBgAAAQAAAAAAAAABAAAAWBsAAHcDAwCzBgAAtgYAAAEAAAAAAAAAAQAAAFgb +AADMAgMAvAYAAL8GAAABAAAAAAAAAAEAAABYGwAAAAAAAAAAAAAAAAAAMxM9ExcACgUA +AAAAAAAAABAAAAAAAAAAEAAAAEcTURMXAAoFAAAAAAAAAAAQAAAAAAAAABAAAAA4E3QT +FwAUFAAAAAAAAAAAEAAAAAAAAAAHAAAAThN7ExsGBQUAAAAAAAAAAAEAAAAAAAAAAAAA +AFETeRMeBgoFAAAAAAAAAAABAAAAAAAAAAAAAABWE3QTIQYUBQAAAAAAAAAAAQAAAAAA +AAAAAAAAqxOwExcACgUAAAAAAAAAABAAAAAAAAAADAAAALAT2BMXABQUAAAAAAAAAAAQ +AAAAAAAAAAIAAAC/E78TFwAKBQAAAAAAAAAAEAAAAAAAAAAMAAAAABR4FAUGFBQAAAAA +AAAAAAAAAAAAAAAAAAAAADIUbhQXABQUAAAAAAAAAAAYAAAAAAAAAAEAAAAyFG4UFAAU +FAAAAAAAAAAAGAAAAAAAAAABAAAAPBR4FA8AFBQAAAAAAAAAAAUAAAAAAAAAAAAAADwU +eBQRBhQUAAAAAAAAAAABAAAAAAAAAAEAAAA8FHgUEgAUFAAAAAAAAAAABQAAAAAAAAAA +AAAAPBR4FBQAFBQAAAAAAAAAAAUAAAAAAAAAAAAAADwUeBQXABQUAAAAAAAAAAAFAAAA +AAAAAAAAAAA8FHgUFwYUFAAAAAAAAAAAAQAAAAAAAAAAAAAAPBTIFBQGFBQCAAAAAAAA +AAQAAAAAAAAAAAAAAHgUoBQXABQUAQAAAAAAAAAFAAAAAAAAAAAAAACMFKAUFwAUFAMA +AAAAAAAABQAAAAAAAAAAAAAAjBTIFBIAFBQDAAAAAAAAAAUAAAAAAAAAAAAAAIwUyBQU +ABQUBwAAAAAAAAAFgAAAAAAAAAAAAACMFMgUFAYUFAMAAAAAAAAAAQAAAAAAAAACAAAA +jBTIFBcGFBQDAAAAAAAAAAEAAAAAAAAAAgAAAIwUyBQXBhQUAwAAAAAAAAABAAAAAAAA +AAAAAACMFMgUHgAUFAAAAAAAAAAAAAAAAAAAAAAAAAAAjBREFgUGFBQDAAAAAAAAAAAA +AAAAAAAAAAAAAKAUyBQRBhQUAwAAAAAAAAABAAAAAAAAAAAAAAB8FfQVHgYUFAIAAAAA +AAAABAAAAAAAAAAAAAAAfBVEFhQGFBQDAAAAAAAAAAEAAAAAAAAABAAAAHwVRBYbABQU +AwAAAAAAAAAFAAAAAAAAAAAAAAB8FUQWHgAUFAMAAAAAAAAABQAAAAAAAAAAAAAAfBVE +FhcAFBQHAAAAAAAAAAGAAAAAAAAAAAAAAHEWrRYXABQUAAAAAAAAAAAAAAAAAAAAAAAA +AABxFq0WHgYUFAAAAAAAAAAAAAAAAAAAAAAAAAAAcRatFh4GFBQCAAAAAAAAAAQAAAAA +AAAAAAAAAHEWwRYFBhQUAAAAAAAAAAAAAAAAAAAAAAAAAABxFsEWEQAUFAAAAAAAAAAA +AAAAAAAAAAAAAAAAcRbBFhQAFBQAAAAAAAAAAAAAAAAAAAAAAAAAAHEWwRYeABQUAAAA +AAAAAAAAAAAAAAAAAAAAAABxFsEWHgYUFAAAAAAAAAAAAAAAAAAAAAADAAAAcRbBFh4G +FBQAAAAAAAAAAAAAAAAAAAAAAAAAADgTdBMeABQUAAAAAAAAAAAABAAAAAAAAAAAAACw +E9gTHgAUFAAAAAAAAAAAAAQAAAAAAAAAAAAAMhRuFB4AFBQDAAAAAAAAAAAEAAAAAAAA +AAAAADwUeBQeABQUAwAAAAAAAAAABAAAAAAAAAAAAACMFMgUHgAUFAMAAAAAAAAAAAQA +AAAAAAAAAAAAcRbBFh4AFBQAAAAAAAAAAAAEAAAAAAAAAAAAAHwVRBYeABQUAwAAAAAA +AAAABAAAAAAAAAAAAAAAAAAAAAAAAAoUWhQFBigoAAAAAAAAAAAAAAAAAAAAAAAAAACC +FNIUBQYoKAEAAAAAAAAAAAAAAAAAAAAAAAAA+hRyFQUGKCgAAAAAAAAAAAAAAAAAAAAA +AAAAAJoVEhYFBigoAQAAAAAAAAAAAAAAAAAAAAAAAAAeFEYUBQYoKAAAAAAAAAAAAAAA +AAAAAAAAAAAAbhS+FAUGKCgBAAAAAAAAAAAAAAAAAAAAAAAAAOYUXhUFBigoAAAAAAAA +AAAAAAAAAAAAAAAAAACGFSYWBQYoKAEAAAAAAAAAAAAAAAAAAAAAAAAAUBR4FBEGKCgA +AAAAAAAAAAAAAAAAAAAAAAAAAFAUeBQXBigoAAAAAAAAAAAAAAAAAAAAAAAAAABaFFoU +EQYoKAAAAAAAAAAAAAAAAAAAAAAAAAAAWhRaFBcAKCgAAAAAAAAAAAAAAAAAAAAAAAAA +AKAUoBQXBigoAQAAAAAAAAACAAAAAAAAAAAAAACgFKAUFAYoKAEAAAAAAAAAAgAAAAAA +AAAAAAAAghSCFBEAKCgBAAAAAAAAAAIAAAAAAAAAAAAAAKoUqhQUACgoAQAAAAAAAAAC +AAAAAAAAAAAAAACCFKoUFAAoKAEAAAAAAAAAAgAAAAAAAAAAAAAAghSqFBcGKCgBAAAA +AAAAAAIAAAAAAAAAAAAAAKQVHBYUBigoAQAAAAAAAAACAAAAAAAAAAAAAACAFqgWFAAo +KAAAAAAAAAAAAAAAAAAAAAAAAAAAgBaoFh4GKCgAAAAAAAAAAAAAAAAAAAAAAAAAAIUW +rRYeBigoAAAAAAAAAAAAAAAAAAAAAAAAAABaFIIUDwAoKAMAAAAAAAAAAAQAAAAAAAAA +AAAAqhSqFBIAKCgDAAAAAAAAAAAEAAAAAAAAAAAAAKQVHBYUACgoAwAAAAAAAAAABAAA +AAAAAAAAAACAFqgWFAAoKAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAICUQJBQYU +BQAAAAAAAAAAAAAAAAAAAAAAAAAACAlECRQAFAUAAAAAAAAAAAAAAAAAAAAAAAAAAGwJ +qAkFBhQFAAAAAAAAAAAAAAAAAAAAAAAAAABsCagJFAAUBQAAAAAAAAAAIAAAAAAAAAAA +AAAAbAmoCR4AFAUAAAAAAAAAAAAAAAAAAAAAAAAAAGwJngkbBhQFAAAAAAAAAAAAAAAA +AAAAAAAAAABsCZ4JFAAUBQAAAAAAAAAAIAAAAAAAAAAAAAAAgAmKCRQAFAUAAAAAAAAA +AAAAAAAAAAAAAAAAAJkJqAkUABQFAAAAAAAAAAAAAAAAAAAAAAAAAACjCagJFAAUBQAA +AAAAAAAAICAAAAAAAAAAAAAAtAm0CQUGFAUAAAAAAAAAAAAAAAAAAAAAAAAAALQJtAkU +ABQFAAAAAAAAAAAgKAAAAAAAAAAAAADQCawKBQYUBQAAAAAAAAAAAAAAAAAAAAAAAAAA +CAlECRQAFAUAAAAAAAAAAAAAAAAAAAAAAAAAAGwJbAkUABQFAAAAAAAAAAAAAAAAAAAA +AAAAAABxCYAJFAAUBQAAAAAAAAAAAAAAAAAAAAAAAAAAhQmKCRQAFAUAAAAAAAAAAAAA +AAAAAAAAAAAAAI8JmQkUABQFAAAAAAAAAAAAAAAAAAAAAAAAAACeCZ4JFAAUBQAAAAAA +AAAAAAAAAAAAAAAAAAAAowmjCRQAFAUAAAAAAAAAAAAEAAAAAACAAAAAAKMJowkUABQF +AAAAAAAAAAAAAAAAAAAAgAAAAACoCagJFAAUBQAAAAAAAAAAAAQAAAAAAIAAAAAAqAmo +CRQAFAUAAAAAAAAAAAAAAAAAAACAAAAAALQJtAkUABQFAAAAAAAAAAAABAAAAAAAgAAA +AAC0CbQJFAAUBQAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAgJRAkFBhQFAAAAAAAAAAAA +AAAAAAAAAAAAAAAICUQJFAAUBQAAAAAAAAAAAAAAAAAAAAAAAAAAbAmoCQUGFAUAAAAA +AAAAAAAAAAAAAAAAAAAAAGwJqAkUABQFAAAAAAAAAABAAAAAAAAAAAAAAABsCagJHgAU +BQAAAAAAAAAAAAAAAAAAAAAAAAAAbAmeCRsGFAUAAAAAAAAAAAAAAAAAAAAAAAAAAGwJ +ngkUABQFAAAAAAAAAABAAAAAAAAAAAAAAACACYoJFAAUBQAAAAAAAAAAAAAAAAAAAAAA +AAAAmQmoCRQAFAUAAAAAAAAAAAAAAAAAAAAAAAAAANAJrAoFBhQFAAAAAAAAAAAAAAAA +AAAAAAAAAACjCagJFAAUBQAAAAAAAAAAICAAAAAAAAAAAAAACAlECRQAFAUAAAAAAAAA +AAAAAAAAAAAAAAAAAGwJbAkUABQFAAAAAAAAAAAAAAAAAAAAAAAAAABxCYAJFAAUBQAA +AAAAAAAAAAAAAAAAAAAAAAAAhQmKCRQAFAUAAAAAAAAAAAAAAAAAAAAAAAAAAI8JmQkU +ABQFAAAAAAAAAAAAAAAAAAAAAAAAAACeCZ4JFAAUBQAAAAAAAAAAAAAAAAAAAAAAAAAA +owmjCRQAFAUAAAAAAAAAAAAEAAAAAACAAAAAAKMJowkUABQFAAAAAAAAAAAAAAAAAAAA +gAAAAACoCagJFAAUBQAAAAAAAAAAAAQAAAAAAIAAAAAAqAmoCRQAFAUAAAAAAAAAAAAA +AAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAlECQUGKCgAAAAAAAAAAAAAAAAA +AAAAAAAAAIUJhQkFBigoAAAAAAAAAAAAAAAAAAAAAAAAAACFCYUJFAYoKAAAAAAAAAAA +AAAAAAAAAAAAAAAAhQmFCRIGKCgAAAAAAAAAAAAEAAAAAAAAAAAAANAJrAoFBigoAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8BEAABAAAAAAAAAAAA +AAAAAAAAAAAAAAACAAggAAAAAAAAAAAAAAD/AAAAAAAAAAAAAAAAAAAAABEkAAAAAAAA +AAAAAAAAAAUUAAAAAAAAAAAAAAAAAAAFAgAAAAAAAAAAAAAAAAAAEwAAAAAAAAAAAAAA +AAAAAFABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAFACEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFADEAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAABAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAFAEEAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAGMAACAAAA +AAAAAAMAAAAAAAAAAAAAAACAQACAAAAAAAAAAAAAAAAACAkAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAFAIMAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAQAAQAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAJMAACAAAAAAAAAAQAAAAAAAAAAwAA +AAAABCAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADABMAAC +AAAAAAAAAAQAAAAAAAAAAwAAAACAQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAADACMAACAAAAAAAAAAQAAAAAAAAAAwAAAABAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADADMAACAAAAAAAAAAQAAAAAAAAA +AwAAAACAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAE +MAACAAAAAAAAAAQAAAAAAAAAAwAAAABAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAADAFMAACAAAAAAAAAAQAAAAAAAAAAwAAAAAQAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAGMAACAAAAAAAAAAQAAAAA +AAAAAwAAAAAAEQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +ABABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAEAAgAAAAAAAAAAAAAABBIAAAAAAAAA +AAAAAAAAABEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAACABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgIABAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGABEAABAAAAAAAAAAMA +AAAAAAAAAAAAAAAggEAAAgAAAAAAAAAAAAAAxBAAAAAAAAAAAAAAAAAAACEEAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAGUBEAABAAAAAAAAAAMAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEABQAAAAAAAAAAAAAgAAAAAAAAAAgAAAAAEAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEACQAAAAAAAAAAA +ABAAAAAAAAAAAgAAAMcFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAEADQAAAAAAAAAAAAACAAAAAAAAAAgAAAACAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEQAAEAAAAAAAAAACAAAAAAAAAAgAAAACA +QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAFQAAEAAAA +AAAAAACAAAAAAAAAAgAAAACAQAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAEAGQAAAAAAAAAAAAAgAAAAAAAAAAgAAAACIAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAHQAAEAAAAAAAAAAiAAAAAAAAAAgAA +AACEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAIQAAE +AAAAAAAAAAiAAAAAAAAAAgAAAACEQAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAEAJQAAAAAAAAAAAAACAAAAAAAAAAgAAAMeBAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEALQAAEAAAAAAAAAACAAAAAAAAA +AgAAAMeBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAN +/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAADAK/wAAAAAAAAAAAIAAAAAAAAAAAwAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA +AAAAAQAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAADALMAAAAAAAAAAAAAABAAAA +AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAIAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAA +ADAMMAAAAAAAAAAAAAACAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAA +AAAABAAAAAAAAAAAAAAAAAAAABAKEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAA +AAAAAAAgAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEAKQAAAAAAAAAAAAGB4 +AAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAEAKAAAAAAAAAAAAAAAAAABABAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAA +AAAAAFAKQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAA +AAAAAAAABAAAAAAAAAAAAAAAAAAAAJkBMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAA +AAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAGAA/wADAAAAAAAA +AAAEAAAAAAAACAAAAAAAAAAA4AMAAAAAAAAAAAAAAMACAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAADArwAAAAAAAAAAAAAAAAAA8AsAAAAAAAAAAAAAAAAACAAAAAAAAAAA +AAAAAAAAAGYA/wADAAAAAAAAAAAEAAAAAAAACAAAAAAAAAAA4AMAAAAAAAAAAAAAAMAC +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADABwAAAAAAAAAAAAAAAAAA8AEAAAAA +AAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAGcA/wADAAAAAAAAAAAEAAAAAAAACAAAAAAA +AAAA4AMAAAAAAAAAAAAAAMACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADALwAA +AAAAAAAAAAAAAAAA8AsAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAGgA/wADAAAA +AAAAAAAEAAAAAAAACAAAAAAAAAAA4AMAAAAAAAAAAAAAAMACAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAADAVwAAAAAAAAAAAAAAAAAA8BUAAAAAAAAAAAAAAAAACAAAAAAA +AAAAAAAAAAAAAGEA/wADAAAAAAAAAAAEAAAAAAAAEAAAAAAAAAAA4AMAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADArwAAAAAAAAAAAAAAAAAA8AsA +AAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAGIA/wADAAAAAAAAAAAEAAAAAAAAEAAA +AAAAAAAA4AMAAAAAAAAAAAAAAMACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADA +rwAAAAAAAAAAAAAAAAAA8AsAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAGMA/wAD +AAAAAAAAAAAEAAAAAAAACAAAAAAAAAAA4AEAAAAAAAAAAAAAAMACAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAADALwAAAAAAAAAAAAAAAAAA8AsAAAAAAAAAAAAAAAAACAAA +AAAAAAAAAAAAAAAAAGQA/wADAAAAAAAAAAAEAAAAAAAAEAAAAAAAAAAAwAEAAAAAAAAA +AAAAAMACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADABwAAAAAAAAAAAAAAAAAA +8AEAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAGUA/wADAAAAAAAAAAAEAAAAAAAA +EAAAAAAAAAAAwAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AADALwAAAAAAAAAAAAAAAAAA8AsAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAGkA +/wADAAAAAAAAAAAEAAAAAAAAEAAAAAAAAAAAwAMAAAAAAAAAAAAAAMACAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAADABwAAAAAAAAAAAAAAAAAA8AEAAAAAAAAAAAAAAAAA +CAAAAAAAAAAAAAAAAAAAAGoA/wADAAAAAAAAAAAEAAAAAAAAEAAAAAAAAAAAwAMAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADALwAAAAAAAAAAAAAA +AAAA8AsAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAJgB/wAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAQADwAPMAiIHwAPMAQQCAAIMAiYGAAIMASADyAPUAioHyAPUAQwD2APcA +i4H2APcASgDxAPQAjIHxAPQASwCBAIQAjYGBAIQATACCAIUAj4GCAIUAAAAAAAAAAAAA +AAAAiAHwAPMAiQGAAIMAigHyAPUAiwH2APcAjAHxAPQAjQGBAIQAjwGCAIUAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAECcBcLAIwAAAAAAAECKCMPABIAAAAAAAEC4C4KAJgCAAAAAAECUEYOACQCAAAAAAEC +wF0JALAEAAAAAAECoIwNAEgEAAAAAAECgLsIAGAEAAAAAAEC8NIMAGwEAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDcBcL -AIwAAAAAAAEDKCMPABIAAAAAAAED4C4KAJgCAAAAAAEDUEYOACQCAAAAAAEDwF0JALAE -AAAAAAEDoIwNAEgEAAAAAAEDgLsIAGAEAAAAAAED8NIMAGwEAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA3AXCwCMAAAA +AAABAygjDwASAAAAAAABA+AuCgCYAgAAAAABA1BGDgAkAgAAAAABA8BdCQCwBAAAAAAB +A6CMDQBIBAAAAAABA4C7CABgBAAAAAABA/DSDABsBAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAnAXCwCMAAAAAAABAigj -DwASAAAAAAABAuAuCgCYAgAAAAABAlBGDgAkAgAAAAABAsBdCQCwBAAAAAABAqCMDQBI -BAAAAAABAoC7CABgBAAAAAABAvDSDABsBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQJwFwsAjAAAAAAAAQIoIw8AEgAA +AAAAAQLgLgoAmAIAAAAAAQJQRg4AJAIAAAAAAQLAXQkAsAQAAAAAAQKgjA0ASAQAAAAA +AQKAuwgAYAQAAAAAAQLw0gwAbAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAEDcBcLAIwAAAAAAAEDKCMPABIAAAAAAAED4C4KAJgC +AAAAAAEDUEYOACQCAAAAAAEDwF0JALAEAAAAAAEDoIwNAEgEAAAAAAEDgLsIAGAEAAAA +AAED8NIMAGwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQNwFwsAjAAAAAAAAQMoIw8AEgAAAAAAAQPg -LgoAmAIAAAAAAQNQRg4AJAIAAAAAAQPAXQkAsAQAAAAAAQOgjA0ASAQAAAAAAQOAuwgA -YAQAAAAAAQPw0gwAbAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAABAOgDCwCCAAAAAAABANAHCgSEAQAAAAABAHwVCQSLAQAAAAABAPgqCASW +AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAEA6AMLAIIAAAAAAAEA0AcKBIQBAAAAAAEAfBUJBIsBAAAAAAEA -+CoIBJYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAABKIAAAAAAAAAAAAACKIAAEZGPlBGRj5QDKIAAGxBgGRsQYBkEKIA +AAOgmQEDoJkBFKIAABDWTAQQ1kwEGKIAAEAAgBNAAIATHKIAAGAA4BtgAOAbIKIAAAqA +UwwKgFMMJKIAADvfFAA73xQAKKIAALUBAAC1AQAALKIAACAAAAAgAAAAnJgAAAAAAAAA +AAAAnJgAAAAAAAAAAAAAnJgAAAAAAAAAAAAAnJgAAAAAAAAAAAAAnJgAAAAAAAAAAAAA +nJgAAAAAAAAAAAAAnJgAAAAAAAAAAAAAnJgAAAAAAAAAAAAAnJgAAAAAAAAAAAAAnJgA +AAAAAAAAAAAAnJgAAAAAAAAAAAAAnJgAAAAAOAAAADgAnJgAAAAAAAAAAAAAnJgAAAAA +AAAAAAAAnJgAAAAAAAAAAAAAnJgAAPkABAD5AAQA1JgAAAAAAAAEAAAAAAAAAAAAAAAA +AAAAAAAAAJyYAAAAAAAAAAAAAJyYAAAAAAAAAAAAAJyYAAAAAAAAAAAAAJyYAAAAAAAA +AAAAAJyYAAAAAAAAAAAAAJyYAAAAAAAQAAAAEJyYAAAAAAAEAAAABJyYAAAAAAAAAAAA +AJyYAAAAAAAAAAAAAJyYAAAAAAAAAAAAAJyYAAAAAAAAAAAACpyYAACAADgAgAA4ApyY +AAAGAAIABgAAAJyYAACSAAAAkgAAAJyYAACgAAAAoAAAAJyYAAAHAAQABwAEANSYAAAa +AAAAGgAAAJyYAABIAAAASAAAAJyYAAAQAAAAEAAAAJyYAAAIAAAACAAAAJyYAAAPAAAA +DwAAAJyYAADyAAAAYgAAAJyYAABPkAAATJAAAJyYAABaEgAAmhIAAMyYAAAOAAAADwAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAQJwFwsAjAAAAAAAAQIoIw8AEgAAAAAAAQLgLgoAmAIAAAAAAQJQRg4AJAIA +AAAAAQLAXQkAsAQAAAAAAQKgjA0ASAQAAAAAAQKAuwgAYAQAAAAAAQLw0gwAbAQAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAEogAAAAAAAAAAAAAIogAARkY+UEZGPlAMogAAbEGAZGxB -gGQQogAAA6CZAQOgmQEUogAAENZMBBDWTAQYogAAQACAE0AAgBMcogAAYADgG2AA4Bsg -ogAACoBTDAqAUwwkogAAO98UADvfFAAoogAAtQEAALUBAAAsogAAIAAAACAAAACcmAAA -AAAAAAAAAACcmAAAAAAAAAAAAACcmAAAAAAAAAAAAACcmAAAAAAAAAAAAACcmAAAAAAA -AAAAAACcmAAAAAAAAAAAAACcmAAAAAAAAAAAAACcmAAAAAAAAAAAAACcmAAAAAAAAAAA -AACcmAAAAAAAAAAAAACcmAAAAAAAAAAAAACcmAAAAAA4AAAAOACcmAAAAAAAAAAAAACc -mAAAAAAAAAAAAACcmAAAAAAAAAAAAACcmAAA+QAEAPkABADUmAAAAAAAAAQAAAAAAAAA -AAAAAAAAAAAAAAAAnJgAAAAAAAAAAAAAnJgAAAAAAAAAAAAAnJgAAAAAAAAAAAAAnJgA -AAAAAAAAAAAAnJgAAAAAAAAAAAAAnJgAAAAAABAAAAAQnJgAAAAAAAQAAAAEnJgAAAAA -AAAAAAAAnJgAAAAAAAAAAAAAnJgAAAAAAAAAAAAAnJgAAAAAAAAAAAAKnJgAAIAAOACA -ADgCnJgAAAYAAgAGAAAAnJgAAJIAAACSAAAAnJgAAKAAAACgAAAAnJgAAAcABAAHAAQA -1JgAABoAAAAaAAAAnJgAAEgAAABIAAAAnJgAABAAAAAQAAAAnJgAAAgAAAAIAAAAnJgA -AA8AAAAPAAAAnJgAAPIAAABiAAAAnJgAAE+QAABMkAAAnJgAAFoSAACaEgAAzJgAAA4A -AAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAABAnAXCwCMAAAAAAABAigjDwASAAAAAAABAuAuCgCYAgAAAAABAlBG -DgAkAgAAAAABAsBdCQCwBAAAAAABAqCMDQBIBAAAAAABAoC7CABgBAAAAAABAvDSDABs -BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECuAsL +AIYAAAAAAAEClBEPAAkAAAAAAAECcBcKAIwCAAAAAAECKCMOABICAAAAAAEC4C4JAJgE +AAAAAAECUEYNACQEAAAAAAECwF0IADAEAAAAAAECeGkMADYEAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AQNwFwsAjAAAAAAAAQMoIw8AEgAAAAAAAQPgLgoAmAIAAAAAAQNQRg4AJAIAAAAAAQPA -XQkAsAQAAAAAAQOgjA0ASAQAAAAAAQOAuwgAYAQAAAAAAQPw0gwAbAQAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAtwFCwCDAAAAAAABAsoI +DwAEAAAAAAABArgLCgCGAgAAAAABApQRDgAJAgAAAAABAnAXCQCMBAAAAAABAigjDQAS +BAAAAAABAuAuCAAYBAAAAAABArw0DAAbBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA6AMbAIIAAAAA -AAEA0AcaBIQBAAAAAAEAfBUZBIsBAAAAAAEA+CoYBJYBAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQNwFwsAjAAAAAAAAQPgLgoAmAIAAAAAAQNQ +Rg4AJAIAAAAAAQPAXQkAsAMAAAAAAQOgjA0ASAMAAAAAAQOAuwgAYAMAAAAAAQPw0gwA +bAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAOgDGwACAAAAAAABANAHGgQEAQAA -AAABAHwVGQQLAgAAAAABAPgqGAQWAwAAAAAAAnAXCwAMBAAAAAAAAigjDwASBAAAAAAB -AuAuCgAYBgAAAAABAlBGDgAkBgAAAAABAsBdCQAwCAAAAAABAqCMDQBICAAAAAABAoC7 -CABgCAAAAAABAvDSDABsCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAQT0AQcAgQAAAAAAAQToAwIAiwEAAAAAAQTQBwYAlgIA -AAAAAQS4CwEAlgMAAAAAAQJwFwsAjAQAAAAAAQIoIw8AEgQAAAAAAQLgLgoAmAYAAAAA -AQJQRg4AJAYAAAAAAQLAXQkAsAgAAAAAAQKgjA0ASAgAAAAAAQKAuwgAYAgAAAAAAQLw -0gwAbAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -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 -KSAzLjQuMiBbRnJlZUJTRF0gMjAwNDA3MjgAAC5zeW10YWIALnN0cnRhYgAuc2hzdHJ0 -YWIALnJlbC50ZXh0AC5yZWwucm9kYXRhAC5yb2RhdGEuc3RyMS4xAC5yb2RhdGEuc3Ry -MS40AC5yZWwuZGF0YQAuYnNzAC5jb21tZW50AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAB8AAAABAAAABgAAAAAAAAA0AAAAYmwBAAAAAAAAAAAA -BAAAAAAAAAAbAAAACQAAAAAAAAAAAAAAZDICAPAWAAAMAAAAAQAAAAQAAAAIAAAAKQAA -AAEAAAACAAAAAAAAAKBsAQAIdwAAAAAAAAAAAAAgAAAAAAAAACUAAAAJAAAAAAAAAAAA -AABUSQIAEBkAAAwAAAADAAAABAAAAAgAAAAxAAAAAQAAADIAAAAAAAAAqOMBAMwFAAAA -AAAAAAAAAAEAAAABAAAAQAAAAAEAAAAyAAAAAAAAAHTpAQBnAAAAAAAAAAAAAAAEAAAA -AQAAAFMAAAABAAAAAwAAAAAAAADg6QEA5BYAAAAAAAAAAAAAIAAAAAAAAABPAAAACQAA -AAAAAAAAAAAAZGICALAAAAAMAAAABwAAAAQAAAAIAAAAWQAAAAgAAAADAAAAAAAAAOAA -AgCwAQAAAAAAAAAAAAAgAAAAAAAAAF4AAAABAAAAAAAAAAAAAADgAAIAywYAAAAAAAAA -AAAAAQAAAAAAAAARAAAAAwAAAAAAAAAAAAAAqwcCAGcAAAAAAAAAAAAAAAEAAAAAAAAA -AQAAAAIAAAAAAAAAAAAAAEQKAgCgFwAADQAAAAgAAAAEAAAAEAAAAAkAAAADAAAAAAAA -AAAAAADkIQIAgBAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAwABAAAAAAAAAAAAAAAAAAMAAwAAAAAAAAAAAAAAAAADAAUAAAAAAAAAAAAA -AAAAAwAGAAAAAAAAAAAAAAAAAAMABwAAAAAAAAAAAAAAAAADAAkAAAAAAAAAAAAAAAAA -AwAKAAEAAADQiQAAqAAAABIAAQAMAAAARHsAAAYAAAASAAEAFwAAAJDvAAC7AAAAEgAB -ACIAAABwYQAAdAAAABIAAQAtAAAA/OUAAI8AAAASAAEAOAAAAHRXAADbAAAAEgABAEMA -AACoMwEA5AAAABIAAQBOAAAA4AIAAKQBAAARAAcAWQAAADjzAAAjAAAAEgABAGQAAABo -WQAAMQAAABIAAQBvAAAAlE4AADwAAAASAAEAegAAAITsAAAlAAAAEgABAIUAAABU6QAA -EwAAABIAAQCQAAAA2N8AAAwAAAASAAEAmwAAAPjNAAC6AAAAEgABAKYAAAB81gAA5QAA -ABIAAQCxAAAAXAgAADwAAAASAAEAvAAAAITCAACWAAAAEgABAMcAAAA0rQAAiwAAABIA -AQDSAAAAHJsAAAsAAAASAAEA3QAAABh/AAAlAAAAEgABAOgAAAAg8gAABgAAABIAAQDz -AAAAjM0AAAYAAAASAAEA/gAAAEjeAAAXAAAAEgABAAkBAABY/gAAewAAABIAAQAUAQAA -DAYAAHUAAAASAAEAHwEAAAyNAAAGAAAAEgABACoBAADIJgEAdQAAABIAAQA1AQAACIIA -AAYAAAASAAEAQAEAACibAAAPAAAAEgABAEsBAABADgAApAEAABEABwBWAQAAPOsAAHQA -AAASAAEAYQEAAAyAAABuAAAAEgABAGwBAAC8AgAALAAAABIAAQB3AQAAuCgBAFgAAAAS -AAEAggEAAKirAAAhAAAAEgABAI0BAAAAAAAAAAAAABAAAACuAQAAiF4AAEEAAAASAAEA -uQEAAPTEAACWAAAAEgABAMQBAABYYAAAJAAAABIAAQDPAQAA6JIAAEgAAAASAAEA2gEA -AByWAAB4AAAAEgABAOUBAADIxQAAOQAAABIAAQDwAQAAEIIAAGEAAAASAAEA+wEAAMhd -AAAzAAAAEgABAAYCAACIewAAOQAAABIAAQARAgAAZJgAAEoAAAASAAEAHAIAALDrAAAg -AAAAEgABACcCAAC86gAAYAAAABIAAQAyAgAA6P4AADcAAAASAAEAPQIAALjOAABXAAAA -EgABAEgCAABgWQAABgAAABIAAQBTAgAA0OsAAHgAAAASAAEAXgIAAAhQAADIBQAAEgAB -AGkCAAAIlwAAHgEAABIAAQB0AgAAqOcAACYAAAASAAEAfwIAAGgCAABTAAAAEgABAIoC -AAAc6wAAIAAAABIAAQCVAgAAvBcBAAIBAAASAAEAoAIAABjyAAAGAAAAEgABAKsCAABg -3QAALAAAABIAAQC2AgAAnM8AAPEAAAASAAEAwQIAAABgAAAZAAAAEgABAMwCAABIjQAA -mwAAABIAAQDXAgAAvJEAAHsAAAASAAEA4gIAAKR6AAAhAAAAEgABAO0CAABMHAEAiAAA -ABIAAQD4AgAAhHAAAPIBAAASAAEAAwMAAKhiAAABAAAAEgABAA4DAADUHAEASAAAABIA -AQAZAwAA4HwAADUCAAASAAEAJAMAABgBAABQAQAAEgABADMDAACsCQEA5gIAABIAAQA+ -AwAAKPIAAIcAAAASAAEASQMAANyWAAARAAAAEgABAFQDAAAUGwEAOAEAABIAAQBfAwAA -4O0AAM4AAAASAAEAagMAALzyAAAPAAAAEgABAHUDAAAAlAAADgAAABIAAQCAAwAABMYA -AN8AAAASAAEAiwMAAIzFAAA5AAAAEgABAJYDAAAIpwAAUwAAABIAAQChAwAA0FUAABAA -AAASAAEArAMAABxgAAA7AAAAEgABALcDAADoAgAAKAEAABIAAQDNAwAAIAMBACEAAAAS -AAEA2AMAAHSCAACWAAAAEgABAOMDAABQYQAAIAAAABIAAQDuAwAA5IsAABYAAAASAAEA -+QMAANT+AAASAAAAEgABAAQEAACgswAAKgAAABIAAQAPBAAAnOEAAIIDAAASAAEAGgQA -ACjfAAALAAAAEgABACUEAAA4WgAAiAAAABIAAQAwBAAAxIoAADgAAAASAAEAOwQAANwq -AQA9AAAAEgABAEYEAAAY4AAA+AAAABIAAQBRBAAAwJYAAAEAAAASAAEAXAQAACBeAABl -AAAAEgABAGcEAAAwkQAAiwAAABIAAQByBAAAlMQAAF8AAAASAAEAfQQAAJDQAACnBQAA -EgABAIgEAABsGgEApgAAABIAAQCTBAAANOkAAAYAAAASAAEAngQAAECQAAAhAAAAEgAB -AKkEAADU8wAAVwAAABIAAQC0BAAAbCUBAPUAAAASAAEAvwQAAJicAABFAAAAEgABAMoE -AAA4XQAAKQAAABIAAQDVBAAASOwAACMAAAASAAEA4AQAADjWAABBAAAAEgABAOsEAAAM -zAAAHwAAABIAAQD2BAAAECkBAD4AAAASAAEAAQUAABDyAAAGAAAAEgABAAwFAAAAAAAA -AAAAABAAAAAZBQAAgHwAAGAAAAASAAEAJAUAABhnAABFAAAAEgABAC8FAACwKQEACwAA -ABIAAQA6BQAABOgAAHcAAAASAAEARQUAAGwEAADFAAAAEgABAFYFAABUHwEA8wMAABIA -AQBhBQAAfGAAAEQAAAASAAEAbAUAALCAAACPAAAAEgABAHcFAABo6QAAEQAAABIAAQCC -BQAAjDQBAHEAAAASAAEAjQUAAJBmAABXAAAAEgABAJgFAAAUjQAAMQAAABIAAQCjBQAA -FKkAACABAAASAAEArgUAAMh6AAB5AAAAEgABALkFAAAAEAAApAEAABEABwDEBQAArPQA -ADgAAAASAAEAzwUAAEzwAAAsAAAAEgABANoFAAB4igAASgAAABIAAQDlBQAA4JwAAOUA -AAASAAEA8AUAAKzsAAA0AQAAEgABAPsFAAAMlQAAXAAAABIAAQAGBgAAyJYAABMAAAAS -AAEAEQYAALDuAADgAAAAEgABABwGAABkHQEAAQEAABIAAQAnBgAAHCsBAFQEAAASAAEA -MgYAACiYAAA6AAAAEgABAD0GAADEWAAACwAAABIAAQBIBgAA/IoAAOgAAAASAAEAUwYA -ABzbAABKAAAAEgABAF4GAADs5gAAJwAAABIAAQBpBgAAMGMAACQAAAASAAEAdAYAAMBr -AQCiAAAAEgABAH8GAAC46AAAOAAAABIAAQCKBgAAwBEAAKQBAAARAAcAlQYAAIzMAABl -AAAAEgABAKAGAAA4mwAADwAAABIAAQCrBgAAYGcAAC0BAAASAAEAtgYAADzlAAAhAAAA -EgABAMEGAAAU5wAAlAAAABIAAQDMBgAA1FYAAGgAAAASAAEA1wYAAMgpAQATAQAAEgAB -AOIGAAAwbwAAFAAAABIAAQDtBgAAeGUAAA8AAAASAAEA+AYAABxfAACqAAAAEgABAAMH -AAD4ZgAAHQAAABIAAQAOBwAAjOYAAF8AAAASAAEAGQcAALAAAQDxAQAAEgABACQHAAD0 -zAAABgAAABIAAQAvBwAA4CMBAFsAAAASAAEAOgcAAARlAAAjAAAAEgABAEUHAABgBgAA -pAEAABEABwBQBwAAwFoAAIwBAAASAAEAWwcAAEx7AAA5AAAAEgABAGYHAADoZgAADgAA -ABIAAQBxBwAAAAAAAAAAAAAQAAAAkQcAAJBoAAAwBgAAEgABAJwHAAAAAAAACQAAABEA -BwCsBwAANAUAAHUAAAASAAEAvQcAADiSAAAqAAAAEgABAMgHAABk1wAAUgAAABIAAQDT -BwAA4OcAACIAAAASAAEA3gcAAKxiAAABAAAAEgABAOkHAAC4lgAABgAAABIAAQD0BwAA -nJoAAAsAAAASAAEA/wcAAOSNAACIAAAAEgABAAoIAACU6QAAHgEAABIAAQAVCAAA3GQA -AAYAAAASAAEAIAgAAAAAAAAAAAAAEAAAAC8IAACQkgAAMwAAABIAAQA6CAAA/PEAABQA -AAASAAEARQgAAOTxAAAWAAAAEgABAFAIAABo2wAAOAAAABIAAQBbCAAAwG4AAG4AAAAS -AAEAZggAAIiVAAB0AAAAEgABAHEIAAA86QAAFwAAABIAAQB8CAAANN8AAKIAAAASAAEA -hwgAAGzsAAAXAAAAEgABAJIIAADYkwAAJgAAABIAAQCdCAAAVPQAAFYAAAASAAEAqAgA -ACAyAQCFAQAAEgABALMIAABsjgAAuAEAABIAAQC+CAAAAGYAABcAAAASAAEAyQgAAMCQ -AABAAAAAEgABANQIAACsdAAAHwAAABIAAQDfCAAAfPMAAFcAAAASAAEA6ggAAGSSAAAs -AAAAEgABAPUIAABYkwAAgAAAABIAAQAACQAAyF8AACYAAAASAAEACwkAAGAjAQAfAAAA -EgABABYJAAAAAAAAAAAAABAAAAAlCQAAaFwAACEAAAASAAEAMAkAAKDlAABZAAAAEgAB -ADsJAAAgCAAApAEAABEABwBGCQAAdJwAAA4AAAASAAEAUQkAAPyLAABgAAAAEgABAFwJ -AADkAAAAMwAAABIAAQBqCQAAJF0AABIAAAASAAEAdQkAAKAEAACkAQAAEQAHAIAJAAAc -nAAAVwAAABIAAQCLCQAAXIwAAAsAAAASAAEAlgkAAAwAAAAcAAAAEQAHAKgJAADMXgAA -HAAAABIAAQCzCQAA5N8AADQAAAASAAEAvgkAAFhkAAB4AAAAEgABAMkJAAAwNgEADAIA -ABIAAQDUCQAA0GQAAAsAAAASAAEA3wkAAAjzAAAtAAAAEgABAOoJAACYSQAAmQAAABIA -AQD1CQAASCMBABYAAAASAAEAAAoAAMSbAABXAAAAEgABAAsKAACUlgAAIwAAABIAAQAW -CgAA3PIAACkAAAASAAEAIQoAACzMAAAeAAAAEgABACwKAAAcHQEASAAAABIAAQA3CgAA -/JUAACAAAAASAAEAQgoAAECBAAAGAAAAEgABAE0KAADECAEAsQAAABIAAQBYCgAAaIwA -AKIAAAASAAEAYwoAAJTNAABhAAAAEgABAG4KAADgCQAApAEAABEABwB5CgAA6GUAABcA -AAASAAEAhAoAALwpAQAKAAAAEgABAI8KAABoWAAAXAAAABIAAQCaCgAAKGUAAEMAAAAS -AAEApQoAAMTHAAAtBAAAEgABALAKAADkYgAASgAAABIAAQC7CgAAsJoAAAYAAAASAAEA -xgoAAKDbAAA4AQAAEgABANEKAACEnAAAEgAAABIAAQDcCgAAsEsAADcAAAASAAEA5woA -AOTdAABiAAAAEgABAPIKAACYCgAAbwAAABIAAQD9CgAAqJoAAAYAAAASAAEACAsAABAH -AABLAQAAEgABABMLAAA03QAAKgAAABIAAQAeCwAABGIAAHgAAAASAAEAKQsAAGxlAAAL -AAAAEgABADQLAADklAAAKAAAABIAAQA/CwAAIBYBAHYAAAASAAEASgsAAJxdAAAsAAAA -EgABAFULAAB4CQEANAAAABIAAQBgCwAAEAQAAFsAAAASAAEAawsAAGDlAABAAAAAEgAB -AHYLAAAAAAAAAAAAABAAAACGCwAAzLMAAIQBAAASAAEAkQsAAFBYAAAWAAAAEgABAJwL -AABkJgEAYgAAABIAAQCnCwAA/F0AACQAAAASAAEAsgsAABDhAACMAAAAEgABAL0LAACg -lAAARAAAABIAAQDICwAA/MwAAI4AAAASAAEA0wsAAAAAAAAAAAAAEAAAAPMLAACEBgAA -igAAABIAAQD+CwAAjFwAAE0AAAASAAEACQwAANxcAABAAAAAEgABABQMAAAAkQAALwAA -ABIAAQAfDAAAnFkAAJsAAAASAAEAKgwAADCTAAAnAAAAEgABADUMAAC41wAAoQIAABIA -AQBADAAA8JYAABUAAAASAAEASwwAAOT0AAARAQAAEgABAFYMAABMXAAAHAAAABIAAQBh -DAAAAAAAAAAAAAAQAAAAbwwAACSQAAAcAAAAEgABAHoMAAD8CAAAUwAAABIAAQCFDAAA -sGIAADIAAAASAAEAkAwAAKSbAAAfAAAAEgABAJsMAACwmAAALAAAABIAAQCmDAAAvG8A -AMgAAAASAAEAsQwAABhmAAAfAAAAEgABALwMAADoXgAANAAAABIAAQDHDAAAIOUAABwA -AAASAAEA0gwAAMzyAAAPAAAAEgABAN0MAADEkgAAJAAAABIAAQDoDAAAwN0AACQAAAAS -AAEA8wwAALgEAQALBAAAEgABAP4MAADAYAAALgAAABIAAQAJDQAA8F8AAA4AAAASAAEA -FA0AAMCaAABbAAAAEgABAB8NAAA8JAEALQEAABIAAQAqDQAAEJQAABkAAAASAAEANQ0A -AEiBAADAAAAAEgABAEANAABkkAAAWQAAABIAAQBLDQAAxJYAAAEAAAASAAEAVg0AAMR7 -AAC7AAAAEgABAGENAACAEwAApAEAABEABwBsDQAAPFcAADgAAAASAAEAdw0AANBYAACO -AAAAEgABAIINAACM3QAAMwAAABIAAQCNDQAAnCgBABsAAAASAAEAmA0AALTqAAAGAAAA -EgABAKMNAABolAAAOAAAABIAAQCuDQAAuJoAAAYAAAASAAEAuQ0AAGAVAQDAAAAAEgAB -AMQNAAAQmgAAjAAAABIAAQDPDQAAyJ0AACsJAAASAAEA2g0AAEAVAACkAQAAEQAHAOUN -AABkXQAANQAAABIAAQDwDQAArAUAAF0AAAASAAEA+w0AAEAnAQBaAQAAEgABAAYOAADc -HgEAdgAAABIAAQARDgAA5GQAAB4AAAASAAEAHA4AAIhlAAAPAAAAEgABACcOAABolQAA -IAAAABIAAQAyDgAAsPIAAAsAAAASAAEAPQ4AAJhlAABNAAAAEgABAEgOAADkYQAAIAAA -ABIAAQBTDgAA5IcAABAAAAASAAEAXg4AAFAJAABHAQAAEgABAGkOAAC0zgAAAQAAABIA -AQB0DgAAQH8AAEoAAAASAAEAfw4AAHSbAAAXAAAAEgABAIoOAACgYgAABgAAABIAAQCV -DgAAWMcAAGsAAAASAAEAoA4AAFzzAAAfAAAAEgABAKsOAAAARwEAogAAABIAAQC2DgAA -fGIAACMAAAASAAEAwQ4AAFhPAABAAAAAEgABAMwOAAC0RQAA4gMAABIAAQDiDgAALPQA -ACcAAAASAAEA7Q4AADhmAABXAAAAEgABAPgOAAD49QAAXggAABIAAQADDwAAYN4AAMYA -AAASAAEADg8AAEzMAAA9AAAAEgABABkPAACMmwAAFwAAABIAAQAkDwAAjH8AAH0AAAAS -AAEALw8AAGg4AAB8AAAAEgABADoPAABEbwAAdwAAABIAAQBFDwAASJsAACkAAAASAAEA -UA8AAPSmAAASAAAAEgABAFsPAAA8VgAAlgAAABIAAQBmDwAADIMAAAEAAAASAAEAcQ8A -APBgAABgAAAAEgABAHwPAACYwQAAPwAAABIAAQCHDwAAcPEAAHQAAAASAAEAkg8AAPDo -AABEAAAAEgABAJ0PAAAslAAAOwAAABIAAQCoDwAAaIMAAHoEAAASAAEAsw8AAHB3AAC5 -AgAAEgABAL4PAAB86QAAFQAAABIAAQDJDwAA9MsAABYAAAASAAEA1A8AAHRcAQCqAAAA -EgABAN8PAACwTAAAkAAAABIAAQDqDwAAfOgAADsAAAASAAEA9Q8AANjcAABZAAAAEgAB -AAAQAAAg/wAAjgEAABIAAQALEAAAgCMBAB4AAAASAAEAFhAAAFzaAAC+AAAAEgABACEQ -AAAAAAAAAAAAABAAAAAwEAAAHF0AAAYAAAASAAEAOxAAAHyAAAAzAAAAEgABAEYQAADQ -5wAADgAAABIAAQBREAAAXKcAALgBAAASAAEAXBAAANBOAACGAAAAEgABAHUQAACgIwEA -PQAAABIAAQAAenowMDViNTg0NgB6ejAwMmRiMTFjAHp6MDJkYmY4NzUAenowMmRiYjFi -MgB6ejAwMmRiNDYwAHp6MGI3YjgzNjgAenowNWI4YzY1YQB6ejAwNWI0MGFkAHp6MDVi -OTQyZWQAenowZDk0Y2QwNAB6ejAwMTlmNDcwAHp6MDJkYmU3M2QAenowMDViNjkyYgB6 -ejBiNmQyMzI1AHp6MDA1Yjg1M2QAenowMDE2ZDkyZQB6ejBjZmIxODc1AHp6MDAyZGIz -MWMAenowMmRhYmJhYwB6ejAwMGI2YzY4AHp6MDAwYjZiZjgAenowMmRiNWJmMAB6ejAx -NmUxZGZkAHp6MGI3MGU5OGMAenowNmUwZjZjMgB6ejAwNjdkMmIxAHp6MGI2Y2EzMjUA -enowMDViNmNmZAB6ejAxNmUwZGZkAHp6MDAwYjZmNjgAenowMDViNDhhZAB6ejAyZGJm -MWIyAHp6MDA1Yjg4Y2IAenowMzNlYzhiZgB6ejBkYjRjOTRkAHp6MDJkYjNiYWMAYXRo -X2hhbF9kbWFfYmVhY29uX3Jlc3BvbnNlX3RpbWUAenowMGI2ZjE2MQB6ejBkYzU4NzE4 -AHp6MGRiMDkxMGUAenowMGI2ZTI3YQB6ejAyZGJiYWIyAHp6MGI2ZDFlZmYAenowMDVi -NjRmZAB6ejAwMGI2ZDUyAHp6MGI2YzllZmYAenowMmRiZDg3NQB6ejAyZGIzMWIyAHp6 -MDBiNzA5MjMAenowMDBiNmQxZAB6ejAwYjZkNDUwAHp6MGI2YzIzMjUAenowMmRiZGFi -MgB6ejAwMDViNjMyAHp6MDZkZjJmNTcAenowMDE2ZGE1MAB6ejAwMDY3ZDMyAHp6MDBi -NmQ5MjMAenowMDJkYjUxYwB6ejAxNmRhN2YwAHp6MDE2ZGNiZmUAenowMDE2ZGVjMQB6 -ejAwMTZkZjJjAHp6MGI4MTQ2MTIAenowMTZkOTkyMAB6ejAyZGIxYmFjAHp6MGRjNzg3 -MTgAenowNWI3MDFlMAB6ejAwMGI2YjEwAHp6MGI3MDllZmYAenowMTZkZjg5YgBhdGhf -aGFsX2F0dGFjaAB6ejA2ZTE0ZGQxAHp6MDE2ZGFiMmQAenowMmRiMTM1ZAB6ejBlMGI2 -ZjIzAHp6MDE2ZTI5MWQAenowMDBiNmZlOAB6ejAwMTZkOTQ4AHp6MDE2ZTIwOWIAenow -YjcwMWVmZgB6ejAwMGI2YzlkAHp6MDAwNWI1YTIAenowMmRiMTcwYQBhdGhfaGFsX2Nv -bXB1dGV0eHRpbWUAenowMmRiNWJhYwB6ejAwNWI4MTNkAHp6MDBiNmM5MjMAenowYjZj -ZTk4YwB6ejAwNWI3ZjlkAHp6MGI3MDFkMDIAenowNmUwNDYwZQB6ejAyZGI1NzYzAHp6 -MDZmMjMyY2MAenowZTA3ODM3OQB6ejAwMmRhZjYyAHp6MGI4NTQ2MTIAenowMDBiNmI5 -MAB6ejAxNmQ5ZWZhAHp6MDAyZGIyNjAAenowMTZkZTA1MQB6ejAwMDViNmIyAHp6MDVi -N2YxMTQAenowMzQ3NDZiNAB6ejAyZGJkZGZkAHp6MDA4ZWYzMDkAenowMGI3MTc3ZAB6 -ejAwYjcwZjNkAHp6MDE2ZDg5MjAAenowMmRiMWFiMgB6ejAwMDViNjIyAHp6MDAwYjZm -NzgAenowYjZiNDk1MAB6ejAwNWI3NjMwAGF0aF9oYWxfZnJlZQB6ejA1Yjc5YjFiAHp6 -MDBiNzA3M2QAenowYjVmY2EyNgB6ejAxNmRmYmYxAGF0aF9oYWxfbWh6MmllZWUAenow -MTZlMTg5YgB6ejBkYzM0OTRkAHp6MDAyZGM2MGIAenowMmRiMzM1ZAB6ejBiNmM1M2E0 -AHp6MGY4ZWYzMDgAenowZGE0Y2QwNAB6ejA1Yjc0MWUwAHp6MDJkYTliYWMAenowMTZl -YzlhZAB6ejAwYjcxNzNkAHp6MDE2ZDlkNDEAenowZGMxMmMxZgB6ejAwNWI4NGZkAHp6 -MDA1YjhhYmQAenowMGI3MDEyMwB6ejAwNWI2NTJiAHp6MDJkYjM4NzUAenowMTZlMzA5 -YgB6ejAwNWI2MGIyAHp6MDJkYjE4NzUAenowMmRiMTc2MwB6ejBiN2Y4MzY4AHp6MGRj -MzJjMWYAenowMGI3MDE2MQB6ejAxNmQ3ZDQxAHp6MDAxNmNkMzIAenowZGI0OTEwZQB6 -ejAwNWI0OGVkAHp6MDAyZGM4MGIAenowMmRiMzNlZAB6ejAwNWI4MGZkAHp6MDJkYmZk -ZmQAenowMTZlNjQ4YQB6ejBkYmYyYzFmAHp6MDAyZGFmZjIAenowMDViNzc5ZAB6ejAw +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAEDcBcLAIwAAAAAAAEDKCMPABIAAAAAAAED4C4KAJgCAAAAAAED +UEYOACQCAAAAAAEDwF0JALAEAAAAAAEDoIwNAEgEAAAAAAEDgLsIAGAEAAAAAAED8NIM +AGwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAABAOgDGwCCAAAAAAABANAHGgSEAQAAAAABAHwVGQSLAQAAAAABAPgqGASWAQAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQDoAxsAggAA +AAAAAQDQBxoEhAEAAAAAAQB8FRkEiwIAAAAAAQD4KhgElgMAAAAAAAJwFwsADAQAAAAA +AAIoIw8AEgQAAAAAAQLgLgoAGAYAAAAAAQJQRg4AJAYAAAAAAQLAXQkAMAgAAAAAAQKg +jA0ASAgAAAAAAQKAuwgAYAgAAAAAAQLw0gwAbAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE+gADAIEAZAJkAgEE9AEHAIEA +yQHJAQEE6AMCAIIB5ADkAAEE0AcGAIQCoACgAAEEuAsBAIYDjACMAAECcBcLAIwEPAA8 +AAECKCMPABIEPAA8AAEC4C4KAJgGMAAwAAECUEYOACQGMAAwAAECwF0JADAILAAsAAEC +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 +EgAAABIAAQCuBAAAjLcAACoAAAASAAEAuQQAAKTqAACWAwAAEgABAMQEAADM5wAACwAA +ABIAAQDPBAAA4FwAAIgAAAASAAEA2gQAAOBhAQA9AAAAEgABAOUEAABgjgAAOAAAABIA +AQDwBAAAfGEBAGEAAAASAAEA+wQAAIxNAQA9AAAAEgABAAYFAAAg6QAA+AAAABIAAQAR +BQAAbJoAAAEAAAASAAEAHAUAAORgAABlAAAAEgABACcFAADsyAAAFAAAABIAAQAyBQAA +qJsAAAEAAAASAAEAPQUAAGTVAABnBwAAEgABAEgFAACwOwEApgAAABIAAQBTBQAANPIA +AAYAAAASAAEAXgUAADSUAAAhAAAAEgABAGkFAAD4AQEAVwAAABIAAQB0BQAASH4AAAYA +AAASAAEAfwUAAIRHAQA9AQAAEgABAIoFAAAUnwAARQAAABIAAQCVBQAA6F8AAD8AAAAS +AAEAoAUAALj0AAAjAAAAEgABAKsFAADM3AAAYwAAABIAAQC2BQAA2M8AAB8AAAASAAEA +wQUAAIxLAQA+AAAAEgABAMwFAAAAAAAAAAAAABAAAADZBQAAjH8AAGAAAAASAAEA5AUA +AJDSAAAGAAAAEgABAO8FAAAsXAEABgAAABIAAQD6BQAAAGoAAEUAAAASAAEABQYAADhJ +AQAMAAAAEgABABAGAAA0TAEACwAAABIAAQAbBgAACPEAAHcAAAASAAEAJgYAAGAFAAAI +AgAAEgABADcGAADYQQEAqgMAABIAAQBCBgAAXGMAAEQAAAASAAEATQYAALyDAACPAAAA +EgABAFgGAABgmgAAAQAAABIAAQBjBgAAUPIAABEAAAASAAEAbgYAAEiGAAAGAAAAEgAB +AHkGAABQWAEAcQAAABIAAQCEBgAAeGkAAFcAAAASAAEAjwYAADRcAQAGAAAAEgABAJoG +AABQ4gAAiQAAABIAAQClBgAADJEAAC8AAAASAAEAsAYAAECrAABcAQAAEgABALsGAADA +fQAAhwAAABIAAQDGBgAAdCIBACkGAAASAAEA0QYAANACAQA4AAAAEgABANwGAAAI/gAA +LAAAABIAAQDnBgAAXJ8AAOUAAAASAAEA8gYAAABhAQAyAAAAEgABAP0GAACE9gAAIwIA +ABIAAQAIBwAARJgAAFwAAAASAAEAEwcAAHSaAAATAAAAEgABAB4HAADE+QAAwAIAABIA +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 +AQAuDQAAEgABAF8RAABg5gAAaQEAABIAAQBqEQAAGNAAAD0AAAASAAEAdREAAAieAAAX +AAAAEgABAIARAACI0gAABgAAABIAAQCLEQAAmIIAAH0AAAASAAEAlhEAAAg/AAB8AAAA +EgABAKERAAAUhQAADAAAABIAAQCsEQAAMHIAAHMAAAASAAEAtxEAAMSdAAApAAAAEgAB +AMIRAAAgqQAAEgAAABIAAQDNEQAAVFkAAG0AAAASAAEA2BEAAByGAAABAAAAEgABAOMR +AACgYwAAYAAAABIAAQDuEQAAeMUAAD8AAAASAAEA+REAAEj/AABoAAAAEgABAAQSAADw +8QAARAAAABIAAQAPEgAAkJcAADcAAAASAAEAGhIAAKyGAACeBAAAEgABACUSAACEegAA +uQIAABIAAQAwEgAAZPIAABUAAAASAAEAOxIAAMDPAAAWAAAAEgABAEYSAABcjwEAwgAA +ABIAAQBREgAAgPEAADcAAAASAAEAXBIAANjkAABZAAAAEgABAGcSAACcFAEALgIAABIA +AQByEgAAvEUBAB4AAAASAAEAfRIAAJiNAABGAAAAEgABAIgSAADc4gAAgwAAABIAAQCT +EgAA4F8AAAYAAAASAAEAnhIAALSaAAALAAAAEgABAKkSAACIgwAAMwAAABIAAQC0EgAA +1PAAAA4AAAASAAEAvxIAAARaAQAgAgAAEgABAMoSAAC4MQEA4wAAABIAAQDVEgAAiKkA +ALgBAAASAAEA4BIAAIBBAABhAAAAEgABAPkSAADcRQEAPQAAABIAAQAAenowMDViNTg0 +NgB6ejBkYzE5OGRlAHp6MDAyZGIxMWMAenowMmRiZjg3NQB6ejA1YjYzYzY0AHp6MDJk +YmIxYjIAenowMmRiMjA1MwB6ejAwMmRiYTQyAHp6MGZiYjFlM2YAenowYjc5ZWE5NAB6 +ejA1YjhjNjVhAHp6MDAxNmQ1NGQAenowMDViNDBhZAB6ejA1Yjk0MmVkAHp6MGQ4ZGM2 +MmMAenowMDE5ZjQ3MAB6ejAyZGQ5NDJkAHp6MDJkYmU3M2QAenowMDViNjkyYgB6ejBi +NmQyMzI1AHp6MDA1Yjg1M2QAenowMDE2ZDkyZQB6ejBjZmIxODc1AHp6MDAyZGIzMWMA +enowMmRhYmJhYwB6ejAyZGJjODUxAHp6MDAwYjZjNjgAenowMDBiNmJmOAB6ejAwYjZj +ZjVlAHp6MDE2ZTFkZmQAenowYjZmNTBiOAB6ejA2ZTBhNGZlAHp6MDA2N2QyYjEAenow +YjZjYTMyNQB6ejAwNWI2Y2ZkAHp6MDE2ZTBkZmQAenowMDBiNmY2OABhdGhfaGFsX3By +b2Nlc3Nfbm9pc2VmbG9vcgB6ejAwNWI0OGFkAHp6MDJkYmYxYjIAenowMDViODhjYgB6 +ejAzM2VjOGJmAHp6MGRiNDI1YzUAYXRoX2hhbF9kbWFfYmVhY29uX3Jlc3BvbnNlX3Rp +bWUAenowMGI2ZjE2MQB6ejA2ZTAwYjhhAHp6MDJkYmZjMWQAenowZGM0ZTM5MAB6ejBk +YWZlZDg2AHp6MDBiNmUyN2EAenowMmRiYmFiMgB6ejBiNmQxZWZmAHp6MDE2ZDkwZGQA +enowMmRiZTg1MQB6ejAwNWI2NGZkAHp6MDAwYjZkNTIAenowYjZjOWVmZgB6ejAxNmUw +MGRkAHp6MDBiNmU4MjIAenowMmRiZDg3NQB6ejAyZGIzMWIyAHp6MDBiNzA5MjMAenow +MGI2ZDQ1MAB6ejAwMGI2ZDFkAHp6MGI2YzIzMjUAenowMmRiZGFiMgB6ejAwMDViNjMy +AHp6MDZkZWRkOTMAenowMDE2ZGE1MAB6ejAwMDY3ZDMyAHp6MDBiNmQ5MjMAenowMDJk +YjUxYwB6ejAxNmRjYmZlAHp6MDBiNzAxNDUAenowMDE2ZGVjMQB6ejAwMTZkZjJjAHp6 +MGI3ZmFkM2UAenowMTZkOTkyMAB6ejAyZGIxYmFjAHp6MGRjNmUzOTAAenowNWI3MDFl +MAB6ejAwMGI2YjEwAHp6MGI3MDllZmYAenowMTZkZjg5YgBhdGhfaGFsX2F0dGFjaAB6 +ejA2ZTBmYzBkAHp6MDE2ZGFiMmQAenowMmRiMTM1ZAB6ejBlMDQ2ODRiAHp6MDE2ZTI5 +MWQAenowMDBiNmZlOAB6ejAwY2ZiM2UwAHp6MDAxNmQ5NDgAenowMTZlMjA5YgB6ejBi +NzAxZWZmAHp6MDAwYjZjOWQAenowMDA1YjVhMgB6ejAyZGIxNzBhAGF0aF9oYWxfY29t +cHV0ZXR4dGltZQB6ejAyZGI1YmFjAHp6MDA1YjgxM2QAenowMGI2YzkyMwB6ejBiNmI1 +MGI4AHp6MDA1YjdmOWQAenowYjcwMWQwMgB6ejA2ZGZmNDRhAHp6MDJkYjU3NjMAenow +NmVlYWY2MAB6ejAxNmUzMThjAHp6MGUwMDdjYTEAenowMDJkYWQxZAB6ejAwMmRhZjYy +AHp6MGI4M2FkM2UAenowMDBiNmI5MAB6ejAxNmQ5ZWZhAHp6MDE2ZGUwNTEAenowMDJk +YWIxZAB6ejAwMDViNmIyAHp6MDViN2YxMTQAenowNGFlMDMxZgB6ejAyZGJkZGZkAHp6 +MDA1NDdmZWQAenowMGI2YmY1ZQB6ejAwYjcxNzdkAHp6MDBiNzBmM2QAenowMTZkODky +MAB6ejAyZGIxYWIyAHp6MDAwNWI2MjIAenowMDBiNmY3OAB6ejBiNjliMDdjAGF0aF9o +YWxfZnJlZQB6ejA1Yjc5YjFiAHp6MGRjMzk4ZGUAenowNWI2YmM2NAB6ejAwYjcwNzNk +AHp6MDJkYmViYmQAenowYjVlMzE1MgB6ejAxNmRmYmYxAGF0aF9oYWxfbWh6MmllZWUA +enowMTZlMTg5YgB6ejBkYzJhNWM1AHp6MDAyZGM2MGIAenowNmRmMGI4YQB6ejAyZGIz +MzVkAHp6MDBiNmUwYjIAenowYjZjNTNhNAB6ejBmNTRkMWIwAHp6MDJkYjBlZTIAenow +YjZmZDM2MwB6ejBkOWRjNjJjAHp6MDViNzQxZTAAenowMmRhOWJhYwB6ejBkYzIxZDNh +AHp6MDBiNzE3M2QAenowMTZkOWQ0MQB6ejAwNWI4NGZkAHp6MDE2ZGUxMWQAenowMDVi +OGFiZAB6ejAwYjcwMTIzAHp6MDA1YjY1MmIAenowMmRiMzg3NQB6ejAxNmUzMDliAHp6 +MDA1YjYwYjIAenowMmRiMTg3NQB6ejAwMmRiODQyAHp6MDJkYjE3NjMAenowYjdkZWE5 +NAB6ejAwYjcwMTYxAHp6MDE2ZDdkNDEAenowMDE2Y2QzMgB6ejA2ZGUwYjhhAHp6MDZk +OWRkOTMAenowZGIzZWQ4NgB6ejAwNWI0OGVkAHp6MDAyZGM4MGIAenowMDJkYmM0MgB6 +ejAwYjZmMDIyAHp6MDJkYmE4NTEAenowMmRiMzNlZAB6ejAwNWI4MGZkAHp6MDA1Yjdm +MmUAenowMmRiZmRmZAB6ejAxNmU2NDhhAHp6MDAyZGFmZjIAenowMDViNzc5ZAB6ejAw MGI2ZWU4AHp6MDE2ZTQ0OGEAenowMGI2ZjZiYwB6ejAxNmRhOTIwAHp6MDViNzgxZTAA -enowZTI3M2E0ZAB6ejAwMmRjYTBiAHp6MDJkYjFiZjAAenowMDViNDRhZAB6ejA2ZGU0 -NjBlAHp6MGI2ZjllZmYAenowMGI2YzZiYwBhdGhfaGFsX2FkZGl0aW9uYWxfc3diYV9i -YWNrb2ZmAHp6MDAwMmRiOTIAYXRoX2hhbF92ZXJzaW9uAGF0aF9oYWxfaWVlZTJtaHoA -enowMmRiNzlhZQB6ejBiNmNmMDA5AHp6MDAxNmUxMmMAenowMDE2ZDllNAB6ejAwNWI1 -Y2IyAHp6MDE2ZGEyNTEAenowNmZhMzJjYwB6ejA2ZTAyZjU3AHp6MDA1YjZlMzAAYXRo -X2hhbF9tYWxsb2MAenowMDBiNmRkMgB6ejA1YjZjYmQ1AHp6MDE2ZGIyNTEAenowZTE3 -ODM3OQB6ejAxNmRkMDUxAHp6MDJkYmQxYjIAenowZGE5YzRmNgB6ejAyZGMxNzYzAHp6 -MDE2ZGYwNTEAenowMDE2ZDk1MAB6ejAwYjcwNmJjAHp6MDAxNmQ4NzIAenowNmRmNDYw -ZQB6ejA1YjhjMmVkAHp6MDZmZjE3ZTcAenowYjZmOWQwMgB6ejBkNGVmMzA4AHp6MDE2 -ZGJiZmUAenowMTZlNTQ4YQB6ejAwMTZkODUwAHp6MDAwYjZmZjgAYXRoX2hhbF9tZW1j -cHkAenowMmRiYmRmZAB6ejA2ZGI1ZWI2AHp6MDE2ZWI5YWQAenowMGI2Y2ViYwB6ejBk -OWI4Yjc5AGF0aF9oYWxfcHJvYmUAenowMDJkYjA2MAB6ejAxNmVhOWFkAHp6MDAwZWYz -MDkAenowMmRiMzc2MwBhdGhfaGFsX2J1aWxkb3B0cwB6ejAyZGFmMzVkAHp6MGRiNGNk -MDQAenowMTZkZjI1MQB6ejAwMGI2YzEwAHp6MDE2ZDkyNTEAenowYjcyMWFlZAB6ejA2 -N2NmY2FlAHp6MDAwYjZjZjgAenowY2NlZjMwOAB6ejAyZGFmYWIyAHp6MDViOTJhZWQA -enowMDViOGNjYgB6ejBiNmQ5ZWZmAHp6MDJkYjExYjIAenowZTE3M2E0ZAB6ejAyZGJm -ZmIxAHp6MDJkYmY3NjMAenowMDViNjhmZAB6ejAwNWI0NGVkAHp6MGI3MTFhZWQAenow -YjVmY2EzNAB6ejBkOGI4Yjc5AHp6MDE2ZDhiMmQAenowMTZlMDg5YgB6ejAyZGJiODc1 -AHp6MDE2ZDk3ZjAAenowYjgzODM2OAB6ejAwYjZmZWJjAHp6MGU5OTkzMTMAenowMGI2 -ZWE3YQB6ejAzM2U4ZmJmAHp6MDA1YjcyMzAAenowY2ZhNTg3NQB6ejAyZGI5OWFlAHp6 -MDJkYjlhYjIAenowMDBiNmJlOAB6ejBkOTljNGY2AHp6MGRlZDhhNTcAenowMTZkYWJm -ZQB6ejBiNzA5ZDAyAHp6MDE5ZjNhMDEAenowNzA3MTdlNwBhdGhfaGFsX21lbXplcm8A -enowNmUwNGRkMQB6ejBiNjhlOThjAHp6MDE2ZTJkZmQAenowMDBiNmQyMgB6ejA3MDIz -MmNjAHp6MGRjNTQ5NGQAenowMGI3MGY3ZABhdGhfaGFsX3N3X2JlYWNvbl9yZXNwb25z -ZV90aW1lAHp6MDlmNjlkMmUAenowMDViNjU3YQB6ejA2ZjcxN2U3AHp6MDZkYTVlYjYA -enowYjdkNDYxMgB6ejAwYjZmOTYxAHp6MGI2YjBjOTAAenowMmRiZDM1ZAB6ejAwNWI4 -OGZkAHp6MDJkYWZkZmQAYXRoX2hhbF9kZWxheQB6ejAyZGIxZGZkAHp6MDY3ZDJmNDEA -enowMmRhZjg3NQB6ejBiODA3NzQxAHp6MDE2ZDhkNDEAenowMDJkYWU5MgB6ejBiN2M3 -NzQxAHp6MDJkYmIzNWQAenowMmRiM2RmZAB6ejAyZGI1M2VkAHp6MDAwYjZkYTIAenow -MDBiNmUyMgB6ejA1YjgwMDQxAHp6MGQ4OWM0ZjYAenowMDE2ZDg0OAB6ejAxNmQ5YjJk -AHp6MGUzNzNhNGQAenowMDE2ZTAyYwB6ejAwYjcwNzdkAHp6MDA1YjY5N2EAenowMDE2 -ZGFlNAB6ejAxNmUxMDliAHp6MDA1YjRhMmQAenowZGY3ODM3OQB6ejAyZGJkNzYzAHp6 -MDAwYjZlNTIAenowNWI2YzZkYgB6ejBjYTVmMzI5AHp6MGRiMjkxMGUAenowMmRiM2Jm -MAB6ejA2ZDc4YTRjAHp6MDE2ZTAyNTEAenowMDAyZGJiMgB6ejAwMmRkODZkAHp6MDJk -YjU5YWUAenowMDY3ZDIyMQB6ejAwNWI4OTNkAHp6MDViODFiMWIAenowMTZkODdmMAB6 -ejAyZGIxM2VkAHp6MDBiNmQxMjMAenowMDBiNmNlOAB6ejA1YjhhYWVkAHp6MDJkYWYx -YjIAenowMDA1YjVlMgB6ejAzM2ViZmJmAHp6MDViNjg2ZGIAenowMDBiNmVmOAB6ejBi -NzE5YWVkAHp6MDA1YjU4YjIAenowNWI3ZGIxYgB6ejBiODQ3NzQxAHp6MDAxNmQ3MzIA -enowMmRhZGFiMgB6ejBmNGRlMzA3AGF0aF9oYWxfaW5pdF9jaGFubmVscwB6ejAwYjZk -NmJjAHp6MGM0ZWYzMDgAenowMDAyZGJkMgB6ejBkYWI4Yjc5AHp6MDE2ZTBiODcAenow -NWI5MDJlZAB6ejBkYzM4NzE4AHp6MGFhMmVlYzEAenowMDBiNmMxZAB6ejA1YjhlYWVk -AHp6MDA1YjdiOWQAenowMDViNTQ0NgB6ejA1YjY0NmRiAHp6MDBiNmY5MjMAenowZGRk -OGE1NwB6ejAxNmUxMjUxAHp6MGRjNzQ5NGQAenowMmRiMzcwYQB6ejAwMDViNjcyAHp6 -MDZkZjRkZDEAenowMmRiZjM1ZAB6ejAwMGI2Yzc4AHp6MDAxNmQ4MzIAenowM2U5NzM1 -MwB6ejAyZGI1NzBhAHp6MDA1YjZkN2EAenowMDJkYjI5MgB6ejAwNWI5MGNiAHp6MDA1 -YjVjNDYAYXRoX2hhbF9wcmludGYAenowNmQ5NWViNgB6ejAxNmRmYjg3AHp6MDAxNmRh -NDgAenowMDJkYjA5MgBhdGhfaGFsX2dldHdpcmVsZXNzbW9kZXMAenowMTZlMWI4NwB5 -AAAAAQMAAJEAAAABAwAAsAAAAAEDAAC/AAAAAQMAAMUAAAABAwAAzQAAAAEDAADVAAAA -AQMAAM0BAAACbQAA5AEAAAJoAQD8AQAAAj0AAJ4CAAACHQEA4AYAAAJcAAD2BgAAAlwA -ADQHAAABAgAAHwsAAAECAAAyCwAAAQIAANMOAAACvgAAmhMAAAIKAQDgHwAAAgoBAOEq -AAABAgAA8yoAAAECAAAOOQAAAQIAAD45AAABAgAAmTkAAAECAADOOQAAAQIAAD46AAAB -AgAAYDoAAAECAAByOgAAAQIAAOo6AAABAgAA9DoAAAECAAAKOwAAAQIAABQ7AAABAgAA -OTsAAAECAABBOwAAAQIAAHE8AAABAgAAlDwAAAECAAAaPQAAAQIAAGs9AAABAgAAhj0A -AAECAAAdPgAAAQIAACU+AAABAgAAmT4AAAECAACnPgAAAQIAAK8+AAABAgAA2D4AAAEC -AAAZPwAAAQIAACE/AAABAgAAfT8AAAECAADRPwAAAQIAAOE/AAABAgAADUAAAAECAAAU -QAAAAQIAAGVAAAABAgAAekAAAAECAACDQAAAAQIAAJFAAAABAgAAtEAAAAECAAC9QAAA -AQIAAD1BAAABBQAAXkEAAAEFAABmQQAAAQUAABlCAAABAgAAIkIAAAECAABfQgAAAQIA -AINCAAABAgAA3UIAAAECAAD0QgAAAQIAAA5DAAABAgAARUYAAAJ4AQC6RgAAAQIAAMBG -AAABAgAADUkAAAECAAAcSQAAAQEAAK1KAAABAgAAa0wAAAK0AADkTAAAAQUAAO1MAAAB -BQAAMU0AAAEFAADATQAAAQIAAHxPAAABAgAAH1AAAAK+AABAUAAAAQIAAEZQAAAC1AAA -xFAAAAIjAQBCUQAAAikAAHBRAAACFAEAolEAAAIUAQDRUQAAAhQBACFSAAACFAEAXVIA -AAIUAQAsVQAAAhQBAKZVAAACegAA2FUAAAJ6AABjVgAAASwAAHdWAAABEgEA+lYAAAId -AQA6XAAAAmUAAGBcAAAC1AAAfFwAAALUAACtXAAAAkAAAERdAAACDgEAWF0AAAJqAAB7 -XgAAAjYBADdfAAAC1AAAqF8AAAJEAQC5XwAAAqwAAAxhAAACIQAAL2EAAAJBAQBoYQAA -AiEAAIJhAAACIQAAuGEAAAJBAQD8YQAAAiEAABZiAAACIQAATGIAAAJBAQCXYgAAAiEA -ANdiAAACAAEAI2MAAAIYAABMYwAAAh8BALZjAAACHQEA3WMAAAIdAQA2ZQAAAdwAAEVl -AAABDwAAXWUAAAITAQDKZQAAAh0BAPVoAAACIwEAgWsAAAKnAAA3bAAAAQIAAGxsAAAC -aQEAjm0AAAIdAQCybQAAAkAAAL9tAAACiAAA6G0AAAJOAAAHbgAAAnQAADpuAAACYwEA -WW4AAAILAAB4bgAAAgIBAFRvAAAC4gAAiW8AAAIdAQClbwAAAh0BANFvAAAC4gAAJHAA -AAIdAQBNcAAAAh0BAFlwAAAC4gAAvXAAAAIdAQDdcAAAAh0BAAdxAAACHQEAeHEAAAId -AQCYcQAAAh0BAMVxAAACHQEA6XEAAAJAAAAVcgAAAogAAClyAAACHQEANnIAAAKIAACh -cgAAAh0BALRyAAACQAAAL3YAAAECAACAdwAAAQIAAIp3AAAC1AAAlHcAAAECAACedwAA -AtQAAPt3AAACKQAAI3gAAAIpAACneQAAAikAAMN5AAACKQAA3HkAAAIpAAA9egAAAuYA -AHB6AAACKQAA7noAAAJAAAANewAAAh0BABN7AAACSQAAeXsAAAJLAQC1ewAAAv4AAC98 -AAACCgEAbnwAAAKvAACXfwAAApUAAKh/AAACNgEA2n8AAAI2AQD3fwAAAjYBAPmAAAAC -HQEAKYEAAAJAAABfgwAAAikAAHmDAAACvgAAmoMAAAECAACggwAAAtQAABWEAAACdwEA -V4QAAAIdAQDuhAAAAh0BACmFAAACMQEAhIUAAAIxAQDBhQAAAjEBACSGAAABAgAAaYYA -AAJdAQCmhgAAAh0BAM6GAAACHQEACYcAAAIxAQA9hwAAAmQBAGCHAAACMQEAwYcAAAJK -AQDshwAAAnoAAMWIAAACHQEAVYkAAALNAAAnigAAASwAADuKAAABEgEAj4oAAAJaAQCg -igAAAh0BABWQAAACuwAAOJAAAALUAABUkAAAAtQAAJGQAAACQAAATpEAAAIxAQDIkQAA -AigBANyRAAACMAAA65EAAALQAAAMkgAAAigBAC6SAAACvwAAKJMAAALwAABMkwAAAQIA -AHOTAAAC1AAABJUAAALwAAAolQAAAiEAAEeVAAACQQEAgJUAAAIhAACalQAAAiEAANCV -AAACQQEAFJYAAAIhAAAulgAAAiEAAGSWAAACQQEAr5YAAAIhAABXmAAAAgABAKOYAAAC -GAAAzJgAAAIfAQA7mQAAAh0BAGGZAAACHQEA5ZoAAAGtAADtmgAAAfIAAPWaAAAB1wAA -DZsAAAITAQBhmwAAAkAAAEieAAAC5gAASZ8AAAJ3AQBioAAAAikAAHKgAAACKQAAgKAA -AAEFAACaoAAAAQUAAMWgAAABBQAA16AAAAEFAAACoQAAAQIAABWhAAABAgAALaEAAAEC -AABBoQAAAQIAAFmhAAABAgAAXqEAAAECAAAZpAAAAgsBANOkAAACHQEA96QAAAJAAAAH -pQAAAhoAAISlAAAC9wAAIaYAAAJrAAAxpgAAAkgAAGSmAAACjwAAg6YAAALEAACipgAA -AjEAABinAAACPQEASKcAAAIdAQBxpwAAAj0BABKoAAACHQEAUagAAAIdAQCrqAAAAh0B -AOCoAAACHQEA7KgAAAI9AQDaqQAAAhoAAO6pAAACHQEA+KkAAAIaAABeqgAAAh0BAHGq -AAACQAAAqqoAAAJ/AADCqgAAAQIAAM+qAAACKQAA4KoAAAECAAAOqwAAAikAADirAAAC -KQAASqwAAAIdAQBnrAAAAisAAFCtAAACVAEAgK0AAAECAAAjrwAAAQUAAESvAAABBQAA -Ya8AAAEFAAApsAAAAQUAAD2wAAACKQAAWbAAAAEFAABqsAAAAikAAIewAAACKQAAmbAA -AAEFAACqsAAAAikAAMewAAACKQAA17AAAAEFAAD5sAAAAQUAABGxAAABBQAAE7IAAAI+ -AADqtAAAAhIAAG+1AAABBgAAdLUAAAIKAQCBtQAAAQYAAIa1AAACCgEAi7UAAAEGAACj -tQAAAQYAALK1AAABBgAAubUAAAEGAADCtQAAAQYAANC1AAABBgAA6LUAAAEGAAD/tQAA -AQYAAAy2AAABBgAAHbYAAAEGAABBtgAAAQYAAGS2AAABBgAAcrYAAAEGAAB8tgAAAQYA -AO22AAABBgAALrcAAAEGAACytwAAAQYAAMC3AAABBgAA5rcAAAEGAAAJuAAAAQYAACG4 -AAABBgAAJrgAAAEGAABPuAAAAQYAAFS4AAABBgAA0rgAAAEGAADfuAAAAm0BACe5AAAC -/AAAX7sAAAECAACbvAAAAQIAAIu9AAACYgAApMEAAAECAAC6wQAAAQIAAFvDAAABAgAA -nsMAAAECAACxwwAAAQIAANrDAAABAgAA9MMAAAECAAAWxAAAAQIAACnEAAABAgAAAMUA -AALeAAARxQAAAvAAAE7FAAAC8AAAesUAAALwAAC5xQAAAksBAPXFAAAC/gAAi8YAAAIK -AQDSxgAAAlgAAGvKAAABEgEAccoAAAEsAACBygAAAbEAALPMAAACWgEAxMwAAAIdAQAH -zwAAAikAACXPAAABAgAANs8AAAECAABDzwAAAQIAAFDPAAABAgAAq88AAAK+AADVzwAA -AQIAANvPAAAC1AAAr9AAAAJFAADP0AAAAmUBAO/QAAACcAEAadEAAAIXAACT0QAAAjoA -AD/SAAACbwEAptIAAAJvAQDW0gAAAm8BABvTAAACbwEAatMAAAJvAQDV0wAAAQIAANrT -AAABAgAAJdQAAAJdAQBu1AAAAh0BAHbUAAACOgAAltQAAAIdAQDL1AAAAm8BAPvUAAAC -GQEAJtUAAAKaAABL1QAAAmwBAF7VAAACUgEActUAAAIFAQCY1QAAAm8BAPHVAAACowAA -GdYAAAJ2AABC1gAAAmcAAGjWAAACZQEAcNYAAAJ6AABN1wAAAh0BALPaAAABLAAAx9oA -AAESAQAz2wAAAnkBAETbAAACHQEABd0AAAJAAAA83gAAAsYAAOLhAAABAgAAuuMAAAIP -AQAG5QAAAg8BADTlAAAC1AAAUOUAAALUAAAI5wAAAQIAAC/nAAAC1AAA2OoAAAIhAAD7 -6gAAAkEBADTrAAACIQAATusAAAIhAACE6wAAAkEBAMjrAAACIQAA4usAAAIhAAAY7AAA -AkEBAGPsAAACIQAAe+wAAAIgAAC37AAAAhMAAOvtAAACEwAAzO4AAAECAACE7wAAAgAB -AD/wAAACGAAAaPAAAAIfAQCb8AAAAh0BAMHwAAACHQEAafIAAAEmAABx8gAAAZwAAHjy -AAABNAEAgfIAAAGJAACI8gAAAT8BAKHyAAACEwEA9fIAAAJAAAAk8wAAAioAACzzAAAC -ygAAU/MAAAJ4AAB39QAAAoQAAFb2AAACZQEAc/YAAALmAAAz9wAAAlQAADv3AAACQgAA -SPcAAAJwAQBF+AAAAQIAAFf4AAABAgAAcfgAAAIdAQCH+AAAAQIAAKL4AAABAgAAuPgA -AAIdAQDm+AAAAlMAAAr6AAACUAAAWPoAAALvAABo+gAAAioBAAv7AAACIAAAPPwAAAId -AQAA/QAAAoAAAF79AAACDAAAbv0AAAKoAACA/QAAAkAAAJr9AAACjgAAzf0AAAI4AADs -/QAAAicAAAv+AAACPAAA+P4AAAJlAQBP/wAAAmUBAGcAAQACHQEAhgABAAIdAQDFAAEA -AuYAAM4CAQACHQEA4QIBAAJAAAAEAwEAAmUBAM4DAQACXQAApAQBAAIpAADnBQEAArwA -AKQJAQACUAAAygkBAAIKAQDbCQEAAgoBAA4KAQABAgAAywwBAAJtAQD3DAEAAhIAAIwO -AQAC/AAAjhEBAALUAAD/EgEAAjwBAD0UAQACPAEAPBYBAAECAABMFgEAAQIAAG0WAQAB -AgAAeRYBAAECAADzGAEAAQIAAP0YAQABAgAAgRoBAAIpAAA8GwEAAlEAAHUbAQACXAAA -oxsBAAJRAADpGwEAAlwAACQcAQACXAAAZRwBAALGAADAHAEAAsYAAAgdAQACSwEAUB0B -AAL+AAALHgEAAgoBAFIeAQACTQAA1yEBAAESAQDdIQEAASwAAOshAQABsQAAByQBAAJ5 -AQAYJAEAAh0BAI0kAQACxgAAUiUBAALGAADJKAEAAmYBACspAQACZgEAAyoBAAIKAQC6 -KgEAAioAAPIqAQACeAAAVisBAAECAADxLgEAAQIAABEwAQACZgEAaTABAAKTAACIMAEA -ApMAAMYwAQACkwAA0DABAAKTAADwMAEAApMAAAoxAQACkwAAITEBAAKTAAAwMQEAAggB -AEsxAQACkwAAXjEBAAKTAACpMQEAApMAAOoxAQACkwAA+TEBAAIIAQAUMgEAApMAAGky -AQACkwAAczIBAAKTAAB9MgEAApMAAIoyAQACkwAAlDIBAAKTAACdMgEAAlYBAKoyAQAC -yQAAzzIBAAKTAADnMgEAApMAAAEzAQACkwAAFzMBAAKTAAAvMwEAApMAAEYzAQACVgEA -UzMBAALJAACNMwEAAlYBAJozAQACyQAA2zMBAAJmAQBDNQEAApMAAFw1AQACkwAAeDUB -AAKTAACUNQEAApMAALA1AQACkwAApDYBAAJmAQDRNgEAAQIAANY2AQABBAAA3DYBAAJz -AQANNwEAAQIAABI3AQABBAAAGDcBAAJzAQBdOAEAAQIAAG84AQABAgAAhjgBAAIdAQCi -OAEAAQIAAKk4AQABAgAAvDgBAAIdAQDZOAEAAQIAAOI4AQABAgAA9TgBAAIdAQAiOQEA -An8AADo5AQABAgAARzkBAAIpAABYOQEAAQIAALw5AQACKQAA6jkBAAIpAAByOgEAAQIA -APg8AQABAgAALz0BAAJuAABCPQEAAm4AAFk9AQABAgAAcz0BAAIdAQCNPQEAAQIAAJQ9 -AQABAgAAqj0BAAIdAQDLPQEAAQIAAN09AQABAgAA9z0BAAIdAQAYPgEAAQIAACo+AQAB -AgAARD4BAAIdAQBZPgEAAQIAAKE+AQACbgAAuD4BAAJuAADUPgEAAm4AAOk+AQACbgAA -/j4BAAJuAAATPwEAAm4AACk/AQABAgAAQz8BAAIdAQBdPwEAAQIAAIw/AQACbgAAoT8B -AAJuAAC5PwEAAQIAANM/AQACHQEAkUEBAAIKAQC6RAEAAjwBAJpGAQACPAEAw0YBAAJ6 -AADnRgEAAnoAABNHAQACvgAAP0cBAAK+AABeRwEAAQEAAGhHAQABAQAAckcBAAEBAAB8 -RwEAAQEAAIZHAQABAQAAkEcBAAEBAADFRwEAAQIAANdHAQABAgAA7kcBAAIdAQAKSAEA -AQIAABFIAQABAgAAJEgBAAIdAQBBSAEAAQIAAEpIAQABAgAAXUgBAAIdAQAqSQEAAikA -AKhJAQACKQAAtkkBAAIpAAD8SQEAAikAAApKAQACKQAAUkoBAAIpAABgSgEAAikAAM5K -AQABAgAAEk0BAAECAAAqTQEAAQIAAElNAQABAgAAaE0BAAECAACWTQEAAm4AALBNAQAC -bgAAy00BAAJuAAD6TQEAAm4AABhOAQACbgAANk4BAAJuAABUTgEAAm4AAHJOAQACbgAA -kE4BAAJuAAC4TgEAAm4AANBOAQACbgAA8E4BAAJuAAAITwEAAm4AAERPAQACbgAAVU8B -AAJuAABmTwEAAm4AAHpPAQACbgAAnk8BAAJuAACvTwEAAm4AAMBPAQACbgAA1E8BAAJu -AADoTwEAAm4AAPpPAQABAgAAPFABAAJuAABaUAEAAm4AAGxQAQABAgAAhVABAAIdAQCd -UAEAAQIAALdQAQACHQEAz1ABAAECAADpUAEAAh0BAAFRAQABAgAAG1EBAAIdAQA5UQEA -AQIAAFZRAQACHQEAilMBAALUAACfUwEAAtQAAPJTAQAC1AAAJVQBAALUAAA6VAEAAtQA -AI1UAQAC1AAAuFQBAALUAADNVAEAAtQAACBVAQAC1AAAN1wBAAJ6AABbXAEAAnoAAIdc -AQACvgAAs1wBAAK+AADcXAEAAQEAAOZcAQABAQAA8FwBAAEBAAD6XAEAAQEAAARdAQAB -AQAADl0BAAEBAABBXQEAAQIAAFNdAQABAgAAbV0BAAIdAQCGXQEAAQIAAI1dAQABAgAA -o10BAAIdAQDFXQEAAQIAAM5dAQABAgAA5F0BAAIdAQCyXgEAAikAADBfAQACKQAAPl8B -AAIpAACEXwEAAikAAJJfAQACKQAA2l8BAAIpAADoXwEAAikAAOJgAQABAgAA+mABAAEC -AAAZYQEAAQIAADhhAQABAgAAZmEBAAJuAAB+YQEAAm4AAJBhAQABAgAAsmEBAAECAADL -YQEAAh0BAONhAQABAgAA/WEBAAIdAQAVYgEAAQIAAC9iAQACHQEASWIBAAECAABjYgEA -Ah0BAIBiAQABAgAAmmIBAAIdAQDeYgEAAQIAAINrAQACegAAp2sBAAJ6AADTawEAAr4A -AP9rAQACvgAAHmwBAAEBAAAobAEAAQEAADJsAQABAQAAPGwBAAEBAABGbAEAAQEAAFBs -AQABAQAAAAAAAAEBAAAEAAAAAQEAAAgAAAABAQAADAAAAAEBAAAQAAAAAQEAABQAAAAB -AQAAGAAAAAEBAAAcAAAAAQEAACAAAAABAQAAJAAAAAEBAAAoAAAAAQEAACwAAAABAQAA -MAAAAAEBAAA0AAAAAQEAADgAAAABAQAAPAAAAAEBAADkAAAAAQMAAOgAAAABAwAA/AAA -AAEDAAAAAQAAAQMAABQBAAABAwAAGAEAAAEDAAAsAQAAAQMAADABAAABAwAARAEAAAED -AABIAQAAAQMAAFwBAAABAwAAYAEAAAEDAAB0AQAAAQMAAHgBAAABAwAAjAEAAAEDAACQ -AQAAAQMAAKQBAAABAwAAqAEAAAEDAAC8AQAAAQMAAMABAAABAwAA1AEAAAEDAADYAQAA -AQMAAOwBAAABAwAA8AEAAAEDAAAEAgAAAQMAAAgCAAABAwAAHAIAAAEDAAAgAgAAAQMA -ADQCAAABAwAAOAIAAAEDAABMAgAAAQMAAFACAAABAwAAZAIAAAEDAABoAgAAAQMAAHwC -AAABAwAAgAIAAAEDAACUAgAAAQMAAJgCAAABAwAArAIAAAEDAACwAgAAAQMAAMQCAAAB -AwAAyAIAAAEDAADcAgAAAQMAAOACAAABAwAA9AIAAAEDAAD4AgAAAQMAAAwDAAABAwAA -EAMAAAEDAAAkAwAAAQMAACgDAAABAwAAPAMAAAEDAABAAwAAAQMAAFQDAAABAwAAWAMA -AAEDAABsAwAAAQMAAHADAAABAwAAhAMAAAEDAACIAwAAAQMAAJwDAAABAwAAoAMAAAED -AAC0AwAAAQMAALgDAAABAwAAzAMAAAEDAADQAwAAAQMAAOQDAAABAwAA6AMAAAEDAAD8 -AwAAAQMAAAAEAAABAwAAFAQAAAEDAAAYBAAAAQMAACwEAAABAwAAMAQAAAEDAABEBAAA -AQMAAEgEAAABAwAAXAQAAAEDAABgBAAAAQMAAHQEAAABAwAAeAQAAAEDAACMBAAAAQMA -AJAEAAABAwAApAQAAAEDAACoBAAAAQMAALwEAAABAwAAwAQAAAEDAADUBAAAAQMAANgE -AAABAwAA7AQAAAEDAADwBAAAAQMAAAQFAAABAwAACAUAAAEDAAAcBQAAAQMAACAFAAAB -AwAANAUAAAEDAAA4BQAAAQMAAEwFAAABAwAAUAUAAAEDAABkBQAAAQMAAGgFAAABAwAA -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 -AAABAQAA9BYAAAECAAD4FgAAAQIAACgXAAABAgAAKBgAAAH2AAAsGAAAAVoAADAYAAAB -sgAANBgAAAGkAAA4GAAAAcMAADwYAAABSwAAQBgAAAHOAABEGAAAAVwBAEgYAAABMwEA -TBgAAAGvAABQGAAAATUAAFQYAAABewAAWBgAAAFOAABcGAAAARwAAGAYAAABTQEAZBgA -AAF1AQBoGAAAASgAAGwYAAABggAAcBgAAAHuAAB0GAAAATABAHgYAAABJAAAfBgAAAEz -AACAGAAAAV4AAIQYAAABYgEAiBgAAAEDAQCMGAAAAaUAAJAYAAABRQEAlBgAAAFIAQCY -GAAAAfMAAJwYAAABzAAAoBgAAAEkAQCkGAAAAYUAAKgYAAABVwEArBgAAAGwAACwGAAA -AacAALQYAAABfAAAuBgAAAGfAAC8GAAAAUwAAMAYAAABuAAAxBgAAAEgAQDIGAAAAfgA -AMwYAAABmQAA0BgAAAEcAQDUGAAAAdUAANgYAAABFQEA3BgAAAEtAADgGAAAAaYAAOQY -AAABQAEA6BgAAAEGAQDsGAAAAQ4BAPAYAAABNAAA9BgAAAFqAAD4GAAAASwBAPwYAAAB -0gAAABkAAAFGAAAEGQAAAS8AAAgZAAABgQAADBkAAAEJAAAQGQAAAeAAABQZAAABJQEA -GBkAAAFjAQAcGQAAAV8AACAZAAABCwAAJBkAAAFJAQAoGQAAAQIBACwZAAABUwEAMBkA -AAE7AAA0GQAAARcBADgZAAABEQAAPBkAAAGuAABAGQAAAWUAAEQZAAAB4gAASBkAAAHk -AABMGQAAAb0AAFAZAAABRAEAVBkAAAGsAABYGQAAAWEBAFwZAAABDQAAYBkAAAE1AQBk -GQAAAaIAAGgZAAABDAEAbBkAAAH1AABwGQAAAZUAAHQZAAABNgEAeBkAAAEBAAB8GQAA -ASsBAIAZAAABdAEAhBkAAAEUAQCMGQAAAUABAJAZAAABBgEAlBkAAAEOAQCYGQAAATQA -AJwZAAABagAA6CUAAAEtAQDsJQAAAUoBAPAlAAABPgEA9CUAAAFgAQD4JQAAAWwAAPwl -AAABhwAAACYAAAFiAAAEJgAAAS4AAAgmAAABVwAADCYAAAFYAAAQJgAAATIAABQmAAAB -UAEAGCYAAAH3AAAcJgAAAWsBACAmAAABdwAAJCYAAAFaAQAoJgAAAesAACwmAAABnQAA -MCYAAAGqAAA0JgAAAREBADgmAAABHgAAPCYAAAHxAABAJgAAARYAAEQmAAABTAEASCYA -AAEbAABMJgAAASUAAFAmAAABngAAVCYAAAFfAQBYJgAAAU4BAFwmAAABWwEAYCYAAAEh -AQBkJgAAAd0AAGgmAAAB6AAAbCYAAAHYAABwJgAAAfsAAHQmAAABcwAAeCYAAAGNAAB8 -JgAAAWkAAIAmAAABMgEAhCYAAAGUAACIJgAAATYAAIwmAAABIgEAkCYAAAEeAQCUJgAA -AXAAAJgmAAABzQAAnCYAAAEYAQCgJgAAAdEAAKQmAAABtQAAqCYAAAHQAACsJgAAASgB -ALAmAAABvwAAtCYAAAEwAAC4JgAAAVYAALwmAAAByAAAwCYAAAEvAQDEJgAAAToBAMgm -AAABEAEAzCYAAAEZAADQJgAAAVIAANQmAAABGgEA2CYAAAGPAADcJgAAAUYBAOAmAAAB -xAAA5CYAAAHtAADoJgAAATEAAOwmAAAB6QAA8CYAAAEiAAD0JgAAAUcAAPgmAAABhgAA -/CYAAAHLAAAAJwAAAbsAAAQnAAABPQEACCcAAAG6AAAMJwAAAf8AABAnAAAB+QAAFCcA -AAE7AQAYJwAAAQgAABwnAAABlgAAICcAAAFmAAAkJwAAAYwAACgnAAABYAAALCcAAAHZ -AAAwJwAAAd4AADQnAAAB8AAAOCcAAAEBAAA8JwAAAQQBAEAnAAABFgEARCcAAAExAQBM -JwAAAbUAAFAnAAAB0AAAVCcAAAEoAQBYJwAAAb8AAFwnAAABMAAAWDsAAAEBAABcOwAA -AQEAAGA7AAABAQAAZDsAAAEBAABoOwAAAQEAAGw7AAABAQAAcDsAAAEBAAB0OwAAAQEA -AMg8AAABUQAAzDwAAAF2AADQPAAAAVgBANQ8AAABYQAA2DwAAAHHAADcPAAAAakAAOA8 -AAABBwEA5DwAAAFKAADoPAAAAZIAAOw8AAABTQAA8DwAAAHsAAD0PAAAAUMBAPg8AAAB -gAAA/DwAAAHnAAAAPQAAAdMAAAQ9AAABeQEACD0AAAFxAQAMPQAAAasAABA9AAABLgEA -FD0AAAFyAAAYPQAAAQ0BABw9AAABIwAAID0AAAFCAQAkPQAAATgBACg9AAABRwEALD0A -AAFVAAAwPQAAAScBADQ9AAAB6gAAOD0AAAHlAAA8PQAAARAAAEA9AAABUQEARD0AAAFx -AABIPQAAAc8AAEw9AAABVgEAUD0AAAHJAABUPQAAAYoAAFg9AAABGwEAXD0AAAHjAABg -PQAAAQ4AAGQ9AAABkQAAaD0AAAEKAABsPQAAAYsAAHA9AAABJgEAdD0AAAGgAAB4PQAA -AQkBAHw9AAABmAAAgD0AAAGhAACEPQAAAQEBAIg9AAABRAAAjD0AAAEpAQCQPQAAATcB -AJQ9AAAB/QAAmD0AAAF2AQCcPQAAAT8AAKA9AAABtwAApD0AAAGbAACoPQAAAWYBAKw9 -AAABQgAAsD0AAAGDAAC0PQAAAWoBALg9AAABOAAAvD0AAAFBAADAPQAAAScAAMQ9AAAB -NwAAyD0AAAE8AADMPQAAAXUAANA9AAABFQAA1D0AAAFoAADYPQAAAeEAANw9AAABYwAA -4D0AAAEPAQDkPQAAAWUBAOg9AAABwQAA7D0AAAF5AADwPQAAAUMAAPQ9AAABHQAA+D0A -AAFyAQD8PQAAAfoAAAA+AAABwgAABD4AAAGXAAAIPgAAAR8AAAw+AAABWQEAED4AAAFk -AAAUPgAAAcYAABg+AAABtgAAHD4AAAHFAAAgPgAAAdYAACQ+AAABbwEALD4AAAEBAQAw -PgAAAUQAADQ+AAABKQEAOD4AAAE3AQA8PgAAAf0AAPxEAAABAQAAAEUAAAEBAAAERQAA -AQEAAAhFAAABAQAADEUAAAEBAAAQRQAAAQEAAEBFAAABAQAAREUAAAEBAABIRQAAAQEA -AExFAAABAQAAUEUAAAEBAABURQAAAQEAAFhFAAABAQAAXEUAAAEBAABgRQAAAQEAAGRF -AAABAQAAaEUAAAEBAABsRQAAAQEAAHBFAAABAQAAdEUAAAEBAAB4RQAAAQEAAHxFAAAB -AQAAgEUAAAEBAABwUQAAAQEAAHRRAAABAQAAeFEAAAEBAAB8UQAAAQEAAIBRAAABAQAA -hFEAAAEBAACoXgAAAQEAAKxeAAABAQAAsF4AAAEBAAC0XgAAAQEAALheAAABAQAAvF4A -AAEBAADAXgAAAQEAAMReAAABAQAAuGoAAAEBAAC8agAAAQEAAMBqAAABAQAAxGoAAAEB -AADIagAAAQEAAMxqAAABAQAA0GoAAAEBAADUagAAAQEAAOh2AAABAQAA7HYAAAEBAADw -dgAAAQEAAPR2AAABAQAA+HYAAAEBAAD8dgAAAQEAAAB3AAABAQAABHcAAAEBAAAMAAAA -AQMAABAAAAABAwAAFAAAAAEDAAAYAAAAAQMAABwAAAABAwAAIAAAAAEDAAA8AQAAAQUA -AEQBAAABBQAATAEAAAEFAABUAQAAAQUAAFwBAAABBQAAZAEAAAEFAABsAQAAAQUAAHQB -AAABBQAAfAEAAAEFAACEAQAAAQUAAIwBAAABBQAAlAEAAAEFAACcAQAAAQUAAKQBAAAB -BQAArAEAAAEFAAC0AQAAAQUAAA== +enowMDBiNmYxYwB6ejAwMmRjYTBiAHp6MDA1YjQ0YWQAenowMmRhZWVlMgB6ejA2ZGRm +NDRhAHp6MGZhYzBjOWIAenowYjZmOWVmZgB6ejAwYjZjNmJjAGF0aF9oYWxfYWRkaXRp +b25hbF9zd2JhX2JhY2tvZmYAenowMDAyZGI5MgBhdGhfaGFsX3ZlcnNpb24AenowZGM1 +OThkZQB6ejAyZGJhYzJlAHp6MDJkYjc5YWUAenowMDE2ZTUzMgB6ejBiNmNmMDA5AHp6 +MDAxNmUxMmMAenowMDE2ZDllNAB6ejAwMDJkYWVhAHp6MDA1YjVjYjIAenowMTZkYTI1 +MQB6ejA2ZjZhZjYwAHp6MDZkZmRkOTMAYXRoX2hhbF9tYWxsb2MAenowMDBiNmRkMgB6 +ejAyZGQ5MmFkAHp6MDE2ZGIyNTEAenowZTEwN2NhMQB6ejAwYjZjNzVlAHp6MDE2ZGQw +NTEAenowMmRiZDFiMgB6ejAyZGMxNzYzAHp6MGI2OTBkNmQAenowMTZkZjA1MQB6ejAw +MTZkOTUwAHp6MDBiNzA2YmMAenowMGI2ZjA0ZAB6ejAwMTZkODcyAHp6MDZkZWY0NGEA +enowMGI2ZThiMgB6ejA1YjhjMmVkAHp6MDZmYjk0N2IAenowZWJiMWUzZgB6ejBiNmY5 +ZDAyAHp6MGQxNGQxYjAAenowYjQ4MDMxZQB6ejAxNmRiYmZlAHp6MDE2ZTU0OGEAenow +MDE2ZDg1MAB6ejAwMGI2ZmY4AGF0aF9oYWxfbWVtY3B5AHp6MDJkYmNiYmQAenowMTZk +YTBkZAB6ejAyZGJiZGZkAHp6MDJkYjI4NTEAenowMmRiZGMxZAB6ejA2ZGIwY2YyAHp6 +MDE2ZWI5YWQAenowMGI2Y2ViYwB6ejBkOTQ4NGExAGF0aF9oYWxfcHJvYmUAenowMTZl +YTlhZAB6ejBmZDRkMWIwAHp6MDJkYjM3NjMAYXRoX2hhbF9idWlsZG9wdHMAenowMmRh +ZjM1ZAB6ejA2ZGRkZDkzAHp6MDBiNmYwYjIAenowZGFkYzYyYwB6ejAxNmRmMjUxAHp6 +MDE2ZDkyNTEAenowMmRiMDg1MQB6ejBiNzIxYWVkAHp6MDY3Y2ZjYWUAenowMDBiNmNm +OAB6ejBjOTRkMWIwAHp6MDJkYWZhYjIAenowNWI5MmFlZAB6ejA1YjhjM2U0AHp6MDA1 +YjhjY2IAenowYjZkOWVmZgB6ejAyZGIxMWIyAHp6MDJkYmZmYjEAenowMmRiZjc2MwB6 +ejAwNWI2OGZkAHp6MDA1YjQ0ZWQAenowYjcxMWFlZAB6ejAwMTZkNDRkAHp6MGI1ZTMx +NjAAenowZDg0ODRhMQB6ejAxNmQ4YjJkAHp6MDE2ZTA4OWIAenowMmRiYjg3NQB6ejAy +ZGFlODUxAHp6MGI4MWVhOTQAenowMTZkZWMxZgB6ejAwYjZmZWJjAHp6MGU4OTQ5MDcA +enowMGI2ZWE3YQB6ejAzM2U4ZmJmAHp6MGNmYTU4NzUAenowMmRiOTlhZQB6ejAyZGI5 +YWIyAHp6MDAwYjZiZTgAenowZGU2ODM3ZgB6ejAxNmRhYmZlAHp6MDAwYjcwMWMAenow +YjcwOWQwMgB6ejA2N2QyNWUyAHp6MDE5ZjNhMDEAenowNzAzOTQ3YgBhdGhfaGFsX21l +bXplcm8AenowNmRmZmMwZAB6ejBiNjc1MGI4AHp6MDE2ZTJkZmQAenowMDBiNmQyMgB6 +ejA2ZmVhZjYwAHp6MGRjNGE1YzUAenowMGI3MGY3ZABhdGhfaGFsX3N3X2JlYWNvbl9y +ZXNwb25zZV90aW1lAHp6MDAxNmQ2NGQAenowOWY2NGI2YQB6ejAwNWI2NTdhAHp6MDZm +Mzk0N2IAenowNmRhMGNmMgB6ejBiN2JhZDNlAHp6MDBiNmY5NjEAenowYjY5NzNiYwB6 +ejAyZGJkMzVkAHp6MDA1Yjg4ZmQAenowMmRiYmMxZAB6ejAyZGFmZGZkAHp6MDZkN2Rk +OTMAYXRoX2hhbF9kZWxheQB6ejAyZGIxZGZkAHp6MDY3ZDJmNDEAenowMmRhZjg3NQB6 +ejBiN2VkZTZkAHp6MDE2ZDhkNDEAenowMDJkYWU5MgB6ejBiN2FkZTZkAHp6MGRhZGIw +ZGUAenowMmRiYjM1ZAB6ejAyZGIzZGZkAHp6MDJkYjUzZWQAenowMTZkY2VhZQB6ejAw +MGI2ZGEyAHp6MDAwYjZlMjIAenowNWI4MDA0MQB6ejAyZGFjZWUyAHp6MDAxNmQ4NDgA +enowMTZkOWIyZAB6ejAwMmRhOTFkAHp6MDAxNmUwMmMAenowMGI3MDc3ZAB6ejAwNWI2 +OTdhAHp6MDAxNmRhZTQAenowMTZlMTA5YgB6ejAwNWI0YTJkAHp6MDE2ZGUwZGQAenow +MTZkZjBkZAB6ejBkZjA3Y2ExAHp6MDJkYmQ3NjMAenowMDBiNmU1MgB6ejA2N2QwYzQ3 +AHp6MDViNmM2ZGIAenowYzMxNWViNQB6ejBkYjFlZDg2AHp6MDZkNDA2ZTAAenowMTZl +MDI1MQB6ejAwMDJkYmIyAHp6MDAyZGQ4NmQAenowMDE2ZTE0ZAB6ejAyZGI1OWFlAHp6 +MDA2N2QyMjEAenowMTZkODBkZAB6ejAwYjZlMDIyAHp6MDA1Yjg5M2QAenowNWI4MWIx +YgB6ejAyZGIxM2VkAHp6MDBiNmQxMjMAenowMDBiNmNlOAB6ejA1YjhhYWVkAHp6MGI2 +ZWQzNjMAenowMmRhZjFiMgB6ejAwMDViNWUyAHp6MDMzZWJmYmYAenowNWI2ODZkYgB6 +ejAwMGI2ZWY4AHp6MDAwYjZmOWMAenowYjcxOWFlZAB6ejAwNWI1OGIyAHp6MDViN2Ri +MWIAenowYjgyZGU2ZAB6ejAwMTZkNzMyAHp6MDJkYWRhYjIAenowZjQ1ZTZlMwBhdGhf +aGFsX2luaXRfY2hhbm5lbHMAenowMGI2ZDZiYwB6ejBjMTRkMWIwAHp6MDAwMmRiZDIA +enowZGE0ODRhMQB6ejAxNmUwYjg3AHp6MDViOTAyZWQAenowNWI2N2M2NAB6ejBkYzJl +MzkwAHp6MGE2MGQxNDUAenowMmRiYWJiZAB6ejAwMGI2YzFkAHp6MDViOGVhZWQAenow +MDViN2I5ZAB6ejAwNWI1NDQ2AHp6MDViNjQ2ZGIAenowMGI2ZjkyMwB6ejBkZDY4Mzdm +AHp6MDE2ZTEyNTEAenowZGM2YTVjNQB6ejAyZGIzNzBhAHp6MDAwNWI2NzIAenowNmRl +ZmMwZAB6ejAyZGJmMzVkAHp6MDAwYjZjNzgAenowMDE2ZDgzMgB6ejAyZGI1NzBhAHp6 +MDA1YjZkN2EAenowMDJkYjI5MgB6ejAwNWI5MGNiAHp6MGI2ZjUzNjMAenowMDViNWM0 +NgB6ejA2ZDkwY2YyAHp6MDZkOGRkOTMAenowMTZkZmI4NwB6ejAwMTZkYTQ4AHp6MDAy +ZGFmMDAAenowYjY2MzFhOAB6ejAwMmRiMDkyAGF0aF9oYWxfZ2V0d2lyZWxlc3Ntb2Rl +cwB6ejAxNmUxYjg3AAYAAAABAwAAXwAAAAEDAACPAAAAAQMAANAAAAABAwAA3AAAAAED +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 +BcgAAAECAAAMyQAAAgQBAB3JAAACGAEAWskAAAIYAQCGyQAAAhgBAMXJAAACfwEAAcoA +AAIoAQCLygAAAjQBANLKAAACZQAAWM4AAAE8AQBezgAAATIAAG7OAAABzQAAf9AAAAKP +AQCQ0AAAAkoBALvTAAACMAAA2dMAAAECAADq0wAAAQIAAPfTAAABAgAABNQAAAECAABf +1AAAAtwAAInUAAABAgAAj9QAAAL3AAA/1QAAAQIAAEvVAAAC9wAAg9UAAAJRAACk1QAA +ApwBACPWAAACpgEAedYAAAIcAACj1gAAAkUAAOvXAAACpQEAgNgAAAKlAQCw2AAAAqUB +APXYAAACpQEARNkAAAKlAQCv2QAAAQIAALTZAAABAgAA/9kAAAKTAQCc2gAAAkoBAKTa +AAACRQAAxNoAAAJKAQD72gAAAqUBACzbAAABCAEANtsAAAG3AAA/2wAAAkQBAIbbAAAC +0wAAq9sAAAKwAADS2wAAAqMBAOXbAAAChwEABdwAAAItAQAr3AAAAqUBAIbcAAACvgAA +rdwAAAKGAADW3AAAAnYAAPncAAACtwAAAd0AAAJGAAAO3QAAApwBAB7dAAACMQEAJt0A +AAKJAAAB3gAAAkoBAB3iAAACtgAAPeIAAAGnAQBK4gAAAQEAAJ3iAAACtgAAIOMAAAEy +AAAv4wAAATwBAFfjAAACmwAABeUAAAJMAAA85gAAAuQAAOrqAAABAgAA1uwAAAI5AQAi +7gAAAjkBAFDuAAAC9wAAbO4AAAL3AACQ7gAAAvcAAK7uAAAC9wAAIPAAAAECAABH8AAA +AvcAAK/yAAACDwAA4PIAAAInAAAD8wAAAnMBADzzAAACJwAAVvMAAAInAACM8wAAAnMB +ANDzAAACJwAAUvQAAAInAACI9AAAAnMBANP0AAACJwAAa/UAAAJzAQBT9gAAAiYAAI/2 +AAACGAAAs/gAAAIYAACp+QAAAQIAALD5AAABAgAAv/kAAAECAADp+QAAAQIAACf8AAAC +jwAAQfwAAAECAAB5/AAAAikBAKv8AAABAgAAwP0AAAECAADG/QAAAqkAAPz9AAACHQAA +JP4AAAJMAQBe/gAAAkoBAIL+AAACSgEAMQABAAEtAABLAAEAAeUAAF8AAQAB8gAAaQAB +AAG0AABxAAEAAWMBAHkAAQAB3gAAgAABAAEXAACJAAEAAXABAJAAAQAB5QAAlwABAAHy +AACuAAEAAj4BAAEBAQACTAAAPAEBAAIxAABEAQEAAuoAAFEBAQAC6QAAdwEBAAKIAAD+ +AwEAApgAABUEAQACcwAAnQQBAAKcAQC6BAEAAg4BAB8FAQAC1wAANAUBAALqAACxBQEA +Ag0AABwGAQACYAAAJAYBAAJOAAAxBgEAAqYBAC0HAQABAgAAPwcBAAECAABZBwEAAkoB +AG8HAQABAgAAlgcBAAECAACsBwEAAkoBAOoHAQACJAEAVgkBAAJcAAB/CQEAAlYBAAMK +AQACnwAAEwoBAAIXAQAjCgEAAlkBALMKAQACJgAAtgsBAAK7AADZCwEAAjQAAOYLAQAC +XwAAmgwBAAJKAQC8DAEAAkoBAM0MAQACSgEAAg0BAAJKAQCXDQEAAlAAAOwNAQACkgAA +Sw4BAALDAABdDgEAAkwAAGoOAQACpAAA7Q4BAAImAQBXEAEAAkQAAHIQAQACLgAAjRAB +AAJIAADaEAEAAj0BADYRAQACSwAARxEBAAJxAQAqEgEAAg4BAEoSAQACsgEAnxIBAAJK +AQDDEgEAArsAABMTAQACSgEAIhMBAAJcAACXEwEAAp8AAKcTAQACFwEAchQBAAKcAQDM +FAEAApwBAIEWAQACSgEAoBYBAAJKAQDqFgEAAg4BANkYAQAC1wAA3RkBAAJKAQDwGQEA +AkwAABEaAQACnAEA3hoBAAJqAAA0GwEAAikBAFAcAQACMAAAnB8BAAIPAABeIQEAAtEA +AIQpAQACXAAAqikBAAI0AQC7KQEAAjQBAO4pAQABAgAA9SwBAAIWAAB9LgEAAiYBABAy +AQABAgAAwjIBAAL3AAAzNAEAAm0BAHE1AQACbQEAczcBAAECAACDNwEAAQIAAKE3AQAB +AgAArTcBAAECAAA2OgEAAQIAAEA6AQABAgAAxTsBAAIwAAB2PAEAAl0AAJw8AQACXQAA +yDwBAAJdAAABPQEAAmkAAC89AQACXQAAez0BAAJpAAC2PQEAAmkAAKE+AQAC5AAA/D4B +AALkAABEPwEAAn8BAIw/AQACKAEAg0ABAAI0AQDZQAEAAlkAAA9EAQABPAEAFUQBAAEy +AAAjRAEAAc0AAEdGAQACsgEAWEYBAAJKAQBlRgEAArIBABJHAQACSgEAPUcBAAJKAQBH +RwEAArIBAEVLAQACnQEAp0sBAAKdAQCFTAEAAjQBAG5NAQACMQAAok0BAAKIAAAGTgEA +AQIAAKRRAQABAgAANFIBAAJ2AABDUgEAAosBAFZSAQAC6AAAg1IBAAKLAQCWUgEAAugA +AMNSAQACMQAA11IBAAKLAQDqUgEAAugAAKlTAQACnQEA91MBAAKpAAAYVAEAAqkAAFlU +AQACqQAAZlQBAAKpAACJVAEAAqkAAKhUAQACqQAAwlQBAAKpAADRVAEAAjIBAO9UAQAC +qQAABVUBAAKpAABDVQEAAqkAAIVVAQACqQAAllUBAAIyAQC0VQEAAqkAAAxWAQACqQAA +GVYBAAKpAAAmVgEAAqkAADNWAQACqQAAQFYBAAKpAABIVgEAAosBAFVWAQAC6AAAflYB +AAKpAACaVgEAAqkAALxWAQACqQAA1lYBAAKpAADyVgEAAqkAAApXAQACiwEAF1cBAALo +AABRVwEAAosBAF5XAQAC6AAAn1cBAAKdAQAOWQEAAqkAACtZAQACqQAAR1kBAAKpAABj +WQEAAqkAAH9ZAQACqQAASloBAAITAQDLWgEAAp0BAE9cAQACpwAAbVwBAALcAACNXAEA +Ai8BANBcAQACLwEA3lwBAAKJAAAJYAEAAjQBADxgAQACNAEATWABAAI0AQCcYAEAAi8B +AL1gAQACiwEAymABAALoAADlYAEAAosBAPJgAQAC6AAACmEBAAKLAQAXYQEAAugAAEph +AQACiwEAb2EBAALoAACfYQEAAosBAKxhAQAC6AAAxmEBAAIvAQBXYgEAAi8BAH1lAQAC +NAEAmGUBAAI0AQDMZQEAAlIBAFVmAQABAgAAZ2YBAAECAAB+ZgEAAkoBAJpmAQABAgAA +oWYBAAECAAC0ZgEAAkoBANFmAQABAgAA2mYBAAECAADtZgEAAkoBAB5nAQACkQAAOmcB +AAECAABHZwEAAjAAAFhnAQABAgAAuGcBAAIwAADmZwEAAjAAAGZoAQABAgAAN2sBAAEC +AABsawEAAn0AAH9rAQACfQAAlWsBAAECAACvawEAAkoBAMlrAQABAgAA0GsBAAECAADm +awEAAkoBAANsAQABAgAADWwBAAECAAAjbAEAAkoBAEBsAQABAgAASmwBAAECAABgbAEA +AkoBAHVsAQABAgAAwWwBAAJ9AADcbAEAAn0AAPhsAQACfQAADW0BAAJ9AAAibQEAAn0A +ADdtAQACfQAATW0BAAECAABnbQEAAkoBAIFtAQABAgAAsG0BAAJ9AADFbQEAAn0AAAxu +AQACfQAAHG4BAAJ9AAAtbgEAAn0AAEVuAQABAgAAX24BAAJKAQAhcAEAAjQBAEpzAQAC +bQEAKnUBAAJtAQBTdQEAAokAAHd1AQACiQAAqXUBAAECAACwdQEAAQIAAL91AQABAgAA +13UBAALcAAAHdgEAAtwAACZ2AQABAQAAMHYBAAEBAAA6dgEAAQEAAER2AQABAQAATnYB +AAEBAABYdgEAAQEAAGJ2AQABAQAAbHYBAAEBAAChdgEAAQIAALN2AQABAgAAynYBAAJK +AQDmdgEAAQIAAO12AQABAgAAAHcBAAJKAQAddwEAAQIAACZ3AQABAgAAOXcBAAJKAQAG +eAEAAjAAAIx4AQACMAAAmngBAAIwAADoeAEAAjAAAPZ4AQACMAAAPHkBAAIwAABKeQEA +AjAAAJJ5AQACMAAAoHkBAAIwAAAOegEAAQIAADJ8AQABAgAASnwBAAECAABpfAEAAQIA +AIh8AQABAgAAtHwBAAJ9AADOfAEAAn0AAOl8AQACfQAAGH0BAAJ9AAA2fQEAAn0AAFR9 +AQACfQAAcn0BAAJ9AACQfQEAAn0AAK59AQACfQAA1n0BAAJ9AADufQEAAn0AAA5+AQAC +fQAAJn4BAAJ9AAB9fgEAAn0AAI5+AQACfQAAn34BAAJ9AACzfgEAAn0AANt+AQACfQAA +7H4BAAJ9AAD9fgEAAn0AABF/AQACfQAAJX8BAAJ9AAA3fwEAAQIAAHh/AQACfQAAln8B +AAJ9AADZfwEAAn0AAOl/AQACfQAA/38BAAECAAAYgAEAAkoBADSAAQABAgAAToABAAJK +AQBqgAEAAQIAAISAAQACSgEAoYABAAECAAC7gAEAAkoBAN2AAQABAgAA+oABAAJKAQBG +gwEAAvcAAFuDAQAC9wAAroMBAAL3AADhgwEAAvcAAPaDAQAC9wAASYQBAAL3AAB0hAEA +AvcAAImEAQAC9wAA3IQBAAL3AAD3iwEAAokAABuMAQACiQAAb48BAALcAACfjwEAAtwA +AMiPAQABAQAA0o8BAAEBAADcjwEAAQEAAOaPAQABAQAA8I8BAAEBAAD6jwEAAQEAAASQ +AQABAQAADpABAAEjAABBkAEAAQIAAFOQAQABAgAAbZABAAJKAQCGkAEAAQIAAI2QAQAB +AgAAo5ABAAJKAQDFkAEAAQIAAM6QAQABAgAA5JABAAJKAQCykQEAAjAAADiSAQACMAAA +RpIBAAIwAACUkgEAAjAAAKKSAQACMAAA6JIBAAIwAAD2kgEAAjAAAD6TAQACMAAATJMB +AAIwAABGlAEAAQIAAF6UAQABAgAAfZQBAAECAACclAEAAQIAAMqUAQACfQAA4pQBAAJ9 +AAD0lAEAAQIAABaVAQABAgAAL5UBAAJKAQBHlQEAAQIAAGGVAQACSgEAeZUBAAECAACT +lQEAAkoBAK2VAQABAgAAx5UBAAJKAQDklQEAAQIAAP6VAQACSgEAQpYBAAECAAD7ngEA +AokAAB+fAQACiQAAj6IBAALcAAC/ogEAAtwAAN6iAQABAQAA6KIBAAEBAADyogEAAQEA +APyiAQABAQAABqMBAAEBAAAQowEAAQEAABqjAQABAQAAJKMBAAEjAABZowEAAQIAAGSj +AQABAgAAeqMBAAJKAQCWowEAAQIAAJ2jAQABAgAAs6MBAAJKAQDRowEAAQIAANyjAQAB +AgAA8qMBAAJKAQDCpAEAAjAAAEilAQACMAAAVqUBAAIwAACkpQEAAjAAALKlAQACMAAA ++KUBAAIwAAAGpgEAAjAAAE6mAQACMAAAXKYBAAIwAABiqAEAAQIAAHqoAQABAgAAmagB +AAECAAC4qAEAAQIAAPSoAQACfQAADKkBAAJ9AAAgqQEAAn0AAFSpAQACMAAAYakBAAJ9 +AACBqQEAAn0AAJmpAQACfQAAq6kBAAECAADQqQEAAQIAAOmpAQACSgEAAaoBAAECAAAb +qgEAAkoBADOqAQABAgAATaoBAAJKAQBlqgEAAQIAAH+qAQACSgEAnKoBAAECAAC5qgEA +AkoBAPqqAQABAgAAt7MBAAKJAADbswEAAokAAEu3AQAC3AAAe7cBAALcAACatwEAAQEA +AKS3AQABAQAArrcBAAEBAAC4twEAAQEAAMK3AQABAQAAzLcBAAEBAADWtwEAAQEAAOC3 +AQABIwAACAAAAAEBAAAMAAAAAQEAABAAAAABAQAAFAAAAAEBAAAYAAAAAQEAABwAAAAB +AQAAIAAAAAEBAAAkAAAAAQEAACgAAAABAQAALAAAAAEBAAAwAAAAAQEAADQAAAABAQAA +OAAAAAEBAAA8AAAAAQEAAEAAAAABAQAARAAAAAEBAABIAAAAAQEAAEwAAAABAQAAUAAA +AAEBAABUAAAAAQEAAFgAAAABAQAAXAAAAAEBAABgAAAAAQEAAGQAAAABAQAAaAAAAAEB +AABsAAAAAQEAAHAAAAABAQAAdAAAAAEBAAB4AAAAAQEAAMgBAAABHwEAzAEAAAFnAADQ +AQAAAc4AANQBAAABvwAA2AEAAAGVAQDcAQAAAeIAAOABAAABVwAA5AEAAAHwAADoAQAA +ARwBAOwBAAABXQEA8AEAAAHFAAD0AQAAAQsAAPgBAAABCAAA/AEAAAFaAQAAAgAAAasA +AAQCAAABkgEACAIAAAFiAQAMAgAAAcsAABACAAABPwAAFAIAAAGKAAAYAgAAAVoAABwC +AAABIgAAIAIAAAGBAQAkAgAAAawBACgCAAABLwAALAIAAAGUAAAwAgAAAV8BADQCAAAB +KgAAOAIAAAE9AAA8AgAAAWsAAEACAAABmQEARAIAAAGUAQBIAgAAASwBAEwCAAABwAAA +UAIAAAF4AQBUAgAAAXsBAFgCAAABGwEAXAIAAAHtAABgAgAAAVEBAGQCAAABmQAAaAIA +AAGMAQBsAgAAAcwAAHACAAABwgAAdAIAAAGNAAB4AgAAAboAAHwCAAABWAAAgAIAAAHW +AACEAgAAAU0BAIgCAAABIQEAjAIAAAGvAACQAgAAAUgBAJQCAAAB+gAAmAIAAAF0AQCc +AgAAAWQBAKACAAABQAEApAIAAAEzAACoAgAAAcEAAKwCAAABcgEAsAIAAAEuAQC0AgAA +ATgBALgCAAABPgAAvAIAAAF5AADAAgAAAVsBAMQCAAAB9QAAyAIAAAFSAADMAgAAATcA +ANACAAABkwAA1AIAAAEJAADYAgAAAQYBANwCAAABUwEA4AIAAAFJAQDkAgAAAQcBAOgC +AAABmgEA7AIAAAFsAADwAgAAAQwAAPQCAAABfQEA+AIAAAG4AAD8AgAAASIBAAADAAAB +KwEABAMAAAGIAQAIAwAAAUcBAAwDAAABsQAAEAMAAAFHAAAUAwAAAUIBABgDAAABFQAA +HAMAAAHJAAAgAwAAAXIAACQDAAABCgEAKAMAAAELAQAsAwAAAWkBADADAAABfAEANAMA +AAGYAQA4AwAAARAAADwDAAABZgEAQAMAAAE2AQBEAwAAAR4BAEgDAAABrAAATAMAAAFn +AQBQAwAAAQEAAFQDAAABqgEAWAMAAAE/AQBgAwAAAXIBAGQDAAABLgEAaAMAAAE4AQBs +AwAAAT4AAHADAAABeQAAdAMAAAEBAACoGAAAAVwBAKwYAAABfgEAsBgAAAFvAQC0GAAA +AZcBALgYAAABZgAAvBgAAAF6AADAGAAAAZ0AAMQYAAABbwAAyBgAAAESAADMGAAAAXsA +ANAYAAABggEA1BgAAAGRAQDYGAAAAYsAANwYAAAByAAA4BgAAAEOAADkGAAAATYAAOgY +AAABZAAA7BgAAAFlAADwGAAAAToAAPQYAAABhQEA+BgAAAEgAQD8GAAAAaIBAAAZAAAB +hwAABBkAAAGPAQAIGQAAARQBAAwZAAABtQAAEBkAAAE7AQAUGQAAASQAABgZAAABGQEA +HBkAAAEbAAAgGQAAAYABACQZAAAB+AAAKBkAAAEhAAAsGQAAASsAADAZAAABuQAANBkA +AAGWAQA4GQAAAYMBADwZAAABkAEAQBkAAAFOAQBEGQAAAQMBAEgZAAABEAEATBkAAAH/ +AABQGQAAASUBAFQZAAABgwAAWBkAAAGiAABcGQAAAXgAAGAZAAABYQEAZBkAAAGqAABo +GQAAAUIAAGwZAAABTwEAcBkAAAFLAQB0GQAAAX8AAHgZAAABOwAAfBkAAAFlAQCAGQAA +Ae4AAIQZAAABQwEAiBkAAAH0AACMGQAAAdIAAJAZAAAB8wAAlBkAAAFXAQCYGQAAAd0A +AJwZAAABOAAAoBkAAAFjAACkGQAAAecAAKgZAAABXgEArBkAAAFsAQCwGQAAAToBALQZ +AAABHgAAuBkAAAFeAAC8GQAAAUUBAMAZAAABqwEAxBkAAAFKAADIGQAAAaUAAMwZAAAB +eQEA0BkAAAHjAADUGQAAARYBANgZAAABIAAA3BkAAAEMAQDgGQAAATkAAOQZAAABEQEA +6BkAAAH8AADsGQAAAZUAAPAZAAABKAAA9BkAAAFTAAD4GQAAAZwAAPwZAAAB6wAAABoA +AAHaAAAEGgAAAW4BAAgaAAAB2QAADBoAAAFpAQAQGgAAAagBABQaAAABBwAAGBoAAAGt +AAAcGgAAAXQAACAaAAABbQAAJBoAAAEAAQAoGgAAAQQBACwaAAABGAEAMBoAAAEBAAA0 +GgAAAUEBADgaAAABYAEAQBoAAAHSAABEGgAAAfMAAEgaAAABVwEATBoAAAHdAABQGgAA +ATgAAFQaAAABAQAA9DYAAAEBAAD4NgAAAQEAAPw2AAABAQAAADcAAAEBAAAENwAAAQEA +AAg3AAABAQAADDcAAAEBAAAQNwAAAQEAAOg4AAABXQAA7DgAAAGGAADwOAAAAY0BAPQ4 +AAABbgAA+DgAAAFGAAD8OAAAAeYAAAA5AAABxAAABDkAAAEwAQAIOQAAAT0BAAw5AAAB +dQAAEDkAAAEvAQAUOQAAAYwAABg5AAAB0AAAHDkAAAGaAAAgOQAAAbYAACQ5AAABVgAA +KDkAAAGoAAAsOQAAAVkAADA5AAABFQEANDkAAAF3AQA4OQAAAZIAADw5AAABDwEAQDkA +AAH2AABEOQAAAbIBAEg5AAABpwEATDkAAAHGAABQOQAAAYIAAFQ5AAABNwEAWDkAAAEp +AABcOQAAAXYBAGA5AAABagEAZDkAAAGOAABoOQAAAXoBAGw5AAABYQAAcDkAAAFVAQB0 +OQAAARIBAHg5AAABDQEAfDkAAAEUAACAOQAAAYYBAIQ5AAABgAAAiDkAAAHxAACMOQAA +AYsBAJA5AAAB6AAAlDkAAAGgAACYOQAAAUYBAJw5AAABrgEAoDkAAAERAACkOQAAAacA +AKg5AAABCgAArDkAAAGhAACwOQAAAVQBALQ5AAABvAAAuDkAAAH5AAC8OQAAAUAAAMA5 +AAABMwEAxDkAAAGuAADIOQAAAb0AAMw5AAABKgEA0DkAAAFPAADUOQAAAVgBANg5AAAB +aAEA3DkAAAEnAQDgOQAAAa0BAOQ5AAABSwAA6DkAAAHVAADsOQAAAbMAAPA5AAABnQEA +9DkAAAFOAAD4OQAAAZYAAPw5AAABoQEAADoAAAGyAAAEOgAAAdsAAAg6AAABRAAADDoA +AAFNAAAQOgAAAS4AABQ6AAABQwAAGDoAAAE8AAAcOgAAAfsAACA6AAABSAAAJDoAAAGF +AAAoOgAAATUAACw6AAABNAAAMDoAAAEaAAA0OgAAAXcAADg6AAABCQEAPDoAAAFwAABA +OgAAATkBAEQ6AAABnAEASDoAAAHfAABMOgAAAWkBAFA6AAABmwAAVDoAAAGpAQBYOgAA +ASMBAFw6AAAB4AAAYDoAAAElAABkOgAAAY4BAGg6AAABcQAAbDoAAAHkAABwOgAAAdQA +AHQ6AAAB/QAAeDoAAAGlAQCAOgAAASoBAIQ6AAABTwAAiDoAAAFYAQCMOgAAAWgBAJA6 +AAABJwEAlDoAAAGvAQCkSQAAAQEAAKhJAAABAQAArEkAAAEBAACwSQAAAQEAALRJAAAB +AQAAuEkAAAEBAAAMSgAAAQEAABBKAAABAQAAFEoAAAEBAAAYSgAAAQEAABxKAAABAQAA +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 +AAA= ==== - diff --git a/usr/src/uts/common/io/ath/hal_x86_64.o.uu b/usr/src/uts/common/io/ath/hal_x86_64.o.uu index 9ef4c90f80..312e482a5d 100644 --- a/usr/src/uts/common/io/ath/hal_x86_64.o.uu +++ b/usr/src/uts/common/io/ath/hal_x86_64.o.uu @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002-2005 Sam Leffler, Errno Consulting, Atheros + * Copyright (c) 2002-2006 Sam Leffler, Errno Consulting, Atheros * Communications, Inc. All rights reserved. * * Use is subject to license terms. @@ -36,1971 +36,2311 @@ * SUCH DAMAGES. * */ -#define ATH_HAL_VERSION "0.9.14.9" #pragma ident "%Z%%M% %I% %E% SMI" +#define ATH_HAL_VERSION "0.9.17.2" begin-base64 644 hal.o -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 -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAoAFAAeADIARgBV -AFoAXwBkAAAAAAAAAAAAAAAAAAoAFAAeACgAMgA8AEYAUABaAGQAAAAAAAAAAAAAAMIA -AADEAAAAxQAAANAAAADaAAAA5AAAAAAAAAAAAAAAwgAAAMMAAADUAAAA8gAAAA0BAAAo -AQAAAAAAAAAAAABOT05FAAAAAAAA/wFGQ0MAAAAAABAASANNS0sAAAAAAEAAiAFFVFNJ -AAAAADcAOgMAAAAAAAAAAAAAAAAAAAAA/wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA -AAEAAAABAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAQAAAAAA -AAAIAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAADAADAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAACAARwAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAzADAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAA -AAEAAAAAAAAAJAAhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAAAAACgA -OQAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAfADAAAAAAAAAAAAAA -AAAAAAAAAAAAAAABAAAAAQAAAAEAAAAAAAAAMAADAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AQAAAAAAAAABAAAAAAAAAHAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAA -AAAAAAA4ADAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAVABVAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAAAAAEQAVQAAAAAAAAAAAAAAAAAA -AAAAAAAAAAEAAAABAAAAAQAAAAAAAABMAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAYABSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAAAA -AGQANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAB8ACAAAAAAAAAA -AAAAAAAAAAAAAAAAAAABAAAAAQAAAAEAAAAAAAAAmABYAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAEAAAAAAAAAAAAAAJwAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAA -AQAAAAAAAACqABAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAvAAD -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAL8ANgAAAAAAAAAAAAAA -AAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAADEADcAAAAAAAAAAAAAAAAAAAAAAAAAAAAB -AAAAAQAAAAEAAAAAAAAAywA2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAANAANwAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAADWABAAAAAA -AAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAEAAAAAAAAA2gADAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAADIDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAA -AAAAAQAAAAAAAADeAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAA -6QA3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAPYANwAAAAAAAAAA -AAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAD6ADYAAAAAAAAAAAAAAAAAAAAAAAAA -AAABAAAAAAAAAAEAAAAAAAAA/wA2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAB -AAAAAAAAAAwBMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAQAAAAAAAAAUATcA -AAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAALAEDAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAEABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA -AAABAAAAAQAAAAAAAABUAQMAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAA -AAAAWAEhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAAAAAFwBNQAAAAAA -AAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAABgATcAAAAAAAAAAAAAAAAAAAAA -AAAAAAABAAAAAAAAAAEAAAAAAAAAZAEDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAA -AAABAAAAAAAAAGgBAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAABs -AVIAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAEAAAAAAAAAdAE3AAAAAAAAAAAA -AAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAHgBAwAAAAAAAAAAAAAAAAAAAAAAAAAA -AAEAAAAAAAAAAQAAAAAAAAB8ATcAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEA -AAAAAAAAiAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAIkBQQAA -AAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAACKAUgAAAAAAAAAAAAAAAAA -AAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAiwFDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA -AAAAAAAAAAAAAAAAAIwBSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAA -AACNAUsAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAkAEDAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAI4BAwAAAAAAAAAAAAAAAAAAAAAA -AAAAAAEAAAAAAAAAAQAAAAAAAACYAUUAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAA -AAEAAAAAAAAAmgFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAJsB -SQAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAACeAQMAAAAAAAAAAAAA -AAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAArAEDAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AQAAAAAAAAABAAAAAAAAAKYBAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAA -AAAAAAC2ATUAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAuAE3AAAA -AAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAALoBNwAAAAAAAAAAAAAAAAAA -AAAAAAAAAAEAAAAAAAAAAQAAAAAAAAC+ASEAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAA -AQAAAAEAAAAAAAAAJwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAA -AMoBAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkARAAAAAAAAAA -AAAAAAAAAAAAAAAAAAABAAAAAQAAAAEAAAAAAAAA7AEwAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAQAAAAEAAAABAAAAAAAAAPgBAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAA -AQAAAAAAAAAQAjcAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAKgIi -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAEICNwAAAAAAAAAAAAAA -AAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAAAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAB -AAAAAAAAAAEAAAAAAAAASgIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAA -AAAAAE8CEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAQAAAAAAAABcAgMAAAAA -AAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAYAIRAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAQAAAAEAAAABAAAAAAAAAGgCNwAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAA -AAAAAQAAAAAAAABsAjcAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAA -dgIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAAAAAHoCAwAAAAAAAAAA -AAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAACCAgMAAAAAAAAAAAAAAAAAAAAAAAAA -AAABAAAAAAAAAAEAAAAAAAAAgwIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAB -AAAAAAAAAKoCAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAC+AkIA -AAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAEAAAAAAAAAvwI2AAAAAAAAAAAAAAAA -AAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAMECNwAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA -AAAAAAAAAQAAAAAAAADGAjcAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAEAAAAA -AAAA1AI3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAPACNwAAAAAA -AAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAD0AjUAAAAAAAAAAAAAAAAAAAAA -AAAAAAABAAAAAAAAAAEAAAAAAAAA+AIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAA -AAABAAAAAAAAAJ4ARwAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAQAAAAAAAAD8 -AkUAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAEAAAAAAAAADAMwAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAABQDNgAAAAAAAAAAAAAAAAAAAAAAAAAA -AAEAAAAAAAAAAQAAAAAAAAAYAzYAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEA -AAAAAAAAJAMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAABADAwAA -AAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAA6AzcAAAAAAAAAAAAAAAAA -AAAAAAAAAAABAAAAAAAAAAEAAAAAAAAASAMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA -AAEAAAABAAAAAAAAAFoDRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAA -AABcAzoAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAEAAAAAAAAAXgNWAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAMACAwAAAAAAAAAAAAAAAAAAAAAA -AAAAAAEAAAAAAAAAAQAAAAAAAAB3AwMAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAA -AAEAAAAAAAAAzAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wH/AQMAmAGZAQcAmAEwCwgAmAEwDCAAIAEQ -CiEAIAGZASIAIAEwDDoAYAEQCjcAMAGZATUAMAKZATYAMAOZATAAMASZATkAMAWZATQA -MAaZATIAMAOZATEAMAOZAREAEAGZARAAEAEQClIAUAGZAUUAUAKZAUcAUAOZAUIAUASZ -AVgAUAWZAVUAUAEwDFYAUAIwDEkAUAJQDUAAQAFACkEAQAFACkMAQAJACkgAQAEQCkoA -QAFACksAQAFACmAAYABgAGEAYQBhAGIAYgBiAGMAYwBjAGQAZABkAGUAZQBlAGYAZgBm -AGcAZwBnAGgAaABoAGkAaQBpAGoAagBqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAP8BAgAQAAAURBYFBnEWwRYFBgAAAAAAAAAAAAAAAFABAQAQAHEWwRYeAAAAAAAA -AAAAAAAAAAAAAAAAAFACAQAQAHEWrRYXAAAAAAAAAAAAAAAAAAAAAAAAAFADAgAQAKAU -yBQRBnEWrRYeBgAAAAAAAAAAAAAAAFAEAgAQADwUeBQUAHEWwRYUAAAAAAAAAAAAAAAA -AFAFAgAQAHEWwRYRAAAAAAAAAAAAAAAAAAAAAAAAADABAgAwADwUyBQUAHwVRBYbAAAA -AAAAAAAAAAAAADACAQAwADwUeBQSAAAAAAAAAAAAAAAAAAAAAAAAADADAQAwADwUyBQU -AAAAAAAAAAAAAAAAAAAAAAAAADAEAQAwADwUyBQSAAAAAAAAAAAAAAAAAAAAAAAAADAF -AQAwADwUeBQPAAAAAAAAAAAAAAAAAAAAAAAAADAGAgAwADwUoBQXAHwVRBYeAAAAAAAA -AAAAAAAAABABAwAQAIwUyBQXBjwUeBQRBnEWwRYeBgAAAAAAACABAgAQADwUyBQXBnEW -wRYeBgAAAAAAAAAAAAAAAGABBAAQADwUeBQRBowUyBQUBnwVRBYUBnEWwRYeBkABAQBA -ADIUbhQXAAAAAAAAAAAAAAAAAAAAAAAAAEACAwBAADIUbhQXALAT2BMXADgTdBMXAAAA -AAAAAAAA/wECABMAChQmFgUGHhQSFgUGAAAAAAAAAAAAAAAAEAEDABMAghSqFBcGWhRa -FBEGgBaoFh4GAAAAAAAAYAEDABMAghSqFBcGWhRaFBEGgBaoFh4GAAAAAAAAAAAAAAAA -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 +JBBIifVIifu/rAAAAOgAAAAASImDCC4AAEiFwHQgx4PwVgAAAAEAAL8AAQAA6AAAAABI +iYPoVgAASIXAdQ7HRQACAAAAuAAAAADrXUjHgyArAAAAAAAASMeDKCsAAAAAAABIx4Mw +KwAAAAAAAEjHgzgrAAAAAAAASMeDQCsAAAAAAABIx4NIKwAAAAAAAEjHg1ArAAAAAAAA +SMeDWCsAAAAAAAC4AQAAAEiLXCQISItsJBBIg8QYw5CQAAAAAAAAAAAAAAAAAAAAAChQ +FixYKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKD/o/+e/6D/o/+g/wAAAAAA +AAUACgAUAB4AMgBGAFUAWgBfAGQAAAAAAAAAAAAAAAAACgAUAB4AKAAyADwARgBQAFoA +ZAAAAAAAAAAAAAAAwgAAAMQAAADFAAAA0AAAANoAAADkAAAAAAAAAAAAAADCAAAAwwAA +ANQAAADyAAAADQEAACgBAADPAAAAygAAAAIAUCEBAEABBACgAAgAwAAgANAAQABQAQAA +AAAAAAAAJAGYGQAiBQYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAABmAAAAAQAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////8AAACYAABH +AAAACJgAAAAAAAAMmAAApo6ECRCYAAAA4DI9FJgAAGsHAAAcmAAAAAAAACCYAAAAAgIC +JJgAAA4OAAAomAAAAQICCiyYAAD8bwMAMJgAAAAAAAA0mAAADg4AADiYAAAHAAAAPJgA +AAABAgBAmAAAAABjiUSYAACcFnITSJgAADO2GABMmAAAPGGEElCYAADguOgNVJgAAFlI +BwBYmAAAur6AflyYAABeZjoxYJgAAAgdAABkmAAAAM4BAGiYAACQQZpAcJgAAA8AAAB0 +mAAAgAAAAHiYAAAEAAAAAJkAAAAAAAAEmQAAAAAAAAiZAAAAAAAADJkAAAAAgAAQmQAA +AwAAAACbAAAAAAAABJsAACAAAAAImwAAEAAAAAybAAAwAAAAEJsAAAgAAAAUmwAAKAAA +ABibAAAoAAAAHJsAAAQAAAAgmwAAJAAAACSbAAAUAAAAKJsAADQAAAAsmwAADAAAADCb +AAAsAAAANJsAAAIAAAA4mwAAIgAAADybAAASAAAAQJsAADIAAABEmwAACgAAAEibAAAq +AAAATJsAAAEAAABQmwAAIQAAAFSbAAARAAAAWJsAADEAAABcmwAACQAAAGCbAAApAAAA +ZJsAAAUAAABomwAAJQAAAGybAAAVAAAAcJsAADUAAAB0mwAADQAAAHibAAAtAAAAfJsA +AAMAAACAmwAAIwAAAISbAAATAAAAiJsAADMAAACMmwAACwAAAJCbAAArAAAAlJsAAAcA +AACYmwAAJwAAAJybAAAXAAAAoJsAADcAAACkmwAADwAAAKibAAAvAAAArJsAAC8AAACw +mwAALwAAALSbAAAvAAAAuJsAAC8AAAC8mwAALwAAAMCbAAAvAAAAxJsAAC8AAADImwAA +LwAAAMybAAAvAAAA0JsAAC8AAADUmwAALwAAANibAAAvAAAA3JsAAC8AAADgmwAALwAA +AOSbAAAvAAAA6JsAAC8AAADsmwAALwAAAPCbAAAvAAAA9JsAAC8AAAD4mwAALwAAAPyb +AAAvAAAAAJoAAB0AAAAEmgAAXQAAAAiaAACdAAAADJoAAN0AAAAQmgAAHQEAABSaAAAh +AAAAGJoAAGEAAAAcmgAAoQAAACCaAADhAAAAJJoAADEAAAAomgAAcQAAACyaAACxAAAA +MJoAABwAAAA0mgAAXAAAADiaAAApAAAAPJoAAGkAAABAmgAAqQAAAESaAAAgAAAASJoA +ABkAAABMmgAAWQAAAFCaAACZAAAAVJoAADAAAABYmgAABQAAAFyaAAAlAAAAYJoAAGUA +AABkmgAApQAAAGiaAAAoAAAAbJoAAGgAAABwmgAAHwAAAHSaAAAeAAAAeJoAABgAAAB8 +mgAAWAAAAICaAACYAAAAhJoAAAMAAACImgAABAAAAIyaAABEAAAAkJoAAIQAAACUmgAA +EwAAAJiaAAASAAAAnJoAAFIAAACgmgAAkgAAAKSaAADSAAAAqJoAACsAAACsmgAAKgAA +ALCaAABqAAAAtJoAAKoAAAC4mgAAGwAAALyaAAAaAAAAwJoAAFoAAADEmgAAmgAAAMia +AADaAAAAzJoAAAYAAADQmgAABgAAANSaAAAGAAAA2JoAAAYAAADcmgAABgAAAOCaAAAG +AAAA5JoAAAYAAADomgAABgAAAOyaAAAGAAAA8JoAAAYAAAD0mgAABgAAAPiaAAAGAAAA +/JoAAAYAAADUmAAAIAAAAMyYAAAEAAAAyJgAAAYBBgCcmAAAbQAAAMCYAAAAAAAA0JgA +ABQAAAAAAAAAAAAAAAkJAAAAAAACAgYGBgYGBgICAAAAAwAGAAkAPAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAADwAAAAzAAAAAAAAAAAAAAAAAAAAAriAAAAIAAACgIAAAEY +AAABAAAAQBgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQRXGQAiBQYAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAGcAAAABAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAaAAAAAEAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGIAAAACAAAAAAAAAAAAAAAKAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYwAAAAEAAAAAAAAAAAAAAAgAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAAAAAAAAAAAAAAAAABwAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGUAAAAAAAAAAAAAAAAAAAAFAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaQAAAAAAAAAAAAAAAAAAAAgA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqAAAAAAAAAAAAAAAAAAAA -BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEA -AAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAAAA -AQAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGcA -AAABAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -aAAAAAEAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AABhAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAGIAAAACAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAYwAAAAEAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAABkAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAGUAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAaQAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAABqAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAGIAUABAAAAAAAAAAAAABABSANQAQAAAAAA -AAAAAAAwARACQAEAAAAAAAAAAAAAAgBQAQEAQAEEAKAACADAACAA0AAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjBSg -FLQUyBQAAAAAAAAAAHwVkBWkFbgVzBXgFfQVCBYcFjAWRBYAAAAAAAAAAAAAQAECAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAGABOgBAAQAAAAAAAAAAAAAwAQAAQAEAAAAAAAAAAAAAMAIAAEABAAAAAAAA -AAAAADADAABAAQAAAAAAAAAAAAAwBAAAQAEAAAAAAAAAAAAAMAUAAEABAAAAAAAAAAAA -ADAGAABAAQAAAAAAAAAAAAAwCgAAQAEAAAAAAAAAAAAAMAsAAEABAAAAAAAAAAAAADAM -AABAAQAAAAAAAAAAAABoAGgAQAEAAAAAAAAAAAAAQAJDAEABAAAAAAAAAAAAAEAKQwCg -AAAAAAAAAAAAAABACkMAwAAAAAAAAAAAAAAAQAFBAEABAAAAAAAAAAAAAEAKQQCgAAAA -AAAAAAAAAABACkEAwAAAAAAAAAAAAAAAQABDAEEASABKAEsAAAAAACQBmBkAKREEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA @@ -2049,36 +2389,6 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAmAAARwAAAAiYAAAAAAAADJgAAKaOhAkQmAAAAOAyPRSYAABrBwAAHJgAAAAA -AAAgmAAAAAICAiSYAAAODgAAKJgAAAECAgosmAAA/G8DADCYAAAAAAAANJgAAA4OAAA4 -mAAABwAAADyYAAAAAQIAQJgAAAAAY4lEmAAAnBZyE0iYAAAzthgATJgAADxhhBJQmAAA -4LjoDVSYAABZSAcAWJgAALq+gH5cmAAAXmY6MWCYAAAIHQAAZJgAAADOAQBomAAAkEGa -QHCYAAAPAAAAdJgAAIAAAAB4mAAABAAAAACZAAAAAAAABJkAAAAAAAAImQAAAAAAAAyZ -AAAAAIAAEJkAAAMAAAAAmwAAAAAAAASbAAAgAAAACJsAABAAAAAMmwAAMAAAABCbAAAI -AAAAFJsAACgAAAAYmwAAKAAAABybAAAEAAAAIJsAACQAAAAkmwAAFAAAACibAAA0AAAA -LJsAAAwAAAAwmwAALAAAADSbAAACAAAAOJsAACIAAAA8mwAAEgAAAECbAAAyAAAARJsA -AAoAAABImwAAKgAAAEybAAABAAAAUJsAACEAAABUmwAAEQAAAFibAAAxAAAAXJsAAAkA -AABgmwAAKQAAAGSbAAAFAAAAaJsAACUAAABsmwAAFQAAAHCbAAA1AAAAdJsAAA0AAAB4 -mwAALQAAAHybAAADAAAAgJsAACMAAACEmwAAEwAAAIibAAAzAAAAjJsAAAsAAACQmwAA -KwAAAJSbAAAHAAAAmJsAACcAAACcmwAAFwAAAKCbAAA3AAAApJsAAA8AAAComwAALwAA -AKybAAAvAAAAsJsAAC8AAAC0mwAALwAAALibAAAvAAAAvJsAAC8AAADAmwAALwAAAMSb -AAAvAAAAyJsAAC8AAADMmwAALwAAANCbAAAvAAAA1JsAAC8AAADYmwAALwAAANybAAAv -AAAA4JsAAC8AAADkmwAALwAAAOibAAAvAAAA7JsAAC8AAADwmwAALwAAAPSbAAAvAAAA -+JsAAC8AAAD8mwAALwAAAACaAAAdAAAABJoAAF0AAAAImgAAnQAAAAyaAADdAAAAEJoA -AB0BAAAUmgAAIQAAABiaAABhAAAAHJoAAKEAAAAgmgAA4QAAACSaAAAxAAAAKJoAAHEA -AAAsmgAAsQAAADCaAAAcAAAANJoAAFwAAAA4mgAAKQAAADyaAABpAAAAQJoAAKkAAABE -mgAAIAAAAEiaAAAZAAAATJoAAFkAAABQmgAAmQAAAFSaAAAwAAAAWJoAAAUAAABcmgAA -JQAAAGCaAABlAAAAZJoAAKUAAABomgAAKAAAAGyaAABoAAAAcJoAAB8AAAB0mgAAHgAA -AHiaAAAYAAAAfJoAAFgAAACAmgAAmAAAAISaAAADAAAAiJoAAAQAAACMmgAARAAAAJCa -AACEAAAAlJoAABMAAACYmgAAEgAAAJyaAABSAAAAoJoAAJIAAACkmgAA0gAAAKiaAAAr -AAAArJoAACoAAACwmgAAagAAALSaAACqAAAAuJoAABsAAAC8mgAAGgAAAMCaAABaAAAA -xJoAAJoAAADImgAA2gAAAMyaAAAGAAAA0JoAAAYAAADUmgAABgAAANiaAAAGAAAA3JoA -AAYAAADgmgAABgAAAOSaAAAGAAAA6JoAAAYAAADsmgAABgAAAPCaAAAGAAAA9JoAAAYA -AAD4mgAABgAAAPyaAAAGAAAA1JgAACAAAADMmAAABAAAAMiYAAAGAQYAnJgAAG0AAADA -mAAAAAAAANCYAAAUAAAAAAAAAAAAAAAJCQAAAAAAAgIGBgYGBgYCAgAAAAMABgAJADwA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAMwAAAAAAAAAAAAAAAAAAAAK4gAA -ACAAAAoCAAABGAAAAQAAAEAYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUE -VxkAKREEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA @@ -2110,7 +2420,84 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAABsCY8JtAkAAP///////wAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAACAAAAAgAAAAQAAAAEAAAAAAAAYAAAAGAAAABgAwAAAAFQAAABUA +AAAdAAAAFQAAAEAQAAAP/C8AD/wvAB/8LwAP/C8ARBAAAA/8LwAP/C8AH/wvAA/8LwBI +EAAAD/wvAA/8LwAf/C8AD/wvAEwQAAAP/C8AD/wvAB/8LwAP/C8AUBAAAA/8LwAP/C8A +H/wvAA/8LwBUEAAAD/wvAA/8LwAf/C8AD/wvAFgQAAAP/C8AD/wvAB/8LwAP/C8AXBAA +AA/8LwAP/C8AH/wvAA/8LwBgEAAAD/wvAA/8LwAf/C8AD/wvAGQQAAAP/C8AD/wvAB/8 +LwAP/C8AcBAAAGgBAADgAQAAuAEAAGgBAAAwEAAAMAIAAOABAACwAAAAMAIAALAQAACY +DQAAgBEAAEgfAACYDQAA8BAAAOCgAABoQAEAgFgAAOCgAAAUgAAAAAQABAAIAAgAMAAg +AAQABByAAACnj40Oz4+NDpWPYAGnj40OBJgAAAAAAAADAAAAAAAAAAAAAAAgmAAAAAIC +AgACAgIAAgECAAICAiSYAAAODgAADg4AAAcHAAAODgAAKJgAAAEAAgoBAAIKAAABBQEA +Ago0mAAADg4AAA4OAAAODgAADg4AADiYAAAHAAAABwAAAAsAAAALAAAARJgAAJwWchOl +FnITqBZyE5wWchNImAAAZ7oYAGe6GABpuhgAaboYAFCYAADgtCgM4LQoDOC0KAzgtCgM +WJgAAC4NgH4uDYB+Lg3Afi4NgH5cmAAAXl03MV5dNzFeXToxXl03MWCYAAAQvQAAEL0A +ADi9AAAQvQAAZJgAAADOAQAAzgEAAM4BAADOAQAUmQAAECcAABAnAAB8FQAAECcAABiZ +AACQAQAAkAEAAIQAAACQAQAARJkAACAQ4G8gEOBvIAngbyAQ4G+AoQAA/xT/Bf8U/wX/ +FP8F/xn/BdSYAAAQAAAAFAAAABAAAAAQAAAAAAAAAAwAAAAAAAAAKAAAAJychIQsAAAA +fHx8fDQAAAAFAAAAQAAAAAAAAABEAAAACAAAAEgAAAAIAAAATAAAABAAAABQAAAAAAAA +AFQAAAAfAAAAAAgAAAAAAAAECAAAAAAAAAgIAAAAAAAADAgAAAAAAAAQCAAAAAAAABQI +AAAAAAAAGAgAAAAAAAAcCAAAAAAAACAIAAAAAAAAJAgAAAAAAAAwEgAAAAAAAASAAAAA +AAAACIAAAAAAAAAMgAAAAAAAABiAAAAAAAAAJIAAAAAAAAAogAAAMAAAACyAAAD//wcA +MIAAAP///wE0gAAAMQAAADiAAAAAAAAAPIAAAAAAAABAgAAAAAAAAESAAAACAAAASIAA +AAAAAABUgAAAAAAAAFiAAAAAAAAACJgAAAAAAAAMmAAAk5CELRCYAAAA4DJ9FJgAAGsP +AAAcmAAAAAAAACyYAAD+bwIAMJgAAAAAAAA8mAAAAAECAECYAAB6AWogTJgAADxhhBJU +mAAAWQgAAGiYAACQQZpAbJgAAIGwDAVwmAAADwAAAHSYAACAAAAAeJgAAAwAAAAAmQAA +AAAAAASZAAAAAAAACJkAAAAAAAAMmQAAAACAABCZAAABAAAAHJkAACoJAAAgmQAAAAAA +ACSZAAAFigUAKJkAAAEAAAAsmQAAAAAAADCZAAAAAAAANJkAAAAAAAA4mQAAAAAAADyZ +AAA/AAAAQJkAAAQAAABImQAAAAAAAEyZAAAAAAAAUJkAAAAAAABUmQAATPFQXViZAAAY +AAAAXJkAAI5qSwCEoQAA/wX/BoihAAD/B/8HjKEAAP8I/wiQoQAA/wn/CZShAAD/Cv8K +mKEAAP8L/wucoQAA/wz/DKChAAD/Df8NpKEAAP8O/w+ooQAA/xL/EqyhAAD/E/8UsKEA +AP8V/xa0oQAA/xf/GbihAAD/Gv8bvKEAAP8d/x7AoQAA/yD/I8ShAAD/Jf8nyKEAAP8p +/yzMoQAA/y//MdChAAD/NP831KEAAP86/zrYoQAA/zr/OtyhAAD/Ov864KEAAP86/zrk +oQAA/zr/OuihAAD/Ov867KEAAP86/zrwoQAA/zr/OvShAAD/Ov86+KEAAP86/zr8oQAA +/zr/OgCbAAAAAAAABJsAACAAAAAImwAAEAAAAAybAAAwAAAAEJsAAAgAAAAUmwAAKAAA +ABibAAAEAAAAHJsAACQAAAAgmwAAFAAAACSbAAA0AAAAKJsAAAwAAAAsmwAALAAAADCb +AAACAAAANJsAACIAAAA4mwAAEgAAADybAAAyAAAAQJsAAAoAAABEmwAAKgAAAEibAAAG +AAAATJsAACYAAABQmwAAFgAAAFSbAAA2AAAAWJsAAA4AAABcmwAALgAAAGCbAAABAAAA +ZJsAACEAAABomwAAEQAAAGybAAAxAAAAcJsAAAkAAAB0mwAAKQAAAHibAAAFAAAAfJsA +ACUAAACAmwAAFQAAAISbAAA1AAAAiJsAAA0AAACMmwAALQAAAJCbAAADAAAAlJsAACMA +AACYmwAAEwAAAJybAAAzAAAAoJsAAAsAAACkmwAAKwAAAKibAAArAAAArJsAACsAAACw +mwAAKwAAALSbAAArAAAAuJsAACsAAAC8mwAAKwAAAMCbAAArAAAAxJsAACsAAADImwAA +KwAAAMybAAArAAAA0JsAACsAAADUmwAAKwAAANibAAArAAAA3JsAACsAAADgmwAAKwAA +AOSbAAArAAAA6JsAACsAAADsmwAAKwAAAPCbAAArAAAA9JsAACsAAAD4mwAAAgAAAPyb +AAAWAAAA1JgAACAAAADYmAAAaBBgAAAAAAAAAAAAAJoAAKkBAAAAAAAABJoAAOkBAABA +AAAACJoAACkAAACAAAAADJoAAGkAAABQAQAAEJoAAJkBAACQAQAAFJoAANkBAADQAQAA +GJoAABkAAAAQAAAAHJoAAFkAAABEAAAAIJoAAJkAAACEAAAAJJoAAKUBAABIAQAAKJoA +AOUBAACIAQAALJoAACUAAADIAQAAMJoAAMgBAAAUAAAANJoAAAgAAABCAAAAOJoAAEgA +AACCAAAAPJoAAIgAAAB4AQAAQJoAAJgBAAC4AQAARJoAANgBAAD4AQAASJoAABgAAAAS +AAAATJoAAFgAAABSAAAAUJoAAJgAAACSAAAAVJoAAKQBAAB8AQAAWJoAAOQBAAC8AQAA +XJoAACQAAAD8AQAAYJoAAGQAAAAKAAAAZJoAAKQAAABKAAAAaJoAAOQAAACKAAAAbJoA +AAoBAABaAQAAcJoAAEoBAACaAQAAdJoAAIoBAADaAQAAeJoAAMoBAAAOAAAAfJoAAAoA +AABOAAAAgJoAAEoAAACOAAAAhJoAAIoAAABeAQAAiJoAALoBAACeAQAAjJoAAPoBAADe +AQAAkJoAADoAAAAJAAAAlJoAAHoAAABJAAAAmJoAAIYBAACJAAAAnJoAAMYBAAB5AQAA +oJoAAAYAAAC5AQAApJoAAEYAAAD5AQAAqJoAAIYAAAA5AAAArJoAAMYAAAB5AAAAsJoA +AMYAAAC5AAAAtJoAAMYAAAC9AQAAuJoAAMYAAAD9AQAAvJoAAMYAAAA9AAAAwJoAAMYA +AAB9AAAAxJoAAMYAAAC9AAAAyJoAAMYAAAD9AAAAzJoAAMYAAAD9AAAA0JoAAMYAAAD9 +AAAA1JoAAMYAAAD9AAAA2JoAAMYAAAD9AAAA3JoAAMYAAAD9AAAA4JoAAMYAAAD9AAAA +5JoAAMYAAAD9AAAA6JoAAMYAAAD9AAAA7JoAAMYAAAD9AAAA8JoAAMYAAAD9AAAA9JoA +AMYAAAD9AAAA+JoAAMYAAAD9AAAA/JoAAMYAAAD9AAAAAQAAAEYAAABgAAAAAQAAAEYA +AABhAAAAAQAAAEYAAABiAAAAAQAAAEYAAABjAAAAAQAAAEYAAABkAAAAAQAAAEYAAABl +AAAAAQAAAEYAAABmAAAAAQAAAEYAAABnAAAAAQAAAEYAAABoAAAAAQAAAEYAAABpAAAA +AQAAAEYAAABqAAAAAQAAAEYAAABrAAAAAQAAAEYAAABsAAAAAQAAAEYAAAB0AAAAAQAA +AEYAAAB0AAAAAQAAAEYAAAB0AAAAAQAAAEYAAAB0AAAAAQAAAEYAAAB0AAAAAQAAAEYA +AAB0AAAAAQAAAEYAAAB0AAAAAQAAAEYAAAB0AAAAAQAAAEYAAAB1AAAAAQAAAEYAAAB2 +AAAAAQAAAEYAAAB3AAAAAQAAAEYAAAB4AAAAAQAAAEYAAAB5AAAAAQAAAEYAAAB6AAAA +AQAAAEYAAAB7AAAAAQAAAEYAAAB8AAAAAQAAAEYAAAB9AAAAAQAAAEYAAAB+AAAAAQAA +AEYAAAB/AAAAAQAAAEYAAACAAAAAAQAAAEQAAAB8AAAAAQAAAEYAAACIAAAAAQAAAEYA +AACMAAAAAQAAAEYAAACQAAAAAQAAAEYAAACUAAAAAQAAAEYAAACYAAAAAQAAAEYAAACc +AAAAAQAAAEYAAACgAAAAAQAAAEYAAACkAAAAAQAAAEYAAACoAAAAAQAAAEYAAACsAAAA +AQAAAEYAAACwAAAAAQAAAEYAAAC0AAAAAAIHAAAAAAAAAAAAAAAAAAAAAAAAAAAAnhYL +AGIWCgA6FgkAHBYIAOoVBwCaFQUAShUEAAMVAgBZFAAAAAABAAAAAwAGAAkAPwAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAABAAAAAQAAQABAAEABgAAAEZHOAAAAAAA +AAAAAAAAAAAEAAAAAQABAAQAAABGRzcAAAAAAAAAAAAAAAAAAwABAAEAAQADAAAARkc2 +AAAAAAAAAAAAAAAAAAQAAAAAAAEAAQAAAEZHNQAAAAAAAAAAAAAAAAAEAAEAAQAAAAAA +AABGRzQAAAAAAAAAAAAAAAAABAAAAAEAAAD+////RkczAAAAAAAAAAAAAAAAAAMAAQAB +AAAA/f///0ZHMgAAAAAAAAAAAAAAAAAEAAAAAAAAAPz///9GRzEAAAAAAAAAAAAAAAAA +AgABAAEAAAD6////RkcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAUEFQZACIFBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA @@ -2125,83 +2512,7 @@ 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 -OvyhAAD/Ov86AJsAAAAAAAAEmwAAIAAAAAibAAAQAAAADJsAADAAAAAQmwAACAAAABSb -AAAoAAAAGJsAAAQAAAAcmwAAJAAAACCbAAAUAAAAJJsAADQAAAAomwAADAAAACybAAAs -AAAAMJsAAAIAAAA0mwAAIgAAADibAAASAAAAPJsAADIAAABAmwAACgAAAESbAAAqAAAA -SJsAAAYAAABMmwAAJgAAAFCbAAAWAAAAVJsAADYAAABYmwAADgAAAFybAAAuAAAAYJsA -AAEAAABkmwAAIQAAAGibAAARAAAAbJsAADEAAABwmwAACQAAAHSbAAApAAAAeJsAAAUA -AAB8mwAAJQAAAICbAAAVAAAAhJsAADUAAACImwAADQAAAIybAAAtAAAAkJsAAAMAAACU -mwAAIwAAAJibAAATAAAAnJsAADMAAACgmwAACwAAAKSbAAArAAAAqJsAACsAAACsmwAA -KwAAALCbAAArAAAAtJsAACsAAAC4mwAAKwAAALybAAArAAAAwJsAACsAAADEmwAAKwAA -AMibAAArAAAAzJsAACsAAADQmwAAKwAAANSbAAArAAAA2JsAACsAAADcmwAAKwAAAOCb -AAArAAAA5JsAACsAAADomwAAKwAAAOybAAArAAAA8JsAACsAAAD0mwAAKwAAAPibAAAC -AAAA/JsAABYAAADUmAAAIAAAANiYAABoEGAAAAAAAAAAAAAAmgAAqQEAAAAAAAAEmgAA -6QEAAEAAAAAImgAAKQAAAIAAAAAMmgAAaQAAAFABAAAQmgAAmQEAAJABAAAUmgAA2QEA -ANABAAAYmgAAGQAAABAAAAAcmgAAWQAAAEQAAAAgmgAAmQAAAIQAAAAkmgAApQEAAEgB -AAAomgAA5QEAAIgBAAAsmgAAJQAAAMgBAAAwmgAAyAEAABQAAAA0mgAACAAAAEIAAAA4 -mgAASAAAAIIAAAA8mgAAiAAAAHgBAABAmgAAmAEAALgBAABEmgAA2AEAAPgBAABImgAA -GAAAABIAAABMmgAAWAAAAFIAAABQmgAAmAAAAJIAAABUmgAApAEAAHwBAABYmgAA5AEA -ALwBAABcmgAAJAAAAPwBAABgmgAAZAAAAAoAAABkmgAApAAAAEoAAABomgAA5AAAAIoA -AABsmgAACgEAAFoBAABwmgAASgEAAJoBAAB0mgAAigEAANoBAAB4mgAAygEAAA4AAAB8 -mgAACgAAAE4AAACAmgAASgAAAI4AAACEmgAAigAAAF4BAACImgAAugEAAJ4BAACMmgAA -+gEAAN4BAACQmgAAOgAAAAkAAACUmgAAegAAAEkAAACYmgAAhgEAAIkAAACcmgAAxgEA -AHkBAACgmgAABgAAALkBAACkmgAARgAAAPkBAAComgAAhgAAADkAAACsmgAAxgAAAHkA -AACwmgAAxgAAALkAAAC0mgAAxgAAAL0BAAC4mgAAxgAAAP0BAAC8mgAAxgAAAD0AAADA -mgAAxgAAAH0AAADEmgAAxgAAAL0AAADImgAAxgAAAP0AAADMmgAAxgAAAP0AAADQmgAA -xgAAAP0AAADUmgAAxgAAAP0AAADYmgAAxgAAAP0AAADcmgAAxgAAAP0AAADgmgAAxgAA -AP0AAADkmgAAxgAAAP0AAADomgAAxgAAAP0AAADsmgAAxgAAAP0AAADwmgAAxgAAAP0A -AAD0mgAAxgAAAP0AAAD4mgAAxgAAAP0AAAD8mgAAxgAAAP0AAAABAAAARgAAAGAAAAAB -AAAARgAAAGEAAAABAAAARgAAAGIAAAABAAAARgAAAGMAAAABAAAARgAAAGQAAAABAAAA -RgAAAGUAAAABAAAARgAAAGYAAAABAAAARgAAAGcAAAABAAAARgAAAGgAAAABAAAARgAA -AGkAAAABAAAARgAAAGoAAAABAAAARgAAAGsAAAABAAAARgAAAGwAAAABAAAARgAAAHQA -AAABAAAARgAAAHQAAAABAAAARgAAAHQAAAABAAAARgAAAHQAAAABAAAARgAAAHQAAAAB -AAAARgAAAHQAAAABAAAARgAAAHQAAAABAAAARgAAAHQAAAABAAAARgAAAHUAAAABAAAA -RgAAAHYAAAABAAAARgAAAHcAAAABAAAARgAAAHgAAAABAAAARgAAAHkAAAABAAAARgAA -AHoAAAABAAAARgAAAHsAAAABAAAARgAAAHwAAAABAAAARgAAAH0AAAABAAAARgAAAH4A -AAABAAAARgAAAH8AAAABAAAARgAAAIAAAAABAAAARAAAAHwAAAABAAAARgAAAIgAAAAB -AAAARgAAAIwAAAABAAAARgAAAJAAAAABAAAARgAAAJQAAAABAAAARgAAAJgAAAABAAAA -RgAAAJwAAAABAAAARgAAAKAAAAABAAAARgAAAKQAAAABAAAARgAAAKgAAAABAAAARgAA -AKwAAAABAAAARgAAALAAAAABAAAARgAAALQAAAAAAgcAAAADAAYACQA8AAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAACQAAAAQAAAAEAAEAAQABAAYAAABGRzgAAAAAAAAAAAAAAAAA -BAAAAAEAAQAEAAAARkc3AAAAAAAAAAAAAAAAAAMAAQABAAEAAwAAAEZHNgAAAAAAAAAA -AAAAAAAEAAAAAAABAAEAAABGRzUAAAAAAAAAAAAAAAAABAABAAEAAAAAAAAARkc0AAAA -AAAAAAAAAAAAAAQAAAABAAAA/v///0ZHMwAAAAAAAAAAAAAAAAADAAEAAQAAAP3///9G -RzIAAAAAAAAAAAAAAAAABAAAAAAAAAD8////RkcxAAAAAAAAAAAAAAAAAAIAAQABAAAA -+v///0ZHMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBBU -GQApEQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA @@ -2248,150 +2559,343 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAmP -CbQJCAlsCbQJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACAAAABAAAAAQAAAAAAABgAA -AAYAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAABAEAAAD/wvAA/8LwAf/C8AD/wvAA/8LwBEEAAAD/wvAA/8LwAf -/C8AD/wvAA/8LwBIEAAAD/wvAA/8LwAf/C8AD/wvAA/8LwBMEAAAD/wvAA/8LwAf/C8A -D/wvAA/8LwBQEAAAD/wvAA/8LwAf/C8AD/wvAA/8LwBUEAAAD/wvAA/8LwAf/C8AD/wv -AA/8LwBYEAAAD/wvAA/8LwAf/C8AD/wvAA/8LwBcEAAAD/wvAA/8LwAf/C8AD/wvAA/8 -LwBgEAAAD/wvAA/8LwAf/C8AD/wvAA/8LwBkEAAAD/wvAA/8LwAf/C8AD/wvAA/8LwAw -EAAAMAIAAOABAACwAAAAYAEAAOABAABwEAAAaAEAAOABAAC4AQAAjAEAAOABAACwEAAA -YA4AAIARAAAcHwAAOD4AAIARAADwEAAA4KAAAGhAAQCAWAAA4LAAAGhAAQAUgAAA6APo -A+AG4AYgBCAEQAhACOAG4AYEmAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAgmAAAAAICAgAC -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 -Dg4AAA4OAAAODgAADg4AAA4OAAA4mAAABwAAAAcAAAALAAAACwAAAAsAAABImAAAWtoY -AFraGABpyhgAacoYAGnKGABQmAAA4LToDeC06A3gtOgN4LToDeC06A1YmAAALg2Afi4N -gH4uTeh+Lk3ofi4NgH5cmAAAXmY3MV5mNzFeZjcxXmY3MV5hNzFsmAAAgbAMBYGwDAWB -sAwFgLAMBYCwDAUUmQAAECcAABAnAAB8FQAA+CoAABAnAABEmQAAIBC49yAQuPcgDbj3 -IBC49yAQuPcMogAAakEsZGpBLGRqQUBkakFAZGpBQGQcogAACoCDGAqAgxgKgHMYCoCD -GAqAgxgAAAAAAAAAAAAAAAAAAAAAMBIAAAAAAAAsmAAA/i8CADyYAAAAAQIATJgAADxh -hBIwmQAAg0gAAECZAAAEAAAAdJkAAAAAAAD4mQAAGAAAAASiAAAAAAAACKIAAIhnPtAo -ogAAtQEAADyiAACvicgTBJsAACAAAAAImwAAEAAAAAybAAAwAAAAEJsAAAgAAAAUmwAA -KAAAABibAAAEAAAAHJsAACQAAAAgmwAAFAAAACSbAAA0AAAALJsAACwAAAAwmwAAAgAA -ADSbAAAiAAAAPJsAADIAAABAmwAACgAAAESbAAAqAAAASJsAAAYAAABMmwAAJgAAAFCb -AAAWAAAAVJsAADYAAABYmwAADgAAAFybAAAuAAAAYJsAAAEAAABomwAAEQAAAGybAAAx -AAAAcJsAAAkAAAB0mwAAKQAAAHibAAAFAAAAfJsAACUAAACAmwAAFQAAAISbAAA1AAAA -iJsAAA0AAACQmwAAAwAAAJSbAAAjAAAAmJsAABMAAACgmwAACwAAAKSbAAArAAAAqJsA -ACsAAACsmwAAKwAAALCbAAArAAAAtJsAACsAAAC4mwAAKwAAALybAAArAAAAwJsAACsA -AADEmwAAKwAAAMibAAArAAAAzJsAACsAAADQmwAAKwAAANSbAAArAAAA2JsAACsAAADc -mwAAKwAAAOCbAAArAAAA5JsAACsAAADomwAAKwAAAOybAAArAAAA8JsAACsAAAD0mwAA -KwAAAPibAAACAAAA/JsAABYAAAAAAAAAAAAAAAAAAAAAAAAAnJgAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAnJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnJgAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAnJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnJgAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwJjwm0CQgJbAm0Cf// +/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAgAAAAIAAAAEAAAABAAAAAAAAGAAAABgAAAAYAnhYLAGIWCgA6FgkA +HBYIAOoVBwCaFQUAShUEAAMVAgBZFAAAuAsBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAQAAAAIAAAAD +AAAABAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAEAQAAAP/C8AD/wvAB/8LwAP/C8AD/wvAEQQAAAP/C8AD/wv +AB/8LwAP/C8AD/wvAEgQAAAP/C8AD/wvAB/8LwAP/C8AD/wvAEwQAAAP/C8AD/wvAB/8 +LwAP/C8AD/wvAFAQAAAP/C8AD/wvAB/8LwAP/C8AD/wvAFQQAAAP/C8AD/wvAB/8LwAP +/C8AD/wvAFgQAAAP/C8AD/wvAB/8LwAP/C8AD/wvAFwQAAAP/C8AD/wvAB/8LwAP/C8A +D/wvAGAQAAAP/C8AD/wvAB/8LwAP/C8AD/wvAGQQAAAP/C8AD/wvAB/8LwAP/C8AD/wv +ADAQAAAwAgAA4AEAALAAAABgAQAA4AEAAHAQAABoAQAA4AEAALgBAACMAQAA4AEAALAQ +AABgDgAAgBEAABwfAAA4PgAAgBEAAPAQAADgoAAAaEABAIBYAADgsAAAaEABABSAAADo +A+gD4AbgBiAEIARACEAI4AbgBgSYAAAAAAAAAwAAAAAAAAAAAAAAAwAAACCYAAAAAgIC +AAICAgACAQIAAgICAAICAiSYAAAODgAADg4AAAcHAAAODgAADg4AAESYAAAcFnITJRxy +EyIXchOiFnITJRxyE2CYAAAQnQAAEJ0AABidAAAYnQAAEJ0AAGSYAAAAzgEAAM4BAADO +AQAAzgEAAM4BAGiYAACQQZpAkEGaQJBBmkCQQZpAkEGaQBiZAAC4AQAAuAEAAIQAAAAI +AQAAuAEAACSZAAAFigUQBYoFEAWKBRAFigUQBYoFEDCiAAAAAAAAAAAAAAAAAAAIAQAA +AAAAAAAAAAAAAAAADAAAAAAAAAA0AAAABQAAAEAAAAAAAAAARAAAAAgAAABIAAAACAAA +AEwAAAAQAAAAUAAAAAAAAABUAAAAHwAAAAAIAAAAAAAABAgAAAAAAAAICAAAAAAAAAwI +AAAAAAAAEAgAAAAAAAAUCAAAAAAAABgIAAAAAAAAHAgAAAAAAAAgCAAAAAAAACQIAAAA +AAAAcBIAAAAAAAA4EAAAAAAAAHgQAAAAAAAAuBAAAAAAAAD4EAAAAAAAADgRAAAAAAAA +eBEAAAAAAAC4EQAAAAAAAPgRAAAAAAAAOBIAAAAAAAB4EgAAAAAAALgSAAAAAAAA+BIA +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 +AAAAQJsAAAoAAABEmwAAKgAAAEibAAAGAAAATJsAACYAAABQmwAAFgAAAFSbAAA2AAAA +WJsAAA4AAABcmwAALgAAAGCbAAABAAAAaJsAABEAAABsmwAAMQAAAHCbAAAJAAAAdJsA +ACkAAAB4mwAABQAAAHybAAAlAAAAgJsAABUAAACEmwAANQAAAIibAAANAAAAkJsAAAMA +AACUmwAAIwAAAJibAAATAAAAoJsAAAsAAACkmwAAKwAAAKibAAArAAAArJsAACsAAACw +mwAAKwAAALSbAAArAAAAuJsAACsAAAC8mwAAKwAAAMCbAAArAAAAxJsAACsAAADImwAA +KwAAAMybAAArAAAA0JsAACsAAADUmwAAKwAAANibAAArAAAA3JsAACsAAADgmwAAKwAA +AOSbAAArAAAA6JsAACsAAADsmwAAKwAAAPCbAAArAAAA9JsAACsAAAD4mwAAAgAAAPyb +AAAWAAAAnJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnJgAAAAAAAAAAAAAAAAAAAAAAAAA AAAAnJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA nJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnJgA AAAAAAAAAAAAAAAAAAAAAAAAAAAAnJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnJgAAAAA -OAAAADgAAAA4AAAAOAAAADgAnJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnJgAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAnJgAAAAAAAAAAAAAwAAAAIAAAACAAAAAnJgAAPkABAD5AAQA -/wAEAP0ABAD9AAQA1JgAAAAAAAAAAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAmgAAqQEA -AAAAAAAEmgAA6QEAAEAAAAAImgAAKQAAAIAAAAAMmgAAaQAAAFABAAAQmgAAmQEAAJAB -AAAUmgAA2QEAANABAAAYmgAAGQAAABAAAAAcmgAAWQAAAEQAAAAgmgAAmQAAAIQAAAAk -mgAApQEAAEgBAAAomgAA5QEAAIgBAAAsmgAAJQAAAMgBAAAwmgAAyAEAABQAAAA0mgAA -CAAAAEIAAAA4mgAASAAAAIIAAAA8mgAAiAAAAHgBAABAmgAAmAEAALgBAABEmgAA2AEA -APgBAABImgAAGAAAABIAAABMmgAAWAAAAFIAAABQmgAAmAAAAJIAAABUmgAApAEAAHwB -AABYmgAA5AEAALwBAABcmgAAJAAAAPwBAABgmgAAZAAAAAoAAABkmgAApAAAAEoAAABo -mgAA5AAAAIoAAABsmgAACgEAAFoBAABwmgAASgEAAJoBAAB0mgAAigEAANoBAAB4mgAA -ygEAAA4AAAB8mgAACgAAAE4AAACAmgAASgAAAI4AAACEmgAAigAAAF4BAACImgAAugEA -AJ4BAACMmgAA+gEAAN4BAACQmgAAOgAAAAkAAACUmgAAegAAAEkAAACYmgAAhgEAAIkA -AACcmgAAxgEAAHkBAACgmgAABgAAALkBAACkmgAARgAAAPkBAAComgAAhgAAADkAAACs -mgAAxgAAAHkAAACwmgAAxgAAALkAAAC0mgAAxgAAAL0BAAC4mgAAxgAAAP0BAAC8mgAA -xgAAAD0AAADAmgAAxgAAAH0AAADEmgAAxgAAAL0AAADImgAAxgAAAP0AAADMmgAAxgAA -AP0AAADQmgAAxgAAAP0AAADUmgAAxgAAAP0AAADYmgAAxgAAAP0AAADcmgAAxgAAAP0A -AADgmgAAxgAAAP0AAADkmgAAxgAAAP0AAADomgAAxgAAAP0AAADsmgAAxgAAAP0AAADw -mgAAxgAAAP0AAAD0mgAAxgAAAP0AAAD4mgAAxgAAAP0AAAD8mgAAxgAAAP0AAADUmAAA -IAAAAAAAAAAAAAAA1JgAABAAAAAUAAAAEAAAABAAAAAUAAAAAAAAAAAAAADYmAAAaBBg -AGgQYABoEGAAaBBgAGgQYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACcmAAAAAAAAAAA -AAAAAAAAAAAAAAAAAACcmAAAAAAAAAAAAAAAAAAAAAAAAAAAAACcmAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAnJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnJgAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAnJgAAAAAOAAAADgAAAA4AAAAOAAAADgAnJgAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAnJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnJgAAAAAAAAAAAAAwAAA +AIAAAACAAAAAnJgAAPkABAD5AAQA/wAEAP0ABAD9AAQA1JgAAAAAAAAAAAAABAAAAAQA +AAAEAAAAAAAAAAAAAAAAmgAAqQEAAAAAAAAEmgAA6QEAAEAAAAAImgAAKQAAAIAAAAAM +mgAAaQAAAFABAAAQmgAAmQEAAJABAAAUmgAA2QEAANABAAAYmgAAGQAAABAAAAAcmgAA +WQAAAEQAAAAgmgAAmQAAAIQAAAAkmgAApQEAAEgBAAAomgAA5QEAAIgBAAAsmgAAJQAA +AMgBAAAwmgAAyAEAABQAAAA0mgAACAAAAEIAAAA4mgAASAAAAIIAAAA8mgAAiAAAAHgB +AABAmgAAmAEAALgBAABEmgAA2AEAAPgBAABImgAAGAAAABIAAABMmgAAWAAAAFIAAABQ +mgAAmAAAAJIAAABUmgAApAEAAHwBAABYmgAA5AEAALwBAABcmgAAJAAAAPwBAABgmgAA +ZAAAAAoAAABkmgAApAAAAEoAAABomgAA5AAAAIoAAABsmgAACgEAAFoBAABwmgAASgEA +AJoBAAB0mgAAigEAANoBAAB4mgAAygEAAA4AAAB8mgAACgAAAE4AAACAmgAASgAAAI4A +AACEmgAAigAAAF4BAACImgAAugEAAJ4BAACMmgAA+gEAAN4BAACQmgAAOgAAAAkAAACU +mgAAegAAAEkAAACYmgAAhgEAAIkAAACcmgAAxgEAAHkBAACgmgAABgAAALkBAACkmgAA +RgAAAPkBAAComgAAhgAAADkAAACsmgAAxgAAAHkAAACwmgAAxgAAALkAAAC0mgAAxgAA +AL0BAAC4mgAAxgAAAP0BAAC8mgAAxgAAAD0AAADAmgAAxgAAAH0AAADEmgAAxgAAAL0A +AADImgAAxgAAAP0AAADMmgAAxgAAAP0AAADQmgAAxgAAAP0AAADUmgAAxgAAAP0AAADY +mgAAxgAAAP0AAADcmgAAxgAAAP0AAADgmgAAxgAAAP0AAADkmgAAxgAAAP0AAADomgAA +xgAAAP0AAADsmgAAxgAAAP0AAADwmgAAxgAAAP0AAAD0mgAAxgAAAP0AAAD4mgAAxgAA +AP0AAAD8mgAAxgAAAP0AAADUmAAAIAAAAAAAAAAAAAAA1JgAABAAAAAUAAAAEAAAABAA +AAAUAAAAAAAAAAAAAADYmAAAaBBgAGgQYABoEGAAaBBgAGgQYAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAACcmAAAAAAAAAAAAAAAAAAAAAAAAAAAAACcmAAAAAAAAAAAAAAAAAAA -AAAAAAAAAACcmAAAAAAAEAAAABAAAAAQAAAAEAAAABCcmAAAAAAABAAAAAQAAAAEAAAA -BAAAAAScmAAAAAAAAAAAAAAAAAAAAAAAAAAAAACcmAAAAAAAAAAAAAAAAAAAAAAAAAAA -AACcmAAAAAAAAAAAAAAAAAAAAAAAAAAAAACcmAAAAAAAAAAAAAAAAAAKAAAAAAAAAACc -mAAAwAA4AIAAOADAADgCwAA4AMAAOACcmAAABgACAAYAAgAGAAAABgACAAYAAgCcmAAA -iQAAAIkAAACJAAAAiQAAAIkAAACcmAAAoAAAAKAAAACgAAAAoAAAAKAAAACcmAAABwAE -AAcABAAHAAQABwAEAAcABADUmAAAGgAAABoAAAAaAAAAGgAAABoAAAAAAAAAAAAAAJyY -AABAAAAASAAAAEAAAABAAAAAQAAAAJyYAAAQAAAAEAAAABAAAAAQAAAAEAAAAJyYAAAI -AAAACAAAAAgAAAAIAAAACAAAAJyYAABPAAAATwAAAE8AAABPAAAATwAAAJyYAADxAAAA -8QAAAGEAAADxAAAA8QAAAJyYAABPkAAAT5AAAEyQAABPkAAAT5AAAJyYAABaEgAAWhIA -AJoSAABaEgAAWhIAAMyYAAAOAAAADgAAAA8AAAAOAAAADgAAAAEAAABGAAAAYAAAAAEA -AABGAAAAYQAAAAEAAABGAAAAYgAAAAEAAABGAAAAYwAAAAEAAABGAAAAZAAAAAEAAABG -AAAAZQAAAAEAAABGAAAAZgAAAAEAAABGAAAAZwAAAAEAAABGAAAAaAAAAAEAAABGAAAA -aQAAAAEAAABGAAAAagAAAAEAAABGAAAAawAAAAEAAABGAAAAbAAAAAEAAABGAAAAdAAA -AAEAAABGAAAAdAAAAAEAAABGAAAAdAAAAAEAAABGAAAAdAAAAAEAAABGAAAAdAAAAAEA -AABGAAAAdAAAAAEAAABGAAAAdAAAAAEAAABGAAAAdAAAAAEAAABGAAAAdQAAAAEAAABG -AAAAdgAAAAEAAABGAAAAdwAAAAEAAABGAAAAeAAAAAEAAABGAAAAeQAAAAEAAABGAAAA -egAAAAEAAABGAAAAewAAAAEAAABGAAAAfAAAAAEAAABGAAAAfQAAAAEAAABGAAAAfgAA -AAEAAABGAAAAfwAAAAEAAABGAAAAgAAAAAEAAABEAAAAfAAAAAEAAABGAAAAiAAAAAEA -AABGAAAAjAAAAAEAAABGAAAAkAAAAAEAAABGAAAAlAAAAAEAAABGAAAAmAAAAAEAAABG -AAAAnAAAAAEAAABGAAAAoAAAAAEAAABGAAAApAAAAAEAAABGAAAAqAAAAAEAAABGAAAA -rAAAAAEAAABGAAAAsAAAAAEAAABGAAAAtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAwAAAAFYAAABWAAAAVgAAAFYAAABWAAAAcgAAAp5ONEs8TiAmV -E+AEqxPgEs8TiAkomAAAAQACCgEAAgoAAQIFAQACCgEAAgo0mAAADg4AAA4OAAAODgAA -Dg4AAA4OAAA4mAAABwAAAAcAAAALAAAACwAAAAsAAABImAAAbdoYAG3aGAB1yhgAdcoY -AHXKGABQmAAA4LToDeC06A3gtOgN4LToDeC06A1YmAAALg2Afi4NgH4uDeh+Lg3ofi4N -gH5cmAAAXmY3MV5mNzFeZjcxXmY3MV5mNzFsmAAAgbAMBYGwDAWBsAwFgbAMBYGwDAUU -mQAA0AcAANAHAABMBAAAmAgAANAHAABEmQAAIBC49yAQuPcQDbj3EBC49xAQuPcEogAA -AAAAAAAAAAAIAAAACAAAAAgAAAAIogAAiGe+1ohnvtaIZz7QiGc+0IhnPtAMogAAQAEs -ZEABLGRgwUJkYMFCZGDBQmQcogAACoCDGAqAgxgKgHMYCoCDGAqAgxgwEgAAAAAAACyY -AAD+LwIAPJgAAAABAgBMmAAAPGGEEjCZAACCSAAAQJkAAAQAAAB0mQAAAAAAACiiAAC1 -AQAAPKIAAK+JyBMEmwAAAQAAAAibAAACAAAADJsAAAMAAAAQmwAABAAAABSbAAAFAAAA +AAAAAAAAAACcmAAAAAAAAAAAAAAAAAAAAAAAAAAAAACcmAAAAAAAAAAAAAAAAAAAAAAA +AAAAAACcmAAAAAAAAAAAAAAAAAAAAAAAAAAAAACcmAAAAAAAEAAAABAAAAAQAAAAEAAA +ABCcmAAAAAAABAAAAAQAAAAEAAAABAAAAAScmAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc +mAAAAAAAAAAAAAAAAAAAAAAAAAAAAACcmAAAAAAAAAAAAAAAAAAAAAAAAAAAAACcmAAA +AAAAAAAAAAAAAAAKAAAAAAAAAACcmAAAwAA4AIAAOADAADgCwAA4AMAAOACcmAAABgAC +AAYAAgAGAAAABgACAAYAAgCcmAAAiQAAAIkAAACJAAAAiQAAAIkAAACcmAAAoAAAAKAA +AACgAAAAoAAAAKAAAACcmAAABwAEAAcABAAHAAQABwAEAAcABADUmAAAGgAAABoAAAAa +AAAAGgAAABoAAAAAAAAAAAAAAJyYAABAAAAASAAAAEAAAABAAAAAQAAAAJyYAAAQAAAA +EAAAABAAAAAQAAAAEAAAAJyYAAAIAAAACAAAAAgAAAAIAAAACAAAAJyYAABPAAAATwAA +AE8AAABPAAAATwAAAJyYAADxAAAA8QAAAGEAAADxAAAA8QAAAJyYAABPkAAAT5AAAEyQ +AABPkAAAT5AAAJyYAABaEgAAWhIAAJoSAABaEgAAWhIAAMyYAAAOAAAADgAAAA8AAAAO +AAAADgAAAAEAAABGAAAAYAAAAAEAAABGAAAAYQAAAAEAAABGAAAAYgAAAAEAAABGAAAA +YwAAAAEAAABGAAAAZAAAAAEAAABGAAAAZQAAAAEAAABGAAAAZgAAAAEAAABGAAAAZwAA +AAEAAABGAAAAaAAAAAEAAABGAAAAaQAAAAEAAABGAAAAagAAAAEAAABGAAAAawAAAAEA +AABGAAAAbAAAAAEAAABGAAAAdAAAAAEAAABGAAAAdAAAAAEAAABGAAAAdAAAAAEAAABG +AAAAdAAAAAEAAABGAAAAdAAAAAEAAABGAAAAdAAAAAEAAABGAAAAdAAAAAEAAABGAAAA +dAAAAAEAAABGAAAAdQAAAAEAAABGAAAAdgAAAAEAAABGAAAAdwAAAAEAAABGAAAAeAAA +AAEAAABGAAAAeQAAAAEAAABGAAAAegAAAAEAAABGAAAAewAAAAEAAABGAAAAfAAAAAEA +AABGAAAAfQAAAAEAAABGAAAAfgAAAAEAAABGAAAAfwAAAAEAAABGAAAAgAAAAAEAAABE +AAAAfAAAAAEAAABGAAAAiAAAAAEAAABGAAAAjAAAAAEAAABGAAAAkAAAAAEAAABGAAAA +lAAAAAEAAABGAAAAmAAAAAEAAABGAAAAnAAAAAEAAABGAAAAoAAAAAEAAABGAAAApAAA +AAEAAABGAAAAqAAAAAEAAABGAAAArAAAAAEAAABGAAAAsAAAAAEAAABGAAAAtAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACeFgYAYhYEADoWAwAcFgIA +6hUBAJoVAABKFQAAAxUBAFkUAwC4CwUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAA +ABWAAAAVgAAAFYAAABWAAAAVgAAAHIAAAKeTjRLPE4gJlRPgBKsT4BLPE4gJKJgAAAEA +AgoBAAIKAAECBQEAAgoBAAIKNJgAAA4OAAAODgAADg4AAA4OAAAODgAAOJgAAAcAAAAH +AAAACwAAAAsAAAALAAAASJgAAG3aGABt2hgAdcoYAHXKGAB1yhgAUJgAAOC06A3gtOgN +4LToDeC06A3gtOgNWJgAAC4NgH4uDYB+Lg3ofi4N6H4uDYB+XJgAAF5mNzFeZjcxXmY3 +MV5mNzFeZjcxbJgAAIGwDAWBsAwFgbAMBYGwDAWBsAwFFJkAANAHAADQBwAATAQAAJgI +AADQBwAARJkAACAQuPcgELj3EA249xAQuPcQELj3BKIAAAAAAAAAAAAACAAAAAgAAAAI +AAAACKIAAIhnvtaIZ77WiGc+0IhnPtCIZz7QDKIAAEABLGRAASxkYMFCZGDBQmRgwUJk +HKIAAAqAgxgKgIMYCoBzGAqAgxgKgIMYMBIAAAAAAAAImAAAAAAAACyYAAD+LwIAPJgA +AAABAgBMmAAAPGGEEjCZAACCSAAAQJkAAAQAAABYmQAA/wAAAHSZAAAAAAAAKKIAALUB +AAA8ogAAr4nIEwSbAAABAAAACJsAAAIAAAAMmwAAAwAAABCbAAAEAAAAFJsAAAUAAAAY +mwAACAAAABybAAAJAAAAIJsAAAoAAAAkmwAACwAAACybAAANAAAAMJsAABAAAAA0mwAA +EQAAADybAAATAAAAQJsAABQAAABEmwAAFQAAAEibAAAYAAAATJsAABkAAABQmwAAGgAA +AFSbAAAbAAAAWJsAABwAAABcmwAAHQAAAGCbAAAgAAAAaJsAACIAAABsmwAAIwAAAHCb +AAAkAAAAdJsAACUAAAB4mwAAKAAAAHybAAApAAAAgJsAACoAAACEmwAAKwAAAIibAAAs +AAAAkJsAADAAAACUmwAAMQAAAJibAAAyAAAAoJsAADQAAACkmwAANQAAAKibAAA1AAAA +rJsAADUAAACwmwAANQAAALSbAAA1AAAAuJsAADUAAAC8mwAANQAAAMCbAAA1AAAAxJsA +ADUAAADImwAANQAAAMybAAA1AAAA0JsAADUAAADUmwAANQAAANibAAA1AAAA3JsAADUA +AADgmwAANQAAAOSbAAA1AAAA6JsAADUAAADsmwAANQAAAPCbAAA1AAAA9JsAADUAAAD4 +mwAAEAAAAPybAAAaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJoAAAcAAAAHAAAA +BJoAAEcAAABHAAAACJoAAIcAAACHAAAADJoAAKABAACgAQAAEJoAAOABAADgAQAAFJoA +ACAAAAAgAAAAGJoAAGAAAABgAAAAHJoAAKEBAAChAQAAIJoAAOEBAADhAQAAJJoAACEA +AAAhAAAAKJoAAGEAAABhAAAALJoAAGIBAABiAQAAMJoAAKIBAACiAQAANJoAAOIBAADi +AQAAOJoAACIAAAAiAAAAPJoAAGIAAABiAAAAQJoAAGMBAABjAQAARJoAAKMBAACjAQAA +SJoAAOMBAADjAQAATJoAACMAAAAjAAAAUJoAAGMAAABjAAAAVJoAAIQBAACEAQAAWJoA +AMQBAADEAQAAXJoAAAQAAAAEAAAAYJoAAOoBAAALAAAAZJoAACoAAABLAAAAaJoAAGoA +AACLAAAAbJoAAKoAAACsAQAAcJoAAKsBAADsAQAAdJoAAOsBAAAsAAAAeJoAACsAAAAS +AAAAfJoAAGsAAABSAAAAgJoAAKsAAACSAAAAhJoAAKwBAACTAQAAiJoAAOwBAADTAQAA +jJoAACwAAAATAAAAkJoAADoAAABTAAAAlJoAAHoAAACTAAAAmJoAALoAAACUAQAAnJoA +ALsBAADUAQAAoJoAAPsBAAAUAAAApJoAADsAAAA6AAAAqJoAAHsAAAB6AAAArJoAALsA +AAC6AAAAsJoAALwBAAC7AQAAtJoAAPwBAAD7AQAAuJoAADwAAAA7AAAAvJoAAHwAAAB7 +AAAAwJoAALwAAAC7AAAAxJoAAPwAAAC8AQAAyJoAAPwAAAD8AQAAzJoAAPwAAAA8AAAA +0JoAAPwAAAB8AAAA1JoAAPwAAAC8AAAA2JoAAPwAAAD8AAAA3JoAAPwAAAD8AAAA4JoA +APwAAAD8AAAA5JoAAPwAAAD8AAAA6JoAAPwAAAD8AAAA7JoAAPwAAAD8AAAA8JoAAPwA +AAD8AAAA9JoAAPwAAAD8AAAA+JoAAPwAAAD8AAAA/JoAAPwAAAD8AAAA1JgAACAAAAAA +AAAAAAAAANCYAAAIBAYDCAQHAwgEBgMIBAYDCAQHAwAAAAAAAAAA3JgAAMAgoADAIKAA +wCDgAMAg4ADAIOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnJgAAAAAAA8AAAAPAAAA +DwAAAA8AAAAPnJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnJgAAAAAgAAAAIAAAACAAAAA +gAAAAIAAnJgAAAAAKgAAACoAAAAqAAAAKgAAACoAnJgAAAAAAQAAAAEAAAABAAAAAQAA +AAEAnJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnJgAAAAAGAAAABgAAAAYAAAAGAAAABgA +nJgAAAAAYAAAAGAAAABuAAAAbgAAAG4AnJgAAAAAxwAAAMcAAADHAAAAxwAAAMcAnJgA +AAAASwAAAEsAAABLAAAASwAAAEsAnJgAAAAASAQAAEgEAABIBAAASAQAAEgEnJgAAAAA +TAAAAEwAAABMAAAATAAAAEwAnJgAAAAA5AAAAOQAAADkAAAA5AAAAOQAnJgAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAnJgAAAAA/AAAAPwAAAD8AAAA/AAAAPwAnJgAAAAA/wAAAP8A +AAD/AAAA/wAAAP8AnJgAAAAAPwQAAD8EAAA/BAAAPwQAAD8EnJgAAAAADAAAAAwAAAAM +AAAADAAAAAwAnJgAAAAAGQIAABkCAAAZAgAAGQIAABkCnJgAAAAAJAAAACQAAAAkAAAA +JAAAACQAnJgAAAAAtAAAALQAAAC0AAAAtAAAALQAnJgAAAAAmQAAAJkAAACZAAAAmQAA +AJkAnJgAAAAAUAAAAFAAAABQAAAAUAAAAFAAnJgAAAAAKgAAACoAAAAqAAAAKgAAACoA +nJgAAAAAEgAAABIAAAASAAAAEgAAABIAnJgAAAAAMsAAADLAAAAywAAAMsAAADLAnJgA +AAAAdAEAAHQBAAB0AQAAdAEAAHQBnJgAAAAAEQAAABEAAAARAAAAEQAAABEAnJgAAAAA +KIYAACiGAAAohgAAKIYAACiGnJgAAAAAhDEAAIQxAACEMQAAhDEAAIQxnJgAAIAA8gCA +APIAgADyAIAA8gCAAPIAnJgAABkAJwAZACcAGQAnABkAJwAZACcAnJgAAAMAAAADAAAA +AwAAAAMAAAADAAAAnJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnJgAALIAAACyAAAAsgAA +ALIAAACyAAAAnJgAAIQgsACEILAAhCCwAIQgsACEILAAnJgAAKQlQQCkJUEApCVBAKQl +QQCkJUEAnJgAACCSEQAgkhEAIJIRACCSEQAgkhEAnJgAAABIGgAASBoAAEgaAABIGgAA +SBoA2JgAADACCwAwAgsAMAILADACCwAwAgsAnJgAAJQAAACUAAAAlAAAAJQAAACUAAAA +nJgAAJEAAACRAAAAkQAAAJEAAACRAAAAnJgAABIAAAASAAAAEgAAABIAAAASAAAAnJgA +AIAAAACAAAAAgAAAAIAAAACAAAAAnJgAANkAAADZAAAA2QAAANkAAADZAAAAnJgAAGAA +AABgAAAAYAAAAGAAAABgAAAAnJgAAPAAAADwAAAA8AAAAPAAAADwAAAAnJgAAKIAAACi +AAAAogAAAKIAAACiAAAAnJgAAFIAAABSAAAAUgAAAFIAAABSAAAAnJgAANQAAADUAAAA +1AAAANQAAADUAAAAnJgAAMwUAADMFAAAzBQAAMwUAADMFAAAnJgAAIwEAACMBAAAjAQA +AIwEAACMBAAAxJgAAAMAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAMAAAABUAAAAVAAAAFQAAABUAAAAVAAAAHIAAAKeTjRLPE4gJlRPgBKsT4BLPE4gJ +KJgAAAEAAgoBAAIKAAACBQEAAgoBAAIKNJgAAAAOAAAADgAAAA4AAAAOAAAADgAAOJgA +AAIAAAACAAAACgAAAAoAAAAKAAAASJgAAG3aGABt2hgAZGoaAGRqGgBkahoAUJgAAOC0 +6A3gtOgN2rDoDdqwmAzasOgNWJgAAC4NgH4uDYB+Lg3ofi4NyH4uDYB+XJgAAF5mNzFe +ZjcxXmY3MV5gOTFeZjcxbJgAAIGwDAWBsAwFgbAMBYGwDAWBsAwFFJkAANAHAADQBwAA +TAQAAJgIAADQBwAARJkAAAAQuPcAELj3AA249wAQuPcAELj3BKIAAAAAAAAAAAAAAAAA +AAAAAAAAAAAACKIAAIhnvtaIZ77WiGc+0IhnPtCIZz7QDKIAAEABLABAASwAQMFCAEDB +QgBAwUIAHKIAAAqAgxgKgIMYCoBjGAqAgxgKgIMYMBIAAOADAABggAAADwAAABiBAAAA +AAAAHIEAAAAAAAAggQAAAAAAACSBAAAAAAAAKIEAAAAAAAAsgQAAAAAAADCBAAAAAAAA +NIEAAAAAAAA4gQAAAAAAADyBAAAAAAAAQIEAAKgAAIBEgQAAAAAAAAiYAAAAAAAALJgA +AACgAAA8mAAAAAQgAEyYAAA8I4QScJgAAB8AAAB0mAAAgAAAAHiYAAAOAAAAWJkAAP8A +AACAmQAAAAAAAISZAAAAAIACoJkAAAAAAADgmQAAAAAAAOSZAACqqqqq6JkAAHhkRjzs +mQAAqgAAAPCZAAAMAAAA9JkAAP8AAAD4mQAAFAAAACiiAAC1CQAAPKIAAK+JyJNMogAA +AQAAAFCiAAAAoAAAVKIAAAAAAABYogAAgFPHDFyiAAABDw8PYKIAAAEPaV9kogAAEYpB +AGiiAAAAAAAAbKIAAGrBMAxwogAAIAiCAHSiAACqfBsAeKIAAM455xx8ogAAzgEXBQCj +AAAAAAEYBKMAAAImAzAIowAABj4HSAyjAAAKTAtWEKMAAA9gGmQUowAAG25PeBijAABa +fI+GHKMAAFuGz44gowAAD5dPnSSjAACPoc+lKKMAAB+vX7UsowAAn7nfvTCjAAA/x3/N +NKMAAL/R/9U4owAAAAAAADyjAAAAAAAAQKMAAAAAAABEowAAAAAAAEijAAD///8/TKMA +AP///z9QowAA////P1SjAAD//wMAWKMAAB+qqHlcowAAD0JsBmCjAAAHIigPZKMAAIUW +YBdoowAABBGAH2yjAAADDKA3cKMAAIMIxD90owAAAwjAV3ijAACCBthffKMAAIIE4H+A +owAAuns8f4SjAADwfzDzBJsAAAEAAAAImwAAAgAAAAybAAADAAAAEJsAAAQAAAAUmwAA +BQAAABibAAAIAAAAHJsAAAkAAAAgmwAACgAAACSbAAALAAAALJsAAA0AAAAwmwAAEAAA +ADSbAAARAAAAPJsAABMAAABAmwAAFAAAAESbAAAVAAAASJsAABgAAABMmwAAGQAAAFCb +AAAaAAAAVJsAABsAAABYmwAAHAAAAFybAAAdAAAAYJsAACAAAABomwAAIgAAAGybAAAj +AAAAcJsAACQAAAB0mwAAJQAAAHibAAAoAAAAfJsAACkAAACAmwAAKgAAAISbAAArAAAA +iJsAACwAAACQmwAAMAAAAJSbAAAxAAAAmJsAADIAAACgmwAANAAAAKSbAAA1AAAAqJsA +ADUAAACsmwAANQAAALCbAAA1AAAAtJsAADUAAAC4mwAANQAAALybAAA1AAAAwJsAADUA +AADEmwAANQAAAMibAAA1AAAAzJsAADUAAADQmwAANQAAANSbAAA1AAAA2JsAADUAAADc +mwAANQAAAOCbAAA1AAAA5JsAADUAAADomwAANQAAAOybAAA1AAAA8JsAADUAAAD0mwAA +NQAAAPibAAAQAAAA/JsAABoAAAAAAAAAAAAAAACaAAAAAAAAAAAAAASaAAAAAAAAQAAA +AAiaAAAAAAAAgAAAAAyaAAAAAAAAgQEAABCaAAAAAAAAwQEAABSaAAAAAAAAAQAAABia +AAAAAAAAQQAAAByaAAAAAAAAgQAAACCaAAAAAAAAaAEAACSaAAAAAAAAqAEAACiaAAAA +AAAA6AEAACyaAAAAAAAAKAAAADCaAAAAAAAAaAAAADSaAAAAAAAAiQEAADiaAAAAAAAA +yQEAADyaAAAAAAAACQAAAECaAAAAAAAASQAAAESaAAAAAAAAiQAAAEiaAAAAAAAAkAEA +AEyaAAAAAAAA0AEAAFCaAAAAAAAAEAAAAFSaAAAAAAAAUAAAAFiaAAAAAAAAkAAAAFya +AAAAAAAAkQEAAGCaAAAAAAAA0QEAAGSaAAAAAAAAEQAAAGiaAAAAAAAAUQAAAGyaAAAA +AAAAkQAAAHCaAAAAAAAAeAEAAHSaAAAAAAAAuAEAAHiaAAAAAAAA+AEAAHyaAAAAAAAA +OAAAAICaAAAAAAAAeAAAAISaAAAAAAAAmQEAAIiaAAAAAAAA2QEAAIyaAAAAAAAAGQAA +AJCaAAAAAAAAWQAAAJSaAAAAAAAAmQAAAJiaAAAAAAAA2QAAAJyaAAAAAAAA+QAAAKCa +AAAAAAAA+QAAAKSaAAAAAAAA+QAAAKiaAAAAAAAA+QAAAKyaAAAAAAAA+QAAALCaAAAA +AAAA+QAAALSaAAAAAAAA+QAAALiaAAAAAAAA+QAAALyaAAAAAAAA+QAAAMCaAAAAAAAA ++QAAAMSaAAAAAAAA+QAAAMiaAAAAAAAA+QAAAMyaAAAAAAAA+QAAANCaAAAAAAAA+QAA +ANSaAAAAAAAA+QAAANiaAAAAAAAA+QAAANyaAAAAAAAA+QAAAOCaAAAAAAAA+QAAAOSa +AAAAAAAA+QAAAOiaAAAAAAAA+QAAAOyaAAAAAAAA+QAAAPCaAAAAAAAA+QAAAPSaAAAA +AAAA+QAAAPiaAAAAAAAA+QAAAPyaAAAAAAAA+QAAANSYAAAgAAAAAAAAAAAAAADQmAAA +CBQAAggUAQIIFAACCBQAAggUAQIAAAAAAAAAANyYAADAIKAAwCCgAMAg4ADAIOAAwCDg +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyYAAAAAADwAAAA8AAAAPAAAADwAAAA8JyY +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyYAAAAAAADAAAAAwAAAAMAAAADAAAAA5yYAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAJyYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyYAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAJyYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyYAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAJyYAAAAAEBAAABAQAAAQEAAAEBAAABAQJyYAAAAAAVlAAAFZQAA +BWUAAAVlAAAFZZyYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyYAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAJyYAAAAAEIAAABCAAAAQgAAAEIAAABCAJyYAAAAALUAAAC1AAAAtQAAALUA +AAC1AJyYAAAAAAMAAAADAAAAAwAAAAMAAAADAJyYAAAAAPcAAAD3AAAA9wAAAPcAAAD3 +AJyYAAAAAJ0AAACdAAAAnQAAAJ0AAACdAJyYAAAAACIAAAAiAAAAIgAAACIAAAAiAJyY +AAAAACIEAAAiBAAAIgQAACIEAAAiBJyYAAAYACMAGAAjABgAIwAYACMAGAAjAJyYAAAA +ACgAAAAoAGAAKABgACgAYAAoAJyYAADAAFAAwABQAMMAUADDAFAAwwBQAJyYAAB/AAQA +fwAEAH8ABAB/AAQAfwAEAJyYAABYBAAAWAQAAFgEAABYBAAAWAQAAJyYAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAJyYAAAAwAAAAMAAAADAAAAAwAAAAMAAANiYAAAwAkAAMAJAADAC +QAAwAkAAMAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyYAAAAZAAAAGQAAABkAAAA +ZAAAAGQAAJyYAAAACAAAAAgAAAAIAAAACAAAAAgAAMyYAAAOAAAADgAAAA4AAAAOAAAA +DgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAFQAAABUA +AAAVAAAAFQAAABUAAAAcgAAAp5ONEs8TiAmVE+AEqxPgEs8TiAkomAAAAQACCgEAAgoA +AQIFAQACCgEAAgo0mAAADg4AAA4OAAAODgAADg4AAA4OAAA4mAAABwAAAAcAAAALAAAA +CwAAAAsAAABImAAAYfoYAGH6GABjGhoAYxoaAGMaGgBQmAAA4LSYDOC0mAzasJgM2rCY +DNqwmAxYmAAALg3Ifi4NyH4uDch+Lg3Ifi4NyH5cmAAAXmA5MV5gOTFeYDkxXmA5MV5g +OTFsmAAAgbAMBYGwDAWBsAwFgbAMBYGwDAUUmQAA0AcAANAHAABMBAAAmAgAANAHAABE +mQAAABC49wAQuPcADbj3ABC49wAQuPcEogAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIogAA +iGe+1ohnvtaIZz7QiGc+0IhnPtAMogAA4MEuAODBLgAgwSoAIMEqACDBKgAcogAACoCD +GAqAgxgKgGMYCoCDGAqAgxgAowAAAAABGAAAARgAAAEYAAABGAAAARgEowAAAiYDMAIm +AzACJgMwAiYDMAImAzAIowAABj4HSAY+B0gGPgdIBj4HSAY+B0gMowAACkwLVgpMC1YK +TAtWCkwLVgpMC1YQowAAD2AaZA9gGmQPYBpkD2AaZA9gGmQUowAAG25PeBtuT3gbbk94 +G25PeBtuT3gYowAAWnyPhlp8j4ZafI+GWnyPhlp8j4YcowAAW4bPkFuGz5Bbhs+OW4bP +jluGz44gowAAD5dPnQ+XT50Pl0+bD5dPmw+XT5skowAAj6PPp4+jz6ePn8+jj5/Po4+f +z6MoowAAH69ftR+vX7Ufr1+zH69fsx+vX7MsowAAn7nfvZ+5372fud+7n7nfu5+537sw +owAAP8V/yz/Ff8s/x3/LP8d/yz/Hf8s0owAAv9H/1b/R/9W/0f/Tv9H/07/R/9MAAAAA +AAAAAAAAAAAAAAAAMBIAAOADAABoQAAAEAAAAGCAAAAPAAAAnIAAAAAAAACggAAAAAAA +ABiBAAAAAAAAHIEAAAAAAAAggQAAAAAAACSBAAAAAAAAKIEAAAAAAAAsgQAAAAAAADCB +AAAAAAAANIEAAAAAAAA4gQAAAAAAADyBAAAAAAAAQIEAAPkDAIBEgQAAAAAAAAiYAAAA +AAAALJgAAACgAAA8mAAAAAQgAEyYAAA8I4QScJgAAB8AAAB0mAAAgAAAAHiYAAAOAAAA +WJkAAP8fCACAmQAAAAAAAISZAAAAAIACoJkAAAAAAADgmQAAAAAAAOSZAACqqqqq6JkA +AHhkRjzsmQAAqgAAAPCZAAAMAAAA9JkAAP8AAAD4mQAAFAAAACiiAAC1CQAAPKIAAK+J +yJNMogAAAQAAAFCiAAAAoAAAVKIAAAAAAABYogAAgFPHDFyiAAABDw8PYKIAAAEPaV9k +ogAAEYpBAGiiAAAAAAAAbKIAAGrBMAxwogAAIAiCAHSiAACqfBsIeKIAAM455xx8ogAA +zgEXBTijAAAAAAAAPKMAAAAAAABAowAAAAAAAESjAAAAAAAASKMAAP///z9MowAA//// +P1CjAAD///8/VKMAAP//AwBYowAAH6qoeVyjAAAPQmwGYKMAAAciKA9kowAAhRZgF2ij +AAAEEYAfbKMAAAMMoDdwowAAgwjEP3SjAAADCMBXeKMAAIIG2F98owAAggTgf4CjAAC6 +ezx/hKMAAPB/MPMEmwAAAQAAAAibAAACAAAADJsAAAMAAAAQmwAABAAAABSbAAAFAAAA GJsAAAgAAAAcmwAACQAAACCbAAAKAAAAJJsAAAsAAAAsmwAADQAAADCbAAAQAAAANJsA ABEAAAA8mwAAEwAAAECbAAAUAAAARJsAABUAAABImwAAGAAAAEybAAAZAAAAUJsAABoA AABUmwAAGwAAAFibAAAcAAAAXJsAAB0AAABgmwAAIAAAAGibAAAiAAAAbJsAACMAAABw @@ -2400,1838 +2904,2297 @@ LAAAAJCbAAAwAAAAlJsAADEAAACYmwAAMgAAAKCbAAA0AAAApJsAADUAAAComwAANQAA AKybAAA1AAAAsJsAADUAAAC0mwAANQAAALibAAA1AAAAvJsAADUAAADAmwAANQAAAMSb AAA1AAAAyJsAADUAAADMmwAANQAAANCbAAA1AAAA1JsAADUAAADYmwAANQAAANybAAA1 AAAA4JsAADUAAADkmwAANQAAAOibAAA1AAAA7JsAADUAAADwmwAANQAAAPSbAAA1AAAA -+JsAABAAAAD8mwAAGgAAAAAAAAAAAAAAAJoAAAcAAAAHAAAABJoAAEcAAABHAAAACJoA -AIcAAACHAAAADJoAAKABAACgAQAAEJoAAOABAADgAQAAFJoAACAAAAAgAAAAGJoAAGAA -AABgAAAAHJoAAKEBAAChAQAAIJoAAOEBAADhAQAAJJoAACEAAAAhAAAAKJoAAGEAAABh -AAAALJoAAGIBAABiAQAAMJoAAKIBAACiAQAANJoAAOIBAADiAQAAOJoAACIAAAAiAAAA -PJoAAGIAAABiAAAAQJoAAGMBAABjAQAARJoAAKMBAACjAQAASJoAAOMBAADjAQAATJoA -ACMAAAAjAAAAUJoAAGMAAABjAAAAVJoAAIQBAACEAQAAWJoAAMQBAADEAQAAXJoAAAQA -AAAEAAAAYJoAAOoBAAALAAAAZJoAACoAAABLAAAAaJoAAGoAAACLAAAAbJoAAKoAAACs -AQAAcJoAAKsBAADsAQAAdJoAAOsBAAAsAAAAeJoAACsAAAASAAAAfJoAAGsAAABSAAAA -gJoAAKsAAACSAAAAhJoAAKwBAACTAQAAiJoAAOwBAADTAQAAjJoAACwAAAATAAAAkJoA -ADoAAABTAAAAlJoAAHoAAACTAAAAmJoAALoAAACUAQAAnJoAALsBAADUAQAAoJoAAPsB -AAAUAAAApJoAADsAAAA6AAAAqJoAAHsAAAB6AAAArJoAALsAAAC6AAAAsJoAALwBAAC7 -AQAAtJoAAPwBAAD7AQAAuJoAADwAAAA7AAAAvJoAAHwAAAB7AAAAwJoAALwAAAC7AAAA -xJoAAPwAAAC8AQAAyJoAAPwAAAD8AQAAzJoAAPwAAAA8AAAA0JoAAPwAAAB8AAAA1JoA -APwAAAC8AAAA2JoAAPwAAAD8AAAA3JoAAPwAAAD8AAAA4JoAAPwAAAD8AAAA5JoAAPwA -AAD8AAAA6JoAAPwAAAD8AAAA7JoAAPwAAAD8AAAA8JoAAPwAAAD8AAAA9JoAAPwAAAD8 -AAAA+JoAAPwAAAD8AAAA/JoAAPwAAAD8AAAA1JgAACAAAAAAAAAAAAAAANCYAAAIBAYD -CAQHAwgEBgMIBAYDCAQHAwAAAAAAAAAA3JgAAMDAoADAwKAAwMDgAMDA4ADAwOAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAnJgAAAAAAA8AAAAPAAAADwAAAA8AAAAPnJgAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAnJgAAAAAgAAAAIAAAACAAAAAgAAAAIAAnJgAAAAAKgAA -ACoAAAAqAAAAKgAAACoAnJgAAAAAAQAAAAEAAAABAAAAAQAAAAEAnJgAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAnJgAAAAAGAAAABgAAAAYAAAAGAAAABgAnJgAAAAAYAAAAGAAAABu -AAAAbgAAAG4AnJgAAAAAxwAAAMcAAADHAAAAxwAAAMcAnJgAAAAASwAAAEsAAABLAAAA -SwAAAEsAnJgAAAAASAQAAEgEAABIBAAASAQAAEgEnJgAAAAATAAAAEwAAABMAAAATAAA -AEwAnJgAAAAA5AAAAOQAAADkAAAA5AAAAOQAnJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -nJgAAAAA/AAAAPwAAAD8AAAA/AAAAPwAnJgAAAAA/wAAAP8AAAD/AAAA/wAAAP8AnJgA -AAAAPwQAAD8EAAA/BAAAPwQAAD8EnJgAAAAADAAAAAwAAAAMAAAADAAAAAwAnJgAAAAA -GQIAABkCAAAZAgAAGQIAABkCnJgAAAAAJAAAACQAAAAkAAAAJAAAACQAnJgAAAAAtAAA -ALQAAAC0AAAAtAAAALQAnJgAAAAAmQAAAJkAAACZAAAAmQAAAJkAnJgAAAAAUAAAAFAA -AABQAAAAUAAAAFAAnJgAAAAAKgAAACoAAAAqAAAAKgAAACoAnJgAAAAAEgAAABIAAAAS -AAAAEgAAABIAnJgAAAAAMsAAADLAAAAywAAAMsAAADLAnJgAAAAAdAEAAHQBAAB0AQAA -dAEAAHQBnJgAAAAAEQAAABEAAAARAAAAEQAAABEAnJgAAAAAKIYAACiGAAAohgAAKIYA -ACiGnJgAAAAAhDEAAIQxAACEMQAAhDEAAIQxnJgAAIAA8gCAAPIAgADyAIAA8gCAAPIA -nJgAABkAJwAZACcAGQAnABkAJwAZACcAnJgAAAMAAAADAAAAAwAAAAMAAAADAAAAnJgA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAnJgAALIAAACyAAAAsgAAALIAAACyAAAAnJgAAIQg -sACEILAAhCCwAIQgsACEILAAnJgAAKQlQQCkJUEApCVBAKQlQQCkJUEAnJgAACCSEQAg -khEAIJIRACCSEQAgkhEAnJgAAABIGgAASBoAAEgaAABIGgAASBoA2JgAADACCwAwAgsA -MAILADACCwAwAgsAnJgAAJQAAACUAAAAlAAAAJQAAACUAAAAnJgAAJEAAACRAAAAkQAA -AJEAAACRAAAAnJgAABIAAAASAAAAEgAAABIAAAASAAAAnJgAAIAAAACAAAAAgAAAAIAA -AACAAAAAnJgAANkAAADZAAAA2QAAANkAAADZAAAAnJgAAGAAAABgAAAAYAAAAGAAAABg -AAAAnJgAAPAAAADwAAAA8AAAAPAAAADwAAAAnJgAAKIAAACiAAAAogAAAKIAAACiAAAA -nJgAAFIAAABSAAAAUgAAAFIAAABSAAAAnJgAANQAAADUAAAA1AAAANQAAADUAAAAnJgA -AMwUAADMFAAAzBQAAMwUAADMFAAAnJgAAIwEAACMBAAAjAQAAIwEAACMBAAAxJgAAAMA -AAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAABUAAAAVAAAA -FQAAABUAAAAVAAAAHIAAAKeTjRLPE4gJlRPgBKsT4BLPE4gJKJgAAAEAAgoBAAIKAAAC -BQEAAgoBAAIKNJgAAAAOAAAADgAAAA4AAAAOAAAADgAAOJgAAAIAAAACAAAACgAAAAoA -AAAKAAAASJgAAG3aGABt2hgAZGoaAGRqGgBkahoAUJgAAOC06A3gtOgN2rDoDdqwmAza -sOgNWJgAAC4NgH4uDYB+Lg3ofi4NyH4uDYB+XJgAAF5mNzFeZjcxXmY3MV5gOTFeZjcx -bJgAAIGwDAWBsAwFgbAMBYGwDAWBsAwFFJkAANAHAADQBwAATAQAAJgIAADQBwAARJkA -AAAQuPcAELj3AA249wAQuPcAELj3BKIAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKIAAIhn -vtaIZ77WiGc+0IhnPtCIZz7QDKIAAEABLABAASwAQMFCAEDBQgBAwUIAHKIAAAqAgxgK -gIMYCoBjGAqAgxgKgIMYMBIAAOADAABggAAADwAAABiBAAAAAAAAHIEAAAAAAAAggQAA -AAAAACSBAAAAAAAAKIEAAAAAAAAsgQAAAAAAADCBAAAAAAAANIEAAAAAAAA4gQAAAAAA -ADyBAAAAAAAAQIEAAKgAAIBEgQAAAAAAACyYAAAAoAAAPJgAAAAEIABMmAAAPCOEEnCY -AAAfAAAAdJgAAIAAAAB4mAAADgAAAICZAAAAAAAAhJkAAAAAgAKgmQAAAAAAAOCZAAAA -AAAA5JkAAKqqqqromQAAeGRGPOyZAACqAAAA8JkAAAwAAAD0mQAA/wAAAPiZAAAUAAAA -KKIAALUJAAA8ogAAr4nIk0yiAAABAAAAUKIAAACgAABUogAAAAAAAFiiAACAU8cMXKIA -AAEPDw9gogAAAQ9pX2SiAAARikEAaKIAAAAAAABsogAAasEwDHCiAAAgCIIAdKIAAKp8 -GwB4ogAAzjnnHHyiAADOARcFAKMAAAAAARgEowAAAiYDMAijAAAGPgdIDKMAAApMC1YQ -owAAD2AaZBSjAAAbbk94GKMAAFp8j4YcowAAW4bPjiCjAAAPl0+dJKMAAI+hz6UoowAA -H69ftSyjAACfud+9MKMAAD/Hf800owAAv9H/1TijAAAAAAAAPKMAAAAAAABAowAAAAAA -AESjAAAAAAAASKMAAP///z9MowAA////P1CjAAD///8/VKMAAP//AwBYowAAH6qoeVyj -AAAPQmwGYKMAAAciKA9kowAAhRZgF2ijAAAEEYAfbKMAAAMMoDdwowAAgwjEP3SjAAAD -CMBXeKMAAIIG2F98owAAggTgf4CjAAC6ezx/hKMAAPB/MPMEmwAAAQAAAAibAAACAAAA -DJsAAAMAAAAQmwAABAAAABSbAAAFAAAAGJsAAAgAAAAcmwAACQAAACCbAAAKAAAAJJsA -AAsAAAAsmwAADQAAADCbAAAQAAAANJsAABEAAAA8mwAAEwAAAECbAAAUAAAARJsAABUA -AABImwAAGAAAAEybAAAZAAAAUJsAABoAAABUmwAAGwAAAFibAAAcAAAAXJsAAB0AAABg -mwAAIAAAAGibAAAiAAAAbJsAACMAAABwmwAAJAAAAHSbAAAlAAAAeJsAACgAAAB8mwAA -KQAAAICbAAAqAAAAhJsAACsAAACImwAALAAAAJCbAAAwAAAAlJsAADEAAACYmwAAMgAA -AKCbAAA0AAAApJsAADUAAAComwAANQAAAKybAAA1AAAAsJsAADUAAAC0mwAANQAAALib -AAA1AAAAvJsAADUAAADAmwAANQAAAMSbAAA1AAAAyJsAADUAAADMmwAANQAAANCbAAA1 -AAAA1JsAADUAAADYmwAANQAAANybAAA1AAAA4JsAADUAAADkmwAANQAAAOibAAA1AAAA -7JsAADUAAADwmwAANQAAAPSbAAA1AAAA+JsAABAAAAD8mwAAGgAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAACaAAAAAAAAAAAAAASaAAAAAAAAQAAAAAiaAAAAAAAAgAAAAAya -AAAAAAAAgQEAABCaAAAAAAAAwQEAABSaAAAAAAAAAQAAABiaAAAAAAAAQQAAAByaAAAA -AAAAgQAAACCaAAAAAAAAaAEAACSaAAAAAAAAqAEAACiaAAAAAAAA6AEAACyaAAAAAAAA -KAAAADCaAAAAAAAAaAAAADSaAAAAAAAAiQEAADiaAAAAAAAAyQEAADyaAAAAAAAACQAA -AECaAAAAAAAASQAAAESaAAAAAAAAiQAAAEiaAAAAAAAAkAEAAEyaAAAAAAAA0AEAAFCa -AAAAAAAAEAAAAFSaAAAAAAAAUAAAAFiaAAAAAAAAkAAAAFyaAAAAAAAAkQEAAGCaAAAA -AAAA0QEAAGSaAAAAAAAAEQAAAGiaAAAAAAAAUQAAAGyaAAAAAAAAkQAAAHCaAAAAAAAA -eAEAAHSaAAAAAAAAuAEAAHiaAAAAAAAA+AEAAHyaAAAAAAAAOAAAAICaAAAAAAAAeAAA -AISaAAAAAAAAmQEAAIiaAAAAAAAA2QEAAIyaAAAAAAAAGQAAAJCaAAAAAAAAWQAAAJSa -AAAAAAAAmQAAAJiaAAAAAAAA2QAAAJyaAAAAAAAA+QAAAKCaAAAAAAAA+QAAAKSaAAAA -AAAA+QAAAKiaAAAAAAAA+QAAAKyaAAAAAAAA+QAAALCaAAAAAAAA+QAAALSaAAAAAAAA -+QAAALiaAAAAAAAA+QAAALyaAAAAAAAA+QAAAMCaAAAAAAAA+QAAAMSaAAAAAAAA+QAA -AMiaAAAAAAAA+QAAAMyaAAAAAAAA+QAAANCaAAAAAAAA+QAAANSaAAAAAAAA+QAAANia -AAAAAAAA+QAAANyaAAAAAAAA+QAAAOCaAAAAAAAA+QAAAOSaAAAAAAAA+QAAAOiaAAAA -AAAA+QAAAOyaAAAAAAAA+QAAAPCaAAAAAAAA+QAAAPSaAAAAAAAA+QAAAPiaAAAAAAAA -+QAAAPyaAAAAAAAA+QAAANSYAAAgAAAAAAAAAAAAAADQmAAACBQAAggUAQIIFAACCBQA -AggUAQIAAAAAAAAAANyYAADAIKAAwCCgAMAg4ADAIOAAwCDgAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAJyYAAAAAADwAAAA8AAAAPAAAADwAAAA8JyYAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAJyYAAAAAAADAAAAAwAAAAMAAAADAAAAA5yYAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAJyYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyYAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AJyYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyY -AAAAAEBAAABAQAAAQEAAAEBAAABAQJyYAAAAAAVlAAAFZQAABWUAAAVlAAAFZZyYAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAJyYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyYAAAAAEIA -AABCAAAAQgAAAEIAAABCAJyYAAAAALUAAAC1AAAAtQAAALUAAAC1AJyYAAAAAAMAAAAD -AAAAAwAAAAMAAAADAJyYAAAAAPcAAAD3AAAA9wAAAPcAAAD3AJyYAAAAAJ0AAACdAAAA -nQAAAJ0AAACdAJyYAAAAACIAAAAiAAAAIgAAACIAAAAiAJyYAAAAACIEAAAiBAAAIgQA -ACIEAAAiBJyYAAAYACMAGAAjABgAIwAYACMAGAAjAJyYAAAAACgAAAAoAGAAKABgACgA -YAAoAJyYAADAAFAAwABQAMMAUADDAFAAwwBQAJyYAAB/AAQAfwAEAH8ABAB/AAQAfwAE -AJyYAABYBAAAWAQAAFgEAABYBAAAWAQAAJyYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyY -AAAAwAAAAMAAAADAAAAAwAAAAMAAANiYAAAwAkAAMAJAADACQAAwAkAAMAJAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAJyYAAAAZAAAAGQAAABkAAAAZAAAAGQAAJyYAAAACAAA -AAgAAAAIAAAACAAAAAgAAMyYAAAOAAAADgAAAA4AAAAOAAAADgAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AABBUjUyMTAAQVI1MjExAEFSNTIxMgBSRjUxMTEAUkY1MTEyAFJGMjQxMwBBdGhlcm9z -IDIzMTMgV2lTb0MAQXRoZXJvcyA1MjEyIChGUEdBKQBBdGhlcm9zIDUyMTEgKEZQR0Ep -AEF0aGVyb3MgNTIxMABBdGhlcm9zIDUyMTEAQXRoZXJvcyA1MzEyIFdpU29DAEF0aGVy -b3MgNTIxMgBEQgBERUJVRwBOQQBOT19DT1VOVFJZX1NFVABBTABBTEJBTklBAERaAEFM -R0VSSUEAQVIAQVJHRU5USU5BAEFNAEFSTUVOSUEAQVUAQVVTVFJBTElBAEFUAEFVU1RS -SUEAQVoAQVpFUkJBSUpBTgBCSABCQUhSQUlOAEJZAEJFTEFSVVMAQkUAQkVMR0lVTQBC -WgBCRUxJWkUAQk8AQk9MVklBAEJSAEJSQVpJTABCTgBCUlVORUkgREFSVVNTQUxBTQBC -RwBCVUxHQVJJQQBDQQBDQU5BREEAQ0wAQ0hJTEUAQ04AQ0hJTkEAQ08AQ09MT01CSUEA -Q1IAQ09TVEEgUklDQQBIUgBDUk9BVElBAENZAENZUFJVUwBDWgBDWkVDSCBSRVBVQkxJ -QwBESwBERU5NQVJLAERPAERPTUlOSUNBTiBSRVBVQkxJQwBFQwBFQ1VBRE9SAEVHAEVH -WVBUAFNWAEVMIFNBTFZBRE9SAEVFAEVTVE9OSUEARkkARklOTEFORABGUgBGUkFOQ0UA -RjIARlJBTkNFX1JFUwBHRQBHRU9SR0lBAERFAEdFUk1BTlkAR1IAR1JFRUNFAEdUAEdV -QVRFTUFMQQBITgBIT05EVVJBUwBISwBIT05HIEtPTkcASFUASFVOR0FSWQBJUwBJQ0VM -QU5EAElOAElORElBAElEAElORE9ORVNJQQBJUgBJUkFOAElFAElSRUxBTkQASUwASVNS -QUVMAElUAElUQUxZAEpQAEpBUEFOAEoxAEpBUEFOMQBKMgBKQVBBTjIASjMASkFQQU4z -AEo0AEpBUEFONABKNQBKQVBBTjUASk8ASk9SREFOAEtaAEtBWkFLSFNUQU4AS1AATk9S -VEggS09SRUEAS1IAS09SRUEgUkVQVUJMSUMASzIAS09SRUEgUkVQVUJMSUMyAEtXAEtV -V0FJVABMVgBMQVRWSUEATEIATEVCQU5PTgBMSQBMSUVDSFRFTlNURUlOAExUAExJVEhV -QU5JQQBMVQBMVVhFTUJPVVJHAE1PAE1BQ0FVAE1LAE1BQ0VET05JQQBNWQBNQUxBWVNJ -QQBNWABNRVhJQ08ATUMATU9OQUNPAE1BAE1PUk9DQ08ATkwATkVUSEVSTEFORFMATloA -TkVXIFpFQUxBTkQATk8ATk9SV0FZAE9NAE9NQU4AUEsAUEFLSVNUQU4AUEEAUEFOQU1B -AFBFAFBFUlUAUEgAUEhJTElQUElORVMAUEwAUE9MQU5EAFBUAFBPUlRVR0FMAFBSAFBV -RVJUTyBSSUNPAFFBAFFBVEFSAFJPAFJPTUFOSUEAUlUAUlVTU0lBAFNBAFNBVURJIEFS -QUJJQQBTRwBTSU5HQVBPUkUAU0sAU0xPVkFLIFJFUFVCTElDAFNJAFNMT1ZFTklBAFpB -AFNPVVRIIEFGUklDQQBFUwBTUEFJTgBTRQBTV0VERU4AQ0gAU1dJVFpFUkxBTkQAU1kA -U1lSSUEAVFcAVEFJV0FOAFRIAFRIQUlMQU5EAFRUAFRSSU5JREFEICYgVE9CQUdPAFRO -AFRVTklTSUEAVFIAVFVSS0VZAFVBAFVLUkFJTkUAQUUAVU5JVEVEIEFSQUIgRU1JUkFU -RVMAR0IAVU5JVEVEIEtJTkdET00AVVMAVU5JVEVEIFNUQVRFUwBVWQBVUlVHVUFZAFVa -AFVaQkVLSVNUQU4AVkUAVkVORVpVRUxBAFZOAFZJRVQgTkFNAFlFAFlFTUVOAFpXAFpJ -TUJBQldFAAAAAAAAAAAAAAAAACVzOiBwaHlDbnQxIDB4JXgsIHJlc2V0dGluZyBjb3Vu -dGVyIHZhbHVlIHRvIDB4JXgKAAAAAAAAAAAAAAAAAAAlczogcGh5Q250MiAweCV4LCBy -ZXNldHRpbmcgY291bnRlciB2YWx1ZSB0byAweCV4CgAAAAAAAAAAAAAAAAAAMC45LjE0 -LjkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJBOIExEAiBPsExEA -HhSCFA8AghTmFBIAXhVdFhQAXRbBFhQAwRbaFhcAAAAAAAAAjBSgFLQUyBQ8FFAUZBR4 -FAAAMhRGFFoUbhQAAGwJhQmeCYoJqAkAAGwJhQmeCYoJAABsCYUJngmKCQAAbAmFCZ4J -igkAAHEWhRaZFq0WwRYAAFoUghSqFAAAgBaoFgAAfBWQFaQVuBXMFeAV9BUIFhwWMBZE -FgAAAAAAAAAAAABxCXYJewmACY8JlAmZCaMJAAAAAAAAAAAAAAAAAAAAAHEJdgl7CYAJ -jwmUCZkJAABxCXYJewmACY8JlAmZCQAAcQl2CXsJgAmPCZQJmQkAALQJAACFCQAAPBRQ -FGQUeBQAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAA -AAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAE -AAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAACAAAA -AAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAA -AAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAA -AAAAAAAAIAAAAAAAAAAAAAAAAAAAADIURhRaFG4UAABaFIIUqhSAFqgWAAAAAAAAAAAA -AAAAfBWQFaQVuBXMFeAV9BUIFhwWMBZEFgAAAAAAAAAAAABgAAAAqAkAAAEAAACjCQAA -AQAAALQJAAABAAAAZwAAAKgJAAABAAAAowkAAAEAAAC0CQAAAQAAAGEAAACoCQAAAQAA -AKMJAAABAAAAtAkAAAEAAABlAAAAqAkAAAEAAACjCQAAAQAAALQJAAABAAAASgAAAKgJ -AAAAAAAAowkAAAAAAAC0CQAAAQAAAEsAAACoCQAAAQAAAKMJAAABAAAAtAkAAAEAAABq -AAAAqAkAAAEAAACjCQAAAQAAALQJAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECcBcLAIwAAAAA -AAECKCMPABIAAAAAAAEC4C4KAJgCAAAAAAECUEYOACQCAAAAAAECwF0JALAEAAAAAAEC -oIwNAEgEAAAAAAECgLsIAGAEAAAAAAEC8NIMAGwEAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA3AXCwCMAAAAAAABAygjDwASAAAA -AAABA+AuCgCYAgAAAAABA1BGDgAkAgAAAAABA8BdCQCwBAAAAAABA6CMDQBIBAAAAAAB -A4C7CABgBAAAAAABA/DSDABsBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAQJwFwsAjAAAAAAAAQIoIw8AEgAAAAAAAQLgLgoAmAIA -AAAAAQJQRg4AJAIAAAAAAQLAXQkAsAQAAAAAAQKgjA0ASAQAAAAAAQKAuwgAYAQAAAAA -AQLw0gwAbAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAEDcBcLAIwAAAAAAAEDKCMPABIAAAAAAAED4C4KAJgCAAAAAAEDUEYOACQC -AAAAAAEDwF0JALAEAAAAAAEDoIwNAEgEAAAAAAEDgLsIAGAEAAAAAAED8NIMAGwEAAAA ++JsAABAAAAD8mwAAGgAAAACaAAAAAAAAAAAAAASaAABAAAAAQAAAAAiaAACAAAAAgAAA +AAyaAAChAQAAYQEAABCaAADhAQAAoQEAABSaAAAhAAAA4QEAABiaAABhAAAAIQAAABya +AACIAQAAYQAAACCaAADIAQAAiAEAACSaAAAIAAAAyAEAACiaAABIAAAACAAAACyaAACI +AAAASAAAADCaAACpAQAAiAAAADSaAADpAQAAaQEAADiaAAApAAAAqQEAADyaAABpAAAA +6QEAAECaAADQAQAAKQAAAESaAAAQAAAAaQAAAEiaAABQAAAAkAEAAEyaAACQAAAA0AEA +AFCaAACxAQAAEAAAAFSaAADxAQAAUAAAAFiaAAAxAAAAkAAAAFyaAABxAAAAcQEAAGCa +AAC4AQAAsQEAAGSaAAD4AQAA8QEAAGiaAAA4AAAAMQAAAGyaAAB4AAAAcQAAAHCaAACZ +AQAAmAEAAHSaAADZAQAA2AEAAHiaAAAZAAAAGAAAAHyaAABZAAAAWAAAAICaAACZAAAA +mAAAAISaAADZAAAAeQEAAIiaAAD5AAAAuQEAAIyaAAD5AAAA+QEAAJCaAAD5AAAAOQAA +AJSaAAD5AAAAeQAAAJiaAAD5AAAAuQAAAJyaAAD5AAAA+QAAAKCaAAD5AAAA+QAAAKSa +AAD5AAAA+QAAAKiaAAD5AAAA+QAAAKyaAAD5AAAA+QAAALCaAAD5AAAA+QAAALSaAAD5 +AAAA+QAAALiaAAD5AAAA+QAAALyaAAD5AAAA+QAAAMCaAAD5AAAA+QAAAMSaAAD5AAAA ++QAAAMiaAAD5AAAA+QAAAMyaAAD5AAAA+QAAANCaAAD5AAAA+QAAANSaAAD5AAAA+QAA +ANiaAAD5AAAA+QAAANyaAAD5AAAA+QAAAOCaAAD5AAAA+QAAAOSaAAD5AAAA+QAAAOia +AAD5AAAA+QAAAOyaAAD5AAAA+QAAAPCaAAD5AAAA+QAAAPSaAAD5AAAA+QAAAPiaAAD5 +AAAA+QAAAPyaAAD5AAAA+QAAANSYAAAgAAAAAAAAAAAAAADQmAAACAAAAAgAAAAIAAAA +CAAAAAgAAAAAAAAAAAAAANyYAADAAKAAwACgAMAA4ADAAOAAwADgAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAJyYAAAAAAAzAAAAMwAAADMAAAAzAAAAM5yYAAAAAAABAAAAAQAA +AAEAAAABAAAAAZyYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyYAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAJyYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyYAAAAAAAfAAAAHwAAAB8AAAAf +AAAAH5yYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyYAAAAALgAAAC4AAAAuAAAALgAAAC4 +AJyYAAAAALcAAAC3AAAAtwAAALcAAAC3AJyYAAAAAIQAAACEAAAAhAAAAIQAAACEAJyY +AAAAAJgAAACYAAAAmAAAAJgAAACYAJyYAAAAAMAAAADAAAAAwAAAAMAAAADAAJyYAAAA +AP8AAAD/AAAA/wAAAP8AAAD/AJyYAAAAAP8AAAD/AAAA/wAAAP8AAAD/AJyYAAAAAP8A +AAD/AAAA/wAAAP8AAAD/AJyYAAAAAP8AAAD/AAAA/wAAAP8AAAD/AJyYAAAAANcAAADX +AAAA1wAAANcAAADXAJyYAAAAAGEAAABhAAAAYQAAAGEAAABhAJyYAAAAAP4AAAD+AAAA +/gAAAP4AAAD+AJyYAAAAAN4AAADeAAAA3gAAAN4AAADeAJyYAAAAAH8AAAB/AAAAfwAA +AH8AAAB/AJyYAAAAAD0EAAA9BAAAPQQAAD0EAAA9BJyYAAAAAHcAAAB3AAAAdwAAAHcA +AAB3AJyYAAAAAEQAAABEAAAARAAAAEQAAABEAJyYAAAAAJgAAACYAAAAmAAAAJgAAACY +AJyYAACAABAAgAAQAIAAEACAABAAgAAQAJyYAAA0wAUANMAFADTABQA0wAUANMAFAJyY +AADwADEA8AAxAPAAMQDwADEA8AAxAJyYAAAfAQwAHwEMAB8BDAAfAQwAHwEMAJyYAABA +AFEAQABRAEAAUQBAAFEAQABRAJyYAADaAFAA2gBQANoAUADaAFAA2gBQAJyYAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAJyYAABEQAAAREAAAERAAABEQAAAREAAAJyYAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAJyYAADAYAAAwGAAAMBgAADAYAAAwGAAAJyYAAAALAAAACwAAAA2 +AAAANgAAACwAAMiYAAADBAAAAwQAAAMEAAADBAAAAwQAAAAAAAAAAAAAnJgAAABkAAAA +ZAAAAGQAAABkAAAAZAAAnJgAAAAIAAAACAAAAAgAAAAIAAAACAAAzJgAAA4AAAAOAAAA +DgAAAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFSNTIxMABBUjUyMTEAQVI1MjEyAFJGNTEx +MQBSRjUxMTIAUkYyNDEzAFJGNTQxMwBBdGhlcm9zIDIzMTMgV2lTb0MAQXRoZXJvcyA1 +NDI0AEF0aGVyb3MgMjMxNyBXaVNvQwBBdGhlcm9zIDUyMTIgKEZQR0EpAEF0aGVyb3Mg +NTIxMSAoRlBHQSkAQXRoZXJvcyA1MjEwAEF0aGVyb3MgNTIxMQBBdGhlcm9zIDUzMTIg +V2lTb0MAQXRoZXJvcyAyMzE1IFdpU29DAEF0aGVyb3MgNTIxMgBEQgBERUJVRwBOQQBO +T19DT1VOVFJZX1NFVABBTABBTEJBTklBAERaAEFMR0VSSUEAQVIAQVJHRU5USU5BAEFN +AEFSTUVOSUEAQVUAQVVTVFJBTElBAEFUAEFVU1RSSUEAQVoAQVpFUkJBSUpBTgBCSABC +QUhSQUlOAEJZAEJFTEFSVVMAQkUAQkVMR0lVTQBCWgBCRUxJWkUAQk8AQk9MVklBAEJS +AEJSQVpJTABCTgBCUlVORUkgREFSVVNTQUxBTQBCRwBCVUxHQVJJQQBDQQBDQU5BREEA +Q0wAQ0hJTEUAQ04AQ0hJTkEAQ08AQ09MT01CSUEAQ1IAQ09TVEEgUklDQQBIUgBDUk9B +VElBAENZAENZUFJVUwBDWgBDWkVDSCBSRVBVQkxJQwBESwBERU5NQVJLAERPAERPTUlO +SUNBTiBSRVBVQkxJQwBFQwBFQ1VBRE9SAEVHAEVHWVBUAFNWAEVMIFNBTFZBRE9SAEVF +AEVTVE9OSUEARkkARklOTEFORABGUgBGUkFOQ0UARjIARlJBTkNFX1JFUwBHRQBHRU9S +R0lBAERFAEdFUk1BTlkAR1IAR1JFRUNFAEdUAEdVQVRFTUFMQQBITgBIT05EVVJBUwBI +SwBIT05HIEtPTkcASFUASFVOR0FSWQBJUwBJQ0VMQU5EAElOAElORElBAElEAElORE9O +RVNJQQBJUgBJUkFOAElFAElSRUxBTkQASUwASVNSQUVMAElUAElUQUxZAEpQAEpBUEFO +AEpBUEFOMQBKQVBBTjIASkFQQU4zAEpBUEFONABKQVBBTjUASkFQQU42AEpBUEFONwBK +QVBBTjgASkFQQU45AEpBUEFOMTAASkFQQU4xMQBKQVBBTjEyAEpBUEFOMTMASkFQQU4x +NABKQVBBTjE1AEpBUEFOMTYASkFQQU4xNwBKQVBBTjE4AEpBUEFOMTkASkFQQU4yMABK +QVBBTjIxAEpBUEFOMjIASkFQQU4yMwBKQVBBTjI0AEpPAEpPUkRBTgBLWgBLQVpBS0hT +VEFOAEtQAE5PUlRIIEtPUkVBAEtSAEtPUkVBIFJFUFVCTElDAEsyAEtPUkVBIFJFUFVC +TElDMgBLMwBLT1JFQSBSRVBVQkxJQzMAS1cAS1VXQUlUAExWAExBVFZJQQBMQgBMRUJB +Tk9OAExJAExJRUNIVEVOU1RFSU4ATFQATElUSFVBTklBAExVAExVWEVNQk9VUkcATU8A +TUFDQVUATUsATUFDRURPTklBAE1ZAE1BTEFZU0lBAE1UAE1BTFRBAE1YAE1FWElDTwBN +QwBNT05BQ08ATUEATU9ST0NDTwBOTABORVRIRVJMQU5EUwBOWgBORVcgWkVBTEFORABO +TwBOT1JXQVkAT00AT01BTgBQSwBQQUtJU1RBTgBQQQBQQU5BTUEAUEUAUEVSVQBQSABQ +SElMSVBQSU5FUwBQTABQT0xBTkQAUFQAUE9SVFVHQUwAUFIAUFVFUlRPIFJJQ08AUUEA +UUFUQVIAUk8AUk9NQU5JQQBSVQBSVVNTSUEAU0EAU0FVREkgQVJBQklBAFNHAFNJTkdB +UE9SRQBTSwBTTE9WQUsgUkVQVUJMSUMAU0kAU0xPVkVOSUEAWkEAU09VVEggQUZSSUNB +AEVTAFNQQUlOAFNFAFNXRURFTgBDSABTV0lUWkVSTEFORABTWQBTWVJJQQBUVwBUQUlX +QU4AVEgAVEhBSUxBTkQAVFQAVFJJTklEQUQgJiBUT0JBR08AVE4AVFVOSVNJQQBUUgBU +VVJLRVkAVUEAVUtSQUlORQBBRQBVTklURUQgQVJBQiBFTUlSQVRFUwBHQgBVTklURUQg +S0lOR0RPTQBVUwBVTklURUQgU1RBVEVTAFBTAFVOSVRFRCBTVEFURVMgKFBVQkxJQyBT +QUZFVFkpAFVZAFVSVUdVQVkAVVoAVVpCRUtJU1RBTgBWRQBWRU5FWlVFTEEAVk4AVklF +VCBOQU0AWUUAWUVNRU4AWlcAWklNQkFCV0UAAAAAAAAAAAAAAAAAAAAAADAuOS4xNy4y +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wH/AQAAAAAAAAAA +AAD/////////fwAAAAAAAAAAAwCYAZkBAAAAAAAAAAAAAP////////9/AAAAAAAAAAAH +AJgBMAsAAAAAAAAAAAAA/////////38AAAAAAAAAAAgAmAEwDAAAAAAAAAAAAAD///// +////fwAAAAAAAAAAIAAgARAKAAAAAAAAAAAAAP////////9/AAAAAAAAAAAhACABmQEA +AAAAAAAAAAAA/////////38AAAAAAAAAACIAIAEwDAAAAAAAAAAAAAD/////////fwAA +AAAAAAAAOgBgARAKAAAAAAAAAAAAAP////////9/AAAAAAAAAAA7AGABmQEAAAAAAAAA +AAAA/////////38AAAAAAAAAABIAZQEQCgAAAwAAAAAAAAD/////////fwAAAAAAAAAA +NwAwAZkBAAADAAAAAAAAAP////////9/AAAAAAAAAAA1ADACmQEAAAMAAAAAAAAA//// +/////38AAAAAAAAAADYAMAOZAQAAAwAAAAAAAAD/////////fwAAAAAAAAAAMAAwBJkB +AAADAAAAAAAAAP////////9/AAAAAAAAAAA5ADAFmQEAAAMAAAAAAAAA/////////38A +AAAAAAAAADQAMAaZAQAAAwAAAAAAAAD/////////fwAAAAAAAAAAMgAwA5kBAAADAAAA +AAAAAP////////9/AAAAAAAAAAAxADADmQEAAAAAAAAAAAAA/////////38AAAAAAAAA +ABEAEAGZAQAAAAAAAAAAAAD/////////fwAAAAAAAAAAEAAQARAKAAAAAAAAAAAAAP// +//////9/AAAAAAAAAABSAFABmQEAAAAAAAAAAAAA/////////38AAAAAAAAAAEUAUAKZ +AQAAAAAAAAAAAAD/////////fwAAAAAAAAAARwBQA5kBAAAAAAAAAAAAAP////////9/ +AAAAAAAAAABCAFAEmQEAAAAAAAAAAAAA/////////38AAAAAAAAAAFgAUAWZAQAAAAAA +AAAAAAD/////////fwAAAAAAAAAAWwBQBpkBAAAAAAAAAAAAAP////////9/AAAAAAAA +AABdAFAImQEAAAAAAAAAAAAA/////////38AAAAAAAAAAF4AUAmZAQAAAAAAAAAAAAD/ +////////fwAAAAAAAAAAUABQAxAKAAAAAAAAAAAAAP////////9/AAAAAAAAAABVAFAB +MAwAAAAAAAAAAAAA/////////38AAAAAAAAAAFYAUAIwDAAAAAAAAAAAAAD///////// +fwAAAAAAAAAASQBQAlANAAAAAAAAAAAAAP////////9/AAAAAAAAAABAAEABQAoAAEYA +AAAEAAAAKAAAAAAAAACIAQAAAAAAAEEAQAFACgAARwAAAAQAAABoAAAAAAAAAIkBAAAA +AAAASABAARAKAABGAAAABAAAAAgAAAAAAAAAigEAAAAAAABKAEABQAoAAEYAAAAEAAAA +CBgAAAAAAACMAQAAAAAAAEsAQAFACgAARgAAAAQAAAAIYAAAAAAAAI0BAAAAAAAATABA +AVAKAABGAAAABAAAAAgAAAAAAAAAjwEAAAAAAABDAEACQAoAAEcAAAAEAAAAcAAAAAAA +AACLAQAAAAAAAPAAQANACgAARgAAAAQAAAAgAAAAAAAAAAAAAAAAAAAAgABAA0AKAABH +AAAABAAAAGAAAAAAAAAApw8AAAAAAADxAEADQAoAAEYAAAAEAAAAABgAAAAAAAAAAAAA +AAAAAIEAQANACgAARgAAAAQAAAAAYAAAAAAAAKgPAAAAAAAAggBAA1AKAABGAAAABAAA +AAAAAAAAAAAAqQ8AAAAAAADyAEADEAoAAEYAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAIMA +QARACgAARwAAAAQAAABggAAAAAAAAKoPAAAAAAAA9ABABEAKAABGAAAABAAAAACYAAAA +AAAAAAAAAAAAAACEAEAEQAoAAEYAAAAEAAAAAOAAAAAAAACrDwAAAAAAAIUAQARQCgAA +RgAAAAQAAAAAgAAAAAAAAKwPAAAAAAAA9QBABBAKAABGAAAABAAAAACAAAAAAAAAAAAA +AAAAAACGAEAFQAoAAEcAAAAEAAAAYIAAAAAAAACtDwAAAAAAAIcAQAVACgAARgAAAAQA +AAAA4AAAAAAAAK4PAAAAAAAAiABABVAKAABGAAAABAAAAACAAAAAAAAArw8AAAAAAACJ +AEAGQAoAAEcAAAAEAAAAaAAAAAAAAACwDwAAAAAAAIoAQAZACgAARgAAAAQAAAAIYAAA +AAAAALEPAAAAAAAAiwBABlAKAABGAAAABAAAAAgAAAAAAAAAsg8AAAAAAACMAEAHQAoA +AEcAAAAEAAAAaIAAAAAAAACzDwAAAAAAAI0AQAdACgAARgAAAAQAAAAI4AAAAAAAALQP +AAAAAAAAjgBAB1AKAABGAAAABAAAAAiAAAAAAAAAtQ8AAAAAAACPAEAIQAoAAEcAAAAE +AAAAaIAAAAAAAAC2DwAAAAAAAJAAQAhACgAARgAAAAQAAAAI4AAAAAAAALcPAAAAAAAA +kQBACFAKAABGAAAABAAAAAiAAAAAAAAAuA8AAAAAAAD2AEAJQAoAAEcAAAAEAAAAYIAA +AAAAAAAAAAAAAAAAAPcAQAtACgAARwAAAAQAAABggAAAAAAAAAAAAAAAAAAAYABgAGAA +AAAAAAAAAAAAAP////////9/AAAAAAAAAABhAGEAYQAAAAMAAAAAAAAA/////////38A +AAAAAAAAAGIAYgBiAAAAAgAAAAAAAAD/////////fwAAAAAAAAAAYwBjAGMAAAAAAAAA +AAAAAP////////9/AAAAAAAAAABkAGQAZAAAAAMAAAAAAAAA/////////38AAAAAAAAA +AGUAZQBlAAAAAwAAAAAAAAD/////////fwAAAAAAAAAAZgBmAGYAAAAAAAAAAAAAAP// +//////9/AAAAAAAAAABnAGcAZwAAAAAAAAAAAAAA/////////38AAAAAAAAAAGgAaABo +AAAAAAAAAAAAAAD/////////fwAAAAAAAAAAaQBpAGkAAAADAAAAAAAAAP////////9/ +AAAAAAAAAABqAGoAagAAAAMAAAAAAAAA/////////38AAAAAAAAAAGUAAAABAAAA//// +/4AAAAD/////AAAAAEpQAAC0DwAAAAAAAGoAAAABAAAA/////4AAAAD/////AAAAAEpQ +AAC0DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8BAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAEAAAABAAAAAQAAAFgbAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAA +AQAAAAEAAABYGwAACAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAWBsA +AAwAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAFgbAAAgAEcAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYGwAAMwAwAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAQAAAAAAAAABAAAAWBsAACQAIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAA +AQAAAFgbAAAoADcAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAABYGwAAHwAw +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABAAAAWBsAADAAWwAAAAAAAAAAAAAA +AAAAAAAAAAAAAAEAAAAAAAAAAQAAAFgbAABwAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAB +AAAAAAAAAAEAAABYGwAAOAA3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAA +WBsAAFQAVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAQAAAFgbAABEAFUAAAAA +AAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAEAAABYGwAATAA7AAAAAAAAAAAAAAAAAAAA +AAAAAAAAAQAAAAAAAAAAAAAAWBsAAGAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAB +AAAAAQAAAFgbAABkADQAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAABYGwAA +fAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABAAAAWBsAAJgAWwAAAAAAAAAA +AAAAAAAAAAAAAAAAAAEAAAABAAAAAQAAAFgbAACcAFIAAAAAAAAAAAAAAAAAAAAAAAAA +AAABAAAAAQAAAAEAAABYGwAAqgAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAB +AAAAWBsAALwAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAFgbAAC/ADYA +AAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAABYGwAAxAA3AAAAAAAAAAAAAAAA +AAAAAAAAAAAAAQAAAAEAAAABAAAAWBsAAMsANgAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA +AAAAAAAAAQAAAFgbAADQADcAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAABY +GwAA1gAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABAAAAWBsAANoAAwAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgbAAAyAzYAAAAAAAAAAAAAAAAAAAAA +AAAAAAABAAAAAAAAAAEAAABYGwAA3gADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAA +AAABAAAAWBsAAOkANwAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAFgbAAD2 +ADcAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAABYGwAA+gA3AAAAAAAAAAAA +AAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAWBsAAP8ANgAAAAAAAAAAAAAAAAAAAAAAAAAA +AAEAAAAAAAAAAQAAAFgbAAAMATAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAEA +AABYGwAAFAE3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAWBsAACwBNwAA +AAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAFgbAABAARAAAAAAAAAAAAAAAAAA +AAAAAAAAAAABAAAAAQAAAAEAAABYGwAAVAEDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA +AAAAAAABAAAAWBsAAFgBIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAQAAAFgb +AABcATcAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAABYGwAAYAE3AAAAAAAA +AAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAWBsAAGQBWwAAAAAAAAAAAAAAAAAAAAAA +AAAAAAEAAAAAAAAAAQAAAFgbAABoAVIAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAA +AAEAAABYGwAAbAFSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABAAAAWBsAAHQB +NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAFgbAAB4AQMAAAAAAAAAAAAA +AAAAAAAAAAAAAAABAAAAAAAAAAEAAABYGwAAfAE3AAAAAAAAAAAAAAAAAAAAAAAAAAAA +AQAAAAAAAAABAAAAWBsAAIgBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAA +AFgbAACJAUEAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAABYGwAAigFIAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAWBsAAIsBQwAAAAAAAAAAAAAAAAAA +AAAAAAAAAAEAAAAAAAAAAAAAAFgbAACMAUoAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAA +AAAAAAAAAABYGwAAjQFLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAWBsA +AI8BTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAFgbAACnD4AAAAAAAAAA +AAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAABYGwAAqA+BAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAQAAAAAAAAAAAAAAWBsAAKkPggAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAA +AAAAAFgbAACqD4MAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAABYGwAAqw+E +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAWBsAAKwPhQAAAAAAAAAAAAAA +AAAAAAAAAAAAAAEAAAAAAAAAAAAAAFgbAACtD4YAAAAAAAAAAAAAAAAAAAAAAAAAAAAB +AAAAAAAAAAAAAABYGwAArg+HAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAA +WBsAAK8PiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAFgbAACwD4kAAAAA +AAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAABYGwAAsQ+KAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAQAAAAAAAAAAAAAAWBsAALIPiwAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAA +AAAAAAAAAFgbAACzD4wAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAABYGwAA +tA+NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAWBsAALUPjgAAAAAAAAAA +AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAFgbAAC2D48AAAAAAAAAAAAAAAAAAAAAAAAA +AAABAAAAAAAAAAAAAABYGwAAtw+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAA +AAAAWBsAALgPkQAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAFgbAACQAUIA +AAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAABYGwAAjgEDAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAQAAAAAAAAABAAAAWBsAAJgBRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA +AAABAAAAAQAAAFgbAACaAUUAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAABY +GwAAmwFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAWBsAAJwBXgAAAAAA +AAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAFgbAACeAQMAAAAAAAAAAAAAAAAAAAAA +AAAAAAABAAAAAAAAAAEAAABYGwAArAE3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAA +AAABAAAAWBsAAKYBAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAFgbAAC2 +ATcAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAABYGwAAuAE3AAAAAAAAAAAA +AAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAWBsAALoBNwAAAAAAAAAAAAAAAAAAAAAAAAAA +AAEAAAAAAAAAAQAAAFgbAAC+ASEAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAEA +AABYGwAAJwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAWBsAAMoBXQAA +AAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAFgbAADWATcAAAAAAAAAAAAAAAAA +AAAAAAAAAAABAAAAAAAAAAEAAABYGwAA5AEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA +AAEAAAABAAAAWBsAAOwBMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAQAAAFgb +AAD4AQMAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAABYGwAAEAI3AAAAAAAA +AAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAWBsAACoCIgAAAAAAAAAAAAAAAAAAAAAA +AAAAAAEAAAAAAAAAAQAAAFgbAABCAjcAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAA +AAEAAABYGwAAAAJbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAWBsAAEoC +AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAFgbAABPAhAAAAAAAAAAAAAA +AAAAAAAAAAAAAAABAAAAAQAAAAEAAABYGwAAXAJSAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AQAAAAAAAAABAAAAWBsAAGACUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAQAA +AFgbAABoAjcAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAABYGwAAbAI3AAAA +AAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAWBsAAHYCEAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAEAAAABAAAAAQAAAFgbAAB6AgMAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAA +AAAAAAEAAABYGwAAggIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAWBsA +AIMCAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAFgbAACqAgMAAAAAAAAA +AAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAABYGwAAvgJbAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAQAAAAEAAAABAAAAWBsAAL8CNwAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAA +AQAAAFgbAADBAjcAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAABYGwAAxgI7 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAWBsAANQCNwAAAAAAAAAAAAAA +AAAAAAAAAAAAAAEAAAAAAAAAAQAAAFgbAADwAjcAAAAAAAAAAAAAAAAAAAAAAAAAAAAB +AAAAAAAAAAEAAABYGwAA9AI3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAA +WBsAAPgCAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAFgbAACeAFAAAAAA +AAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAEAAABYGwAA/AIDAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAQAAAAAAAAABAAAAWBsAAAwDMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAA +AAAAAQAAAFgbAAAUAzYAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAABYGwAA +GAM2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAWBsAACQDAwAAAAAAAAAA +AAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAFgbAAAQAwMAAAAAAAAAAAAAAAAAAAAAAAAA +AAABAAAAAAAAAAEAAABYGwAAOgM3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAB +AAAAWBsAAEgDEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAQAAAMEWAABKAxIA +AAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAEAAABYGwAAWgNFAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAQAAAAAAAAABAAAAWBsAAFwDOgAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA +AAABAAAAAQAAAFgbAABeA1YAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAABY +GwAAwAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAWBsAAHcDAwAAAAAA +AAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAFgbAADMAgMAAAAAAAAAAAAAAAAAAAAA +AAAAAAABAAAAAAAAAAEAAABYGwAAAAAAAAAAAAAzEz0TFwAKBQAAAAAAAAAAEAAAAAAA +AAAQAAAAAAAAAEcTURMXAAoFAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAOBN0ExcAFBQA +AAAAAAAAABAAAAAAAAAABwAAAAAAAABOE3sTGwYFBQAAAAAAAAAAAQAAAAAAAAAAAAAA +AAAAAFETeRMeBgoFAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAVhN0EyEGFAUAAAAAAAAA +AAEAAAAAAAAAAAAAAAAAAACrE7ATFwAKBQAAAAAAAAAAEAAAAAAAAAAMAAAAAAAAALAT +2BMXABQUAAAAAAAAAAAQAAAAAAAAAAIAAAAAAAAAvxO/ExcACgUAAAAAAAAAABAAAAAA +AAAADAAAAAAAAAAAFHgUBQYUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIUbhQXABQU +AAAAAAAAAAAYAAAAAAAAAAEAAAAAAAAAMhRuFBQAFBQAAAAAAAAAABgAAAAAAAAAAQAA +AAAAAAA8FHgUDwAUFAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAADwUeBQRBhQUAAAAAAAA +AAABAAAAAAAAAAEAAAAAAAAAPBR4FBIAFBQAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAA8 +FHgUFAAUFAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAADwUeBQXABQUAAAAAAAAAAAFAAAA +AAAAAAAAAAAAAAAAPBR4FBcGFBQAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAA8FMgUFAYU +FAIAAAAAAAAABAAAAAAAAAAAAAAAAAAAAHgUoBQXABQUAQAAAAAAAAAFAAAAAAAAAAAA +AAAAAAAAjBSgFBcAFBQDAAAAAAAAAAUAAAAAAAAAAAAAAAAAAACMFMgUEgAUFAMAAAAA +AAAABQAAAAAAAAAAAAAAAAAAAIwUyBQUABQUBwAAAAAAAAAFgAAAAAAAAAAAAAAAAAAA +jBTIFBQGFBQDAAAAAAAAAAEAAAAAAAAAAgAAAAAAAACMFMgUFwYUFAMAAAAAAAAAAQAA +AAAAAAACAAAAAAAAAIwUyBQXBhQUAwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAjBTIFB4A +FBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMFEQWBQYUFAMAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAKAUyBQRBhQUAwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAfBX0FR4GFBQCAAAA +AAAAAAQAAAAAAAAAAAAAAAAAAAB8FUQWFAYUFAMAAAAAAAAAAQAAAAAAAAAEAAAAAAAA +AHwVRBYbABQUAwAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAfBVEFh4AFBQDAAAAAAAAAAUA +AAAAAAAAAAAAAAAAAAB8FUQWFwAUFAcAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAHEWrRYX +ABQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcRatFh4GFBQAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAABxFq0WHgYUFAIAAAAAAAAABAAAAAAAAAAAAAAAAAAAAHEWwRYFBhQUAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAcRbBFhEAFBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AABxFsEWFAAUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEWwRYeABQUAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAcRbBFh4GFBQAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAABxFsEW +HgYUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgTdBMeABQUAAAAAAAAAAAABAAAAAAA +AAAAAAAAAAAAsBPYEx4AFBQAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAyFG4UHgAUFAMA +AAAAAAAAAAQAAAAAAAAAAAAAAAAAADwUeBQeABQUAwAAAAAAAAAABAAAAAAAAAAAAAAA +AAAAjBTIFB4AFBQDAAAAAAAAAAAEAAAAAAAAAAAAAAAAAABxFsEWHgAUFAAAAAAAAAAA +AAQAAAAAAAAAAAAAAAAAAHwVRBYeABQUAwAAAAAAAAAABAAAAAAAAAAAAAAAAAAAChRa +FAUGKCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACCFNIUBQYoKAEAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAPoUchUFBigoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmhUSFgUGKCgB +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeFEYUBQYoKAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAG4UvhQFBigoAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5hReFQUGKCgAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAACGFSYWBQYoKAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAU +eBQRBigoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUBR4FBcGKCgAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAABaFFoUEQYoKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFoUWhQXACgo +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoBSgFBcGKCgBAAAAAAAAAAIAAAAAAAAAAAAA +AAAAAACgFKAUFAYoKAEAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAIIUghQRACgoAQAAAAAA +AAACAAAAAAAAAAAAAAAAAAAAqhSqFBQAKCgBAAAAAAAAAAIAAAAAAAAAAAAAAAAAAACC +FKoUFAAoKAEAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAIIUqhQXBigoAQAAAAAAAAACAAAA +AAAAAAAAAAAAAAAApBUcFhQGKCgBAAAAAAAAAAIAAAAAAAAAAAAAAAAAAACAFqgWFAAo +KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAWqBYeBigoAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAhRatFh4GKCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABaFIIUDwAoKAMAAAAA +AAAAAAQAAAAAAAAAAAAAAAAAAKoUqhQSACgoAwAAAAAAAAAABAAAAAAAAAAAAAAAAAAA +pBUcFhQAKCgDAAAAAAAAAAAEAAAAAAAAAAAAAAAAAACAFqgWFAAoKAAAAAAAAAAAAAQA +AAAAAAAAAAAAAAAAAAgJRAkFBhQFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAlECRQA +FAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsCagJBQYUBQAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAGwJqAkUABQFAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAbAmoCR4AFAUAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAABsCZ4JGwYUBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AGwJngkUABQFAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAgAmKCRQAFAUAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAACZCagJFAAUBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKMJqAkU +ABQFAAAAAAAAAAAgIAAAAAAAAAAAAAAAAAAAtAm0CQUGFAUAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAC0CbQJFAAUBQAAAAAAAAAAICgAAAAAAAAAAAAAAAAAANAJrAoFBhQFAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAACAlECRQAFAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AABsCWwJFAAUBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEJgAkUABQFAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAhQmKCRQAFAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACPCZkJ +FAAUBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJ4JngkUABQFAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAowmjCRQAFAUAAAAAAAAAAAAEAAAAAACAAAAAAAAAAACjCaMJFAAUBQAA +AAAAAAAAAAAAAAAAAIAAAAAAAAAAAKgJqAkUABQFAAAAAAAAAAAABAAAAAAAgAAAAAAA +AAAAqAmoCRQAFAUAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAC0CbQJFAAUBQAAAAAAAAAA +AAQAAAAAAIAAAAAAAAAAALQJtAkUABQFAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAACAlE +CQUGFAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICUQJFAAUBQAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAGwJqAkFBhQFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAmoCRQAFAUA +AAAAAAAAAEAAAAAAAAAAAAAAAAAAAABsCagJHgAUBQAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAGwJngkbBhQFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAmeCRQAFAUAAAAAAAAA +AEAAAAAAAAAAAAAAAAAAAACACYoJFAAUBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJkJ +qAkUABQFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AmsCgUGFAUAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAACjCagJFAAUBQAAAAAAAAAAICAAAAAAAAAAAAAAAAAAAAgJRAkUABQF +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAlsCRQAFAUAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAABxCYAJFAAUBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIUJigkUABQFAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAjwmZCRQAFAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACe +CZ4JFAAUBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKMJowkUABQFAAAAAAAAAAAABAAA +AAAAgAAAAAAAAAAAowmjCRQAFAUAAAAAAAAAAAAAAAAAAACAAAAAAAAAAACoCagJFAAU +BQAAAAAAAAAAAAQAAAAAAIAAAAAAAAAAAKgJqAkUABQFAAAAAAAAAAAAAAAAAAAAgAAA +AAAAAAAACAlECQUGKCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACFCYUJBQYoKAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAIUJhQkUBigoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +hQmFCRIGKCgAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAADQCawKBQYoKAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAP8BEAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIACCAA +AAAAAAAAAAAAAP8AAAAAAAAAAAAAAAAAAAAAESQAAAAAAAAAAAAAAAAABRQAAAAAAAAA +AAAAAAAAAAUCAAAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAAAAAAAUAEQAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAABQAhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFADEAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAUAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAA +gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQBRAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAFAGMAAAAAAAAgAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAIBA +AIAAAAAAAAAAAAAAAAAICQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAgwAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAEAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAABQCTAAAAAAAAIAAAAAAAAABAAAAAAAAAADAAAAAAAAAAAA +BCAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADABMAAAAAAA +AgAAAAAAAAAEAAAAAAAAAAMAAAAAAAAAAIBAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAMAIwAAAAAAACAAAAAAAAAAQAAAAAAAAAAwAAAAAAAAAA +QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAzAAAAAA +AAIAAAAAAAAABAAAAAAAAAADAAAAAAAAAACAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAADAEMAAAAAAAAgAAAAAAAAAEAAAAAAAAAAMAAAAAAAAA +AEAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAUwAAAA +AAACAAAAAAAAAAQAAAAAAAAAAwAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAwBjAAAAAAAAIAAAAAAAAABAAAAAAAAAADAAAAAAAA +AAAAEQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABEAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAQACAAAAAAAAAAAAAAAEEgAAAAAA +AAAAAAAAAAAAESAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAIAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAICAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASIAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgARAA +AAAAAAEAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAggEAAAgAAAAAAAAAAAAAAxBAAAAAA +AAAAAAAAAAAAACEEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAGUBEAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAA +AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAFA +AAAAAAAAAAAAAAAAAAgAAAAAAAAAAgAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAkAAAAAAAAAAAAAAAAAAEAAAAAAAAAACAAAA +AAAAAMcFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAD +QAAAAAAAAAAAAAAAAAAAgAAAAAAAAAIAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQARAAAAAAAAEAAAAAAAAAACAAAAAAAAAAgAA +AAAAAAAAgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA +BUAAAAAAAAQAAAAAAAAAAIAAAAAAAAACAAAAAAAAAACAQAACAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAGQAAAAAAAAAAAAAAAAAAIAAAAAAAAAAIA +AAAAAAAAAIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +QAdAAAAAAAAEAAAAAAAAAAiAAAAAAAAAAgAAAAAAAAAAhEAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABACEAAAAAAAAQAAAAAAAAACIAAAAAAAAAC +AAAAAAAAAACEQAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AEAJQAAAAAAAAAAAAAAAAAAAgAAAAAAAAAIAAAAAAAAAx4EAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAtAAAAAAAAEAAAAAAAAAACAAAAAAAAA +AgAAAAAAAADHgUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AABQDf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAKAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAK/wAAAAAAAAAAAAAAAACAAAAAAAAA +AAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAA +AAAAMAswAAAAAAAAAAAAAAAAAAABAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAgAAA +AAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAwDDAAAAAAAAAAAAAAAAAAAAIAAAAA +AAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAA +AAAAABAKEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAACAA +AAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAQApAAAAAAAAAAAAAAAAAAGB4AAAA +AAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAABACgAAAAAAAAAAAAAAAAAAQAQAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAA +AAAAAABQCkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAI +AAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAJkBMAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAA +AAAAAAAAYAD/AAAAAAADAAAAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAOADAAAAAAAA +AAAAAADAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwK8AAAAAAAAAAAAAAAAA +APALAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAABmAP8AAAAAAAMAAAAAAAAAAAQA +AAAAAAAIAAAAAAAAAAAAAAAA4AMAAAAAAAAAAAAAAMACAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAADABwAAAAAAAAAAAAAAAAAA8AEAAAAAAAAAAAAAAAAACAAAAAAAAAAA +AAAAAAAAAGcA/wAAAAAAAwAAAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAADgAwAAAAAA +AAAAAAAAwAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAvAAAAAAAAAAAAAAAA +AADwCwAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAaAD/AAAAAAADAAAAAAAAAAAE +AAAAAAAACAAAAAAAAAAAAAAAAOADAAAAAAAAAAAAAADAAgAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAwFcAAAAAAAAAAAAAAAAAAPAVAAAAAAAAAAAAAAAAAAgAAAAAAAAA +AAAAAAAAAABhAP8AAAAAAAMAAAAAAAAAAAQAAAAAAAAQAAAAAAAAAAAAAAAA4AMAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADArwAAAAAAAAAAAAAA +AAAA8AsAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAGIA/wAAAAAAAwAAAAAAAAAA +BAAAAAAAABAAAAAAAAAAAAAAAADgAwAAAAAAAAAAAAAAwAIAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAMCvAAAAAAAAAAAAAAAAAADwCwAAAAAAAAAAAAAAAAAIAAAAAAAA +AAAAAAAAAAAAYwD/AAAAAAADAAAAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAOABAAAA +AAAAAAAAAADAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwC8AAAAAAAAAAAAA +AAAAAPALAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAABkAP8AAAAAAAMAAAAAAAAA +AAQAAAAAAAAQAAAAAAAAAAAAAAAAwAEAAAAAAAAAAAAAAMACAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAADABwAAAAAAAAAAAAAAAAAA8AEAAAAAAAAAAAAAAAAACAAAAAAA +AAAAAAAAAAAAAGUA/wAAAAAAAwAAAAAAAAAABAAAAAAAABAAAAAAAAAAAAAAAADAAQAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAvAAAAAAAAAAAA +AAAAAADwCwAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAaQD/AAAAAAADAAAAAAAA +AAAEAAAAAAAAEAAAAAAAAAAAAAAAAMADAAAAAAAAAAAAAADAAgAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAwAcAAAAAAAAAAAAAAAAAAPABAAAAAAAAAAAAAAAAAAgAAAAA +AAAAAAAAAAAAAABqAP8AAAAAAAMAAAAAAAAAAAQAAAAAAAAQAAAAAAAAAAAAAAAAwAMA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADALwAAAAAAAAAA +AAAAAAAA8AsAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAJgB/wAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAQADwAPMAiIHwAPMAQQCAAIMAiYGAAIMASADyAPUAioHyAPUAQwD2 +APcAi4H2APcASgDxAPQAjIHxAPQASwCBAIQAjYGBAIQATACCAIUAj4GCAIUAAAAAAAAA +AAAAAAAAiAHwAPMAiQGAAIMAigHyAPUAiwH2APcAjAHxAPQAjQGBAIQAjwGCAIUAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAECcBcLAIwAAAAAAAECKCMPABIAAAAAAAEC4C4KAJgCAAAAAAECUEYOACQCAAAA +AAECwF0JALAEAAAAAAECoIwNAEgEAAAAAAECgLsIAGAEAAAAAAEC8NIMAGwEAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAOgD -CwCCAAAAAAABANAHCgSEAQAAAAABAHwVCQSLAQAAAAABAPgqCASWAQAAAAAAAAAAAAAA +AAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA3AXCwCM +AAAAAAABAygjDwASAAAAAAABA+AuCgCYAgAAAAABA1BGDgAkAgAAAAABA8BdCQCwBAAA +AAABA6CMDQBIBAAAAAABA4C7CABgBAAAAAABA/DSDABsBAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQJwFwsAjAAAAAAAAQIoIw8A +EgAAAAAAAQLgLgoAmAIAAAAAAQJQRg4AJAIAAAAAAQLAXQkAsAQAAAAAAQKgjA0ASAQA +AAAAAQKAuwgAYAQAAAAAAQLw0gwAbAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -BKIAAAAAAAAAAAAACKIAAEZGPlBGRj5QDKIAAGxBgGRsQYBkEKIAAAOgmQEDoJkBFKIA -ABDWTAQQ1kwEGKIAAEAAgBNAAIATHKIAAGAA4BtgAOAbIKIAAAqAUwwKgFMMJKIAADvf -FAA73xQAKKIAALUBAAC1AQAALKIAACAAAAAgAAAAnJgAAAAAAAAAAAAAnJgAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDcBcLAIwAAAAAAAEDKCMPABIAAAAAAAED4C4K +AJgCAAAAAAEDUEYOACQCAAAAAAEDwF0JALAEAAAAAAEDoIwNAEgEAAAAAAEDgLsIAGAE +AAAAAAED8NIMAGwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAABAOgDCwCCAAAAAAABANAHCgSEAQAAAAABAHwVCQSLAQAAAAABAPgq +CASWAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAABKIAAAAAAAAAAAAACKIAAEZGPlBGRj5QDKIAAGxBgGRsQYBk +EKIAAAOgmQEDoJkBFKIAABDWTAQQ1kwEGKIAAEAAgBNAAIATHKIAAGAA4BtgAOAbIKIA +AAqAUwwKgFMMJKIAADvfFAA73xQAKKIAALUBAAC1AQAALKIAACAAAAAgAAAAnJgAAAAA +AAAAAAAAnJgAAAAAAAAAAAAAnJgAAAAAAAAAAAAAnJgAAAAAAAAAAAAAnJgAAAAAAAAA AAAAnJgAAAAAAAAAAAAAnJgAAAAAAAAAAAAAnJgAAAAAAAAAAAAAnJgAAAAAAAAAAAAA -nJgAAAAAAAAAAAAAnJgAAAAAAAAAAAAAnJgAAAAAAAAAAAAAnJgAAAAAAAAAAAAAnJgA -AAAAAAAAAAAAnJgAAAAAOAAAADgAnJgAAAAAAAAAAAAAnJgAAAAAAAAAAAAAnJgAAAAA -AAAAAAAAnJgAAPkABAD5AAQA1JgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAJyYAAAA -AAAAAAAAAJyYAAAAAAAAAAAAAJyYAAAAAAAAAAAAAJyYAAAAAAAAAAAAAJyYAAAAAAAA -AAAAAJyYAAAAAAAQAAAAEJyYAAAAAAAEAAAABJyYAAAAAAAAAAAAAJyYAAAAAAAAAAAA -AJyYAAAAAAAAAAAAAJyYAAAAAAAAAAAACpyYAACAADgAgAA4ApyYAAAGAAIABgAAAJyY -AACSAAAAkgAAAJyYAACgAAAAoAAAAJyYAAAHAAQABwAEANSYAAAaAAAAGgAAAJyYAABI -AAAASAAAAJyYAAAQAAAAEAAAAJyYAAAIAAAACAAAAJyYAAAPAAAADwAAAJyYAADyAAAA -YgAAAJyYAABPkAAATJAAAJyYAABaEgAAmhIAAMyYAAAOAAAADwAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQJwFwsA -jAAAAAAAAQIoIw8AEgAAAAAAAQLgLgoAmAIAAAAAAQJQRg4AJAIAAAAAAQLAXQkAsAQA -AAAAAQKgjA0ASAQAAAAAAQKAuwgAYAQAAAAAAQLw0gwAbAQAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDcBcLAIwAAAAAAAEDKCMP -ABIAAAAAAAED4C4KAJgCAAAAAAEDUEYOACQCAAAAAAEDwF0JALAEAAAAAAEDoIwNAEgE -AAAAAAEDgLsIAGAEAAAAAAED8NIMAGwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAOgDGwCCAAAAAAABANAHGgSEAQAAAAABAHwV -GQSLAQAAAAABAPgqGASWAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAQDoAxsAAgAAAAAAAQDQBxoEBAEAAAAAAQB8FRkECwIAAAAAAQD4 -KhgEFgMAAAAAAAJwFwsADAQAAAAAAAIoIw8AEgQAAAAAAQLgLgoAGAYAAAAAAQJQRg4A -JAYAAAAAAQLAXQkAMAgAAAAAAQKgjA0ASAgAAAAAAQKAuwgAYAgAAAAAAQLw0gwAbAgA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAEE9AEHAIEAAAAAAAEE6AMCAIsBAAAAAAEE0AcGAJYCAAAAAAEEuAsBAJYDAAAAAAEC -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 -AAAAABQAAABUAwAAAAAAAAAAAAAGAAAAAAAAABQAAABsAwAAAAAAAAAAAAABAAAAAAAA -ABQAAACEAwAAAAAAAAAAAAABAAAAAAAAABwAAACcAwAAAAAAAAAAAAAkAAAAAAAAAEQO -EAAAAAAAHAAAALwDAAAAAAAAAAAAAC8AAAAAAAAARA4QAAAAAAAcAAAA3AMAAAAAAAAA -AAAADgAAAAAAAABEDhAAAAAAABQAAAAAAAAAAQABeBAMBwiQAQAAAAAAABQAAAAcAAAA -AAAAAAAAAAAzAAAAAAAAABwAAAA0AAAAAAAAAAAAAACVAAAAAAAAAEQOIEqGAoMDFAAA -AFQAAAAAAAAAAAAAAC0AAAAAAAAAJAAAAGwAAAAAAAAAAAAAAHsAAAAAAAAARA4gTowC -hgODBAAAAAAAABQAAACUAAAAAAAAAAAAAAAHAAAAAAAAABQAAACsAAAAAAAAAAAAAAAG -AAAAAAAAABQAAADEAAAAAAAAAAAAAAAbAAAAAAAAABQAAADcAAAAAAAAAAAAAAAgAAAA -AAAAABQAAAAAAAAAAQABeBAMBwiQAQAAAAAAABwAAAAcAAAAAAAAAAAAAAAxAAAAAAAA -AEEOEIMCAAAAFAAAAAAAAAABAAF4EAwHCJABAAAAAAAAFAAAABwAAAAAAAAAAAAAAAgA -AAAAAAAAFAAAADQAAAAAAAAAAAAAAAgAAAAAAAAAFAAAAEwAAAAAAAAAAAAAAAwAAAAA -AAAAJAAAAGQAAAAAAAAAAAAAAEsAAAAAAAAAQQ4QQQ4YRA4ggwOGAgAAABQAAACMAAAA -AAAAAAAAAAAUAAAAAAAAABQAAACkAAAAAAAAAAAAAAAUAAAAAAAAABQAAAC8AAAAAAAA -AAAAAAAVAAAAAAAAABQAAADUAAAAAAAAAAAAAABSAAAAAAAAABQAAADsAAAAAAAAAAAA -AABSAAAAAAAAABQAAAAEAQAAAAAAAAAAAAALAAAAAAAAABQAAAAcAQAAAAAAAAAAAAAc -AAAAAAAAABQAAAA0AQAAAAAAAAAAAAA7AAAAAAAAABQAAABMAQAAAAAAAAAAAAAfAQAA -AAAAABQAAAAAAAAAAQABeBAMBwiQAQAAAAAAADwAAAAcAAAAAAAAAAAAAAAkBgAAAAAA -AEIOEEIOGEIOIEIOKEEOMEEOOEQOQIMHhgaMBY0EjgOPAgAAAAAAAAAUAAAAXAAAAAAA -AAAAAAAAXAAAAAAAAAAcAAAAdAAAAAAAAAAAAAAAGAAAAAAAAABEDhAAAAAAABwAAACU -AAAAAAAAAAAAAABrAAAAAAAAAEEOEIMCAAAAHAAAALQAAAAAAAAAAAAAAOQAAAAAAAAA -RA4gSoYCgwM8AAAA1AAAAAAAAAAAAAAA9gEAAAAAAABCDhBCDhhCDiBCDihBDjBBDjhE -DkCDB4YGjAWNBI4DjwIAAAAAAAAAJAAAABQBAAAAAAAAAAAAAHQAAAAAAAAARA4gTowC -hgODBAAAAAAAABQAAAA8AQAAAAAAAAAAAACtAAAAAAAAABwAAABUAQAAAAAAAAAAAADl -AAAAAAAAAEEOEIMCAAAAFAAAAHQBAAAAAAAAAAAAABgAAAAAAAAAPAAAAIwBAAAAAAAA -AAAAAOgCAAAAAAAAQg4QQg4YQg4gQg4oQQ4wQQ44RA5AgweGBowFjQSOA48CAAAAAAAA -ACwAAADMAQAAAAAAAAAAAADKAgAAAAAAAEIOEEEOGEEOIEQOkAGDBIYDjAIAAAAAACQA -AAD8AQAAAAAAAAAAAACPAAAAAAAAAEQOIE6MAoYDgwQAAAAAAAAUAAAAJAIAAAAAAAAA -AAAAHAAAAAAAAAAkAAAAPAIAAAAAAAAAAAAAdwAAAAAAAABBDhBBDhhEDiCDA4YCAAAA -FAAAAGQCAAAAAAAAAAAAAAYAAAAAAAAAFAAAAAAAAAABAAF4EAwHCJABAAAAAAAAHAAA -ABwAAAAAAAAAAAAAAC0AAAAAAAAARA4QAAAAAAAcAAAAPAAAAAAAAAAAAAAAMwAAAAAA -AABEDhAAAAAAACQAAABcAAAAAAAAAAAAAADdAAAAAAAAAEQOMFiOAo0DjASGBYMGAAAU -AAAAhAAAAAAAAAAAAAAAXgAAAAAAAAAUAAAAnAAAAAAAAAAAAAAAYAIAAAAAAAAUAAAA -tAAAAAAAAAAAAAAAKQAAAAAAAAAUAAAAzAAAAAAAAAAAAAAAQQAAAAAAAAAkAAAA5AAA -AAAAAAAAAAAAkgAAAAAAAABEDiBOjAKGA4MEAAAAAAAAFAAAAAwBAAAAAAAAAAAAAGcA -AAAAAAAAFAAAACQBAAAAAAAAAAAAADIAAAAAAAAAJAAAADwBAAAAAAAAAAAAAJgAAAAA -AAAAQQ4QQQ4YRA4ggwOGAgAAABQAAABkAQAAAAAAAAAAAAAGAAAAAAAAABQAAAB8AQAA -AAAAAAAAAACvAAAAAAAAABQAAACUAQAAAAAAAAAAAAAGAAAAAAAAABQAAACsAQAAAAAA -AAAAAABKAAAAAAAAABQAAADEAQAAAAAAAAAAAACMAAAAAAAAABQAAADcAQAAAAAAAAAA -AAABAAAAAAAAABQAAAAAAAAAAQABeBAMBwiQAQAAAAAAABwAAAAcAAAAAAAAAAAAAABb -AAAAAAAAAEQOEAAAAAAAPAAAADwAAAAAAAAAAAAAAI4EAAAAAAAAQg4QQg4YQg4gQg4o -QQ4wQQ44RA5QgweGBowFjQSOA48CAAAAAAAAABwAAAB8AAAAAAAAAAAAAAAOAAAAAAAA -AEQOEAAAAAAAHAAAAJwAAAAAAAAAAAAAAPcAAAAAAAAAQQ4QRA4wgwIUAAAAvAAAAAAA -AAAAAAAAOAAAAAAAAAAcAAAA1AAAAAAAAAAAAAAAqwAAAAAAAABEDiBKhgKDAxQAAAAA -AAAAAQABeBAMBwiQAQAAAAAAABQAAAAcAAAAAAAAAAAAAACkAAAAAAAAACQAAAA0AAAA -AAAAAAAAAABGAAAAAAAAAEEOEEEOGEQOIIMDhgIAAAAUAAAAXAAAAAAAAAAAAAAANwAA -AAAAAAAUAAAAdAAAAAAAAAAAAAAA4wAAAAAAAAAUAAAAAAAAAAEAAXgQDAcIkAEAAAAA -AAAUAAAAHAAAAAAAAAAAAAAAEwAAAAAAAAAUAAAANAAAAAAAAAAAAAAAVwAAAAAAAAAU +nJgAAAAAAAAAAAAAnJgAAAAAAAAAAAAAnJgAAAAAOAAAADgAnJgAAAAAAAAAAAAAnJgA +AAAAAAAAAAAAnJgAAAAAAAAAAAAAnJgAAPkABAD5AAQA1JgAAAAAAAAEAAAAAAAAAAAA +AAAAAAAAAAAAAJyYAAAAAAAAAAAAAJyYAAAAAAAAAAAAAJyYAAAAAAAAAAAAAJyYAAAA +AAAAAAAAAJyYAAAAAAAAAAAAAJyYAAAAAAAQAAAAEJyYAAAAAAAEAAAABJyYAAAAAAAA +AAAAAJyYAAAAAAAAAAAAAJyYAAAAAAAAAAAAAJyYAAAAAAAAAAAACpyYAACAADgAgAA4 +ApyYAAAGAAIABgAAAJyYAACSAAAAkgAAAJyYAACgAAAAoAAAAJyYAAAHAAQABwAEANSY +AAAaAAAAGgAAAJyYAABIAAAASAAAAJyYAAAQAAAAEAAAAJyYAAAIAAAACAAAAJyYAAAP +AAAADwAAAJyYAADyAAAAYgAAAJyYAABPkAAATJAAAJyYAABaEgAAmhIAAMyYAAAOAAAA +DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAQJwFwsAjAAAAAAAAQIoIw8AEgAAAAAAAQLgLgoAmAIAAAAAAQJQRg4A +JAIAAAAAAQLAXQkAsAQAAAAAAQKgjA0ASAQAAAAAAQKAuwgAYAQAAAAAAQLw0gwAbAQA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEC +uAsLAIYAAAAAAAEClBEPAAkAAAAAAAECcBcKAIwCAAAAAAECKCMOABICAAAAAAEC4C4J +AJgEAAAAAAECUEYNACQEAAAAAAECwF0IADAEAAAAAAECeGkMADYEAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAtwFCwCDAAAAAAAB +AsoIDwAEAAAAAAABArgLCgCGAgAAAAABApQRDgAJAgAAAAABAnAXCQCMBAAAAAABAigj +DQASBAAAAAABAuAuCAAYBAAAAAABArw0DAAbBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQNwFwsAjAAAAAAAAQPgLgoAmAIAAAAA +AQNQRg4AJAIAAAAAAQPAXQkAsAMAAAAAAQOgjA0ASAMAAAAAAQOAuwgAYAMAAAAAAQPw +0gwAbAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAEDcBcLAIwAAAAAAAEDKCMPABIAAAAAAAED4C4KAJgCAAAA +AAEDUEYOACQCAAAAAAEDwF0JALAEAAAAAAEDoIwNAEgEAAAAAAEDgLsIAGAEAAAAAAED +8NIMAGwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAABAOgDGwCCAAAAAAABANAHGgSEAQAAAAABAHwVGQSLAQAAAAABAPgqGASWAQAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQDoAxsA +ggAAAAAAAQDQBxoEhAEAAAAAAQB8FRkEiwIAAAAAAQD4KhgElgMAAAAAAAJwFwsADAQA +AAAAAAIoIw8AEgQAAAAAAQLgLgoAGAYAAAAAAQJQRg4AJAYAAAAAAQLAXQkAMAgAAAAA +AQKgjA0ASAgAAAAAAQKAuwgAYAgAAAAAAQLw0gwAbAgAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0A +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE+gADAIEAZAJkAgEE9AEH +AIEAyQHJAQEE6AMCAIIB5ADkAAEE0AcGAIQCoACgAAEEuAsBAIYDjACMAAECcBcLAIwE +PAA8AAECKCMPABIEPAA8AAEC4C4KAJgGMAAwAAECUEYOACQGMAAwAAECwF0JADAILAAs +AAECoIwNAEgILAAsAAECgLsIAGAILAAsAAEC8NIMAGwILAAsAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAUAAAAAAAAAAEAAXgQDAcIkAEAAAAAAAAUAAAAHAAAAAAAAAAA +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 +AAAAAAAAAAAANwAAAAAAAAAUAAAAbAAAAAAAAAAAAAAA6wAAAAAAAAAUAAAAAAAAAAEA +AXgQDAcIkAEAAAAAAAAUAAAAHAAAAAAAAAAAAAAAEwAAAAAAAAAUAAAANAAAAAAAAAAA +AAAAWwAAAAAAAAAUAAAATAAAAAAAAAAAAAAABwAAAAAAAAAUAAAAZAAAAAAAAAAAAAAA +hAAAAAAAAAAUAAAAAAAAAAEAAXgQDAcIkAEAAAAAAAAUAAAAHAAAAAAAAAAAAAAABgAA +AAAAAAAUAAAANAAAAAAAAAAAAAAALgAAAAAAAAAUAAAATAAAAAAAAAAAAAAAmQAAAAAA +AAAUAAAAZAAAAAAAAAAAAAAAhwAAAAAAAAAkAAAAfAAAAAAAAAAAAAAAqgEAAAAAAABE +DjBUjQKMA4YEgwUAAAAAFAAAAAAAAAABAAF4EAwHCJABAAAAAAAAHAAAABwAAAAAAAAA +AAAAACAAAAAAAAAARA4QAAAAAAAcAAAAPAAAAAAAAAAAAAAAHwAAAAAAAABEDhAAAAAA +ABwAAABcAAAAAAAAAAAAAAAdAAAAAAAAAEQOEAAAAAAAFAAAAHwAAAAAAAAAAAAAAAYA +AAAAAAAAHAAAAJQAAAAAAAAAAAAAAGMAAAAAAAAARA4gSoYCgwMUAAAAtAAAAAAAAAAA +AAAAMQAAAAAAAAAUAAAAzAAAAAAAAAAAAAAABgAAAAAAAAAkAAAA5AAAAAAAAAAAAAAA +WgAAAAAAAABEDiBOjQKMA4MEAAAAAAAAFAAAAAwBAAAAAAAAAAAAAC0AAAAAAAAAFAAA +ACQBAAAAAAAAAAAAACQAAAAAAAAAFAAAADwBAAAAAAAAAAAAACwAAAAAAAAAFAAAAFQB +AAAAAAAAAAAAAB8AAAAAAAAAHAAAAGwBAAAAAAAAAAAAAGcAAAAAAAAARA4QAAAAAAAU +AAAAjAEAAAAAAAAAAAAAMwAAAAAAAAAUAAAApAEAAAAAAAAAAAAAGAAAAAAAAAAUAAAA +vAEAAAAAAAAAAAAALgAAAAAAAAAUAAAA1AEAAAAAAAAAAAAABgAAAAAAAAAUAAAA7AEA +AAAAAAAAAAAACQAAAAAAAAAkAAAABAIAAAAAAAAAAAAArAAAAAAAAABBDhBBDhhEDiCD +A4YCAAAAFAAAACwCAAAAAAAAAAAAABoAAAAAAAAAFAAAAEQCAAAAAAAAAAAAAAsAAAAA +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 +AAAAAAAAAIYAAAAAAAAAQg4QQQ4YQQ4ggwSGA4wCABQAAAB8AgAAAAAAAAAAAAAGAAAA +AAAAABQAAACUAgAAAAAAAAAAAAAGAAAAAAAAABQAAAAAAAAAAQABeBAMBwiQAQAAAAAA +ABwAAAAcAAAAAAAAAAAAAAAtAAAAAAAAAEQOEAAAAAAAHAAAADwAAAAAAAAAAAAAADMA +AAAAAAAARA4QAAAAAAAkAAAAXAAAAAAAAAAAAAAA3QAAAAAAAABEDjBYjgKNA4wEhgWD +BgAAFAAAAIQAAAAAAAAAAAAAAF4AAAAAAAAAFAAAAJwAAAAAAAAAAAAAAGACAAAAAAAA +FAAAALQAAAAAAAAAAAAAACkAAAAAAAAAFAAAAMwAAAAAAAAAAAAAAEEAAAAAAAAAJAAA +AOQAAAAAAAAAAAAAAJIAAAAAAAAARA4gTowChgODBAAAAAAAABQAAAAMAQAAAAAAAAAA +AABnAAAAAAAAABQAAAAkAQAAAAAAAAAAAAAyAAAAAAAAACQAAAA8AQAAAAAAAAAAAACY +AAAAAAAAAEEOEEEOGEQOIIMDhgIAAAAUAAAAZAEAAAAAAAAAAAAArwAAAAAAAAAUAAAA +fAEAAAAAAAAAAAAABgAAAAAAAAAUAAAAlAEAAAAAAAAAAAAACAAAAAAAAAAUAAAArAEA +AAAAAAAAAAAASgAAAAAAAAAUAAAAxAEAAAAAAAAAAAAAjAAAAAAAAAAUAAAA3AEAAAAA +AAAAAAAAAQAAAAAAAAAUAAAAAAAAAAEAAXgQDAcIkAEAAAAAAAAUAAAAHAAAAAAAAAAA +AAAABgAAAAAAAAAUAAAANAAAAAAAAAAAAAAABgAAAAAAAAAUAAAATAAAAAAAAAAAAAAA +BgAAAAAAAAAUAAAAZAAAAAAAAAAAAAAACgAAAAAAAAAUAAAAfAAAAAAAAAAAAAAABgAA +AAAAAAAUAAAAlAAAAAAAAAAAAAAAAQAAAAAAAAAUAAAAAAAAAAEAAXgQDAcIkAEAAAAA +AAAcAAAAHAAAAAAAAAAAAAAAWwAAAAAAAABEDhAAAAAAADwAAAA8AAAAAAAAAAAAAAC5 +BAAAAAAAAEIOEEIOGEIOIEIOKEEOMEEOOEQOUIMHhgaMBY0EjgOPAgAAAAAAAAAcAAAA +fAAAAAAAAAAAAAAAGgAAAAAAAABBDhCDAgAAABwAAACcAAAAAAAAAAAAAAD3AAAAAAAA +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 -AAAAFAAAACwDAAAAAAAAAAAAAAYAAAAAAAAAFAAAAEQDAAAAAAAAAAAAAAEAAAAAAAAA -FAAAAFwDAAAAAAAAAAAAAAEAAAAAAAAAFAAAAHQDAAAAAAAAAAAAABAAAAAAAAAAFAAA -AIwDAAAAAAAAAAAAAA4AAAAAAAAAFAAAAKQDAAAAAAAAAAAAAA4AAAAAAAAAFAAAALwD -AAAAAAAAAAAAAA8BAAAAAAAAHAAAANQDAAAAAAAAAAAAACkAAAAAAAAARA4QAAAAAAAc -AAAA9AMAAAAAAAAAAAAALwAAAAAAAABEDhAAAAAAABwAAAAUBAAAAAAAAAAAAAAWAAAA -AAAAAEQOEAAAAAAAFAAAAAAAAAABAAF4EAwHCJABAAAAAAAAFAAAABwAAAAAAAAAAAAA -ADMAAAAAAAAAHAAAADQAAAAAAAAAAAAAAJUAAAAAAAAARA4gSoYCgwMUAAAAVAAAAAAA -AAAAAAAAKAAAAAAAAAAUAAAAbAAAAAAAAAAAAAAALgAAAAAAAAAkAAAAhAAAAAAAAAAA -AAAAjAAAAAAAAABEDiBOjAKGA4MEAAAAAAAAFAAAAKwAAAAAAAAAAAAAAAcAAAAAAAAA -FAAAAMQAAAAAAAAAAAAAAAYAAAAAAAAAFAAAANwAAAAAAAAAAAAAAAYAAAAAAAAAFAAA -APQAAAAAAAAAAAAAAAYAAAAAAAAAFAAAAAAAAAABAAF4EAwHCJABAAAAAAAAHAAAABwA -AAAAAAAAAAAAAEgAAAAAAAAAQQ4QgwIAAAAUAAAAAAAAAAEAAXgQDAcIkAEAAAAAAAAU +ABwAAADEAgAAAAAAAAAAAAAeAAAAAAAAAEQOEAAAAAAAFAAAAOQCAAAAAAAAAAAAAA4A +AAAAAAAAFAAAAPwCAAAAAAAAAAAAAEoAAAAAAAAAJAAAABQDAAAAAAAAAAAAAJoAAAAA +AAAARA4wWI4CjQOMBIYFgwYAABwAAAA8AwAAAAAAAAAAAAAhAAAAAAAAAEQOEAAAAAAA +FAAAAFwDAAAAAAAAAAAAAAYAAAAAAAAAFAAAAHQDAAAAAAAAAAAAAAEAAAAAAAAAFAAA +AIwDAAAAAAAAAAAAAAYAAAAAAAAAFAAAAKQDAAAAAAAAAAAAAAEAAAAAAAAAFAAAALwD +AAAAAAAAAAAAAAEAAAAAAAAAFAAAANQDAAAAAAAAAAAAABAAAAAAAAAAFAAAAOwDAAAA +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 +AAAARA4QAAAAAAAUAAAA9AMAAAAAAAAAAAAAQgAAAAAAAAAUAAAADAQAAAAAAAAAAAAA +dwAAAAAAAAAUAAAAJAQAAAAAAAAAAAAAJgAAAAAAAAAkAAAAPAQAAAAAAAAAAAAAqQAA +AAAAAABEDiBOjAKGA4MEAAAAAAAAFAAAAGQEAAAAAAAAAAAAABgAAAAAAAAAFAAAAHwE +AAAAAAAAAAAAABYBAAAAAAAAFAAAAJQEAAAAAAAAAAAAAEIAAAAAAAAAFAAAAKwEAAAA +AAAAAAAAAGYAAAAAAAAAHAAAAMQEAAAAAAAAAAAAABQAAAAAAAAARA4QAAAAAAAUAAAA +AAAAAAEAAXgQDAcIkAEAAAAAAAAkAAAAHAAAAAAAAAAAAAAAqQAAAAAAAABEDiBOjAKG +A4MEAAAAAAAAHAAAAEQAAAAAAAAAAAAAAC0AAAAAAAAARA4QAAAAAAAcAAAAZAAAAAAA +AAAAAAAAMwAAAAAAAABEDhAAAAAAACQAAACEAAAAAAAAAAAAAAD0AAAAAAAAAEQOMFiO +Ao0DjASGBYMGAAAUAAAArAAAAAAAAAAAAAAAcAAAAAAAAAAcAAAAxAAAAAAAAAAAAAAA +cQAAAAAAAABEDhAAAAAAABwAAADkAAAAAAAAAAAAAADFAwAAAAAAAEQOEAAAAAAAFAAA +AAQBAAAAAAAAAAAAAA8AAAAAAAAAFAAAABwBAAAAAAAAAAAAABQAAAAAAAAAFAAAADQB +AAAAAAAAAAAAABkAAAAAAAAAFAAAAEwBAAAAAAAAAAAAADEAAAAAAAAAJAAAAGQBAAAA +AAAAAAAAAGQAAAAAAAAAQg4QQQ4YQQ4ggwSGA4wCABQAAACMAQAAAAAAAAAAAACQAAAA +AAAAABQAAACkAQAAAAAAAAAAAAAGAAAAAAAAABQAAAC8AQAAAAAAAAAAAAAIAAAAAAAA +ABQAAADUAQAAAAAAAAAAAABKAAAAAAAAABQAAADsAQAAAAAAAAAAAACxAAAAAAAAABQA +AAAEAgAAAAAAAAAAAAABAAAAAAAAABQAAAAAAAAAAQABeBAMBwiQAQAAAAAAABQAAAAc +AAAAAAAAAAAAAAAGAAAAAAAAABQAAAA0AAAAAAAAAAAAAAAGAAAAAAAAABQAAABMAAAA +AAAAAAAAAAAGAAAAAAAAABQAAABkAAAAAAAAAAAAAAAvAAAAAAAAABQAAAB8AAAAAAAA +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 -AAAAAAByAQAAAAAAAEQOQFSNAowDhgSDBQAAAAAUAAAARAMAAAAAAAAAAAAAYAAAAAAA -AAAcAAAAXAMAAAAAAAAAAAAApQAAAAAAAABBDhCDAgAAABQAAAB8AwAAAAAAAAAAAACd -AAAAAAAAABwAAACUAwAAAAAAAAAAAABDAAAAAAAAAEQOEAAAAAAAFAAAALQDAAAAAAAA -AAAAAEIAAAAAAAAAFAAAAMwDAAAAAAAAAAAAAHcAAAAAAAAAFAAAAOQDAAAAAAAAAAAA -ACYAAAAAAAAAJAAAAPwDAAAAAAAAAAAAAKkAAAAAAAAARA4gTowChgODBAAAAAAAABQA -AAAkBAAAAAAAAAAAAAAYAAAAAAAAABQAAAA8BAAAAAAAAAAAAAAWAQAAAAAAABQAAABU -BAAAAAAAAAAAAABCAAAAAAAAABQAAABsBAAAAAAAAAAAAABRAAAAAAAAABQAAAAAAAAA -AQABeBAMBwiQAQAAAAAAACQAAAAcAAAAAAAAAAAAAACpAAAAAAAAAEQOIE6MAoYDgwQA -AAAAAAAcAAAARAAAAAAAAAAAAAAALQAAAAAAAABEDhAAAAAAABwAAABkAAAAAAAAAAAA -AAAzAAAAAAAAAEQOEAAAAAAAJAAAAIQAAAAAAAAAAAAAAAEBAAAAAAAARA4wWI4CjQOM -BIYFgwYAABQAAACsAAAAAAAAAAAAAABwAAAAAAAAABwAAADEAAAAAAAAAAAAAABxAAAA -AAAAAEQOEAAAAAAAHAAAAOQAAAAAAAAAAAAAAO8DAAAAAAAARA4QAAAAAAAUAAAABAEA -AAAAAAAAAAAADwAAAAAAAAAUAAAAHAEAAAAAAAAAAAAAFAAAAAAAAAAUAAAANAEAAAAA -AAAAAAAAGQAAAAAAAAAUAAAATAEAAAAAAAAAAAAAMQAAAAAAAAAkAAAAZAEAAAAAAAAA -AAAAZAAAAAAAAABCDhBBDhhBDiCDBIYDjAIAFAAAAIwBAAAAAAAAAAAAAAYAAAAAAAAA -FAAAAKQBAAAAAAAAAAAAAJAAAAAAAAAAFAAAALwBAAAAAAAAAAAAAAYAAAAAAAAAFAAA -ANQBAAAAAAAAAAAAAEoAAAAAAAAAFAAAAOwBAAAAAAAAAAAAALEAAAAAAAAAFAAAAAQC -AAAAAAAAAAAAAAEAAAAAAAAAFAAAAAAAAAABAAF4EAwHCJABAAAAAAAAHAAAABwAAAAA -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 -AAAAQQ4QgwIAAAAcAAAAjAMAAAAAAAAAAAAAzwAAAAAAAABBDhCDAgAAABwAAACsAwAA -AAAAAAAAAACqAAAAAAAAAEQOEAAAAAAAHAAAAMwDAAAAAAAAAAAAAJQAAAAAAAAARA4Q -AAAAAAAcAAAA7AMAAAAAAAAAAAAAFgAAAAAAAABEDhAAAAAAABQAAAAAAAAAAQABeBAM -BwiQAQAAAAAAABwAAAAcAAAAAAAAAAAAAACVAAAAAAAAAEQOIEqGAoMDFAAAADwAAAAA -AAAAAAAAACgAAAAAAAAAFAAAAFQAAAAAAAAAAAAAAC4AAAAAAAAAJAAAAGwAAAAAAAAA -AAAAAHsAAAAAAAAARA4gTowChgODBAAAAAAAABQAAACUAAAAAAAAAAAAAAATAAAAAAAA -ABQAAACsAAAAAAAAAAAAAAARAAAAAAAAABQAAADEAAAAAAAAAAAAAAAGAAAAAAAAABQA -AADcAAAAAAAAAAAAAAAGAAAAAAAAABQAAAD0AAAAAAAAAAAAAAAGAAAAAAAAABQAAAAA -AAAAAQABeBAMBwiQAQAAAAAAABwAAAAcAAAAAAAAAAAAAABzAAAAAAAAAEEOEIMCAAAA -FAAAAAAAAAABAAF4EAwHCJABAAAAAAAAFAAAABwAAAAAAAAAAAAAAAgAAAAAAAAAFAAA -ADQAAAAAAAAAAAAAAAgAAAAAAAAAFAAAAEwAAAAAAAAAAAAAAAwAAAAAAAAAHAAAAGQA -AAAAAAAAAAAAADAAAAAAAAAARA4QAAAAAAAcAAAAhAAAAAAAAAAAAAAAJgAAAAAAAABB -DhCDAgAAABwAAACkAAAAAAAAAAAAAAAhAAAAAAAAAEQOEAAAAAAAFAAAAMQAAAAAAAAA -AAAAABUAAAAAAAAAFAAAANwAAAAAAAAAAAAAAFIAAAAAAAAAFAAAAPQAAAAAAAAAAAAA -AFIAAAAAAAAAFAAAAAwBAAAAAAAAAAAAACoAAAAAAAAAFAAAACQBAAAAAAAAAAAAAFoA -AAAAAAAAFAAAADwBAAAAAAAAAAAAADAAAAAAAAAAJAAAAFQBAAAAAAAAAAAAAP4AAAAA -AAAAQQ4QQQ4YRA4ggwOGAgAAABQAAAAAAAAAAQABeBAMBwiQAQAAAAAAADwAAAAcAAAA -AAAAAAAAAABYCAAAAAAAAEIOEEIOGEIOIEIOKEEOMEEOOEQOgAGDB4YGjAWNBI4DjwIA -AAAAAAAUAAAAXAAAAAAAAAAAAAAAcwAAAAAAAAAcAAAAdAAAAAAAAAAAAAAAEwAAAAAA -AABEDhAAAAAAABwAAACUAAAAAAAAAAAAAAA0AAAAAAAAAEEOEIMCAAAAJAAAALQAAAAA -AAAAAAAAALwBAAAAAAAARA4wVI0CjAOGBIMFAAAAACwAAADcAAAAAAAAAAAAAADQAQAA -AAAAAEIOEEIOGEEOIEEOKEQOMIMFhgSMA40CACQAAAAMAQAAAAAAAAAAAACfAAAAAAAA -AEQOIE6MAoYDgwQAAAAAAAAUAAAANAEAAAAAAAAAAAAAHAAAAAAAAAAUAAAATAEAAAAA -AAAAAAAATwAAAAAAAAAkAAAAZAEAAAAAAAAAAAAAcwAAAAAAAABEDjBPjAKGA4MEAAAA -AAAALAAAAIwBAAAAAAAAAAAAAKsAAAAAAAAAQg4QQg4YQQ4gQQ4oRA4wgwWGBIwDjQIA -PAAAALwBAAAAAAAAAAAAAAwEAAAAAAAAQg4QQg4YQg4gQg4oQQ4wQQ44RA5AgweGBowF -jQSOA48CAAAAAAAAABQAAAD8AQAAAAAAAAAAAAC8AAAAAAAAABwAAAAUAgAAAAAAAAAA -AAAsAAAAAAAAAEQOEAAAAAAALAAAADQCAAAAAAAAAAAAAAsDAAAAAAAAQg4QQg4YQQ4g -QQ4oRA4wgwWGBIwDjQIAPAAAAGQCAAAAAAAAAAAAAPoEAAAAAAAAQg4QQg4YQg4gQg4o -QQ4wQQ44Rw7gAYMHhgaMBY0EjgOPAgAAAAAAACwAAACkAgAAAAAAAAAAAAAnAQAAAAAA -AEIOEEEOGEEOIEQOQIMEhgOMAgAAAAAAACwAAADUAgAAAAAAAAAAAACmAAAAAAAAAEIO -EEEOGEEOIEQOQIMEhgOMAgAAAAAAABwAAAAEAwAAAAAAAAAAAACHAAAAAAAAAEEOEIMC -AAAAPAAAACQDAAAAAAAAAAAAAFgBAAAAAAAAQg4QQg4YQg4gQg4oQQ4wQQ44RA5ggweG -BowFjQSOA48CAAAAAAAAABQAAABkAwAAAAAAAAAAAAB4AAAAAAAAABQAAAB8AwAAAAAA -AAAAAAB8AAAAAAAAABwAAACUAwAAAAAAAAAAAADvAAAAAAAAAEEOEIMCAAAAFAAAALQD -AAAAAAAAAAAAAC0AAAAAAAAAJAAAAMwDAAAAAAAAAAAAABYBAAAAAAAARA4gTowChgOD -BAAAAAAAABQAAAD0AwAAAAAAAAAAAAAYAAAAAAAAABQAAAAMBAAAAAAAAAAAAAD4AAAA -AAAAACQAAAAkBAAAAAAAAAAAAAC4AAAAAAAAAEQOIE6MAoYDgwQAAAAAAAAsAAAATAQA -AAAAAAAAAAAAuQAAAAAAAABCDhBCDhhBDiBBDihEDjCDBYYEjAONAgA8AAAAfAQAAAAA -AAAAAAAARwEAAAAAAABCDhBCDhhCDiBCDihBDjBBDjhEDkCDB4YGjAWNBI4DjwIAAAAA -AAAAFAAAAAAAAAABAAF4EAwHCJABAAAAAAAAJAAAABwAAAAAAAAAAAAAAK0AAAAAAAAA -RA4wVI0CjAOGBIMFAAAAABwAAABEAAAAAAAAAAAAAAA3AAAAAAAAAEQOEAAAAAAAHAAA -AGQAAAAAAAAAAAAAAD0AAAAAAAAARA4QAAAAAAAkAAAAhAAAAAAAAAAAAAAAMgEAAAAA -AABEDjBYjgKNA4wEhgWDBgAAFAAAAKwAAAAAAAAAAAAAAHAAAAAAAAAAHAAAAMQAAAAA -AAAAAAAAAHkAAAAAAAAARA4QAAAAAAAcAAAA5AAAAAAAAAAAAAAAtwMAAAAAAABBDhCD -AgAAABQAAAAEAQAAAAAAAAAAAAAPAAAAAAAAABQAAAAcAQAAAAAAAAAAAAAUAAAAAAAA -ABQAAAA0AQAAAAAAAAAAAAAZAAAAAAAAABQAAABMAQAAAAAAAAAAAAAxAAAAAAAAACQA -AABkAQAAAAAAAAAAAABaAAAAAAAAAEIOEEEOGEEOIIMEhgOMAgAkAAAAjAEAAAAAAAAA -AAAAYgEAAAAAAABEDlBejwKOA40EjAWGBoMHFAAAALQBAAAAAAAAAAAAAPgAAAAAAAAA -FAAAAMwBAAAAAAAAAAAAAFUAAAAAAAAAFAAAAOQBAAAAAAAAAAAAAGkAAAAAAAAAFAAA -APwBAAAAAAAAAAAAADsBAAAAAAAAFAAAABQCAAAAAAAAAAAAABMAAAAAAAAAFAAAAAAA -AAABAAF4EAwHCJABAAAAAAAAHAAAABwAAAAAAAAAAAAAAFUAAAAAAAAAQQ4QgwIAAAAc -AAAAPAAAAAAAAAAAAAAAOQAAAAAAAABBDhCDAgAAABQAAABcAAAAAAAAAAAAAABOAAAA -AAAAABQAAAB0AAAAAAAAAAAAAAAIAAAAAAAAABQAAACMAAAAAAAAAAAAAAAIAAAAAAAA -ACQAAACkAAAAAAAAAAAAAAAQAQAAAAAAAEEOEEEOGEQOIIMDhgIAAAAcAAAAzAAAAAAA -AAAAAAAAMAAAAAAAAABBDhCDAgAAABwAAADsAAAAAAAAAAAAAAANBAAAAAAAAEQOgAEA -AAAAHAAAAAwBAAAAAAAAAAAAAKcAAAAAAAAAQQ4QgwIAAAAcAAAALAEAAAAAAAAAAAAA -HgEAAAAAAABEDiBKhgKDAxwAAABMAQAAAAAAAAAAAACsAAAAAAAAAEQOIEqGAoMDJAAA -AGwBAAAAAAAAAAAAAK0BAAAAAAAAQg4QQQ4YQQ4ggwSGA4wCACQAAACUAQAAAAAAAAAA -AADRAAAAAAAAAEIOEEEOGEEOIIMEhgOMAgAcAAAAvAEAAAAAAAAAAAAATwAAAAAAAABB -DhCDAgAAABwAAADcAQAAAAAAAAAAAACGAAAAAAAAAEQOEAAAAAAAFAAAAPwBAAAAAAAA -AAAAAHgAAAAAAAAAJAAAABQCAAAAAAAAAAAAAEkCAAAAAAAARA4wVI0CjAOGBIMFAAAA -ABQAAAAAAAAAAQABeBAMBwiQAQAAAAAAADwAAAAcAAAAAAAAAAAAAADfAAAAAAAAAEIO -EEIOGEIOIEIOKEEOMEEOOEQOQIMHhgaMBY0EjgOPAgAAAAAAAAAsAAAAXAAAAAAAAAAA -AAAALAEAAAAAAABCDhBCDhhBDiBBDihEDjCDBYYEjAONAgAUAAAAjAAAAAAAAAAAAAAA -OwAAAAAAAAA8AAAApAAAAAAAAAAAAAAAegUAAAAAAABCDhBCDhhCDiBCDihBDjBBDjhE -DrABgweGBowFjQSOA48CAAAAAAAAHAAAAOQAAAAAAAAAAAAAAIcAAAAAAAAAQQ4QgwIA -AAA8AAAABAEAAAAAAAAAAAAAsgMAAAAAAABCDhBCDhhCDiBCDihBDjBBDjhHDoADgweG -BowFjQSOA48CAAAAAAAAJAAAAEQBAAAAAAAAAAAAAGABAAAAAAAARA5AVI0CjAOGBIMF -AAAAABQAAABsAQAAAAAAAAAAAABoAAAAAAAAABwAAACEAQAAAAAAAAAAAABDAAAAAAAA -AEQOEAAAAAAAHAAAAKQBAAAAAAAAAAAAAEgAAAAAAAAAQQ4QgwIAAAAcAAAAxAEAAAAA -AAAAAAAArgAAAAAAAABEDiBKhgKDAxQAAAAAAAAAAQABeBAMBwiQAQAAAAAAADwAAAAc -AAAAAAAAAAAAAADfAAAAAAAAAEIOEEIOGEIOIEIOKEEOMEEOOEQOQIMHhgaMBY0EjgOP -AgAAAAAAAAA0AAAAXAAAAAAAAAAAAAAAdAIAAAAAAABCDhBCDhhCDiBBDihBDjCDBoYF -jASNA44CAAAAAAAAABQAAACUAAAAAAAAAAAAAAA2AAAAAAAAADwAAACsAAAAAAAAAAAA -AADzBgAAAAAAAEIOEEIOGEIOIEIOKEEOMEEOOEQOYIMHhgaMBY0EjgOPAgAAAAAAAAA8 -AAAA7AAAAAAAAAAAAAAA0AYAAAAAAABCDhBCDhhCDiBCDihBDjBBDjhHDuAIgweGBowF -jQSOA48CAAAAAAAAFAAAACwBAAAAAAAAAAAAAD0AAAAAAAAAFAAAAEQBAAAAAAAAAAAA -AHEAAAAAAAAAPAAAAFwBAAAAAAAAAAAAAMgAAAAAAAAAQg4QQg4YQg4gQg4oQQ4wQQ44 -RA5AgweGBowFjQSOA48CAAAAAAAAABQAAACcAQAAAAAAAAAAAAC2AAAAAAAAACQAAAC0 -AQAAAAAAAAAAAAD7AAAAAAAAAEIOEEEOGEEOIIMEhgOMAgAcAAAA3AEAAAAAAAAAAAAA -SAAAAAAAAABBDhCDAgAAABwAAAD8AQAAAAAAAAAAAAC4AAAAAAAAAEQOIEqGAoMDFAAA -AAAAAAABAAF4EAwHCJABAAAAAAAAPAAAABwAAAAAAAAAAAAAAOIAAAAAAAAAQg4QQg4Y -Qg4gQg4oQQ4wQQ44RA5AgweGBowFjQSOA48CAAAAAAAAADQAAABcAAAAAAAAAAAAAAB0 -AgAAAAAAAEIOEEIOGEIOIEEOKEEOMIMGhgWMBI0DjgIAAAAAAAAAPAAAAJQAAAAAAAAA -AAAAAKICAAAAAAAAQg4QQg4YQg4gQg4oQQ4wQQ44RA5AgweGBowFjQSOA48CAAAAAAAA -ABQAAADUAAAAAAAAAAAAAAAzAAAAAAAAABQAAADsAAAAAAAAAAAAAABpAAAAAAAAADwA -AAAEAQAAAAAAAAAAAAAjAQAAAAAAAEIOEEIOGEIOIEIOKEEOMEEOOEQOUIMHhgaMBY0E -jgOPAgAAAAAAAAAUAAAARAEAAAAAAAAAAAAAPQAAAAAAAAA8AAAAXAEAAAAAAAAAAAAA -2QQAAAAAAABCDhBCDhhCDiBCDihBDjBBDjhHDpANgweGBowFjQSOA48CAAAAAAAANAAA -AJwBAAAAAAAAAAAAAIoBAAAAAAAAQg4QQg4YQg4gQQ4oQQ4wRA5QgwaGBYwEjQOOAgAA -AAAcAAAA1AEAAAAAAAAAAAAASAAAAAAAAABBDhCDAgAAABwAAAD0AQAAAAAAAAAAAACu -AAAAAAAAAEQOIEqGAoMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEdDQzogKEdOVSkg -My4zLjQAAEdDQzogKEdOVSkgMy4zLjQAAEdDQzogKEdOVSkgMy4zLjQAAEdDQzogKEdO -VSkgMy4zLjQAAEdDQzogKEdOVSkgMy4zLjQAAEdDQzogKEdOVSkgMy4zLjQAAEdDQzog -KEdOVSkgMy4zLjQAAEdDQzogKEdOVSkgMy4zLjQAAEdDQzogKEdOVSkgMy4zLjQAAEdD -QzogKEdOVSkgMy4zLjQAAEdDQzogKEdOVSkgMy4zLjQAAEdDQzogKEdOVSkgMy4zLjQA -AEdDQzogKEdOVSkgMy4zLjQAAEdDQzogKEdOVSkgMy4zLjQAAEdDQzogKEdOVSkgMy4z -LjQAAEdDQzogKEdOVSkgMy4zLjQAAEdDQzogKEdOVSkgMy4zLjQAAEdDQzogKEdOVSkg -My4zLjQAAEdDQzogKEdOVSkgMy4zLjQAAEdDQzogKEdOVSkgMy4zLjQAAEdDQzogKEdO -VSkgMy4zLjQAAEdDQzogKEdOVSkgMy4zLjQAAEdDQzogKEdOVSkgMy4zLjQAAEdDQzog -KEdOVSkgMy4zLjQAAEdDQzogKEdOVSkgMy4zLjQAAEdDQzogKEdOVSkgMy4zLjQAAEdD -QzogKEdOVSkgMy4zLjQAAEdDQzogKEdOVSkgMy4zLjQAAEdDQzogKEdOVSkgMy4zLjQA -AEdDQzogKEdOVSkgMy4zLjQAAEdDQzogKEdOVSkgMy4zLjQAAEdDQzogKEdOVSkgMy4z -LjQAAEdDQzogKEdOVSkgMy4zLjQAAEdDQzogKEdOVSkgMy4zLjQAAEdDQzogKEdOVSkg -My4zLjQAAEdDQzogKEdOVSkgMy4zLjQAAEdDQzogKEdOVSkgMy4zLjQAAEdDQzogKEdO -VSkgMy4zLjQAAEdDQzogKEdOVSkgMy4zLjQAAEdDQzogKEdOVSkgMy4zLjQAAEdDQzog -KEdOVSkgMy4zLjQAAEdDQzogKEdOVSkgMy4zLjQAAEdDQzogKEdOVSkgMy4zLjQAAEdD -QzogKEdOVSkgMy4zLjQAAEdDQzogKEdOVSkgMy4zLjQAAEdDQzogKEdOVSkgMy4zLjQA -AEdDQzogKEdOVSkgMy4zLjQAAC5zeW10YWIALnN0cnRhYgAuc2hzdHJ0YWIALnJlbGEu -dGV4dAAucmVsYS5yb2RhdGEALnJvZGF0YS5zdHIxLjEALnJvZGF0YS5zdHIxLjMyAC5y -ZWxhLmRhdGEALnJlbGEuZWhfZnJhbWUALmJzcwAuY29tbWVudAAubm90ZS5HTlUtc3Rh -Y2sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAACAAAAABAAAABgAAAAAAAAAAAAAAAAAAAEAAAAAAAAAA8WEB -AAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAbAAAABAAAAAAAAAAAAAAAAAAAAAAA -AAB4hwIAAAAAAGhAAAAAAAAADwAAAAEAAAAIAAAAAAAAABgAAAAAAAAAKwAAAAEAAAAC -AAAAAAAAAAAAAAAAAAAAQGIBAAAAAAAIiQAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAA -AAAAACYAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAODHAgAAAAAAMEsAAAAAAAAPAAAAAwAA -AAgAAAAAAAAAGAAAAAAAAAAzAAAAAQAAADIAAAAAAAAAAAAAAAAAAABI6wEAAAAAAMwF -AAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAQgAAAAEAAAAyAAAAAAAAAAAAAAAA -AAAAIPEBAAAAAABzAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAABAAAAAAAAAFcAAAABAAAA -AwAAAAAAAAAAAAAAAAAAAKDxAQAAAAAApBcAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAA -AAAAAABSAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAQEwMAAAAAABACAAAAAAAADwAAAAcA -AAAIAAAAAAAAABgAAAAAAAAAYgAAAAEAAAACAAAAAAAAAAAAAAAAAAAASAkCAAAAAADg -QQAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAF0AAAAEAAAAAAAAAAAAAAAAAAAA -AAAAACAVAwAAAAAAIC4AAAAAAAAPAAAACQAAAAgAAAAAAAAAGAAAAAAAAABsAAAACAAA -AAMAAAAAAAAAAAAAAAAAAABASwIAAAAAALABAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAA -AAAAAAAAcQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAQEsCAAAAAABOAwAAAAAAAAAAAAAA -AAAAAQAAAAAAAAAAAAAAAAAAAHoAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAI5OAgAAAAAA -AAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAARAAAAAwAAAAAAAAAAAAAAAAAA -AAAAAACOTgIAAAAAAIoAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAIA -AAAAAAAAAAAAAAAAAAAAAAAAWFMCAAAAAACgIwAAAAAAABAAAAAKAAAACAAAAAAAAAAY -AAAAAAAAAAkAAAADAAAAAAAAAAAAAAAAAAAAAAAAAPh2AgAAAAAAgBAAAAAAAAAAAAAA -AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAB -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAwADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAFAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAwAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAHAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAwALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAJAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAwAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwANAAAAAAAAAAAAAAAA -AAAAAAABAAAAEgABADiGAAAAAAAApAAAAAAAAAAMAAAAEgABAJ93AAAAAAAABgAAAAAA -AAAXAAAAEgABADznAAAAAAAAlAAAAAAAAAAiAAAAEgABAD1eAAAAAAAAlwAAAAAAAAAt -AAAAEgABAPXdAAAAAAAAkQAAAAAAAAA4AAAAEgABAL5UAAAAAAAA1AAAAAAAAABDAAAA -EgABAMspAQAAAAAA0QAAAAAAAABOAAAAEQAHAKADAAAAAAAApAEAAAAAAABZAAAAEgAB -AGrqAAAAAAAAIQAAAAAAAABkAAAAEgABAIpWAAAAAAAALgAAAAAAAABvAAAAEgABAIZL -AAAAAAAAMQAAAAAAAAB6AAAAEgABAGfkAAAAAAAAIgAAAAAAAACFAAAAEgABABLhAAAA -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 -AwAAEgABAMP1AAAAAAAAEwAAAAAAAAAEBAAAEgABAByuAAAAAAAAIgAAAAAAAAAPBAAA -EgABAMrZAAAAAAAAYQMAAAAAAAAaBAAAEgABAGrXAAAAAAAABwAAAAAAAAAlBAAAEgAB -AFFXAAAAAAAAhwAAAAAAAAAwBAAAEgABACKHAAAAAAAANwAAAAAAAAA7BAAAEgABAHAh -AQAAAAAAMAAAAAAAAABGBAAAEgABAEnYAAAAAAAA9gAAAAAAAABRBAAAEgABAP+SAAAA -AAAAAQAAAAAAAABcBAAAEgABACxbAAAAAAAAZwAAAAAAAABnBAAAEgABAGaNAAAAAAAA -kAAAAAAAAAByBAAAEgABAMG9AAAAAAAAUQAAAAAAAAB9BAAAEgABAJvJAAAAAAAABwUA -AAAAAACIBAAAEgABAFERAQAAAAAAuQAAAAAAAACTBAAAEgABAPjgAAAAAAAABgAAAAAA -AACeBAAAEgABAHiMAAAAAAAAHwAAAAAAAACpBAAAEgABAPLqAAAAAAAAUgAAAAAAAAC0 -BAAAEgABAHAcAQAAAAAA+AAAAAAAAAC/BAAAEgABAPuXAAAAAAAAOwAAAAAAAADKBAAA -EgABAGtaAAAAAAAAJQAAAAAAAADVBAAAEgABADLkAAAAAAAAIQAAAAAAAADgBAAAEgAB -AKLOAAAAAAAAPQAAAAAAAADrBAAAEgABAP3EAAAAAAAAFAAAAAAAAAD2BAAAEgABAMkf -AQAAAAAAOQAAAAAAAAABBQAAEgABAHLpAAAAAAAABgAAAAAAAAAMBQAAEAAAAAAAAAAA -AAAAAAAAAAAAAAAZBQAAEgABAOV4AAAAAAAAXgAAAAAAAAAkBQAAEgABAHNjAAAAAAAA -OwAAAAAAAAAvBQAAEgABAFAgAQAAAAAACAAAAAAAAAA6BQAAEgABANbfAAAAAAAAdwAA -AAAAAABFBQAAEgABANwDAAAAAAAAkQAAAAAAAABWBQAAEgABAJAWAQAAAAAAtwMAAAAA -AABhBQAAEgABAD9dAAAAAAAAQQAAAAAAAABsBQAAEgABADh9AAAAAAAAmAAAAAAAAAB3 -BQAAEgABACLhAAAAAAAADgAAAAAAAACCBQAAEgABAJwqAQAAAAAATwAAAAAAAACNBQAA -EgABAPpiAAAAAAAAUgAAAAAAAACYBQAAEgABAFKJAAAAAAAALgAAAAAAAACjBQAAEgAB -AOyjAAAAAAAABgEAAAAAAACuBQAAEgABACh3AAAAAAAAdwAAAAAAAAC5BQAAEQAHAMAQ -AAAAAAAApAEAAAAAAADEBQAAEgABAMjrAAAAAAAAMAAAAAAAAADPBQAAEgABANDnAAAA -AAAAFgAAAAAAAADaBQAAEgABANyGAAAAAAAARgAAAAAAAADlBQAAEgABADaYAAAAAAAA -3AAAAAAAAADwBQAAEgABAInkAAAAAAAAOgEAAAAAAAD7BQAAEgABAP2QAAAAAAAAbgAA -AAAAAAAGBgAAEgABAAGTAAAAAAAAEAAAAAAAAAARBgAAEgABAJLmAAAAAAAAqgAAAAAA -AAAcBgAAEgABAHUUAQAAAAAAMgEAAAAAAAAnBgAAEgABAKAhAQAAAAAADQQAAAAAAAAy -BgAAEgABADyUAAAAAAAAKQAAAAAAAAA9BgAAEgABAPZVAAAAAAAABwAAAAAAAABIBgAA -EgABAFmHAAAAAAAA4wAAAAAAAABTBgAAEgABAIbTAAAAAAAARgAAAAAAAABeBgAAEgAB -ANveAAAAAAAAIAAAAAAAAABpBgAAEgABAAhgAAAAAAAADgAAAAAAAAB0BgAAEgABAENh -AQAAAAAArgAAAAAAAAB/BgAAEgABAILgAAAAAAAANQAAAAAAAACKBgAAEQAHAIASAAAA -AAAApAEAAAAAAACVBgAAEgABAFvFAAAAAAAAZAAAAAAAAACgBgAAEgABAMiWAAAAAAAA -DAAAAAAAAACrBgAAEgABAK5jAAAAAAAAHwEAAAAAAAC2BgAAEgABAEzdAAAAAAAAHwAA -AAAAAADBBgAAEgABAPveAAAAAAAAlgAAAAAAAADMBgAAEgABACJUAAAAAAAAZQAAAAAA -AADXBgAAEgABAGAgAQAAAAAAEAEAAAAAAADiBgAAEgABAFBrAAAAAAAAGAAAAAAAAADt -BgAAEgABAAxiAAAAAAAACAAAAAAAAAD4BgAAEgABAAxcAAAAAAAAogAAAAAAAAADBwAA -EgABAFdjAAAAAAAAHAAAAAAAAAAOBwAAEgABAIbeAAAAAAAAVQAAAAAAAAAZBwAAEgAB -AMb3AAAAAAAA0AEAAAAAAAAkBwAAEgABAL/FAAAAAAAABgAAAAAAAAAvBwAAEgABALQa -AQAAAAAAWgAAAAAAAAA6BwAAEgABALBhAAAAAAAAIAAAAAAAAABFBwAAEQAHACAHAAAA -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 -CgAAEgABAAPUAAAAAAAANQEAAAAAAADRCgAAEgABAPCXAAAAAAAACwAAAAAAAADcCgAA -EgABAKlIAAAAAAAAKwAAAAAAAADnCgAAEgABADnWAAAAAAAAYwAAAAAAAADyCgAAEgAB -APcIAAAAAAAAaAAAAAAAAAD9CgAAEgABAF2WAAAAAAAABgAAAAAAAAAICwAAEgABADMG -AAAAAAAAugAAAAAAAAATCwAAEgABAKjVAAAAAAAAIgAAAAAAAAAeCwAAEgABAPJeAAAA -AAAAmgAAAAAAAAApCwAAEgABAARiAAAAAAAACAAAAAAAAAA0CwAAEgABANWQAAAAAAAA -KAAAAAAAAAA/CwAAEgABANsMAQAAAAAAfAAAAAAAAABKCwAAEgABAL1aAAAAAAAAJAAA -AAAAAABVCwAAEgABAIYAAQAAAAAALAAAAAAAAABgCwAAEgABAIgDAAAAAAAAVAAAAAAA -AABrCwAAEgABAGvdAAAAAAAAMQAAAAAAAAB2CwAAEAAAAAAAAAAAAAAAAAAAAAAAAACG -CwAAEgABAD6uAAAAAAAAgAEAAAAAAACRCwAAEgABAJRVAAAAAAAAEwAAAAAAAACcCwAA -EgABAGgdAQAAAAAAVQAAAAAAAACnCwAAEgABAA1bAAAAAAAAHwAAAAAAAACyCwAAEgAB -AD/ZAAAAAAAAiwAAAAAAAAC9CwAAEgABAJSQAAAAAAAAQQAAAAAAAADICwAAEgABAMXF -AAAAAAAAkAAAAAAAAADTCwAAEAAAAAAAAAAAAAAAAAAAAAAAAADzCwAAEgABAIEFAAAA -AAAAsgAAAAAAAAD+CwAAEgABAMNZAAAAAAAAYwAAAAAAAAAJDAAAEgABACZaAAAAAAAA -MQAAAAAAAAAUDAAAEgABADWNAAAAAAAAMQAAAAAAAAAfDAAAEgABALhWAAAAAAAAmQAA -AAAAAAAqDAAAEgABAD6PAAAAAAAAIAAAAAAAAAA1DAAAEgABAA7QAAAAAAAAvgIAAAAA -AABADAAAEgABAB+TAAAAAAAADgAAAAAAAABLDAAAEgABAPjrAAAAAAAA/gAAAAAAAABW -DAAAEgABAIRZAAAAAAAAIAAAAAAAAABhDAAAEAAAAAAAAAAAAAAAAAAAAAAAAABvDAAA -EgABAFiMAAAAAAAAIAAAAAAAAAB6DAAAEgABAIAHAAAAAAAAQwAAAAAAAACFDAAAEgAB -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 -AAAAAADfDwAAEgABAK1JAAAAAAAAlQAAAAAAAADqDwAAEgABAE3gAAAAAAAANQAAAAAA -AAD1DwAAEgABADjVAAAAAAAAbQAAAAAAAAAAEAAAEgABAAr2AAAAAAAAvAEAAAAAAAAL -EAAAEgABAGoaAQAAAAAAGQAAAAAAAAAWEAAAEgABAMzSAAAAAAAAugAAAAAAAAAhEAAA -EAAAAAAAAAAAAAAAAAAAAAAAAAAwEAAAEgABAFdaAAAAAAAABgAAAAAAAAA7EAAAEgAB -AAZ9AAAAAAAAMgAAAAAAAABGEAAAEgABAKvfAAAAAAAACwAAAAAAAABREAAAEgABADmi -AAAAAAAAswEAAAAAAABcEAAAEgABALdLAAAAAAAAmwAAAAAAAAB1EAAAEgABAIMaAQAA -AAAAMQAAAAAAAAAAenowMDViNTg0NgB6ejAwMmRiMTFjAHp6MDJkYmY4NzUAenowMmRi -YjFiMgB6ejAwMmRiNDYwAHp6MGI3YjgzNjgAenowNWI4YzY1YQB6ejAwNWI0MGFkAHp6 -MDViOTQyZWQAenowZDk0Y2QwNAB6ejAwMTlmNDcwAHp6MDJkYmU3M2QAenowMDViNjky -YgB6ejBiNmQyMzI1AHp6MDA1Yjg1M2QAenowMDE2ZDkyZQB6ejBjZmIxODc1AHp6MDAy -ZGIzMWMAenowMmRhYmJhYwB6ejAwMGI2YzY4AHp6MDAwYjZiZjgAenowMmRiNWJmMAB6 -ejAxNmUxZGZkAHp6MGI3MGU5OGMAenowNmUwZjZjMgB6ejAwNjdkMmIxAHp6MGI2Y2Ez -MjUAenowMDViNmNmZAB6ejAxNmUwZGZkAHp6MDAwYjZmNjgAenowMDViNDhhZAB6ejAy -ZGJmMWIyAHp6MDA1Yjg4Y2IAenowMzNlYzhiZgB6ejBkYjRjOTRkAHp6MDJkYjNiYWMA -YXRoX2hhbF9kbWFfYmVhY29uX3Jlc3BvbnNlX3RpbWUAenowMGI2ZjE2MQB6ejBkYzU4 -NzE4AHp6MGRiMDkxMGUAenowMGI2ZTI3YQB6ejAyZGJiYWIyAHp6MGI2ZDFlZmYAenow -MDViNjRmZAB6ejAwMGI2ZDUyAHp6MGI2YzllZmYAenowMmRiZDg3NQB6ejAyZGIzMWIy -AHp6MDBiNzA5MjMAenowMDBiNmQxZAB6ejAwYjZkNDUwAHp6MGI2YzIzMjUAenowMmRi -ZGFiMgB6ejAwMDViNjMyAHp6MDZkZjJmNTcAenowMDE2ZGE1MAB6ejAwMDY3ZDMyAHp6 -MDBiNmQ5MjMAenowMDJkYjUxYwB6ejAxNmRhN2YwAHp6MDE2ZGNiZmUAenowMDE2ZGVj -MQB6ejAwMTZkZjJjAHp6MGI4MTQ2MTIAenowMTZkOTkyMAB6ejAyZGIxYmFjAHp6MGRj -Nzg3MTgAenowNWI3MDFlMAB6ejAwMGI2YjEwAHp6MGI3MDllZmYAenowMTZkZjg5YgBh -dGhfaGFsX2F0dGFjaAB6ejA2ZTE0ZGQxAHp6MDE2ZGFiMmQAenowMmRiMTM1ZAB6ejBl -MGI2ZjIzAHp6MDE2ZTI5MWQAenowMDBiNmZlOAB6ejAwMTZkOTQ4AHp6MDE2ZTIwOWIA -enowYjcwMWVmZgB6ejAwMGI2YzlkAHp6MDAwNWI1YTIAenowMmRiMTcwYQBhdGhfaGFs -X2NvbXB1dGV0eHRpbWUAenowMmRiNWJhYwB6ejAwNWI4MTNkAHp6MDBiNmM5MjMAenow -YjZjZTk4YwB6ejAwNWI3ZjlkAHp6MGI3MDFkMDIAenowNmUwNDYwZQB6ejAyZGI1NzYz -AHp6MDZmMjMyY2MAenowZTA3ODM3OQB6ejAwMmRhZjYyAHp6MGI4NTQ2MTIAenowMDBi -NmI5MAB6ejAxNmQ5ZWZhAHp6MDAyZGIyNjAAenowMTZkZTA1MQB6ejAwMDViNmIyAHp6 -MDViN2YxMTQAenowMzQ3NDZiNAB6ejAyZGJkZGZkAHp6MDA4ZWYzMDkAenowMGI3MTc3 -ZAB6ejAwYjcwZjNkAHp6MDE2ZDg5MjAAenowMmRiMWFiMgB6ejAwMDViNjIyAHp6MDAw -YjZmNzgAenowYjZiNDk1MAB6ejAwNWI3NjMwAGF0aF9oYWxfZnJlZQB6ejA1Yjc5YjFi -AHp6MDBiNzA3M2QAenowYjVmY2EyNgB6ejAxNmRmYmYxAGF0aF9oYWxfbWh6MmllZWUA -enowMTZlMTg5YgB6ejBkYzM0OTRkAHp6MDAyZGM2MGIAenowMmRiMzM1ZAB6ejBiNmM1 -M2E0AHp6MGY4ZWYzMDgAenowZGE0Y2QwNAB6ejA1Yjc0MWUwAHp6MDJkYTliYWMAenow -MTZlYzlhZAB6ejAwYjcxNzNkAHp6MDE2ZDlkNDEAenowZGMxMmMxZgB6ejAwNWI4NGZk -AHp6MDA1YjhhYmQAenowMGI3MDEyMwB6ejAwNWI2NTJiAHp6MDJkYjM4NzUAenowMTZl -MzA5YgB6ejAwNWI2MGIyAHp6MDJkYjE4NzUAenowMmRiMTc2MwB6ejBiN2Y4MzY4AHp6 -MGRjMzJjMWYAenowMGI3MDE2MQB6ejAxNmQ3ZDQxAHp6MDAxNmNkMzIAenowZGI0OTEw -ZQB6ejAwNWI0OGVkAHp6MDAyZGM4MGIAenowMmRiMzNlZAB6ejAwNWI4MGZkAHp6MDJk -YmZkZmQAenowMTZlNjQ4YQB6ejBkYmYyYzFmAHp6MDAyZGFmZjIAenowMDViNzc5ZAB6 -ejAwMGI2ZWU4AHp6MDE2ZTQ0OGEAenowMGI2ZjZiYwB6ejAxNmRhOTIwAHp6MDViNzgx -ZTAAenowZTI3M2E0ZAB6ejAwMmRjYTBiAHp6MDJkYjFiZjAAenowMDViNDRhZAB6ejA2 -ZGU0NjBlAHp6MGI2ZjllZmYAenowMGI2YzZiYwBhdGhfaGFsX2FkZGl0aW9uYWxfc3di -YV9iYWNrb2ZmAHp6MDAwMmRiOTIAYXRoX2hhbF92ZXJzaW9uAGF0aF9oYWxfaWVlZTJt -aHoAenowMmRiNzlhZQB6ejBiNmNmMDA5AHp6MDAxNmUxMmMAenowMDE2ZDllNAB6ejAw -NWI1Y2IyAHp6MDE2ZGEyNTEAenowNmZhMzJjYwB6ejA2ZTAyZjU3AHp6MDA1YjZlMzAA -YXRoX2hhbF9tYWxsb2MAenowMDBiNmRkMgB6ejA1YjZjYmQ1AHp6MDE2ZGIyNTEAenow -ZTE3ODM3OQB6ejAxNmRkMDUxAHp6MDJkYmQxYjIAenowZGE5YzRmNgB6ejAyZGMxNzYz -AHp6MDE2ZGYwNTEAenowMDE2ZDk1MAB6ejAwYjcwNmJjAHp6MDAxNmQ4NzIAenowNmRm -NDYwZQB6ejA1YjhjMmVkAHp6MDZmZjE3ZTcAenowYjZmOWQwMgB6ejBkNGVmMzA4AHp6 -MDE2ZGJiZmUAenowMTZlNTQ4YQB6ejAwMTZkODUwAHp6MDAwYjZmZjgAYXRoX2hhbF9t -ZW1jcHkAenowMmRiYmRmZAB6ejA2ZGI1ZWI2AHp6MDE2ZWI5YWQAenowMGI2Y2ViYwB6 -ejBkOWI4Yjc5AGF0aF9oYWxfcHJvYmUAenowMDJkYjA2MAB6ejAxNmVhOWFkAHp6MDAw -ZWYzMDkAenowMmRiMzc2MwBhdGhfaGFsX2J1aWxkb3B0cwB6ejAyZGFmMzVkAHp6MGRi -NGNkMDQAenowMTZkZjI1MQB6ejAwMGI2YzEwAHp6MDE2ZDkyNTEAenowYjcyMWFlZAB6 -ejA2N2NmY2FlAHp6MDAwYjZjZjgAenowY2NlZjMwOAB6ejAyZGFmYWIyAHp6MDViOTJh -ZWQAenowMDViOGNjYgB6ejBiNmQ5ZWZmAHp6MDJkYjExYjIAenowZTE3M2E0ZAB6ejAy -ZGJmZmIxAHp6MDJkYmY3NjMAenowMDViNjhmZAB6ejAwNWI0NGVkAHp6MGI3MTFhZWQA -enowYjVmY2EzNAB6ejBkOGI4Yjc5AHp6MDE2ZDhiMmQAenowMTZlMDg5YgB6ejAyZGJi -ODc1AHp6MDE2ZDk3ZjAAenowYjgzODM2OAB6ejAwYjZmZWJjAHp6MGU5OTkzMTMAenow -MGI2ZWE3YQB6ejAzM2U4ZmJmAHp6MDA1YjcyMzAAenowY2ZhNTg3NQB6ejAyZGI5OWFl -AHp6MDJkYjlhYjIAenowMDBiNmJlOAB6ejBkOTljNGY2AHp6MGRlZDhhNTcAenowMTZk -YWJmZQB6ejBiNzA5ZDAyAHp6MDE5ZjNhMDEAenowNzA3MTdlNwBhdGhfaGFsX21lbXpl -cm8AenowNmUwNGRkMQB6ejBiNjhlOThjAHp6MDE2ZTJkZmQAenowMDBiNmQyMgB6ejA3 -MDIzMmNjAHp6MGRjNTQ5NGQAenowMGI3MGY3ZABhdGhfaGFsX3N3X2JlYWNvbl9yZXNw -b25zZV90aW1lAHp6MDlmNjlkMmUAenowMDViNjU3YQB6ejA2ZjcxN2U3AHp6MDZkYTVl -YjYAenowYjdkNDYxMgB6ejAwYjZmOTYxAHp6MGI2YjBjOTAAenowMmRiZDM1ZAB6ejAw -NWI4OGZkAHp6MDJkYWZkZmQAYXRoX2hhbF9kZWxheQB6ejAyZGIxZGZkAHp6MDY3ZDJm -NDEAenowMmRhZjg3NQB6ejBiODA3NzQxAHp6MDE2ZDhkNDEAenowMDJkYWU5MgB6ejBi -N2M3NzQxAHp6MDJkYmIzNWQAenowMmRiM2RmZAB6ejAyZGI1M2VkAHp6MDAwYjZkYTIA -enowMDBiNmUyMgB6ejA1YjgwMDQxAHp6MGQ4OWM0ZjYAenowMDE2ZDg0OAB6ejAxNmQ5 -YjJkAHp6MGUzNzNhNGQAenowMDE2ZTAyYwB6ejAwYjcwNzdkAHp6MDA1YjY5N2EAenow -MDE2ZGFlNAB6ejAxNmUxMDliAHp6MDA1YjRhMmQAenowZGY3ODM3OQB6ejAyZGJkNzYz -AHp6MDAwYjZlNTIAenowNWI2YzZkYgB6ejBjYTVmMzI5AHp6MGRiMjkxMGUAenowMmRi -M2JmMAB6ejA2ZDc4YTRjAHp6MDE2ZTAyNTEAenowMDAyZGJiMgB6ejAwMmRkODZkAHp6 -MDJkYjU5YWUAenowMDY3ZDIyMQB6ejAwNWI4OTNkAHp6MDViODFiMWIAenowMTZkODdm -MAB6ejAyZGIxM2VkAHp6MDBiNmQxMjMAenowMDBiNmNlOAB6ejA1YjhhYWVkAHp6MDJk -YWYxYjIAenowMDA1YjVlMgB6ejAzM2ViZmJmAHp6MDViNjg2ZGIAenowMDBiNmVmOAB6 -ejBiNzE5YWVkAHp6MDA1YjU4YjIAenowNWI3ZGIxYgB6ejBiODQ3NzQxAHp6MDAxNmQ3 -MzIAenowMmRhZGFiMgB6ejBmNGRlMzA3AGF0aF9oYWxfaW5pdF9jaGFubmVscwB6ejAw -YjZkNmJjAHp6MGM0ZWYzMDgAenowMDAyZGJkMgB6ejBkYWI4Yjc5AHp6MDE2ZTBiODcA -enowNWI5MDJlZAB6ejBkYzM4NzE4AHp6MGFhMmVlYzEAenowMDBiNmMxZAB6ejA1Yjhl -YWVkAHp6MDA1YjdiOWQAenowMDViNTQ0NgB6ejA1YjY0NmRiAHp6MDBiNmY5MjMAenow -ZGRkOGE1NwB6ejAxNmUxMjUxAHp6MGRjNzQ5NGQAenowMmRiMzcwYQB6ejAwMDViNjcy -AHp6MDZkZjRkZDEAenowMmRiZjM1ZAB6ejAwMGI2Yzc4AHp6MDAxNmQ4MzIAenowM2U5 -NzM1MwB6ejAyZGI1NzBhAHp6MDA1YjZkN2EAenowMDJkYjI5MgB6ejAwNWI5MGNiAHp6 -MDA1YjVjNDYAYXRoX2hhbF9wcmludGYAenowNmQ5NWViNgB6ejAxNmRmYjg3AHp6MDAx -NmRhNDgAenowMDJkYjA5MgBhdGhfaGFsX2dldHdpcmVsZXNzbW9kZXMAenowMTZlMWI4 -NwBkAAAAAAAAAAsAAAADAAAAKgAAAAAAAAB6AAAAAAAAAAsAAAADAAAAPQAAAAAAAACb -AAAAAAAAAAsAAAADAAAAUQAAAAAAAACsAAAAAAAAAAsAAAADAAAAZQAAAAAAAAC0AAAA -AAAAAAsAAAADAAAAcgAAAAAAAAC8AAAAAAAAAAsAAAADAAAAfwAAAAAAAADEAAAAAAAA -AAsAAAADAAAAkgAAAAAAAABzAQAAAAAAAAIAAABvAAAA/P////////99AQAAAAAAAAIA -AABqAQAA/P////////+HAQAAAAAAAAIAAAA/AAAA/P////////8nAgAAAAAAAAIAAAAf -AQAA/P/////////8BQAAAAAAAAIAAABeAAAA/P////////8ZBgAAAAAAAAIAAABeAAAA -/P////////9IBgAAAAAAAAsAAAACAAAAAAAAAAAAAABtCQAAAAAAAAsAAAACAAAAgAAA -AAAAAAB2CQAAAAAAAAsAAAACAAAAoAAAAAAAAAD9DAAAAAAAAAIAAADAAAAA/P////// -//+SEQAAAAAAAAIAAAAMAQAA/P////////+OHQAAAAAAAAIAAAAMAQAA/P////////95 -KAAAAAAAAAsAAAACAAAA4AAAAAAAAACLKAAAAAAAAAsAAAACAAAAwAAAAAAAAAAxNgAA -AAAAAAsAAAACAAAAYBIAAAAAAABeNgAAAAAAAAsAAAACAAAAQAEAAAAAAACwNgAAAAAA -AAsAAAACAAAAIBgAAAAAAADtNgAAAAAAAAIAAAACAAAAHBgAAAAAAABwNwAAAAAAAAsA -AAACAAAAQgEAAAAAAACPNwAAAAAAAAsAAAACAAAAZBIAAAAAAAChNwAAAAAAAAsAAAAC -AAAAYhIAAAAAAAAVOAAAAAAAAAsAAAACAAAAgBMAAAAAAAAcOAAAAAAAAAsAAAACAAAA -gBUAAAAAAAA2OAAAAAAAAAsAAAACAAAAABcAAAAAAAA9OAAAAAAAAAsAAAACAAAAIBYA -AAAAAABiOAAAAAAAAAsAAAACAAAAUCEAAAAAAABpOAAAAAAAAAsAAAACAAAAZCEAAAAA -AACHOQAAAAAAAAsAAAACAAAAZCEAAAAAAACvOQAAAAAAAAsAAAACAAAAaCEAAAAAAAA+ -OgAAAAAAAAsAAAACAAAA8BcAAAAAAACBOgAAAAAAAAsAAAACAAAAQAEAAAAAAACtOgAA -AAAAAAsAAAACAAAAcCIAAAAAAAAlOwAAAAAAAAsAAAACAAAAQAEAAAAAAABBOwAAAAAA -AAsAAAACAAAAUAEAAAAAAACnOwAAAAAAAAsAAAACAAAAIBgAAAAAAACuOwAAAAAAAAsA -AAACAAAAMBgAAAAAAADTOwAAAAAAAAsAAAACAAAAMBgAAAAAAAAHPAAAAAAAAAsAAAAC -AAAAMBgAAAAAAABCPAAAAAAAAAsAAAACAAAAQAEAAAAAAABJPAAAAAAAAAsAAAACAAAA -UAEAAAAAAAC4PAAAAAAAAAsAAAACAAAAYhIAAAAAAAAKPQAAAAAAAAsAAAACAAAAXAEA -AAAAAAAYPQAAAAAAAAsAAAACAAAAQAEAAAAAAABIPQAAAAAAAAsAAAACAAAAQAEAAAAA -AABfPQAAAAAAAAsAAAACAAAAYAEAAAAAAAClPQAAAAAAAAsAAAACAAAAQCMAAAAAAAAA -PgAAAAAAAAsAAAACAAAAQCMAAAAAAACFPgAAAAAAAAsAAAAFAAAAwAIAAAAAAACmPgAA -AAAAAAsAAAAFAAAAwAIAAAAAAABmPwAAAAAAAAsAAAACAAAAQAEAAAAAAAC0PwAAAAAA -AAsAAAACAAAAQAEAAAAAAADbPwAAAAAAAAsAAAACAAAAYBIAAAAAAABUQAAAAAAAAAsA -AAACAAAAJBgAAAAAAABqQAAAAAAAAAsAAAACAAAAoBwAAAAAAAB/QAAAAAAAAAsAAAAC -AAAAIBgAAAAAAABHQwAAAAAAAAIAAAB6AQAA/P/////////GQwAAAAAAAAsAAAACAAAA -UCEAAAAAAADNQwAAAAAAAAsAAAACAAAAZCEAAAAAAAABRgAAAAAAAAsAAAACAAAAZCEA -AAAAAAATRgAAAAAAAAsAAAABAAAAikIAAAAAAACVRwAAAAAAAAsAAAACAAAAIBgAAAAA -AABnSQAAAAAAAAIAAAC2AAAA/P/////////XSQAAAAAAAAsAAAAFAAAAYAAAAAAAAACv -SgAAAAAAAAsAAAACAAAAIBgAAAAAAABwTAAAAAAAAAsAAAACAAAAUCQAAAAAAABFTQAA -AAAAAAIAAADAAAAA/P////////9mTQAAAAAAAAsAAAACAAAAYCQAAAAAAABuTQAAAAAA -AAIAAADWAAAA/P/////////hTQAAAAAAAAIAAAAlAQAA/P////////9hTgAAAAAAAAIA -AAArAAAA/P////////+WTgAAAAAAAAIAAAAWAQAA/P/////////KTgAAAAAAAAIAAAAW -AQAA/P/////////2TgAAAAAAAAIAAAAWAQAA/P////////9JTwAAAAAAAAIAAAAWAQAA -/P////////+HTwAAAAAAAAIAAAAWAQAA/P////////+IUgAAAAAAAAIAAAAWAQAA/P// -//////8KUwAAAAAAAAIAAAB8AAAA/P////////86UwAAAAAAAAIAAAB8AAAA/P////// -//+xUwAAAAAAAAIAAAAuAAAA/P/////////GUwAAAAAAAAIAAAAUAQAA/P////////9J -VAAAAAAAAAIAAAAfAQAA/P////////9lWQAAAAAAAAIAAABnAAAA/P////////+bWQAA -AAAAAAIAAADWAAAA/P////////+1WQAAAAAAAAIAAADWAAAA/P/////////1WQAAAAAA -AAIAAABCAAAA/P////////91WgAAAAAAAAIAAAAQAQAA/P////////+KWgAAAAAAAAIA -AABsAAAA/P////////+KWwAAAAAAAAIAAAA4AQAA/P////////8kXAAAAAAAAAIAAADW -AAAA/P////////+ZXAAAAAAAAAIAAABGAQAA/P////////+jXAAAAAAAAAIAAACuAAAA -/P/////////SXQAAAAAAAAIAAAAjAAAA/P/////////zXQAAAAAAAAIAAABDAQAA/P// -//////80XgAAAAAAAAIAAAAjAAAA/P////////9lXgAAAAAAAAIAAAAjAAAA/P////// -//+YXgAAAAAAAAIAAABDAQAA/P/////////pXgAAAAAAAAIAAAAjAAAA/P////////8a -XwAAAAAAAAIAAAAjAAAA/P////////9NXwAAAAAAAAIAAABDAQAA/P////////+kXwAA -AAAAAAIAAAAjAAAA/P/////////QXwAAAAAAAAIAAAACAQAA/P//////////XwAAAAAA -AAIAAAAaAAAA/P////////8NYAAAAAAAAAIAAAAhAQAA/P////////90YAAAAAAAAAIA -AAAfAQAA/P////////+UYAAAAAAAAAIAAAAfAQAA/P/////////ZYQAAAAAAAAsAAADe -AAAAAAAAAAAAAADnYQAAAAAAAAsAAAARAAAAAAAAAAAAAAD4YQAAAAAAAAIAAAAVAQAA -/P////////9PYgAAAAAAAAIAAAAfAQAA/P////////8tZQAAAAAAAAIAAAAlAQAA/P// -//////+uZwAAAAAAAAIAAACpAAAA/P////////9waAAAAAAAAAsAAAACAAAAAC4AAAAA -AACsaAAAAAAAAAIAAABrAQAA/P/////////UaQAAAAAAAAIAAAAfAQAA/P/////////+ -aQAAAAAAAAIAAABCAAAA/P////////8JagAAAAAAAAIAAACKAAAA/P////////8sagAA -AAAAAAIAAABQAAAA/P////////9GagAAAAAAAAIAAAB2AAAA/P////////92agAAAAAA -AAIAAABlAQAA/P////////+RagAAAAAAAAIAAAANAAAA/P////////+sagAAAAAAAAIA -AAAEAQAA/P////////98awAAAAAAAAIAAADkAAAA/P////////+qawAAAAAAAAIAAAAf -AQAA/P/////////GawAAAAAAAAIAAAAfAQAA/P/////////3awAAAAAAAAIAAADkAAAA -/P////////9JbAAAAAAAAAIAAAAfAQAA/P////////9ubAAAAAAAAAIAAAAfAQAA/P// -//////+FbAAAAAAAAAIAAADkAAAA/P/////////9bAAAAAAAAAIAAAAfAQAA/P////// -//8cbQAAAAAAAAIAAAAfAQAA/P////////8+bQAAAAAAAAIAAAAfAQAA/P////////+x -bQAAAAAAAAIAAAAfAQAA/P/////////QbQAAAAAAAAIAAAAfAQAA/P/////////9bQAA -AAAAAAIAAAAfAQAA/P////////8nbgAAAAAAAAIAAABCAAAA/P////////9SbgAAAAAA -AAIAAACKAAAA/P////////9gbgAAAAAAAAIAAAAfAQAA/P////////9rbgAAAAAAAAIA -AACKAAAA/P/////////ebgAAAAAAAAIAAAAfAQAA/P/////////1bgAAAAAAAAIAAABC -AAAA/P////////9ecgAAAAAAAAsAAAACAAAAUjMAAAAAAADMcwAAAAAAAAsAAAACAAAA -YDMAAAAAAADRcwAAAAAAAAIAAADWAAAA/P/////////icwAAAAAAAAsAAAACAAAAQDMA -AAAAAADqcwAAAAAAAAIAAADWAAAA/P////////9GdAAAAAAAAAIAAAArAAAA/P////// -//9tdAAAAAAAAAIAAAArAAAA/P/////////6dQAAAAAAAAIAAAArAAAA/P////////8V -dgAAAAAAAAIAAAArAAAA/P////////8tdgAAAAAAAAIAAAArAAAA/P////////+WdgAA -AAAAAAIAAADoAAAA/P/////////MdgAAAAAAAAIAAAArAAAA/P////////9UdwAAAAAA -AAIAAABCAAAA/P////////9sdwAAAAAAAAIAAAAfAQAA/P////////90dwAAAAAAAAIA -AABLAAAA/P/////////MdwAAAAAAAAIAAABNAQAA/P//////////dwAAAAAAAAIAAAAA -AQAA/P////////+IeAAAAAAAAAIAAAAMAQAA/P/////////BeAAAAAAAAAIAAACxAAAA -/P////////8lfAAAAAAAAAIAAACXAAAA/P////////84fAAAAAAAAAIAAAA4AQAA/P// -//////9nfAAAAAAAAAIAAAA4AQAA/P////////+DfAAAAAAAAAIAAAA4AQAA/P////// -//+HfQAAAAAAAAIAAAAfAQAA/P////////++fQAAAAAAAAIAAABCAAAA/P////////+2 -fwAAAAAAAAIAAAArAAAA/P/////////lfwAAAAAAAAIAAADAAAAA/P////////8GgAAA -AAAAAAsAAAACAAAAwDMAAAAAAAAOgAAAAAAAAAIAAADWAAAA/P////////+CgAAAAAAA -AAIAAAB5AQAA/P/////////BgAAAAAAAAAIAAAAfAQAA/P////////9PgQAAAAAAAAIA -AAAfAQAA/P////////+HgQAAAAAAAAIAAAAzAQAA/P/////////mgQAAAAAAAAIAAAAz -AQAA/P////////8hggAAAAAAAAIAAAAzAQAA/P////////+PggAAAAAAAAsAAAACAAAA -UD0AAAAAAADXggAAAAAAAAIAAABfAQAA/P////////8QgwAAAAAAAAIAAAAfAQAA/P// -//////83gwAAAAAAAAIAAAAfAQAA/P////////9vgwAAAAAAAAIAAAAzAQAA/P////// -//+ggwAAAAAAAAIAAABmAQAA/P/////////FgwAAAAAAAAIAAAAzAQAA/P////////8n -hAAAAAAAAAIAAABMAQAA/P////////9ShAAAAAAAAAIAAAB8AAAA/P////////9DhQAA -AAAAAAIAAAAfAQAA/P////////+3hQAAAAAAAAIAAADPAAAA/P////////+HhgAAAAAA -AAIAAAAuAAAA/P////////+chgAAAAAAAAIAAAAUAQAA/P/////////zhgAAAAAAAAIA -AABcAQAA/P////////8BhwAAAAAAAAIAAAAfAQAA/P////////9IjAAAAAAAAAIAAAC9 -AAAA/P////////9vjAAAAAAAAAIAAADWAAAA/P////////+JjAAAAAAAAAIAAADWAAAA -/P/////////TjAAAAAAAAAIAAABCAAAA/P////////+HjQAAAAAAAAIAAAAzAQAA/P// -//////8AjgAAAAAAAAIAAAAqAQAA/P////////8VjgAAAAAAAAIAAAAyAAAA/P////// -//8jjgAAAAAAAAIAAADSAAAA/P////////9EjgAAAAAAAAIAAAAqAQAA/P////////9k -jgAAAAAAAAIAAADBAAAA/P////////81jwAAAAAAAAIAAADyAAAA/P////////9TjwAA -AAAAAAsAAAACAAAAYD0AAAAAAAB+jwAAAAAAAAIAAADWAAAA/P/////////0kAAAAAAA -AAIAAADyAAAA/P////////8ikQAAAAAAAAIAAAAjAAAA/P////////8/kQAAAAAAAAIA -AABDAQAA/P////////+AkQAAAAAAAAIAAAAjAAAA/P////////+xkQAAAAAAAAIAAAAj -AAAA/P/////////kkQAAAAAAAAIAAABDAQAA/P////////81kgAAAAAAAAIAAAAjAAAA -/P////////9mkgAAAAAAAAIAAAAjAAAA/P////////+ZkgAAAAAAAAIAAABDAQAA/P// -///////wkgAAAAAAAAIAAAAjAAAA/P////////9clAAAAAAAAAIAAAACAQAA/P////// -//+LlAAAAAAAAAIAAAAaAAAA/P////////+ZlAAAAAAAAAIAAAAhAQAA/P////////8I -lQAAAAAAAAIAAAAfAQAA/P////////8olQAAAAAAAAIAAAAfAQAA/P////////+MlgAA -AAAAAAsAAACvAAAAAAAAAAAAAACVlgAAAAAAAAsAAAD0AAAAAAAAAAAAAACelgAAAAAA -AAsAAADZAAAAAAAAAAAAAACvlgAAAAAAAAIAAAAVAQAA/P/////////zlgAAAAAAAAIA -AABCAAAA/P////////+SmQAAAAAAAAIAAADoAAAA/P////////97mgAAAAAAAAIAAAB5 -AQAA/P////////9/mwAAAAAAAAIAAAArAAAA/P////////+RmwAAAAAAAAIAAAArAAAA -/P////////+gmwAAAAAAAAsAAAAFAAAAjA0AAAAAAAC+mwAAAAAAAAsAAAAFAAAAmA0A -AAAAAADqmwAAAAAAAAsAAAAFAAAAYAwAAAAAAAAknAAAAAAAAAsAAAACAAAAgD0AAAAA -AABVnAAAAAAAAAsAAAACAAAAoEUAAAAAAACEnAAAAAAAAAsAAAACAAAAQEAAAAAAAACL -nAAAAAAAAAsAAAACAAAAREAAAAAAAAAwnwAAAAAAAAIAAAANAQAA/P/////////VnwAA -AAAAAAIAAAAfAQAA/P//////////nwAAAAAAAAIAAABCAAAA/P////////8KoAAAAAAA -AAIAAAAcAAAA/P////////+CoAAAAAAAAAIAAAD5AAAA/P////////8foQAAAAAAAAIA -AABtAAAA/P////////8roQAAAAAAAAIAAABKAAAA/P////////9boQAAAAAAAAIAAACR -AAAA/P////////92oQAAAAAAAAIAAADGAAAA/P////////+RoQAAAAAAAAIAAAAzAAAA -/P////////8DogAAAAAAAAIAAAA/AQAA/P////////8sogAAAAAAAAIAAAAfAQAA/P// -//////9cogAAAAAAAAIAAAA/AQAA/P/////////vogAAAAAAAAIAAAAfAQAA/P////// -//8kowAAAAAAAAIAAAAfAQAA/P////////96owAAAAAAAAIAAAAfAQAA/P////////+o -owAAAAAAAAIAAAAfAQAA/P////////+/owAAAAAAAAIAAAA/AQAA/P////////+jpAAA -AAAAAAIAAAAcAAAA/P////////+xpAAAAAAAAAIAAAAfAQAA/P////////+8pAAAAAAA -AAIAAAAcAAAA/P////////8opQAAAAAAAAIAAAAfAQAA/P////////8/pQAAAAAAAAIA -AABCAAAA/P////////+FpQAAAAAAAAIAAACBAAAA/P////////+dpQAAAAAAAAsAAAAC -AAAAhEkAAAAAAACqpQAAAAAAAAIAAAArAAAA/P/////////hpQAAAAAAAAIAAAArAAAA -/P////////8JpgAAAAAAAAIAAAArAAAA/P////////8IpwAAAAAAAAIAAAAfAQAA/P// -//////8lpwAAAAAAAAIAAAAtAAAA/P/////////ypwAAAAAAAAIAAABWAQAA/P////// -//8eqAAAAAAAAAsAAAACAAAAyEoAAAAAAACYqQAAAAAAAAsAAAAFAAAA/A0AAAAAAAC3 -qQAAAAAAAAsAAAAFAAAACA4AAAAAAADWqQAAAAAAAAsAAAAFAAAAvA4AAAAAAAB3qgAA -AAAAAAsAAAAFAAAARA4AAAAAAACQqgAAAAAAAAIAAAArAAAA/P////////+vqgAAAAAA -AAsAAAAFAAAAUA4AAAAAAADEqgAAAAAAAAIAAAArAAAA/P/////////mqgAAAAAAAAIA -AAArAAAA/P/////////8qgAAAAAAAAsAAAAFAAAAXA4AAAAAAAARqwAAAAAAAAIAAAAr -AAAA/P////////8vqwAAAAAAAAIAAAArAAAA/P////////9DqwAAAAAAAAsAAAAFAAAA -jA4AAAAAAABmqwAAAAAAAAsAAAAFAAAAwA0AAAAAAACDrAAAAAAAAAIAAABAAAAA/P// -//////9ZrwAAAAAAAAIAAAAUAAAA/P/////////trwAAAAAAAAsAAAAGAAAAAAAAAAAA -AADyrwAAAAAAAAIAAAAMAQAA/P/////////+rwAAAAAAAAsAAAAGAAAAIAEAAAAAAAAD -sAAAAAAAAAIAAAAMAQAA/P////////8KsAAAAAAAAAsAAAAGAAAACAAAAAAAAAARsAAA -AAAAAAsAAAAGAAAAiAAAAAAAAAA0sAAAAAAAAAIAAAAGAAAAAgAAAAAAAAA7sAAAAAAA -AAIAAAAGAAAA/P////////9EsAAAAAAAAAIAAAAGAAAA/v////////9SsAAAAAAAAAIA -AAAGAAAAAgAAAAAAAAB2sAAAAAAAAAIAAAAGAAAAAgAAAAAAAACFsAAAAAAAAAIAAAAG -AAAAAgAAAAAAAACXsAAAAAAAAAIAAAAGAAAAAgAAAAAAAAC6sAAAAAAAAAIAAAAGAAAA -AgAAAAAAAADgsAAAAAAAAAIAAAAGAAAAAgAAAAAAAADusAAAAAAAAAIAAAAGAAAAAgAA -AAAAAAD3sAAAAAAAAAIAAAAGAAAAAgAAAAAAAABksQAAAAAAAAsAAAAGAAAAIAEAAAAA -AACksQAAAAAAAAIAAAAGAAAAAgAAAAAAAABSsgAAAAAAAAsAAAAGAAAAIAEAAAAAAABx -sgAAAAAAAAIAAAAGAAAAAgAAAAAAAACLsgAAAAAAAAsAAAAGAAAAIAEAAAAAAACRsgAA -AAAAAAEAAAAGAAAAHgEAAAAAAAC8sgAAAAAAAAsAAAAGAAAAIgEAAAAAAADDsgAAAAAA -AAsAAAAGAAAAIAEAAAAAAABhswAAAAAAAAsAAAAGAAAAoAEAAAAAAABpswAAAAAAAAIA -AABvAQAA/P////////+qswAAAAAAAAIAAAD+AAAA/P////////8BtQAAAAAAAAsAAAAC -AAAA2EoAAAAAAAAntgAAAAAAAAsAAAACAAAAzEoAAAAAAABOtwAAAAAAAAIAAABkAAAA -/P/////////SugAAAAAAAAIAAAACAAAAIEsAAAAAAADtugAAAAAAAAsAAAACAAAAKEsA -AAAAAACAvAAAAAAAAAsAAAACAAAAKEsAAAAAAACuvAAAAAAAAAsAAAACAAAAIEsAAAAA -AAC1vAAAAAAAAAsAAAACAAAAKEsAAAAAAAADvQAAAAAAAAIAAAACAAAAHEsAAAAAAAAg -vQAAAAAAAAIAAAACAAAAHEsAAAAAAAAtvQAAAAAAAAsAAAACAAAAIEsAAAAAAAA0vQAA -AAAAAAsAAAACAAAAKEsAAAAAAAAsvgAAAAAAAAIAAADgAAAA/P////////8/vgAAAAAA -AAIAAADyAAAA/P////////92vgAAAAAAAAIAAADyAAAA/P////////+hvgAAAAAAAAIA -AADyAAAA/P/////////hvgAAAAAAAAIAAABNAQAA/P////////8UvwAAAAAAAAIAAAAA -AQAA/P////////+6vwAAAAAAAAIAAAAMAQAA/P/////////6vwAAAAAAAAIAAABaAAAA -/P////////94wwAAAAAAAAIAAAAUAQAA/P////////9+wwAAAAAAAAIAAAAuAAAA/P// -//////+PwwAAAAAAAAIAAACzAAAA/P////////+ExQAAAAAAAAIAAABcAQAA/P////// -//+SxQAAAAAAAAIAAAAfAQAA/P////////+qxwAAAAAAAAIAAAArAAAA/P////////+9 -yAAAAAAAAAIAAADAAAAA/P/////////jyAAAAAAAAAsAAAACAAAAQEwAAAAAAADryAAA -AAAAAAIAAADWAAAA/P////////+wyQAAAAAAAAIAAABHAAAA/P/////////byQAAAAAA -AAIAAABnAQAA/P/////////syQAAAAAAAAIAAAByAQAA/P////////9dygAAAAAAAAIA -AAAZAAAA/P////////+DygAAAAAAAAIAAAA8AAAA/P////////8fywAAAAAAAAIAAABx -AQAA/P////////97ywAAAAAAAAIAAABxAQAA/P////////+hywAAAAAAAAIAAABxAQAA -/P/////////UywAAAAAAAAIAAABxAQAA/P////////8YzAAAAAAAAAIAAABxAQAA/P// -//////+EzAAAAAAAAAsAAAACAAAA0FUAAAAAAACLzAAAAAAAAAsAAAACAAAA1lUAAAAA -AADXzAAAAAAAAAIAAABfAQAA/P////////8SzQAAAAAAAAIAAAAfAQAA/P////////8a -zQAAAAAAAAIAAAA8AAAA/P////////85zQAAAAAAAAIAAAAfAQAA/P////////9ozQAA -AAAAAAIAAABxAQAA/P////////+LzQAAAAAAAAIAAAAbAQAA/P////////+nzQAAAAAA -AAIAAACcAAAA/P/////////FzQAAAAAAAAIAAABuAQAA/P/////////SzQAAAAAAAAIA -AABUAQAA/P/////////izQAAAAAAAAIAAAAHAQAA/P////////8HzgAAAAAAAAIAAABx -AQAA/P////////9lzgAAAAAAAAIAAAClAAAA/P////////9+zgAAAAAAAAIAAAB4AAAA -/P////////+nzgAAAAAAAAIAAABpAAAA/P/////////RzgAAAAAAAAIAAABnAQAA/P// -///////ZzgAAAAAAAAIAAAB8AAAA/P/////////HzwAAAAAAAAIAAAAfAQAA/P////// -//8b0wAAAAAAAAIAAAAuAAAA/P////////8w0wAAAAAAAAIAAAAUAQAA/P////////+d -0wAAAAAAAAIAAAB7AQAA/P////////+r0wAAAAAAAAIAAAAfAQAA/P////////901QAA -AAAAAAIAAABCAAAA/P////////+T1gAAAAAAAAIAAADIAAAA/P////////8h2gAAAAAA -AAsAAAACAAAA4FUAAAAAAADP2wAAAAAAAAIAAAARAQAA/P/////////93AAAAAAAAAIA -AAARAQAA/P////////9D3QAAAAAAAAIAAADWAAAA/P////////9d3QAAAAAAAAIAAADW -AAAA/P/////////w3gAAAAAAAAsAAAACAAAAIFYAAAAAAAAT3wAAAAAAAAIAAADWAAAA -/P////////944gAAAAAAAAIAAAAjAAAA/P////////+Z4gAAAAAAAAIAAABDAQAA/P// -///////a4gAAAAAAAAIAAAAjAAAA/P////////8L4wAAAAAAAAIAAAAjAAAA/P////// -//8+4wAAAAAAAAIAAABDAQAA/P////////+P4wAAAAAAAAIAAAAjAAAA/P/////////A -4wAAAAAAAAIAAAAjAAAA/P/////////z4wAAAAAAAAIAAABDAQAA/P////////9K5AAA -AAAAAAIAAAAjAAAA/P////////9e5AAAAAAAAAIAAAAiAAAA/P////////+O5AAAAAAA -AAIAAAAVAAAA/P/////////I5QAAAAAAAAIAAAAVAAAA/P////////+k5gAAAAAAAAsA -AAACAAAAQFYAAAAAAAAz5wAAAAAAAAIAAAACAQAA/P/////////H5wAAAAAAAAIAAAAa -AAAA/P/////////V5wAAAAAAAAIAAAAhAQAA/P////////8R6AAAAAAAAAIAAAAfAQAA -/P////////8x6AAAAAAAAAIAAAAfAQAA/P////////+56QAAAAAAAAsAAAAoAAAAAAAA -AAAAAADC6QAAAAAAAAsAAACeAAAAAAAAAAAAAADL6QAAAAAAAAsAAAA2AQAAAAAAAAAA -AADU6QAAAAAAAAsAAACLAAAAAAAAAAAAAADd6QAAAAAAAAsAAABBAQAAAAAAAAAAAADu -6QAAAAAAAAIAAAAVAQAA/P////////8z6gAAAAAAAAIAAABCAAAA/P////////9c6gAA -AAAAAAIAAAAsAAAA/P////////9k6gAAAAAAAAIAAADMAAAA/P////////+C6gAAAAAA -AAIAAAB6AAAA/P////////997AAAAAAAAAIAAACGAAAA/P////////957QAAAAAAAAIA -AABnAQAA/P////////+R7QAAAAAAAAIAAADoAAAA/P////////9U7gAAAAAAAAIAAABW -AAAA/P////////9c7gAAAAAAAAIAAABEAAAA/P////////9n7gAAAAAAAAIAAAByAQAA -/P////////9E7wAAAAAAAAsAAAACAAAA4FYAAAAAAABT7wAAAAAAAAsAAAACAAAA4FYA -AAAAAABp7wAAAAAAAAIAAAAfAQAA/P////////9/7wAAAAAAAAsAAAACAAAAQFkAAAAA -AACj7wAAAAAAAAsAAAACAAAARFkAAAAAAAC57wAAAAAAAAIAAAAfAQAA/P/////////j -7wAAAAAAAAIAAABVAAAA/P////////8L8QAAAAAAAAIAAABSAAAA/P////////9R8QAA -AAAAAAIAAADxAAAA/P////////9e8QAAAAAAAAIAAAAsAQAA/P////////8C8gAAAAAA -AAIAAAAiAAAA/P////////9N8wAAAAAAAAIAAAAfAQAA/P////////8L9AAAAAAAAAIA -AACCAAAA/P////////9j9AAAAAAAAAIAAAAOAAAA/P////////9v9AAAAAAAAAIAAACq -AAAA/P////////+G9AAAAAAAAAIAAABCAAAA/P////////+g9AAAAAAAAAIAAACQAAAA -/P/////////O9AAAAAAAAAIAAAA6AAAA/P/////////n9AAAAAAAAAIAAAApAAAA/P// -//////8A9QAAAAAAAAIAAAA+AAAA/P/////////q9QAAAAAAAAIAAABnAQAA/P////// -//9S9gAAAAAAAAIAAABnAQAA/P////////9y9wAAAAAAAAIAAAAfAQAA/P////////+M -9wAAAAAAAAIAAAAfAQAA/P/////////a9wAAAAAAAAIAAADoAAAA/P/////////M+QAA -AAAAAAIAAAAfAQAA/P/////////j+QAAAAAAAAIAAABCAAAA/P////////8N+gAAAAAA -AAIAAABnAQAA/P/////////O+gAAAAAAAAIAAABfAAAA/P////////+v+wAAAAAAAAIA -AAArAAAA/P/////////e/AAAAAAAAAIAAAC+AAAA/P////////+pAAEAAAAAAAIAAABS -AAAA/P/////////WAAEAAAAAAAIAAAAMAQAA/P/////////nAAEAAAAAAAIAAAAMAQAA -/P////////8YAQEAAAAAAAsAAAACAAAAeF8AAAAAAAAKBAEAAAAAAAIAAABvAQAA/P// -//////8wBAEAAAAAAAIAAAAUAAAA/P/////////ABQEAAAAAAAIAAAD+AAAA/P////// -///cCAEAAAAAAAIAAADWAAAA/P////////8kCgEAAAAAAAIAAAA+AQAA/P////////9l -CwEAAAAAAAIAAAA+AQAA/P/////////1DAEAAAAAAAIAAAACAAAAIGEAAAAAAAAJDQEA -AAAAAAsAAAACAAAAKGEAAAAAAAApDQEAAAAAAAIAAAACAAAAoF8AAAAAAAA5DQEAAAAA -AAsAAAACAAAAqF8AAAAAAACzDwEAAAAAAAsAAAACAAAAoF8AAAAAAAC6DwEAAAAAAAsA -AAACAAAAIGEAAAAAAABrEQEAAAAAAAIAAAArAAAA/P////////8wEgEAAAAAAAIAAABT -AAAA/P////////9yEgEAAAAAAAIAAABeAAAA/P////////+eEgEAAAAAAAIAAABTAAAA -/P/////////uEgEAAAAAAAIAAABeAAAA/P////////8qEwEAAAAAAAIAAABeAAAA/P// -//////9+EwEAAAAAAAIAAADIAAAA/P/////////bEwEAAAAAAAIAAADIAAAA/P////// -//8rFAEAAAAAAAIAAABNAQAA/P////////9oFAEAAAAAAAIAAAAAAQAA/P////////9C -FQEAAAAAAAIAAAAMAQAA/P////////+CFQEAAAAAAAIAAABPAAAA/P/////////nGAEA -AAAAAAIAAAAUAQAA/P/////////tGAEAAAAAAAIAAAAuAAAA/P/////////8GAEAAAAA -AAIAAACzAAAA/P/////////dGgEAAAAAAAIAAAB7AQAA/P/////////rGgEAAAAAAAIA -AAAfAQAA/P////////91GwEAAAAAAAIAAADIAAAA/P////////9FHAEAAAAAAAIAAADI -AAAA/P////////+AHwEAAAAAAAIAAABoAQAA/P/////////gHwEAAAAAAAIAAABoAQAA -/P////////+cIAEAAAAAAAIAAAAMAQAA/P////////9RIQEAAAAAAAIAAAAsAAAA/P// -//////9+IQEAAAAAAAIAAAB6AAAA/P/////////BIQEAAAAAAAsAAAACAAAAkGIAAAAA -AABAJgEAAAAAAAIAAABoAQAA/P/////////oJgEAAAAAAAIAAACVAAAA/P////////8R -JwEAAAAAAAIAAACVAAAA/P////////8nJwEAAAAAAAIAAAAKAQAA/P////////9HJwEA -AAAAAAIAAACVAAAA/P////////9fJwEAAAAAAAIAAACVAAAA/P/////////rJwEAAAAA -AAIAAAAKAQAA/P////////8LKAEAAAAAAAIAAACVAAAA/P////////93KAEAAAAAAAIA -AACVAAAA/P////////+JKAEAAAAAAAIAAACVAAAA/P////////+bKAEAAAAAAAIAAACV -AAAA/P////////+tKAEAAAAAAAIAAACVAAAA/P////////+/KAEAAAAAAAIAAACVAAAA -/P/////////HKAEAAAAAAAIAAABYAQAA/P/////////XKAEAAAAAAAIAAADLAAAA/P// -///////7KAEAAAAAAAIAAACVAAAA/P////////8SKQEAAAAAAAIAAACVAAAA/P////// -//8rKQEAAAAAAAIAAACVAAAA/P////////9CKQEAAAAAAAIAAACVAAAA/P////////9Z -KQEAAAAAAAIAAACVAAAA/P////////9sKQEAAAAAAAIAAABYAQAA/P////////98KQEA -AAAAAAIAAADLAAAA/P////////+yKQEAAAAAAAIAAABYAQAA/P/////////CKQEAAAAA -AAIAAADLAAAA/P/////////8KQEAAAAAAAIAAABoAQAA/P////////9oKwEAAAAAAAIA -AACVAAAA/P////////9SLAEAAAAAAAIAAABoAQAA/P////////+ILAEAAAAAAAsAAAAC -AAAAwGIAAAAAAACPLAEAAAAAAAsAAAAEAAAAAAAAAAAAAACcLAEAAAAAAAIAAAB1AQAA -/P/////////TLAEAAAAAAAsAAAACAAAAwGIAAAAAAADaLAEAAAAAAAsAAAAEAAAAQAAA -AAAAAADnLAEAAAAAAAIAAAB1AQAA/P////////9SLgEAAAAAAAsAAAACAAAA4GIAAAAA -AACCLgEAAAAAAAIAAAAfAQAA/P////////+YLgEAAAAAAAsAAAACAAAAQGQAAAAAAACk -LgEAAAAAAAsAAAACAAAARGQAAAAAAAC4LgEAAAAAAAIAAAAfAQAA/P/////////LLgEA -AAAAAAsAAAACAAAAIGgAAAAAAAD5LgEAAAAAAAIAAAAfAQAA/P////////8tLwEAAAAA -AAIAAACBAAAA/P////////9FLwEAAAAAAAsAAAACAAAAxG4AAAAAAABSLwEAAAAAAAIA -AAArAAAA/P////////+yLwEAAAAAAAIAAAArAAAA/P/////////aLwEAAAAAAAIAAAAr -AAAA/P////////9QMAEAAAAAAAsAAAACAAAACHAAAAAAAACxMgEAAAAAAAsAAAACAAAA -gGYAAAAAAADyMgEAAAAAAAIAAABwAAAA/P////////8NMwEAAAAAAAIAAABwAAAA/P// -//////8gMwEAAAAAAAsAAAACAAAAgGYAAAAAAAA9MwEAAAAAAAIAAAAfAQAA/P////// -//9TMwEAAAAAAAsAAAACAAAAIGsAAAAAAABeMwEAAAAAAAsAAAACAAAAJGsAAAAAAABz -MwEAAAAAAAIAAAAfAQAA/P////////+DMwEAAAAAAAsAAAACAAAAMGsAAAAAAAC1MwEA -AAAAAAIAAAAfAQAA/P/////////FMwEAAAAAAAsAAAACAAAAUGsAAAAAAAD3MwEAAAAA -AAIAAAAfAQAA/P////////8NNAEAAAAAAAsAAAACAAAAgGsAAAAAAABgNAEAAAAAAAIA -AABwAAAA/P////////+ANAEAAAAAAAIAAABwAAAA/P////////+iNAEAAAAAAAIAAABw -AAAA/P////////+/NAEAAAAAAAIAAABwAAAA/P/////////cNAEAAAAAAAIAAABwAAAA -/P/////////5NAEAAAAAAAIAAABwAAAA/P////////8MNQEAAAAAAAsAAAACAAAAgGsA -AAAAAAApNQEAAAAAAAIAAAAfAQAA/P////////9CNQEAAAAAAAsAAAACAAAAIG0AAAAA -AAB9NQEAAAAAAAIAAABwAAAA/P////////+aNQEAAAAAAAIAAABwAAAA/P////////+t -NQEAAAAAAAsAAAACAAAAIG0AAAAAAADKNQEAAAAAAAIAAAAfAQAA/P////////9oNwEA -AAAAAAIAAAAMAQAA/P////////+FOgEAAAAAAAIAAAA+AQAA/P////////8vPAEAAAAA -AAIAAAA+AQAA/P////////9OPAEAAAAAAAIAAAB8AAAA/P////////9vPAEAAAAAAAIA -AAB8AAAA/P////////+aPAEAAAAAAAIAAADAAAAA/P////////+6PAEAAAAAAAIAAADA -AAAA/P/////////fPAEAAAAAAAsAAAABAAAAODwBAAAAAADqPAEAAAAAAAsAAAABAAAA -NC4BAAAAAAD1PAEAAAAAAAsAAAABAAAAPzABAAAAAAAAPQEAAAAAAAsAAAABAAAAEy8B -AAAAAAALPQEAAAAAAAsAAAABAAAAejABAAAAAAAWPQEAAAAAAAsAAAABAAAAezYBAAAA -AABOPQEAAAAAAAsAAAACAAAAYHAAAAAAAAB+PQEAAAAAAAIAAAAfAQAA/P////////+U -PQEAAAAAAAsAAAACAAAA4HEAAAAAAACgPQEAAAAAAAsAAAACAAAA5HEAAAAAAAC0PQEA -AAAAAAIAAAAfAQAA/P/////////HPQEAAAAAAAsAAAACAAAAAHQAAAAAAAD1PQEAAAAA -AAIAAAAfAQAA/P/////////mPgEAAAAAAAIAAAArAAAA/P////////9jPwEAAAAAAAIA -AAArAAAA/P////////+8PwEAAAAAAAIAAAArAAAA/P////////8WQAEAAAAAAAIAAAAr -AAAA/P////////8nQAEAAAAAAAIAAAArAAAA/P////////+UQAEAAAAAAAsAAAACAAAA -WHwAAAAAAABvQgEAAAAAAAsAAAACAAAABHcAAAAAAACPQgEAAAAAAAsAAAACAAAAEHcA -AAAAAAC4QgEAAAAAAAsAAAACAAAAMHcAAAAAAADhQgEAAAAAAAsAAAACAAAAYHcAAAAA -AAAaQwEAAAAAAAIAAABwAAAA/P////////86QwEAAAAAAAIAAABwAAAA/P////////9b -QwEAAAAAAAIAAABwAAAA/P////////+KQwEAAAAAAAIAAABwAAAA/P////////+uQwEA -AAAAAAIAAABwAAAA/P/////////SQwEAAAAAAAIAAABwAAAA/P/////////2QwEAAAAA -AAIAAABwAAAA/P////////8aRAEAAAAAAAIAAABwAAAA/P////////8+RAEAAAAAAAIA -AABwAAAA/P////////9mRAEAAAAAAAIAAABwAAAA/P////////+ZRAEAAAAAAAIAAABw -AAAA/P////////+2RAEAAAAAAAIAAABwAAAA/P////////8DRQEAAAAAAAIAAABwAAAA -/P////////8gRQEAAAAAAAIAAABwAAAA/P////////89RQEAAAAAAAIAAABwAAAA/P// -//////9aRQEAAAAAAAIAAABwAAAA/P////////+KRQEAAAAAAAIAAABwAAAA/P////// -//+nRQEAAAAAAAIAAABwAAAA/P/////////ERQEAAAAAAAIAAABwAAAA/P/////////h -RQEAAAAAAAIAAABwAAAA/P/////////+RQEAAAAAAAIAAABwAAAA/P////////8QRgEA -AAAAAAsAAAACAAAAIHsAAAAAAABaRgEAAAAAAAIAAABwAAAA/P////////97RgEAAAAA -AAIAAABwAAAA/P////////+KRgEAAAAAAAsAAAACAAAAAHcAAAAAAACoRgEAAAAAAAIA -AAAfAQAA/P////////+/RgEAAAAAAAsAAAACAAAAEHcAAAAAAADdRgEAAAAAAAIAAAAf -AQAA/P/////////0RgEAAAAAAAsAAAACAAAAMHcAAAAAAAASRwEAAAAAAAIAAAAfAQAA -/P////////8pRwEAAAAAAAsAAAACAAAAYHcAAAAAAABHRwEAAAAAAAIAAAAfAQAA/P// -//////9hRwEAAAAAAAsAAAACAAAAIHsAAAAAAACCRwEAAAAAAAIAAAAfAQAA/P////// -///DSQEAAAAAAAIAAADWAAAA/P/////////WSQEAAAAAAAIAAADWAAAA/P////////9M -SgEAAAAAAAIAAADWAAAA/P////////9fSgEAAAAAAAIAAADWAAAA/P////////+xSgEA -AAAAAAIAAADWAAAA/P/////////fSgEAAAAAAAIAAADWAAAA/P/////////ySgEAAAAA -AAIAAADWAAAA/P////////9ASwEAAAAAAAIAAADWAAAA/P////////+5UQEAAAAAAAIA -AAB8AAAA/P/////////aUQEAAAAAAAIAAAB8AAAA/P////////8FUgEAAAAAAAIAAADA -AAAA/P////////8lUgEAAAAAAAIAAADAAAAA/P////////9UUgEAAAAAAAsAAAABAAAA -o1EBAAAAAABfUgEAAAAAAAsAAAABAAAAMD0BAAAAAABqUgEAAAAAAAsAAAABAAAAg0AB -AAAAAAB1UgEAAAAAAAsAAAABAAAADz4BAAAAAACAUgEAAAAAAAsAAAABAAAAuUABAAAA -AACLUgEAAAAAAAsAAAABAAAArEcBAAAAAADCUgEAAAAAAAsAAAACAAAAoHwAAAAAAADy -UgEAAAAAAAIAAAAfAQAA/P////////8IUwEAAAAAAAsAAAACAAAAIH4AAAAAAAAUUwEA -AAAAAAsAAAACAAAAJH4AAAAAAAAoUwEAAAAAAAIAAAAfAQAA/P////////8+UwEAAAAA -AAsAAAACAAAAgIIAAAAAAABsUwEAAAAAAAIAAAAfAQAA/P////////9dVAEAAAAAAAIA -AAArAAAA/P/////////aVAEAAAAAAAIAAAArAAAA/P////////8zVQEAAAAAAAIAAAAr -AAAA/P////////+NVQEAAAAAAAIAAAArAAAA/P////////+eVQEAAAAAAAIAAAArAAAA -/P////////9/VgEAAAAAAAsAAAACAAAAhIUAAAAAAACdVgEAAAAAAAsAAAACAAAAkIUA -AAAAAADFVgEAAAAAAAsAAAACAAAAsIUAAAAAAADtVgEAAAAAAAsAAAACAAAA4IUAAAAA -AAAoVwEAAAAAAAIAAABwAAAA/P////////9FVwEAAAAAAAIAAABwAAAA/P////////9V -VwEAAAAAAAsAAAACAAAAgIgAAAAAAAB+VwEAAAAAAAsAAAACAAAAgIUAAAAAAACbVwEA -AAAAAAIAAAAfAQAA/P////////+yVwEAAAAAAAsAAAACAAAAkIUAAAAAAADQVwEAAAAA -AAIAAAAfAQAA/P/////////nVwEAAAAAAAsAAAACAAAAsIUAAAAAAAAFWAEAAAAAAAIA -AAAfAQAA/P////////8cWAEAAAAAAAsAAAACAAAA4IUAAAAAAAA6WAEAAAAAAAIAAAAf -AQAA/P////////9UWAEAAAAAAAsAAAACAAAAgIgAAAAAAAByWAEAAAAAAAIAAAAfAQAA -/P////////+tWAEAAAAAAAsAAAACAAAAyIgAAAAAAAARYQEAAAAAAAIAAAB8AAAA/P// -//////8yYQEAAAAAAAIAAAB8AAAA/P////////9dYQEAAAAAAAIAAADAAAAA/P////// -//99YQEAAAAAAAIAAADAAAAA/P////////+iYQEAAAAAAAsAAAABAAAA+2ABAAAAAACt -YQEAAAAAAAsAAAABAAAApFIBAAAAAAC4YQEAAAAAAAsAAAABAAAAnFgBAAAAAADDYQEA -AAAAAAsAAAABAAAAhlMBAAAAAADOYQEAAAAAAAsAAAABAAAA+lUBAAAAAADZYQEAAAAA -AAsAAAABAAAAcV8BAAAAAAAAAAAAAAAAAAEAAAABAAAATAYAAAAAAAAIAAAAAAAAAAEA -AAABAAAA4QYAAAAAAAAQAAAAAAAAAAEAAAABAAAA4QYAAAAAAAAYAAAAAAAAAAEAAAAB -AAAA4QYAAAAAAAAgAAAAAAAAAAEAAAABAAAA5wYAAAAAAAAoAAAAAAAAAAEAAAABAAAA -4QYAAAAAAAAwAAAAAAAAAAEAAAABAAAAVQYAAAAAAAA4AAAAAAAAAAEAAAABAAAAYgYA -AAAAAABAAAAAAAAAAAEAAAABAAAA5wYAAAAAAABIAAAAAAAAAAEAAAABAAAAaQYAAAAA -AABQAAAAAAAAAAEAAAABAAAAcAYAAAAAAABYAAAAAAAAAAEAAAABAAAAoQYAAAAAAABg -AAAAAAAAAAEAAAABAAAAgwYAAAAAAABoAAAAAAAAAAEAAAABAAAAlQYAAAAAAABwAAAA -AAAAAAEAAAABAAAAmwYAAAAAAAB4AAAAAAAAAAEAAAABAAAAqQYAAAAAAABIAQAAAAAA -AAEAAAADAAAAnwAAAAAAAABQAQAAAAAAAAEAAAADAAAAogAAAAAAAABwAQAAAAAAAAEA -AAADAAAAqAAAAAAAAAB4AQAAAAAAAAEAAAADAAAAqwAAAAAAAACYAQAAAAAAAAEAAAAD -AAAAugAAAAAAAACgAQAAAAAAAAEAAAADAAAAvQAAAAAAAADAAQAAAAAAAAEAAAADAAAA -xQAAAAAAAADIAQAAAAAAAAEAAAADAAAAyAAAAAAAAADoAQAAAAAAAAEAAAADAAAA0AAA -AAAAAADwAQAAAAAAAAEAAAADAAAA0wAAAAAAAAAQAgAAAAAAAAEAAAADAAAA3QAAAAAA -AAAYAgAAAAAAAAEAAAADAAAA4AAAAAAAAAA4AgAAAAAAAAEAAAADAAAA6AAAAAAAAABA -AgAAAAAAAAEAAAADAAAA6wAAAAAAAABgAgAAAAAAAAEAAAADAAAA9QAAAAAAAABoAgAA -AAAAAAEAAAADAAAA+AAAAAAAAACIAgAAAAAAAAEAAAADAAAAAAEAAAAAAACQAgAAAAAA -AAEAAAADAAAAAwEAAAAAAACwAgAAAAAAAAEAAAADAAAADgEAAAAAAAC4AgAAAAAAAAEA -AAADAAAAEQEAAAAAAADYAgAAAAAAAAEAAAADAAAAGQEAAAAAAADgAgAAAAAAAAEAAAAD -AAAAHAEAAAAAAAAAAwAAAAAAAAEAAAADAAAAJAEAAAAAAAAIAwAAAAAAAAEAAAADAAAA -JwEAAAAAAAAoAwAAAAAAAAEAAAADAAAALwEAAAAAAAAwAwAAAAAAAAEAAAADAAAAMgEA -AAAAAABQAwAAAAAAAAEAAAADAAAAOQEAAAAAAABYAwAAAAAAAAEAAAADAAAAPAEAAAAA -AAB4AwAAAAAAAAEAAAADAAAAQwEAAAAAAACAAwAAAAAAAAEAAAADAAAARgEAAAAAAACg -AwAAAAAAAAEAAAADAAAATQEAAAAAAACoAwAAAAAAAAEAAAADAAAAUAEAAAAAAADIAwAA -AAAAAAEAAAADAAAAYgEAAAAAAADQAwAAAAAAAAEAAAADAAAAZQEAAAAAAADwAwAAAAAA -AAEAAAADAAAAbgEAAAAAAAD4AwAAAAAAAAEAAAADAAAAcQEAAAAAAAAYBAAAAAAAAAEA -AAADAAAAeAEAAAAAAAAgBAAAAAAAAAEAAAADAAAAewEAAAAAAABABAAAAAAAAAEAAAAD -AAAAgQEAAAAAAABIBAAAAAAAAAEAAAADAAAAhAEAAAAAAABoBAAAAAAAAAEAAAADAAAA -igEAAAAAAABwBAAAAAAAAAEAAAADAAAAjQEAAAAAAACQBAAAAAAAAAEAAAADAAAAlgEA -AAAAAACYBAAAAAAAAAEAAAADAAAAmQEAAAAAAAC4BAAAAAAAAAEAAAADAAAApAEAAAAA -AADABAAAAAAAAAEAAAADAAAApwEAAAAAAADgBAAAAAAAAAEAAAADAAAArwEAAAAAAADo -BAAAAAAAAAEAAAADAAAAsgEAAAAAAAAIBQAAAAAAAAEAAAADAAAAuQEAAAAAAAAQBQAA -AAAAAAEAAAADAAAAvAEAAAAAAAAwBQAAAAAAAAEAAAADAAAAywEAAAAAAAA4BQAAAAAA -AAEAAAADAAAAzgEAAAAAAABYBQAAAAAAAAEAAAADAAAA1gEAAAAAAABgBQAAAAAAAAEA -AAADAAAA2QEAAAAAAACABQAAAAAAAAEAAAADAAAA7AEAAAAAAACIBQAAAAAAAAEAAAAD -AAAA7wEAAAAAAACoBQAAAAAAAAEAAAADAAAA9wEAAAAAAACwBQAAAAAAAAEAAAADAAAA -+gEAAAAAAADQBQAAAAAAAAEAAAADAAAAAAIAAAAAAADYBQAAAAAAAAEAAAADAAAAAwIA -AAAAAAD4BQAAAAAAAAEAAAADAAAADwIAAAAAAAAABgAAAAAAAAEAAAADAAAAEgIAAAAA -AAAgBgAAAAAAAAEAAAADAAAAGgIAAAAAAAAoBgAAAAAAAAEAAAADAAAAHQIAAAAAAABI -BgAAAAAAAAEAAAADAAAAJQIAAAAAAABQBgAAAAAAAAEAAAADAAAAKAIAAAAAAABwBgAA -AAAAAAEAAAADAAAALwIAAAAAAAB4BgAAAAAAAAEAAAADAAAAMgIAAAAAAACYBgAAAAAA -AAEAAAADAAAAPQIAAAAAAACgBgAAAAAAAAEAAAADAAAAQAIAAAAAAADABgAAAAAAAAEA -AAADAAAASAIAAAAAAADIBgAAAAAAAAEAAAADAAAASwIAAAAAAADoBgAAAAAAAAEAAAAD -AAAAUwIAAAAAAADwBgAAAAAAAAEAAAADAAAAVgIAAAAAAAAQBwAAAAAAAAEAAAADAAAA -XQIAAAAAAAAYBwAAAAAAAAEAAAADAAAAYAIAAAAAAAA4BwAAAAAAAAEAAAADAAAAagIA -AAAAAABABwAAAAAAAAEAAAADAAAAbQIAAAAAAABgBwAAAAAAAAEAAAADAAAAdgIAAAAA -AABoBwAAAAAAAAEAAAADAAAAeQIAAAAAAACIBwAAAAAAAAEAAAADAAAAgwIAAAAAAACQ -BwAAAAAAAAEAAAADAAAAhgIAAAAAAACwBwAAAAAAAAEAAAADAAAAjgIAAAAAAAC4BwAA -AAAAAAEAAAADAAAAkQIAAAAAAADYBwAAAAAAAAEAAAADAAAAmQIAAAAAAADgBwAAAAAA -AAEAAAADAAAAnAIAAAAAAAAACAAAAAAAAAEAAAADAAAAogIAAAAAAAAICAAAAAAAAAEA -AAADAAAApQIAAAAAAAAoCAAAAAAAAAEAAAADAAAArwIAAAAAAAAwCAAAAAAAAAEAAAAD -AAAAsgIAAAAAAABQCAAAAAAAAAEAAAADAAAAtwIAAAAAAABYCAAAAAAAAAEAAAADAAAA -ugIAAAAAAAB4CAAAAAAAAAEAAAADAAAAwgIAAAAAAACACAAAAAAAAAEAAAADAAAAxQIA -AAAAAACgCAAAAAAAAAEAAAADAAAAzAIAAAAAAACoCAAAAAAAAAEAAAADAAAAzwIAAAAA -AADICAAAAAAAAAEAAAADAAAA1QIAAAAAAADQCAAAAAAAAAEAAAADAAAA2AIAAAAAAADw -CAAAAAAAAAEAAAADAAAA3gIAAAAAAAD4CAAAAAAAAAEAAAADAAAA4QIAAAAAAAAYCQAA -AAAAAAEAAAADAAAA6AIAAAAAAAAgCQAAAAAAAAEAAAADAAAA6wIAAAAAAABACQAAAAAA -AAEAAAADAAAA8gIAAAAAAABICQAAAAAAAAEAAAADAAAA9QIAAAAAAABoCQAAAAAAAAEA -AAADAAAA/AIAAAAAAABwCQAAAAAAAAEAAAADAAAA/wIAAAAAAACQCQAAAAAAAAEAAAAD -AAAABgMAAAAAAACYCQAAAAAAAAEAAAADAAAACQMAAAAAAAC4CQAAAAAAAAEAAAADAAAA -EAMAAAAAAADACQAAAAAAAAEAAAADAAAAEwMAAAAAAADgCQAAAAAAAAEAAAADAAAAGgMA -AAAAAADoCQAAAAAAAAEAAAADAAAAHQMAAAAAAAAICgAAAAAAAAEAAAADAAAAKAMAAAAA -AAAQCgAAAAAAAAEAAAADAAAAKwMAAAAAAAAwCgAAAAAAAAEAAAADAAAANwMAAAAAAAA4 -CgAAAAAAAAEAAAADAAAAOgMAAAAAAABYCgAAAAAAAAEAAAADAAAASQMAAAAAAABgCgAA -AAAAAAEAAAADAAAATAMAAAAAAACACgAAAAAAAAEAAAADAAAAXAMAAAAAAACICgAAAAAA -AAEAAAADAAAAXwMAAAAAAACoCgAAAAAAAAEAAAADAAAAZgMAAAAAAACwCgAAAAAAAAEA -AAADAAAAaQMAAAAAAADQCgAAAAAAAAEAAAADAAAAcAMAAAAAAADYCgAAAAAAAAEAAAAD -AAAAcwMAAAAAAAD4CgAAAAAAAAEAAAADAAAAewMAAAAAAAAACwAAAAAAAAEAAAADAAAA -fgMAAAAAAAAgCwAAAAAAAAEAAAADAAAAjAMAAAAAAAAoCwAAAAAAAAEAAAADAAAAjwMA -AAAAAABICwAAAAAAAAEAAAADAAAAmQMAAAAAAABQCwAAAAAAAAEAAAADAAAAnAMAAAAA -AABwCwAAAAAAAAEAAAADAAAApwMAAAAAAAB4CwAAAAAAAAEAAAADAAAAqgMAAAAAAACY -CwAAAAAAAAEAAAADAAAAsAMAAAAAAACgCwAAAAAAAAEAAAADAAAAswMAAAAAAADACwAA -AAAAAAEAAAADAAAAvQMAAAAAAADICwAAAAAAAAEAAAADAAAAwAMAAAAAAADoCwAAAAAA -AAEAAAADAAAAyQMAAAAAAADwCwAAAAAAAAEAAAADAAAAzAMAAAAAAAAQDAAAAAAAAAEA -AAADAAAA0wMAAAAAAAAYDAAAAAAAAAEAAAADAAAA1gMAAAAAAAA4DAAAAAAAAAEAAAAD -AAAA3QMAAAAAAABADAAAAAAAAAEAAAADAAAA4AMAAAAAAABgDAAAAAAAAAEAAAADAAAA -6AMAAAAAAABoDAAAAAAAAAEAAAADAAAA6wMAAAAAAACIDAAAAAAAAAEAAAADAAAA9wMA -AAAAAACQDAAAAAAAAAEAAAADAAAA+gMAAAAAAACwDAAAAAAAAAEAAAADAAAABgQAAAAA -AAC4DAAAAAAAAAEAAAADAAAACQQAAAAAAADYDAAAAAAAAAEAAAADAAAAEAQAAAAAAADg -DAAAAAAAAAEAAAADAAAAEwQAAAAAAAAADQAAAAAAAAEAAAADAAAAGAQAAAAAAAAIDQAA -AAAAAAEAAAADAAAAGwQAAAAAAAAoDQAAAAAAAAEAAAADAAAAJAQAAAAAAAAwDQAAAAAA -AAEAAAADAAAAJwQAAAAAAABQDQAAAAAAAAEAAAADAAAALgQAAAAAAABYDQAAAAAAAAEA -AAADAAAAMQQAAAAAAAB4DQAAAAAAAAEAAAADAAAANgQAAAAAAACADQAAAAAAAAEAAAAD -AAAAOQQAAAAAAACgDQAAAAAAAAEAAAADAAAARQQAAAAAAACoDQAAAAAAAAEAAAADAAAA -SAQAAAAAAADIDQAAAAAAAAEAAAADAAAATwQAAAAAAADQDQAAAAAAAAEAAAADAAAAUgQA -AAAAAADwDQAAAAAAAAEAAAADAAAAWwQAAAAAAAD4DQAAAAAAAAEAAAADAAAAXgQAAAAA -AAAYDgAAAAAAAAEAAAADAAAAagQAAAAAAAAgDgAAAAAAAAEAAAADAAAAbQQAAAAAAABA -DgAAAAAAAAEAAAADAAAAcwQAAAAAAABIDgAAAAAAAAEAAAADAAAAdgQAAAAAAABoDgAA -AAAAAAEAAAADAAAAfgQAAAAAAABwDgAAAAAAAAEAAAADAAAAgQQAAAAAAACQDgAAAAAA -AAEAAAADAAAAiAQAAAAAAACYDgAAAAAAAAEAAAADAAAAiwQAAAAAAAC4DgAAAAAAAAEA -AAADAAAAmAQAAAAAAADADgAAAAAAAAEAAAADAAAAmwQAAAAAAADgDgAAAAAAAAEAAAAD -AAAApQQAAAAAAADoDgAAAAAAAAEAAAADAAAAqAQAAAAAAAAIDwAAAAAAAAEAAAADAAAA -uAQAAAAAAAAQDwAAAAAAAAEAAAADAAAAuwQAAAAAAAAwDwAAAAAAAAEAAAADAAAAxAQA -AAAAAAA4DwAAAAAAAAEAAAADAAAAxwQAAAAAAABYDwAAAAAAAAEAAAADAAAA1AQAAAAA -AABgDwAAAAAAAAEAAAADAAAA1wQAAAAAAACADwAAAAAAAAEAAAADAAAA3QQAAAAAAACI -DwAAAAAAAAEAAAADAAAA4AQAAAAAAACoDwAAAAAAAAEAAAADAAAA5wQAAAAAAACwDwAA -AAAAAAEAAAADAAAA6gQAAAAAAADQDwAAAAAAAAEAAAADAAAA9gQAAAAAAADYDwAAAAAA -AAEAAAADAAAA+QQAAAAAAAD4DwAAAAAAAAEAAAADAAAA/wQAAAAAAAAAEAAAAAAAAAEA -AAADAAAAAgUAAAAAAAAgEAAAAAAAAAEAAAADAAAACQUAAAAAAAAoEAAAAAAAAAEAAAAD -AAAADAUAAAAAAABIEAAAAAAAAAEAAAADAAAAFQUAAAAAAABQEAAAAAAAAAEAAAADAAAA -GAUAAAAAAABwEAAAAAAAAAEAAAADAAAAKgUAAAAAAAB4EAAAAAAAAAEAAAADAAAALQUA -AAAAAACYEAAAAAAAAAEAAAADAAAANQUAAAAAAACgEAAAAAAAAAEAAAADAAAAOAUAAAAA -AADAEAAAAAAAAAEAAAADAAAAPwUAAAAAAADIEAAAAAAAAAEAAAADAAAAQgUAAAAAAADo -EAAAAAAAAAEAAAADAAAASgUAAAAAAADwEAAAAAAAAAEAAAADAAAATQUAAAAAAAAQEQAA -AAAAAAEAAAADAAAAYgUAAAAAAAAYEQAAAAAAAAEAAAADAAAAZQUAAAAAAAA4EQAAAAAA -AAEAAAADAAAAdAUAAAAAAABAEQAAAAAAAAEAAAADAAAAdwUAAAAAAABgEQAAAAAAAAEA -AAADAAAAhQUAAAAAAABoEQAAAAAAAAEAAAADAAAAiAUAAAAAAACIEQAAAAAAAAEAAAAD -AAAAkAUAAAAAAACQEQAAAAAAAAEAAAADAAAAkwUAAAAAAACwEQAAAAAAAAEAAAADAAAA -ngUAAAAAAAC4EQAAAAAAAAEAAAADAAAAoQUAAAAAAADYEQAAAAAAAAEAAAADAAAAqwUA -AAAAAADgEQAAAAAAAAEAAAADAAAArgUAAAAAAAAAEgAAAAAAAAEAAAADAAAAtwUAAAAA -AAAIEgAAAAAAAAEAAAADAAAAugUAAAAAAAAoEgAAAAAAAAEAAAADAAAAwAUAAAAAAAAw -EgAAAAAAAAEAAAADAAAAwwUAAAAAAAA4GAAAAAAAAAEAAAAFAAAAgAEAAAAAAABAGAAA -AAAAAAEAAAAFAAAAkAEAAAAAAABIGAAAAAAAAAEAAAAFAAAAoAEAAAAAAABQGAAAAAAA -AAEAAAAFAAAA4AEAAAAAAABYGAAAAAAAAAEAAAAFAAAA8AEAAAAAAABgGAAAAAAAAAEA -AAAFAAAAAAIAAAAAAABoGAAAAAAAAAEAAAAFAAAAEAIAAAAAAABwGAAAAAAAAAEAAAAF -AAAAIAIAAAAAAAB4GAAAAAAAAAEAAAAFAAAAYAIAAAAAAACAGAAAAAAAAAEAAAAFAAAA -cAIAAAAAAACgGAAAAAAAAAEAAAAFAAAAgAEAAAAAAACoGAAAAAAAAAEAAAAFAAAAkAEA -AAAAAACwGAAAAAAAAAEAAAAFAAAAsAEAAAAAAAC4GAAAAAAAAAEAAAAFAAAA4AEAAAAA -AADAGAAAAAAAAAEAAAAFAAAA8AEAAAAAAADIGAAAAAAAAAEAAAAFAAAAAAIAAAAAAADQ -GAAAAAAAAAEAAAAFAAAAEAIAAAAAAADYGAAAAAAAAAEAAAAFAAAAMAIAAAAAAADgGAAA -AAAAAAEAAAAFAAAAcAIAAAAAAAAIGQAAAAAAAAEAAAAFAAAAgAEAAAAAAAAQGQAAAAAA -AAEAAAAFAAAAkAEAAAAAAAAYGQAAAAAAAAEAAAAFAAAAoAEAAAAAAAAgGQAAAAAAAAEA -AAAFAAAA4AEAAAAAAAAoGQAAAAAAAAEAAAAFAAAA8AEAAAAAAAAwGQAAAAAAAAEAAAAF -AAAAAAIAAAAAAAA4GQAAAAAAAAEAAAAFAAAAEAIAAAAAAABAGQAAAAAAAAEAAAAFAAAA -IAIAAAAAAABIGQAAAAAAAAEAAAAFAAAAcAIAAAAAAABwGQAAAAAAAAEAAAAFAAAAgAEA -AAAAAAB4GQAAAAAAAAEAAAAFAAAAkAEAAAAAAACAGQAAAAAAAAEAAAAFAAAAoAEAAAAA -AACIGQAAAAAAAAEAAAAFAAAA4AEAAAAAAACQGQAAAAAAAAEAAAAFAAAA8AEAAAAAAACY -GQAAAAAAAAEAAAAFAAAAAAIAAAAAAACgGQAAAAAAAAEAAAAFAAAAEAIAAAAAAACoGQAA -AAAAAAEAAAAFAAAAIAIAAAAAAACwGQAAAAAAAAEAAAAFAAAAcAIAAAAAAADYGQAAAAAA -AAEAAAAFAAAAgAEAAAAAAADgGQAAAAAAAAEAAAAFAAAAkAEAAAAAAADoGQAAAAAAAAEA -AAAFAAAAoAEAAAAAAADwGQAAAAAAAAEAAAAFAAAA4AEAAAAAAAD4GQAAAAAAAAEAAAAF -AAAAEAIAAAAAAAAAGgAAAAAAAAEAAAAFAAAAIAIAAAAAAAAIGgAAAAAAAAEAAAAFAAAA -YAIAAAAAAAAQGgAAAAAAAAEAAAAFAAAAcAIAAAAAAAAwGgAAAAAAAAEAAAAFAAAAaAEA -AAAAAABAGgAAAAAAAAEAAAAFAAAAgAEAAAAAAABIGgAAAAAAAAEAAAAFAAAAkAEAAAAA -AABQGgAAAAAAAAEAAAAFAAAAoAEAAAAAAABYGgAAAAAAAAEAAAAFAAAA4AEAAAAAAABg -GgAAAAAAAAEAAAAFAAAA8AEAAAAAAABoGgAAAAAAAAEAAAAFAAAAAAIAAAAAAABwGgAA -AAAAAAEAAAAFAAAAEAIAAAAAAAB4GgAAAAAAAAEAAAAFAAAAIAIAAAAAAACAGgAAAAAA -AAEAAAAFAAAAYAIAAAAAAACIGgAAAAAAAAEAAAAFAAAAcAIAAAAAAACoGgAAAAAAAAEA -AAAFAAAAgAEAAAAAAACwGgAAAAAAAAEAAAAFAAAAkAEAAAAAAAC4GgAAAAAAAAEAAAAF -AAAAoAEAAAAAAADAGgAAAAAAAAEAAAAFAAAA4AEAAAAAAADIGgAAAAAAAAEAAAAFAAAA -8AEAAAAAAADQGgAAAAAAAAEAAAAFAAAAAAIAAAAAAADYGgAAAAAAAAEAAAAFAAAAIAIA -AAAAAADgGgAAAAAAAAEAAAAFAAAAcAIAAAAAAAAQGwAAAAAAAAEAAAAFAAAAgAEAAAAA -AAAYGwAAAAAAAAEAAAAFAAAAwAEAAAAAAAAgGwAAAAAAAAEAAAAFAAAA4AEAAAAAAAAo -GwAAAAAAAAEAAAAFAAAA8AEAAAAAAAAwGwAAAAAAAAEAAAAFAAAAAAIAAAAAAAA4GwAA -AAAAAAEAAAAFAAAAQAIAAAAAAABAGwAAAAAAAAEAAAAFAAAAcAIAAAAAAAB4GwAAAAAA -AAEAAAAFAAAAgAEAAAAAAACAGwAAAAAAAAEAAAAFAAAAoAEAAAAAAACIGwAAAAAAAAEA -AAAFAAAA4AEAAAAAAACQGwAAAAAAAAEAAAAFAAAAIAIAAAAAAACYGwAAAAAAAAEAAAAF -AAAAcAIAAAAAAADgGwAAAAAAAAEAAAAFAAAAgAEAAAAAAADoGwAAAAAAAAEAAAAFAAAA -wAEAAAAAAADwGwAAAAAAAAEAAAAFAAAA4AEAAAAAAAD4GwAAAAAAAAEAAAAFAAAA8AEA -AAAAAAAAHAAAAAAAAAEAAAAFAAAAAAIAAAAAAAAIHAAAAAAAAAEAAAAFAAAAEAIAAAAA -AAAQHAAAAAAAAAEAAAAFAAAAQAIAAAAAAAAYHAAAAAAAAAEAAAAFAAAAcAIAAAAAAABI -HAAAAAAAAAEAAAAFAAAAgAEAAAAAAABQHAAAAAAAAAEAAAAFAAAAoAEAAAAAAABYHAAA -AAAAAAEAAAAFAAAA4AEAAAAAAABgHAAAAAAAAAEAAAAFAAAAEAIAAAAAAABoHAAAAAAA -AAEAAAAFAAAAIAIAAAAAAABwHAAAAAAAAAEAAAAFAAAAcAIAAAAAAAC4HAAAAAAAAAEA -AAAFAAAAgAEAAAAAAADAHAAAAAAAAAEAAAAFAAAAkAEAAAAAAADIHAAAAAAAAAEAAAAF -AAAAsAEAAAAAAADQHAAAAAAAAAEAAAAFAAAA4AEAAAAAAADYHAAAAAAAAAEAAAAFAAAA -8AEAAAAAAADgHAAAAAAAAAEAAAAFAAAAAAIAAAAAAADoHAAAAAAAAAEAAAAFAAAAEAIA -AAAAAADwHAAAAAAAAAEAAAAFAAAAMAIAAAAAAAD4HAAAAAAAAAEAAAAFAAAAcAIAAAAA -AAAgHQAAAAAAAAEAAAAFAAAAgAEAAAAAAAAoHQAAAAAAAAEAAAAFAAAAkAEAAAAAAAAw -HQAAAAAAAAEAAAAFAAAAsAEAAAAAAAA4HQAAAAAAAAEAAAAFAAAA4AEAAAAAAABAHQAA -AAAAAAEAAAAFAAAA8AEAAAAAAABIHQAAAAAAAAEAAAAFAAAAAAIAAAAAAABQHQAAAAAA -AAEAAAAFAAAAEAIAAAAAAABYHQAAAAAAAAEAAAAFAAAAMAIAAAAAAABgHQAAAAAAAAEA -AAAFAAAAcAIAAAAAAACIHQAAAAAAAAEAAAAFAAAAgAEAAAAAAACQHQAAAAAAAAEAAAAF -AAAAkAEAAAAAAACYHQAAAAAAAAEAAAAFAAAAoAEAAAAAAACgHQAAAAAAAAEAAAAFAAAA -4AEAAAAAAACoHQAAAAAAAAEAAAAFAAAA8AEAAAAAAACwHQAAAAAAAAEAAAAFAAAAAAIA -AAAAAAC4HQAAAAAAAAEAAAAFAAAAEAIAAAAAAADAHQAAAAAAAAEAAAAFAAAAMAIAAAAA -AADIHQAAAAAAAAEAAAAFAAAAcAIAAAAAAADwHQAAAAAAAAEAAAAFAAAAgAEAAAAAAAD4 -HQAAAAAAAAEAAAAFAAAAkAEAAAAAAAAAHgAAAAAAAAEAAAAFAAAAoAEAAAAAAAAIHgAA -AAAAAAEAAAAFAAAA4AEAAAAAAAAQHgAAAAAAAAEAAAAFAAAA8AEAAAAAAAAYHgAAAAAA -AAEAAAAFAAAAAAIAAAAAAAAgHgAAAAAAAAEAAAAFAAAAEAIAAAAAAAAoHgAAAAAAAAEA -AAAFAAAAMAIAAAAAAAAwHgAAAAAAAAEAAAAFAAAAcAIAAAAAAABYHgAAAAAAAAEAAAAF -AAAAgAEAAAAAAABgHgAAAAAAAAEAAAAFAAAAkAEAAAAAAABoHgAAAAAAAAEAAAAFAAAA -sAEAAAAAAABwHgAAAAAAAAEAAAAFAAAA4AEAAAAAAAB4HgAAAAAAAAEAAAAFAAAAEAIA -AAAAAACAHgAAAAAAAAEAAAAFAAAAMAIAAAAAAACIHgAAAAAAAAEAAAAFAAAAcAIAAAAA -AACwHgAAAAAAAAEAAAAFAAAAaAEAAAAAAADAHgAAAAAAAAEAAAAFAAAAgAEAAAAAAADI -HgAAAAAAAAEAAAAFAAAAkAEAAAAAAADQHgAAAAAAAAEAAAAFAAAAsAEAAAAAAADYHgAA -AAAAAAEAAAAFAAAA4AEAAAAAAADgHgAAAAAAAAEAAAAFAAAA8AEAAAAAAADoHgAAAAAA -AAEAAAAFAAAAAAIAAAAAAADwHgAAAAAAAAEAAAAFAAAAEAIAAAAAAAD4HgAAAAAAAAEA -AAAFAAAAMAIAAAAAAAAAHwAAAAAAAAEAAAAFAAAAcAIAAAAAAAAoHwAAAAAAAAEAAAAF -AAAAgAEAAAAAAAAwHwAAAAAAAAEAAAAFAAAAkAEAAAAAAAA4HwAAAAAAAAEAAAAFAAAA -sAEAAAAAAABAHwAAAAAAAAEAAAAFAAAA4AEAAAAAAABIHwAAAAAAAAEAAAAFAAAA8AEA -AAAAAABQHwAAAAAAAAEAAAAFAAAAAAIAAAAAAABYHwAAAAAAAAEAAAAFAAAAMAIAAAAA -AABgHwAAAAAAAAEAAAAFAAAAcAIAAAAAAACQHwAAAAAAAAEAAAAFAAAAgAEAAAAAAACY -HwAAAAAAAAEAAAAFAAAA0AEAAAAAAACgHwAAAAAAAAEAAAAFAAAA4AEAAAAAAACoHwAA -AAAAAAEAAAAFAAAA8AEAAAAAAACwHwAAAAAAAAEAAAAFAAAAAAIAAAAAAAC4HwAAAAAA -AAEAAAAFAAAAUAIAAAAAAADAHwAAAAAAAAEAAAAFAAAAcAIAAAAAAAD4HwAAAAAAAAEA -AAAFAAAAgAEAAAAAAAAAIAAAAAAAAAEAAAAFAAAA0AEAAAAAAAAIIAAAAAAAAAEAAAAF -AAAA4AEAAAAAAAAQIAAAAAAAAAEAAAAFAAAAUAIAAAAAAAAYIAAAAAAAAAEAAAAFAAAA -cAIAAAAAAABgIAAAAAAAAAEAAAAFAAAAgAEAAAAAAABoIAAAAAAAAAEAAAAFAAAA0AEA -AAAAAABwIAAAAAAAAAEAAAAFAAAA4AEAAAAAAAB4IAAAAAAAAAEAAAAFAAAA8AEAAAAA -AACAIAAAAAAAAAEAAAAFAAAAAAIAAAAAAACIIAAAAAAAAAEAAAAFAAAAEAIAAAAAAACQ -IAAAAAAAAAEAAAAFAAAAUAIAAAAAAACYIAAAAAAAAAEAAAAFAAAAcAIAAAAAAADIIAAA -AAAAAAEAAAAFAAAAgAEAAAAAAADQIAAAAAAAAAEAAAAFAAAA0AEAAAAAAADYIAAAAAAA -AAEAAAAFAAAA4AEAAAAAAADgIAAAAAAAAAEAAAAFAAAAEAIAAAAAAADoIAAAAAAAAAEA -AAAFAAAAUAIAAAAAAADwIAAAAAAAAAEAAAAFAAAAcAIAAAAAAAAoIQAAAAAAAAEAAAAF -AAAAgAIAAAAAAAA4IQAAAAAAAAEAAAAFAAAAigIAAAAAAABIIQAAAAAAAAEAAAAFAAAA -oAIAAAAAAABoIQAAAAAAAAEAAAABAAAA0TkAAAAAAABwIQAAAAAAAAEAAAABAAAAszkA -AAAAAAB4IQAAAAAAAAEAAAABAAAAxTkAAAAAAACAIQAAAAAAAAEAAAABAAAA0TkAAAAA -AACIIQAAAAAAAAEAAAABAAAAuTkAAAAAAACQIQAAAAAAAAEAAAABAAAA0TkAAAAAAACY -IQAAAAAAAAEAAAABAAAA0TkAAAAAAACgIQAAAAAAAAEAAAABAAAA0TkAAAAAAACoIQAA -AAAAAAEAAAABAAAAvzkAAAAAAACwIQAAAAAAAAEAAAABAAAA0TkAAAAAAAC4IQAAAAAA -AAEAAAABAAAA0TkAAAAAAADAIQAAAAAAAAEAAAABAAAA0TkAAAAAAADIIQAAAAAAAAEA -AAABAAAA0TkAAAAAAADQIQAAAAAAAAEAAAABAAAA0TkAAAAAAADYIQAAAAAAAAEAAAAB -AAAA0TkAAAAAAADgIQAAAAAAAAEAAAABAAAA0TkAAAAAAADoIQAAAAAAAAEAAAABAAAA -0TkAAAAAAADwIQAAAAAAAAEAAAABAAAA0TkAAAAAAAD4IQAAAAAAAAEAAAABAAAA0TkA -AAAAAAAAIgAAAAAAAAEAAAABAAAA0TkAAAAAAAAIIgAAAAAAAAEAAAABAAAA0TkAAAAA -AAAQIgAAAAAAAAEAAAABAAAA0TkAAAAAAAAYIgAAAAAAAAEAAAABAAAA0TkAAAAAAAAg -IgAAAAAAAAEAAAABAAAA0TkAAAAAAAAoIgAAAAAAAAEAAAABAAAA0TkAAAAAAAAwIgAA -AAAAAAEAAAABAAAA0TkAAAAAAAA4IgAAAAAAAAEAAAABAAAA0TkAAAAAAABAIgAAAAAA -AAEAAAABAAAA0TkAAAAAAABIIgAAAAAAAAEAAAABAAAA0TkAAAAAAABQIgAAAAAAAAEA -AAABAAAA0TkAAAAAAABYIgAAAAAAAAEAAAABAAAA0TkAAAAAAABgIgAAAAAAAAEAAAAB -AAAA0TkAAAAAAABoIgAAAAAAAAEAAAABAAAAyzkAAAAAAABwIgAAAAAAAAEAAAABAAAA -sToAAAAAAAB4IgAAAAAAAAEAAAABAAAAsToAAAAAAACAIgAAAAAAAAEAAAABAAAA1DoA -AAAAAACIIgAAAAAAAAEAAAABAAAAuDoAAAAAAACQIgAAAAAAAAEAAAABAAAA1DoAAAAA -AACYIgAAAAAAAAEAAAABAAAA1DoAAAAAAACgIgAAAAAAAAEAAAABAAAA1DoAAAAAAACo -IgAAAAAAAAEAAAABAAAA1DoAAAAAAACwIgAAAAAAAAEAAAABAAAAvzoAAAAAAAC4IgAA -AAAAAAEAAAABAAAA1DoAAAAAAADAIgAAAAAAAAEAAAABAAAAxjoAAAAAAADIIgAAAAAA -AAEAAAABAAAAzToAAAAAAAAIIwAAAAAAAAEAAAACAAAA0CIAAAAAAAAQIwAAAAAAAAEA -AAACAAAA4CIAAAAAAABIIwAAAAAAAAEAAAACAAAAACMAAAAAAACYJAAAAAAAAAEAAAD4 -AAAAAAAAAAAAAACgJAAAAAAAAAEAAABcAAAAAAAAAAAAAACoJAAAAAAAAAEAAAC0AAAA -AAAAAAAAAACwJAAAAAAAAAEAAACmAAAAAAAAAAAAAAC4JAAAAAAAAAEAAADFAAAAAAAA -AAAAAADAJAAAAAAAAAEAAABNAAAAAAAAAAAAAADIJAAAAAAAAAEAAADQAAAAAAAAAAAA -AADQJAAAAAAAAAEAAABeAQAAAAAAAAAAAADYJAAAAAAAAAEAAAA1AQAAAAAAAAAAAADg -JAAAAAAAAAEAAACxAAAAAAAAAAAAAADoJAAAAAAAAAEAAAA3AAAAAAAAAAAAAADwJAAA -AAAAAAEAAAB9AAAAAAAAAAAAAAD4JAAAAAAAAAEAAABQAAAAAAAAAAAAAAAAJQAAAAAA -AAEAAAAeAAAAAAAAAAAAAAAIJQAAAAAAAAEAAABPAQAAAAAAAAAAAAAQJQAAAAAAAAEA -AAB3AQAAAAAAAAAAAAAYJQAAAAAAAAEAAAAqAAAAAAAAAAAAAAAgJQAAAAAAAAEAAACE -AAAAAAAAAAAAAAAoJQAAAAAAAAEAAADwAAAAAAAAAAAAAAAwJQAAAAAAAAEAAAAyAQAA -AAAAAAAAAAA4JQAAAAAAAAEAAAAmAAAAAAAAAAAAAABAJQAAAAAAAAEAAAA1AAAAAAAA -AAAAAABIJQAAAAAAAAEAAABgAAAAAAAAAAAAAABQJQAAAAAAAAEAAABkAQAAAAAAAAAA -AABYJQAAAAAAAAEAAAAFAQAAAAAAAAAAAABgJQAAAAAAAAEAAACnAAAAAAAAAAAAAABo -JQAAAAAAAAEAAABHAQAAAAAAAAAAAABwJQAAAAAAAAEAAABKAQAAAAAAAAAAAAB4JQAA -AAAAAAEAAAD1AAAAAAAAAAAAAACAJQAAAAAAAAEAAADOAAAAAAAAAAAAAACIJQAAAAAA -AAEAAAAmAQAAAAAAAAAAAACQJQAAAAAAAAEAAACHAAAAAAAAAAAAAACYJQAAAAAAAAEA -AABZAQAAAAAAAAAAAACgJQAAAAAAAAEAAACyAAAAAAAAAAAAAACoJQAAAAAAAAEAAACp -AAAAAAAAAAAAAACwJQAAAAAAAAEAAAB+AAAAAAAAAAAAAAC4JQAAAAAAAAEAAAChAAAA -AAAAAAAAAADAJQAAAAAAAAEAAABOAAAAAAAAAAAAAADIJQAAAAAAAAEAAAC6AAAAAAAA -AAAAAADQJQAAAAAAAAEAAAAiAQAAAAAAAAAAAADYJQAAAAAAAAEAAAD6AAAAAAAAAAAA -AADgJQAAAAAAAAEAAACbAAAAAAAAAAAAAADoJQAAAAAAAAEAAAAeAQAAAAAAAAAAAADw -JQAAAAAAAAEAAADXAAAAAAAAAAAAAAD4JQAAAAAAAAEAAAAXAQAAAAAAAAAAAAAAJgAA -AAAAAAEAAAAvAAAAAAAAAAAAAAAIJgAAAAAAAAEAAACoAAAAAAAAAAAAAAAQJgAAAAAA -AAEAAABCAQAAAAAAAAAAAAAYJgAAAAAAAAEAAAAIAQAAAAAAAAAAAAAgJgAAAAAAAAEA -AAAQAQAAAAAAAAAAAAAoJgAAAAAAAAEAAAA2AAAAAAAAAAAAAAAwJgAAAAAAAAEAAABs -AAAAAAAAAAAAAAA4JgAAAAAAAAEAAAAuAQAAAAAAAAAAAABAJgAAAAAAAAEAAADUAAAA -AAAAAAAAAABIJgAAAAAAAAEAAABIAAAAAAAAAAAAAABQJgAAAAAAAAEAAAAxAAAAAAAA -AAAAAABYJgAAAAAAAAEAAACDAAAAAAAAAAAAAABgJgAAAAAAAAEAAAALAAAAAAAAAAAA -AABoJgAAAAAAAAEAAADiAAAAAAAAAAAAAABwJgAAAAAAAAEAAAAnAQAAAAAAAAAAAAB4 -JgAAAAAAAAEAAABlAQAAAAAAAAAAAACAJgAAAAAAAAEAAABhAAAAAAAAAAAAAACIJgAA -AAAAAAEAAAANAAAAAAAAAAAAAACQJgAAAAAAAAEAAABLAQAAAAAAAAAAAACYJgAAAAAA -AAEAAAAEAQAAAAAAAAAAAACgJgAAAAAAAAEAAABVAQAAAAAAAAAAAACoJgAAAAAAAAEA -AAA9AAAAAAAAAAAAAACwJgAAAAAAAAEAAAAZAQAAAAAAAAAAAAC4JgAAAAAAAAEAAAAT -AAAAAAAAAAAAAADAJgAAAAAAAAEAAACwAAAAAAAAAAAAAADIJgAAAAAAAAEAAABnAAAA -AAAAAAAAAADQJgAAAAAAAAEAAADkAAAAAAAAAAAAAADYJgAAAAAAAAEAAADmAAAAAAAA -AAAAAADgJgAAAAAAAAEAAAC/AAAAAAAAAAAAAADoJgAAAAAAAAEAAABGAQAAAAAAAAAA -AADwJgAAAAAAAAEAAACuAAAAAAAAAAAAAAD4JgAAAAAAAAEAAABjAQAAAAAAAAAAAAAA -JwAAAAAAAAEAAAAPAAAAAAAAAAAAAAAIJwAAAAAAAAEAAAA3AQAAAAAAAAAAAAAQJwAA -AAAAAAEAAACkAAAAAAAAAAAAAAAYJwAAAAAAAAEAAAAOAQAAAAAAAAAAAAAgJwAAAAAA -AAEAAAD3AAAAAAAAAAAAAAAoJwAAAAAAAAEAAACXAAAAAAAAAAAAAAAwJwAAAAAAAAEA -AAA4AQAAAAAAAAAAAAA4JwAAAAAAAAEAAAABAAAAQ1MAAAAAAABAJwAAAAAAAAEAAAAt -AQAAAAAAAAAAAABIJwAAAAAAAAEAAAB2AQAAAAAAAAAAAABQJwAAAAAAAAEAAAAWAQAA -AAAAAAAAAABgJwAAAAAAAAEAAABCAQAAAAAAAAAAAABoJwAAAAAAAAEAAAAIAQAAAAAA -AAAAAABwJwAAAAAAAAEAAAAQAQAAAAAAAAAAAAB4JwAAAAAAAAEAAAA2AAAAAAAAAAAA -AACAJwAAAAAAAAEAAABsAAAAAAAAAAAAAAD4MwAAAAAAAAEAAAAvAQAAAAAAAAAAAAAA -NAAAAAAAAAEAAABMAQAAAAAAAAAAAAAINAAAAAAAAAEAAABAAQAAAAAAAAAAAAAQNAAA -AAAAAAEAAABiAQAAAAAAAAAAAAAYNAAAAAAAAAEAAABuAAAAAAAAAAAAAAAgNAAAAAAA -AAEAAACJAAAAAAAAAAAAAAAoNAAAAAAAAAEAAABkAAAAAAAAAAAAAAAwNAAAAAAAAAEA -AAAwAAAAAAAAAAAAAAA4NAAAAAAAAAEAAABZAAAAAAAAAAAAAABANAAAAAAAAAEAAABa -AAAAAAAAAAAAAABINAAAAAAAAAEAAAA0AAAAAAAAAAAAAABQNAAAAAAAAAEAAABSAQAA -AAAAAAAAAABYNAAAAAAAAAEAAAD5AAAAAAAAAAAAAABgNAAAAAAAAAEAAABtAQAAAAAA -AAAAAABoNAAAAAAAAAEAAAB5AAAAAAAAAAAAAABwNAAAAAAAAAEAAABcAQAAAAAAAAAA -AAB4NAAAAAAAAAEAAADtAAAAAAAAAAAAAACANAAAAAAAAAEAAACfAAAAAAAAAAAAAACI -NAAAAAAAAAEAAACsAAAAAAAAAAAAAACQNAAAAAAAAAEAAAATAQAAAAAAAAAAAACYNAAA -AAAAAAEAAAAgAAAAAAAAAAAAAACgNAAAAAAAAAEAAADzAAAAAAAAAAAAAACoNAAAAAAA -AAEAAAAYAAAAAAAAAAAAAACwNAAAAAAAAAEAAABOAQAAAAAAAAAAAAC4NAAAAAAAAAEA -AAAdAAAAAAAAAAAAAADANAAAAAAAAAEAAAAnAAAAAAAAAAAAAADINAAAAAAAAAEAAACg -AAAAAAAAAAAAAADQNAAAAAAAAAEAAABhAQAAAAAAAAAAAADYNAAAAAAAAAEAAABQAQAA -AAAAAAAAAADgNAAAAAAAAAEAAABdAQAAAAAAAAAAAADoNAAAAAAAAAEAAAAjAQAAAAAA -AAAAAADwNAAAAAAAAAEAAADfAAAAAAAAAAAAAAD4NAAAAAAAAAEAAADqAAAAAAAAAAAA -AAAANQAAAAAAAAEAAADaAAAAAAAAAAAAAAAINQAAAAAAAAEAAAD9AAAAAAAAAAAAAAAQ -NQAAAAAAAAEAAAB1AAAAAAAAAAAAAAAYNQAAAAAAAAEAAACPAAAAAAAAAAAAAAAgNQAA -AAAAAAEAAABrAAAAAAAAAAAAAAAoNQAAAAAAAAEAAAA0AQAAAAAAAAAAAAAwNQAAAAAA -AAEAAACWAAAAAAAAAAAAAAA4NQAAAAAAAAEAAAA4AAAAAAAAAAAAAABANQAAAAAAAAEA -AAAkAQAAAAAAAAAAAABINQAAAAAAAAEAAAAgAQAAAAAAAAAAAABQNQAAAAAAAAEAAABy -AAAAAAAAAAAAAABYNQAAAAAAAAEAAADPAAAAAAAAAAAAAABgNQAAAAAAAAEAAAAaAQAA -AAAAAAAAAABoNQAAAAAAAAEAAADTAAAAAAAAAAAAAABwNQAAAAAAAAEAAAC3AAAAAAAA -AAAAAAB4NQAAAAAAAAEAAADSAAAAAAAAAAAAAACANQAAAAAAAAEAAAAqAQAAAAAAAAAA -AACINQAAAAAAAAEAAADBAAAAAAAAAAAAAACQNQAAAAAAAAEAAAAyAAAAAAAAAAAAAACY -NQAAAAAAAAEAAABYAAAAAAAAAAAAAACgNQAAAAAAAAEAAADKAAAAAAAAAAAAAACoNQAA -AAAAAAEAAAAxAQAAAAAAAAAAAACwNQAAAAAAAAEAAAA8AQAAAAAAAAAAAAC4NQAAAAAA -AAEAAAASAQAAAAAAAAAAAADANQAAAAAAAAEAAAAbAAAAAAAAAAAAAADINQAAAAAAAAEA -AABUAAAAAAAAAAAAAADQNQAAAAAAAAEAAAAcAQAAAAAAAAAAAADYNQAAAAAAAAEAAACR -AAAAAAAAAAAAAADgNQAAAAAAAAEAAABIAQAAAAAAAAAAAADoNQAAAAAAAAEAAADGAAAA -AAAAAAAAAADwNQAAAAAAAAEAAADvAAAAAAAAAAAAAAD4NQAAAAAAAAEAAAAzAAAAAAAA -AAAAAAAANgAAAAAAAAEAAADrAAAAAAAAAAAAAAAINgAAAAAAAAEAAAAkAAAAAAAAAAAA -AAAQNgAAAAAAAAEAAABJAAAAAAAAAAAAAAAYNgAAAAAAAAEAAACIAAAAAAAAAAAAAAAg -NgAAAAAAAAEAAADNAAAAAAAAAAAAAAAoNgAAAAAAAAEAAAC9AAAAAAAAAAAAAAAwNgAA -AAAAAAEAAAA/AQAAAAAAAAAAAAA4NgAAAAAAAAEAAAC8AAAAAAAAAAAAAABANgAAAAAA -AAEAAAABAQAAAAAAAAAAAABINgAAAAAAAAEAAAD7AAAAAAAAAAAAAABQNgAAAAAAAAEA -AAA9AQAAAAAAAAAAAABYNgAAAAAAAAEAAAAKAAAAAAAAAAAAAABgNgAAAAAAAAEAAACY -AAAAAAAAAAAAAABoNgAAAAAAAAEAAABoAAAAAAAAAAAAAABwNgAAAAAAAAEAAACOAAAA -AAAAAAAAAAB4NgAAAAAAAAEAAABiAAAAAAAAAAAAAACANgAAAAAAAAEAAADbAAAAAAAA -AAAAAACINgAAAAAAAAEAAADgAAAAAAAAAAAAAACQNgAAAAAAAAEAAADyAAAAAAAAAAAA -AACYNgAAAAAAAAEAAAABAAAAUoUAAAAAAACgNgAAAAAAAAEAAAAGAQAAAAAAAAAAAACo -NgAAAAAAAAEAAAAYAQAAAAAAAAAAAACwNgAAAAAAAAEAAAAzAQAAAAAAAAAAAADANgAA -AAAAAAEAAAC3AAAAAAAAAAAAAADINgAAAAAAAAEAAADSAAAAAAAAAAAAAADQNgAAAAAA -AAEAAAAqAQAAAAAAAAAAAADYNgAAAAAAAAEAAADBAAAAAAAAAAAAAADgNgAAAAAAAAEA -AAAyAAAAAAAAAAAAAADYSgAAAAAAAAEAAAABAAAABbUAAAAAAADgSgAAAAAAAAEAAAAB -AAAABbUAAAAAAADoSgAAAAAAAAEAAAABAAAALLUAAAAAAADwSgAAAAAAAAEAAAABAAAA -LLUAAAAAAAD4SgAAAAAAAAEAAAABAAAAU7UAAAAAAAAASwAAAAAAAAEAAAABAAAAU7UA -AAAAAAAISwAAAAAAAAEAAAABAAAAerUAAAAAAAAQSwAAAAAAAAEAAAABAAAAerUAAAAA -AAB4TAAAAAAAAAEAAABTAAAAAAAAAAAAAACATAAAAAAAAAEAAAB4AAAAAAAAAAAAAACI -TAAAAAAAAAEAAABaAQAAAAAAAAAAAACQTAAAAAAAAAEAAABjAAAAAAAAAAAAAACYTAAA -AAAAAAEAAADJAAAAAAAAAAAAAACgTAAAAAAAAAEAAACrAAAAAAAAAAAAAACoTAAAAAAA -AAEAAAAJAQAAAAAAAAAAAACwTAAAAAAAAAEAAABMAAAAAAAAAAAAAAC4TAAAAAAAAAEA -AACUAAAAAAAAAAAAAADATAAAAAAAAAEAAABPAAAAAAAAAAAAAADITAAAAAAAAAEAAADu -AAAAAAAAAAAAAADQTAAAAAAAAAEAAABFAQAAAAAAAAAAAADYTAAAAAAAAAEAAACCAAAA -AAAAAAAAAADgTAAAAAAAAAEAAADpAAAAAAAAAAAAAADoTAAAAAAAAAEAAADVAAAAAAAA -AAAAAADwTAAAAAAAAAEAAAB7AQAAAAAAAAAAAAD4TAAAAAAAAAEAAABzAQAAAAAAAAAA -AAAATQAAAAAAAAEAAACtAAAAAAAAAAAAAAAITQAAAAAAAAEAAAAwAQAAAAAAAAAAAAAQ -TQAAAAAAAAEAAAB0AAAAAAAAAAAAAAAYTQAAAAAAAAEAAAAPAQAAAAAAAAAAAAAgTQAA -AAAAAAEAAAAlAAAAAAAAAAAAAAAoTQAAAAAAAAEAAABEAQAAAAAAAAAAAAAwTQAAAAAA -AAEAAAA6AQAAAAAAAAAAAAA4TQAAAAAAAAEAAABJAQAAAAAAAAAAAABATQAAAAAAAAEA -AABXAAAAAAAAAAAAAABITQAAAAAAAAEAAAApAQAAAAAAAAAAAABQTQAAAAAAAAEAAADs -AAAAAAAAAAAAAABYTQAAAAAAAAEAAADnAAAAAAAAAAAAAABgTQAAAAAAAAEAAAASAAAA -AAAAAAAAAABoTQAAAAAAAAEAAABTAQAAAAAAAAAAAABwTQAAAAAAAAEAAABzAAAAAAAA -AAAAAAB4TQAAAAAAAAEAAADRAAAAAAAAAAAAAACATQAAAAAAAAEAAABYAQAAAAAAAAAA -AACITQAAAAAAAAEAAADLAAAAAAAAAAAAAACQTQAAAAAAAAEAAACMAAAAAAAAAAAAAACY -TQAAAAAAAAEAAAAdAQAAAAAAAAAAAACgTQAAAAAAAAEAAADlAAAAAAAAAAAAAACoTQAA -AAAAAAEAAAAQAAAAAAAAAAAAAACwTQAAAAAAAAEAAACTAAAAAAAAAAAAAAC4TQAAAAAA -AAEAAAAMAAAAAAAAAAAAAADATQAAAAAAAAEAAACNAAAAAAAAAAAAAADITQAAAAAAAAEA -AAAoAQAAAAAAAAAAAADQTQAAAAAAAAEAAACiAAAAAAAAAAAAAADYTQAAAAAAAAEAAAAL -AQAAAAAAAAAAAADgTQAAAAAAAAEAAACaAAAAAAAAAAAAAADoTQAAAAAAAAEAAACjAAAA -AAAAAAAAAADwTQAAAAAAAAEAAAADAQAAAAAAAAAAAAD4TQAAAAAAAAEAAABGAAAAAAAA -AAAAAAAATgAAAAAAAAEAAAArAQAAAAAAAAAAAAAITgAAAAAAAAEAAAA5AQAAAAAAAAAA -AAAQTgAAAAAAAAEAAAD/AAAAAAAAAAAAAAAYTgAAAAAAAAEAAAB4AQAAAAAAAAAAAAAg -TgAAAAAAAAEAAABBAAAAAAAAAAAAAAAoTgAAAAAAAAEAAAC5AAAAAAAAAAAAAAAwTgAA -AAAAAAEAAACdAAAAAAAAAAAAAAA4TgAAAAAAAAEAAABoAQAAAAAAAAAAAABATgAAAAAA -AAEAAABEAAAAAAAAAAAAAABITgAAAAAAAAEAAACFAAAAAAAAAAAAAABQTgAAAAAAAAEA -AABsAQAAAAAAAAAAAABYTgAAAAAAAAEAAAA6AAAAAAAAAAAAAABgTgAAAAAAAAEAAABD -AAAAAAAAAAAAAABoTgAAAAAAAAEAAAApAAAAAAAAAAAAAABwTgAAAAAAAAEAAAA5AAAA -AAAAAAAAAAB4TgAAAAAAAAEAAAA+AAAAAAAAAAAAAACATgAAAAAAAAEAAAB3AAAAAAAA -AAAAAACITgAAAAAAAAEAAAAXAAAAAAAAAAAAAACQTgAAAAAAAAEAAABqAAAAAAAAAAAA -AACYTgAAAAAAAAEAAADjAAAAAAAAAAAAAACgTgAAAAAAAAEAAABlAAAAAAAAAAAAAACo -TgAAAAAAAAEAAAARAQAAAAAAAAAAAACwTgAAAAAAAAEAAABnAQAAAAAAAAAAAAC4TgAA -AAAAAAEAAADDAAAAAAAAAAAAAADATgAAAAAAAAEAAAB7AAAAAAAAAAAAAADITgAAAAAA -AAEAAABFAAAAAAAAAAAAAADQTgAAAAAAAAEAAAAfAAAAAAAAAAAAAADYTgAAAAAAAAEA -AAB0AQAAAAAAAAAAAADgTgAAAAAAAAEAAAD8AAAAAAAAAAAAAADoTgAAAAAAAAEAAADE -AAAAAAAAAAAAAADwTgAAAAAAAAEAAACZAAAAAAAAAAAAAAD4TgAAAAAAAAEAAAAhAAAA -AAAAAAAAAAAATwAAAAAAAAEAAABbAQAAAAAAAAAAAAAITwAAAAAAAAEAAABmAAAAAAAA -AAAAAAAQTwAAAAAAAAEAAADIAAAAAAAAAAAAAAAYTwAAAAAAAAEAAAC4AAAAAAAAAAAA -AAAgTwAAAAAAAAEAAADHAAAAAAAAAAAAAAAoTwAAAAAAAAEAAADYAAAAAAAAAAAAAAAw -TwAAAAAAAAEAAABxAQAAAAAAAAAAAABATwAAAAAAAAEAAAADAQAAAAAAAAAAAABITwAA -AAAAAAEAAABGAAAAAAAAAAAAAABQTwAAAAAAAAEAAAArAQAAAAAAAAAAAABYTwAAAAAA -AAEAAAA5AQAAAAAAAAAAAABgTwAAAAAAAAEAAAD/AAAAAAAAAAAAAADgVQAAAAAAAAEA -AAABAAAAWtoAAAAAAADoVQAAAAAAAAEAAAABAAAAJdoAAAAAAADwVQAAAAAAAAEAAAAB -AAAALdoAAAAAAAD4VQAAAAAAAAEAAAABAAAAj9oAAAAAAAAAVgAAAAAAAAEAAAABAAAA -O9oAAAAAAAAIVgAAAAAAAAEAAAABAAAAh9oAAAAAAABAVgAAAAAAAAEAAAABAAAAMucA -AAAAAABIVgAAAAAAAAEAAAABAAAAqOYAAAAAAABQVgAAAAAAAAEAAAABAAAA1OYAAAAA -AABYVgAAAAAAAAEAAAABAAAAK+cAAAAAAABgVgAAAAAAAAEAAAABAAAA3eYAAAAAAABo -VgAAAAAAAAEAAAABAAAA5uYAAAAAAABwVgAAAAAAAAEAAAABAAAAMucAAAAAAAB4VgAA -AAAAAAEAAAABAAAAMucAAAAAAACAVgAAAAAAAAEAAAABAAAAMucAAAAAAACIVgAAAAAA -AAEAAAABAAAAMucAAAAAAACQVgAAAAAAAAEAAAABAAAAMucAAAAAAACYVgAAAAAAAAEA -AAABAAAAMucAAAAAAACgVgAAAAAAAAEAAAABAAAAMucAAAAAAACoVgAAAAAAAAEAAAAB -AAAAMucAAAAAAACwVgAAAAAAAAEAAAABAAAAMucAAAAAAAC4VgAAAAAAAAEAAAABAAAA -MucAAAAAAADAVgAAAAAAAAEAAAABAAAADucAAAAAAACQYgAAAAAAAAEAAAABAAAAoyUB -AAAAAACYYgAAAAAAAAEAAAABAAAAxSEBAAAAAACgYgAAAAAAAAEAAAABAAAAoCIBAAAA -AACoYgAAAAAAAAEAAAABAAAAPCQBAAAAAACwYgAAAAAAAAEAAAABAAAAmiQBAAAAAAC4 -YgAAAAAAAAEAAAABAAAAESUBAAAAAAAIcAAAAAAAAAEAAAABAAAAVDABAAAAAAAQcAAA -AAAAAAEAAAABAAAAWDABAAAAAAAYcAAAAAAAAAEAAAABAAAAXTABAAAAAAAgcAAAAAAA -AAEAAAABAAAAYjABAAAAAAAocAAAAAAAAAEAAAABAAAAdDABAAAAAAAwcAAAAAAAAAEA -AAABAAAAdDABAAAAAAA4cAAAAAAAAAEAAAABAAAAZzABAAAAAABAcAAAAAAAAAEAAAAB -AAAAbDABAAAAAABYfAAAAAAAAAEAAAABAAAAs0ABAAAAAABgfAAAAAAAAAEAAAABAAAA -mEABAAAAAABofAAAAAAAAAEAAAABAAAAnEABAAAAAABwfAAAAAAAAAEAAAABAAAAoUAB -AAAAAAB4fAAAAAAAAAEAAAABAAAAs0ABAAAAAACAfAAAAAAAAAEAAAABAAAAs0ABAAAA -AACIfAAAAAAAAAEAAAABAAAApkABAAAAAACQfAAAAAAAAAEAAAABAAAAq0ABAAAAAADI -iAAAAAAAAAEAAAABAAAAyVgBAAAAAADQiAAAAAAAAAEAAAABAAAAsVgBAAAAAADYiAAA -AAAAAAEAAAABAAAAtVgBAAAAAADgiAAAAAAAAAEAAAABAAAAulgBAAAAAADoiAAAAAAA -AAEAAAABAAAAyVgBAAAAAADwiAAAAAAAAAEAAAABAAAAyVgBAAAAAAD4iAAAAAAAAAEA -AAABAAAAv1gBAAAAAAAAiQAAAAAAAAEAAAABAAAAxFgBAAAAAAAgAAAAAAAAAAEAAAAD -AAAAAAAAAAAAAAAoAAAAAAAAAAEAAAADAAAABwAAAAAAAAAwAAAAAAAAAAEAAAADAAAA -DgAAAAAAAAA4AAAAAAAAAAEAAAADAAAAFQAAAAAAAABAAAAAAAAAAAEAAAADAAAAHAAA -AAAAAABIAAAAAAAAAAEAAAADAAAAIwAAAAAAAACIAQAAAAAAAAEAAAAFAAAAkAAAAAAA -AACYAQAAAAAAAAEAAAAFAAAAogAAAAAAAACoAQAAAAAAAAEAAAAFAAAArAAAAAAAAAC4 -AQAAAAAAAAEAAAAFAAAAuAAAAAAAAADIAQAAAAAAAAEAAAAFAAAAwgAAAAAAAADYAQAA -AAAAAAEAAAAFAAAAzAAAAAAAAADoAQAAAAAAAAEAAAAFAAAA1gAAAAAAAAD4AQAAAAAA -AAEAAAAFAAAA4gAAAAAAAAAIAgAAAAAAAAEAAAAFAAAA6gAAAAAAAAAYAgAAAAAAAAEA -AAAFAAAA8AAAAAAAAAAoAgAAAAAAAAEAAAAFAAAAEAEAAAAAAAA4AgAAAAAAAAEAAAAF -AAAAMAEAAAAAAABIAgAAAAAAAAEAAAAFAAAAQAEAAAAAAABYAgAAAAAAAAEAAAAFAAAA -UAEAAAAAAABoAgAAAAAAAAEAAAAFAAAAYAEAAAAAAAB4AgAAAAAAAAEAAAAFAAAAZAEA -AAAAAAAgAAAAAAAAAAEAAAABAAAAAAAAAAAAAAA4AAAAAAAAAAEAAAABAAAAzwAAAAAA -AABYAAAAAAAAAAEAAAABAAAA/AAAAAAAAAB4AAAAAAAAAAEAAAABAAAA9AEAAAAAAACw -AAAAAAAAAAEAAAABAAAARQIAAAAAAADIAAAAAAAAAAEAAAABAAAAZgIAAAAAAADgAAAA -AAAAAAEAAAABAAAAiAMAAAAAAAD4AAAAAAAAAAEAAAABAAAA3AMAAAAAAAAQAQAAAAAA -AAEAAAABAAAAbQQAAAAAAAAoAQAAAAAAAAEAAAABAAAAxQQAAAAAAABAAQAAAAAAAAEA -AAABAAAADQUAAAAAAABYAQAAAAAAAAEAAAABAAAAgQUAAAAAAACQAQAAAAAAAAEAAAAB -AAAAMwYAAAAAAACoAQAAAAAAAAEAAAABAAAA7QYAAAAAAADAAQAAAAAAAAEAAAABAAAA -HAcAAAAAAADgAQAAAAAAAAEAAAABAAAAgAcAAAAAAAAAAgAAAAAAAAEAAAABAAAAwwcA -AAAAAAAYAgAAAAAAAAEAAAABAAAA9wgAAAAAAABIAgAAAAAAAAEAAAABAAAAYAkAAAAA -AABoAgAAAAAAAAEAAAABAAAAzAkAAAAAAACAAgAAAAAAAAEAAAABAAAAEAoAAAAAAACY -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 -AAAAkFoAAAAAAABQDgAAAAAAAAEAAAABAAAAvVoAAAAAAABoDgAAAAAAAAEAAAABAAAA -4VoAAAAAAACADgAAAAAAAAEAAAABAAAADVsAAAAAAACYDgAAAAAAAAEAAAABAAAALFsA -AAAAAAC4DgAAAAAAAAEAAAABAAAAk1sAAAAAAADQDgAAAAAAAAEAAAABAAAAxlsAAAAA -AADoDgAAAAAAAAEAAAABAAAA3lsAAAAAAAAADwAAAAAAAAEAAAABAAAADFwAAAAAAAAo -DwAAAAAAAAEAAAABAAAArlwAAAAAAABADwAAAAAAAAEAAAABAAAAyFwAAAAAAABYDwAA -AAAAAAEAAAABAAAA01wAAAAAAABwDwAAAAAAAAEAAAABAAAA6VwAAAAAAACIDwAAAAAA -AAEAAAABAAAAHl0AAAAAAACgDwAAAAAAAAEAAAABAAAAP10AAAAAAAC4DwAAAAAAAAEA -AAABAAAAgF0AAAAAAADQDwAAAAAAAAEAAAABAAAArV0AAAAAAAD4DwAAAAAAAAEAAAAB -AAAAH14AAAAAAAAYEAAAAAAAAAEAAAABAAAAPV4AAAAAAABAEAAAAAAAAAEAAAABAAAA -1F4AAAAAAABgEAAAAAAAAAEAAAABAAAA8l4AAAAAAACIEAAAAAAAAAEAAAABAAAAjF8A -AAAAAACoEAAAAAAAAAEAAAABAAAArV8AAAAAAADAEAAAAAAAAAEAAAABAAAAs18AAAAA -AADYEAAAAAAAAAEAAAABAAAAtF8AAAAAAADwEAAAAAAAAAEAAAABAAAAtV8AAAAAAAAQ -EQAAAAAAAAEAAAABAAAA2V8AAAAAAAAwEQAAAAAAAAEAAAABAAAACGAAAAAAAABoEQAA -AAAAAAEAAAABAAAAGGAAAAAAAACAEQAAAAAAAAEAAAABAAAAS2AAAAAAAACgEQAAAAAA -AAEAAAABAAAA4GAAAAAAAAC4EQAAAAAAAAEAAAABAAAADWEAAAAAAADgEQAAAAAAAAEA -AAABAAAAiGEAAAAAAAD4EQAAAAAAAAEAAAABAAAAj2EAAAAAAAAQEgAAAAAAAAEAAAAB -AAAAlWEAAAAAAAAoEgAAAAAAAAEAAAABAAAAsGEAAAAAAABYEgAAAAAAAAEAAAABAAAA -0GEAAAAAAACQEgAAAAAAAAEAAAABAAAABGIAAAAAAACoEgAAAAAAAAEAAAABAAAADGIA -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 -AAEAAAABAAAAieQAAAAAAACQLwAAAAAAAAEAAAABAAAAw+UAAAAAAACwLwAAAAAAAAEA -AAABAAAAkuYAAAAAAADQLwAAAAAAAAEAAAABAAAAPOcAAAAAAADwLwAAAAAAAAEAAAAB -AAAA0OcAAAAAAAAoMAAAAAAAAAEAAAABAAAA6OcAAAAAAABIMAAAAAAAAAEAAAABAAAA -fegAAAAAAABgMAAAAAAAAAEAAAABAAAApegAAAAAAAB4MAAAAAAAAAEAAAABAAAA0+gA -AAAAAACgMAAAAAAAAAEAAAABAAAATukAAAAAAAC4MAAAAAAAAAEAAAABAAAAYekAAAAA -AADQMAAAAAAAAAEAAAABAAAAcukAAAAAAADoMAAAAAAAAAEAAAABAAAAeOkAAAAAAAAA -MQAAAAAAAAEAAAABAAAAfukAAAAAAAAwMQAAAAAAAAEAAAABAAAAhOkAAAAAAABoMQAA -AAAAAAEAAAABAAAA+OkAAAAAAACAMQAAAAAAAAEAAAABAAAAAOoAAAAAAACYMQAAAAAA -AAEAAAABAAAACOoAAAAAAACwMQAAAAAAAAEAAAABAAAAFOoAAAAAAADQMQAAAAAAAAEA -AAABAAAAROoAAAAAAADwMQAAAAAAAAEAAAABAAAAauoAAAAAAAAQMgAAAAAAAAEAAAAB -AAAAi+oAAAAAAAAoMgAAAAAAAAEAAAABAAAAoOoAAAAAAABAMgAAAAAAAAEAAAABAAAA -8uoAAAAAAABYMgAAAAAAAAEAAAABAAAAROsAAAAAAABwMgAAAAAAAAEAAAABAAAAbusA -AAAAAACIMgAAAAAAAAEAAAABAAAAyOsAAAAAAACgMgAAAAAAAAEAAAABAAAA+OsAAAAA -AADgMgAAAAAAAAEAAAABAAAA+OwAAAAAAAAgMwAAAAAAAAEAAAABAAAAUPUAAAAAAAA4 -MwAAAAAAAAEAAAABAAAAw/UAAAAAAABYMwAAAAAAAAEAAAABAAAA1vUAAAAAAAB4MwAA -AAAAAAEAAAABAAAACvYAAAAAAACgMwAAAAAAAAEAAAABAAAAxvcAAAAAAADQMwAAAAAA -AAEAAAABAAAAlvkAAAAAAAD4MwAAAAAAAAEAAAABAAAANfoAAAAAAAAQNAAAAAAAAAEA -AAABAAAAUfoAAAAAAAAoNAAAAAAAAAEAAAABAAAAoPoAAAAAAABQNAAAAAAAAAEAAAAB -AAAAE/sAAAAAAACANAAAAAAAAAEAAAABAAAAvvsAAAAAAADANAAAAAAAAAEAAAABAAAA -yv8AAAAAAADYNAAAAAAAAAEAAAABAAAAhgABAAAAAAD4NAAAAAAAAAEAAAABAAAAsgAB -AAAAAAAoNQAAAAAAAAEAAAABAAAAvQMBAAAAAABoNQAAAAAAAAEAAAABAAAAtwgBAAAA -AACYNQAAAAAAAAEAAAABAAAA3gkBAAAAAADINQAAAAAAAAEAAAABAAAAhAoBAAAAAADo -NQAAAAAAAAEAAAABAAAACwsBAAAAAAAoNgAAAAAAAAEAAAABAAAAYwwBAAAAAABANgAA -AAAAAAEAAAABAAAA2wwBAAAAAABYNgAAAAAAAAEAAAABAAAAVw0BAAAAAAB4NgAAAAAA -AAEAAAABAAAARg4BAAAAAACQNgAAAAAAAAEAAAABAAAAcw4BAAAAAAC4NgAAAAAAAAEA -AAABAAAAiQ8BAAAAAADQNgAAAAAAAAEAAAABAAAAoQ8BAAAAAADoNgAAAAAAAAEAAAAB -AAAAmRABAAAAAAAQNwAAAAAAAAEAAAABAAAAUREBAAAAAABANwAAAAAAAAEAAAABAAAA -ChIBAAAAAACYNwAAAAAAAAEAAAABAAAAVBMBAAAAAADANwAAAAAAAAEAAAABAAAAARQB -AAAAAADgNwAAAAAAAAEAAAABAAAAOBQBAAAAAAAAOAAAAAAAAAEAAAABAAAAdRQBAAAA -AAAoOAAAAAAAAAEAAAABAAAApxUBAAAAAABAOAAAAAAAAAEAAAABAAAAFxYBAAAAAABg -OAAAAAAAAAEAAAABAAAAkBYBAAAAAACAOAAAAAAAAAEAAAABAAAARxoBAAAAAACYOAAA -AAAAAAEAAAABAAAAVhoBAAAAAACwOAAAAAAAAAEAAAABAAAAahoBAAAAAADIOAAAAAAA -AAEAAAABAAAAgxoBAAAAAADgOAAAAAAAAAEAAAABAAAAtBoBAAAAAAAIOQAAAAAAAAEA -AAABAAAADhsBAAAAAAAwOQAAAAAAAAEAAAABAAAAcBwBAAAAAABIOQAAAAAAAAEAAAAB -AAAAaB0BAAAAAABgOQAAAAAAAAEAAAABAAAAvR0BAAAAAAB4OQAAAAAAAAEAAAABAAAA -Jh4BAAAAAACQOQAAAAAAAAEAAAABAAAAYR8BAAAAAADAOQAAAAAAAAEAAAABAAAAdB8B -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 +AEIOEEIOGEIOIEIOKEEOMEEOOEQOQIMHhgaMBY0EjgOPAgAAAAAAAAAcAAAApAIAAAAA +AAAAAAAAxAAAAAAAAABEDiBKhgKDAwAAAAAAAAAAAAAAAAAAAAAAR0NDOiAoR05VKSAz +LjMuNAAAR0NDOiAoR05VKSAzLjMuNAAAR0NDOiAoR05VKSAzLjMuNAAAR0NDOiAoR05V +KSAzLjMuNAAAR0NDOiAoR05VKSAzLjMuNAAAR0NDOiAoR05VKSAzLjMuNAAAR0NDOiAo +R05VKSAzLjMuNAAAR0NDOiAoR05VKSAzLjMuNAAAR0NDOiAoR05VKSAzLjMuNAAAR0ND +OiAoR05VKSAzLjMuNAAAR0NDOiAoR05VKSAzLjMuNAAAR0NDOiAoR05VKSAzLjMuNAAA +R0NDOiAoR05VKSAzLjMuNAAAR0NDOiAoR05VKSAzLjMuNAAAR0NDOiAoR05VKSAzLjMu +NAAAR0NDOiAoR05VKSAzLjMuNAAAR0NDOiAoR05VKSAzLjMuNAAAR0NDOiAoR05VKSAz +LjMuNAAAR0NDOiAoR05VKSAzLjMuNAAAR0NDOiAoR05VKSAzLjMuNAAAR0NDOiAoR05V +KSAzLjMuNAAAR0NDOiAoR05VKSAzLjMuNAAAR0NDOiAoR05VKSAzLjMuNAAAR0NDOiAo +R05VKSAzLjMuNAAAR0NDOiAoR05VKSAzLjMuNAAAR0NDOiAoR05VKSAzLjMuNAAAR0ND +OiAoR05VKSAzLjMuNAAAR0NDOiAoR05VKSAzLjMuNAAAR0NDOiAoR05VKSAzLjMuNAAA +R0NDOiAoR05VKSAzLjMuNAAAR0NDOiAoR05VKSAzLjMuNAAAR0NDOiAoR05VKSAzLjMu +NAAAR0NDOiAoR05VKSAzLjMuNAAAR0NDOiAoR05VKSAzLjMuNAAAR0NDOiAoR05VKSAz +LjMuNAAAR0NDOiAoR05VKSAzLjMuNAAAR0NDOiAoR05VKSAzLjMuNAAAR0NDOiAoR05V +KSAzLjMuNAAAR0NDOiAoR05VKSAzLjMuNAAAR0NDOiAoR05VKSAzLjMuNAAAR0NDOiAo +R05VKSAzLjMuNAAAR0NDOiAoR05VKSAzLjMuNAAAR0NDOiAoR05VKSAzLjMuNAAAR0ND +OiAoR05VKSAzLjMuNAAAR0NDOiAoR05VKSAzLjMuNAAAR0NDOiAoR05VKSAzLjMuNAAA +R0NDOiAoR05VKSAzLjMuNAAAR0NDOiAoR05VKSAzLjMuNAAAR0NDOiAoR05VKSAzLjMu +NAAAR0NDOiAoR05VKSAzLjMuNAAAR0NDOiAoR05VKSAzLjMuNAAAR0NDOiAoR05VKSAz +LjMuNAAALnN5bXRhYgAuc3RydGFiAC5zaHN0cnRhYgAucmVsYS50ZXh0AC5yZWxhLnJv +ZGF0YQAucm9kYXRhLnN0cjEuMQAucmVsYS5kYXRhAC5yZWxhLmVoX2ZyYW1lAC5ic3MA +LmNvbW1lbnQALm5vdGUuR05VLXN0YWNrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAQAA +AAYAAAAAAAAAAAAAAAAAAABAAAAAAAAAANCoAQAAAAAAAAAAAAAAAAAEAAAAAAAAAAAA +AAAAAAAAGwAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAiDoDAAAAAABgTgAAAAAAAA4AAAAB +AAAACAAAAAAAAAAYAAAAAAAAACsAAAABAAAAAgAAAAAAAAAAAAAAAAAAACCpAQAAAAAA +6JgAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAmAAAABAAAAAAAAAAAAAAAAAAA +AAAAAADoiAMAAAAAABAsAAAAAAAADgAAAAMAAAAIAAAAAAAAABgAAAAAAAAAMwAAAAEA +AAAyAAAAAAAAAAAAAAAAAAAACEICAAAAAADIBgAAAAAAAAAAAAAAAAAAAQAAAAAAAAAB +AAAAAAAAAEcAAAABAAAAAwAAAAAAAAAAAAAAAAAAAOBIAgAAAAAA5GAAAAAAAAAAAAAA +AAAAACAAAAAAAAAAAAAAAAAAAABCAAAABAAAAAAAAAAAAAAAAAAAAAAAAAD4tAMAAAAA +ADgZAAAAAAAADgAAAAYAAAAIAAAAAAAAABgAAAAAAAAAUgAAAAEAAAACAAAAAAAAAAAA +AAAAAAAAyKkCAAAAAACITAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAE0AAAAE +AAAAAAAAAAAAAAAAAAAAAAAAADDOAwAAAAAAKDUAAAAAAAAOAAAACAAAAAgAAAAAAAAA +GAAAAAAAAABcAAAACAAAAAMAAAAAAAAAAAAAAAAAAABg9gIAAAAAALABAAAAAAAAAAAA +AAAAAAAgAAAAAAAAAAAAAAAAAAAAYQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAYPYCAAAA +AACoAwAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAGoAAAAHAAAAAAAAAAAAAAAA +AAAAAAAAAAj6AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAARAAAA +AwAAAAAAAAAAAAAAAAAAAAAAAAAI+gIAAAAAAHoAAAAAAAAAAAAAAAAAAAABAAAAAAAA +AAAAAAAAAAAAAQAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAiP4CAAAAAAD4KAAAAAAAAA8A +AAAJAAAACAAAAAAAAAAYAAAAAAAAAAkAAAADAAAAAAAAAAAAAAAAAAAAAAAAAIAnAwAA +AAAABBMAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAwABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwADAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAGAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAwAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAIAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAwALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAMAAAAAAAAAAAAAAAAAAAAAAABAAAA +EgABAGmIAAAAAAAAcAAAAAAAAAAMAAAAEgABAMKAAAAAAAAABgAAAAAAAAAXAAAAEgAB +APl4AAAAAAAABgAAAAAAAAAiAAAAEgABAB/yAAAAAAAAVgEAAAAAAAAtAAAAEgABALyA +AAAAAAAABgAAAAAAAAA4AAAAEgABAGNfAAAAAAAAlwAAAAAAAABDAAAAEgABAB8HAQAA +AAAAugEAAAAAAABOAAAAEgABAK7JAAAAAAAALwAAAAAAAABZAAAAEgABAFMRAQAAAAAA +NgEAAAAAAABkAAAAEgABAIxVAAAAAAAA6wAAAAAAAABvAAAAEgABAMxKAQAAAAAA0QAA +AAAAAAB6AAAAEgABAKmVAAAAAAAAAQAAAAAAAACFAAAAEQAGAKBHAAAAAAAApAEAAAAA +AACQAAAAEgABAGv2AAAAAAAAIQAAAAAAAACbAAAAEgABAHpXAAAAAAAALgAAAAAAAACm +AAAAEgABANBJAAAAAAAA9AAAAAAAAACxAAAAEQAGAEBYAAAAAAAApAEAAAAAAAC8AAAA +EgABAITsAAAAAAAAIgAAAAAAAADHAAAAEgABAFToAAAAAAAAEAAAAAAAAADSAAAAEgAB +ADTfAAAAAAAACAAAAAAAAADdAAAAEgABAOjIAAAAAAAAsQAAAAAAAADoAAAAEgABAMTT +AAAAAAAA9wAAAAAAAADzAAAAEgABAHEIAAAAAAAAWwAAAAAAAAD+AAAAEgABAPm9AAAA +AAAAqQAAAAAAAAAJAQAAEgABALeoAAAAAAAAtwAAAAAAAAAUAQAAEgABAMuTAAAAAAAA +SgAAAAAAAAAfAQAAEgABAGiXAAAAAAAACAAAAAAAAAAqAQAAEgABAPt8AAAAAAAAKQAA +AAAAAAA1AQAAEgABAK/vAAAAAAAAMQAAAAAAAABAAQAAEgABAJDIAAAAAAAABgAAAAAA +AABLAQAAEgABAKDcAAAAAAAAFAAAAAAAAABWAQAAEgABANkIAQAAAAAAcwAAAAAAAABh +AQAAEgABAGIGAAAAAAAARAAAAAAAAABsAQAAEgABAFyLAAAAAAAABgAAAAAAAAB3AQAA +EgABANg9AQAAAAAAaQAAAAAAAACCAQAAEgABANd/AAAAAAAABgAAAAAAAACNAQAAEgAB +AHCXAAAAAAAACAAAAAAAAACYAQAAEgABANILAAAAAAAAVAEAAAAAAACzAQAAEQAGAABT +AAAAAAAApAEAAAAAAAC+AQAAEgABAETpAAAAAAAAlwAAAAAAAADJAQAAEgABAPd9AAAA +AAAAZwAAAAAAAADUAQAAEgABAK0CAAAAAAAAIQAAAAAAAADfAQAAEgABAJA/AQAAAAAA +VQAAAAAAAADqAQAAEAAAAAAAAAAAAAAAAAAAAAAAAAALAgAAEgABAM1cAAAAAAAAMwAA +AAAAAAAWAgAAEgABAEnrAAAAAAAAJwEAAAAAAAAhAgAAEgABAAzrAAAAAAAAPQAAAAAA +AAAsAgAAEgABAIzAAAAAAAAAqQAAAAAAAAA3AgAAEgABAHFeAAAAAAAAIQAAAAAAAABC +AgAAEgABAKKQAAAAAAAAQwAAAAAAAABNAgAAEgABABWUAAAAAAAAmgAAAAAAAABYAgAA +EgABAGLBAAAAAAAAMwAAAAAAAABjAgAAEgABAKeOAAAAAAAAHQAAAAAAAABuAgAAEgAB +AAfqAAAAAAAASgAAAAAAAAB5AgAAEgABAOV/AAAAAAAASgAAAAAAAACEAgAAEgABABtc +AAAAAAAALAAAAAAAAACPAgAAEgABAC15AAAAAAAAMwAAAAAAAACaAgAAEgABAL/kAAAA +AAAAbgAAAAAAAAClAgAAEgABAOPJAAAAAAAAAQAAAAAAAACwAgAAEgABAGKVAAAAAAAA +LwAAAAAAAAC7AgAAEgABANvpAAAAAAAAHgAAAAAAAADGAgAAEgABALToAAAAAAAAcgAA +AAAAAADRAgAAEgABAHHKAAAAAAAAWwAAAAAAAADcAgAAEgABAF8JAQAAAAAALwAAAAAA +AADnAgAAEgABAHRXAAAAAAAABgAAAAAAAADyAgAAEgABAFHqAAAAAAAAmgAAAAAAAAD9 +AgAAEgABAOBNAAAAAAAARwYAAAAAAAAIAwAAEgABABKVAAAAAAAAJwAAAAAAAAATAwAA +EgABAOfmAAAAAAAAGgAAAAAAAAAeAwAAEgABAFwCAAAAAAAAUQAAAAAAAAApAwAAEgAB +ACbpAAAAAAAAHgAAAAAAAAA0AwAAEgABAG0tAQAAAAAAIwEAAAAAAAA/AwAAEgABAM7b +AAAAAAAAJAAAAAAAAABKAwAAEgABABgQAQAAAAAAkAAAAAAAAABVAwAAEgABALTLAAAA +AAAAIgEAAAAAAABgAwAAEgABACZeAAAAAAAAFgAAAAAAAABrAwAAEgABAJCLAAAAAAAA +mQAAAAAAAAB2AwAAEgABAJmPAAAAAAAAeAAAAAAAAACBAwAAEgABAFF4AAAAAAAAHAAA +AAAAAACMAwAAEgABACAzAQAAAAAArQAAAAAAAACXAwAAEgABAOptAAAAAAAAIwIAAAAA +AACiAwAAEgABADhhAAAAAAAAAQAAAAAAAACtAwAAEgABAM0zAQAAAAAANwAAAAAAAAC4 +AwAAEgABAJt6AAAAAAAAYAIAAAAAAADDAwAAEgABAEMBAAAAAAAADQEAAAAAAADSAwAA +EgABABYeAQAAAAAANQMAAAAAAADdAwAAEgABAAz1AAAAAAAA2wAAAAAAAADoAwAAEgAB +AO+UAAAAAAAADgAAAAAAAADzAwAAEgABABQxAQAAAAAAbAEAAAAAAAD+AwAAEgABAMTu +AAAAAAAA6wAAAAAAAAAJBAAAEgABAPD1AAAAAAAACAAAAAAAAAAUBAAAEgABAFACAAAA +AAAADAAAAAAAAAAfBAAAEgABALCRAAAAAAAACwAAAAAAAAAqBAAAEgABAJXBAAAAAAAA +9AAAAAAAAAA1BAAAEgABADXBAAAAAAAALQAAAAAAAABABAAAEgABAHeiAAAAAAAARQAA +AAAAAABLBAAAEgABACdUAAAAAAAADgAAAAAAAABWBAAAEgABADxeAAAAAAAANQAAAAAA +AABhBAAAEgABAM4CAAAAAAAA1QEAAAAAAAB3BAAAEgABADQPAQAAAAAAHAAAAAAAAACC +BAAAEgABAC+AAAAAAAAAjAAAAAAAAACNBAAAEgABAEVfAAAAAAAAHgAAAAAAAACYBAAA +EgABAACKAAAAAAAAEwAAAAAAAACjBAAAEgABAEwJAQAAAAAAEwAAAAAAAACuBAAAEgAB +AHSwAAAAAAAAIgAAAAAAAAC5BAAAEgABAO7gAAAAAAAAbwMAAAAAAADEBAAAEgABAB7e +AAAAAAAABwAAAAAAAADPBAAAEgABAEFYAAAAAAAAhwAAAAAAAADaBAAAEgABAGtUAQAA +AAAANgAAAAAAAADlBAAAEgABANmIAAAAAAAANwAAAAAAAADwBAAAEgABABZUAQAAAAAA +VQAAAAAAAAD7BAAAEgABAM5BAQAAAAAAMAAAAAAAAAAGBQAAEgABAG3fAAAAAAAA9gAA +AAAAAAARBQAAEgABAN2UAAAAAAAAAQAAAAAAAAAcBQAAEgABAGZcAAAAAAAAZwAAAAAA +AAAnBQAAEgABAHjAAAAAAAAAFAAAAAAAAAAyBQAAEgABAKeVAAAAAAAAAQAAAAAAAAA9 +BQAAEgABANbMAAAAAAAAlwYAAAAAAABIBQAAEgABAFswAQAAAAAAuQAAAAAAAABTBQAA +EgABAE7oAAAAAAAABgAAAAAAAABeBQAAEgABAIiOAAAAAAAAHwAAAAAAAABpBQAAEgAB +APP2AAAAAAAAUgAAAAAAAAB0BQAAEgABAPN4AAAAAAAABgAAAAAAAAB/BQAAEgABADA8 +AQAAAAAAOQEAAAAAAACKBQAAEgABAKuYAAAAAAAAOwAAAAAAAACVBQAAEgABAHBbAAAA +AAAAWgAAAAAAAACgBQAAEgABAOvqAAAAAAAAIQAAAAAAAACrBQAAEgABAG3TAAAAAAAA +VwAAAAAAAAC2BQAAEgABAD7HAAAAAAAAFAAAAAAAAADBBQAAEgABAOU/AQAAAAAAOQAA +AAAAAADMBQAAEAAAAAAAAAAAAAAAAAAAAAAAAADZBQAAEgABAD16AAAAAAAAXgAAAAAA +AADkBQAAEgABAKLJAAAAAAAABgAAAAAAAADvBQAAEgABACZPAQAAAAAABgAAAAAAAAD6 +BQAAEgABALdkAAAAAAAAOwAAAAAAAAAFBgAAEgABANA9AQAAAAAACAAAAAAAAAAQBgAA +EgABAH5AAQAAAAAACAAAAAAAAAAbBgAAEgABACznAAAAAAAAdwAAAAAAAAAmBgAAEgAB +APcEAAAAAAAARAEAAAAAAAA3BgAAEgABAH42AQAAAAAA1wMAAAAAAABCBgAAEgABAJJe +AAAAAAAAQQAAAAAAAABNBgAAEgABAJB+AAAAAAAAmAAAAAAAAABYBgAAEgABANaUAAAA +AAAAAQAAAAAAAABjBgAAEgABAGToAAAAAAAADgAAAAAAAABuBgAAEgABANiAAAAAAAAA +BgAAAAAAAAB5BgAAEgABAJ1LAQAAAAAATwAAAAAAAACEBgAAEgABAD5kAAAAAAAAUgAA +AAAAAACPBgAAEgABACxPAQAAAAAABgAAAAAAAACaBgAAEgABAMTYAAAAAAAAjwAAAAAA +AAClBgAAEgABAGKLAAAAAAAALgAAAAAAAACwBgAAEgABAGWkAAAAAAAAYwEAAAAAAAC7 +BgAAEgABAG14AAAAAAAAhgAAAAAAAADGBgAAEgABAFYXAQAAAAAAzgUAAAAAAADRBgAA +EgABAMn3AAAAAAAAMAAAAAAAAADcBgAAEgABAHXzAAAAAAAAFgAAAAAAAADnBgAAEgAB +AOaYAAAAAAAA3AAAAAAAAADyBgAAEgABALFTAQAAAAAALgAAAAAAAAD9BgAAEgABAKbs +AAAAAAAAHgIAAAAAAAAIBwAAEgABAHySAAAAAAAAbgAAAAAAAAATBwAAEgABAN+UAAAA +AAAAEAAAAAAAAAAeBwAAEgABAODvAAAAAAAAPwIAAAAAAAApBwAAEgABAEE0AQAAAAAA +VAEAAAAAAAA0BwAAEgABAP5BAQAAAAAAxAQAAAAAAAA/BwAAEgABADmVAAAAAAAAKQAA +AAAAAABKBwAAEgABAM6AAAAAAAAACgAAAAAAAABVBwAAEgABAOZWAAAAAAAABwAAAAAA +AABgBwAAEgABABCJAAAAAAAA7gAAAAAAAABrBwAAEgABADbmAAAAAAAAIAAAAAAAAAB2 +BwAAEgABAI1hAAAAAAAADgAAAAAAAACBBwAAEgABAAqUAQAAAAAAxAAAAAAAAACMBwAA +EgABADFhAAAAAAAAAQAAAAAAAACXBwAAEgABAIDoAAAAAAAABwAAAAAAAACiBwAAEgAB +ANjnAAAAAAAANQAAAAAAAACtBwAAEQAGAMBbAAAAAAAApAEAAAAAAAC4BwAAEgABAJzH +AAAAAAAAZAAAAAAAAADDBwAAEgABAFRYAQAAAAAATQAAAAAAAADOBwAAEgABAK9PAQAA +AAAANgAAAAAAAADZBwAAEgABACZgAAAAAAAASgAAAAAAAADkBwAAEgABAHiXAAAAAAAA +DAAAAAAAAADvBwAAEgABAPJkAAAAAAAAHwEAAAAAAAD6BwAAEgABAPoGAQAAAAAAJQAA +AAAAAAAFCAAAEgABAIDkAAAAAAAAHwAAAAAAAAAQCAAAEgABAFbmAAAAAAAAkQAAAAAA +AAAbCAAAEgABAI5AAQAAAAAAQAEAAAAAAAAmCAAAEgABAJJsAAAAAAAAGAAAAAAAAAAx +CAAAEgABAFBjAAAAAAAACAAAAAAAAAA8CAAAEgABAFVdAAAAAAAArAAAAAAAAABHCAAA +EgABAJtkAAAAAAAAHAAAAAAAAABSCAAAEgABALflAAAAAAAAfwAAAAAAAABdCAAAEgAB +AN4LAQAAAAAAmgIAAAAAAABoCAAAEgABAJxhAAAAAAAAAQAAAAAAAABzCAAAEgABAMI6 +AQAAAAAAbgEAAAAAAAB+CAAAEQAGACBLAAAAAAAApAEAAAAAAACJCAAAEgABAKjJAAAA +AAAABgAAAAAAAACUCAAAEgABAMhYAAAAAAAAqgEAAAAAAACfCAAAEgABAAE+AAAAAAAA +QwAAAAAAAACqCAAAEgABAAB5AAAAAAAALQAAAAAAAAC1CAAAEgABAJBkAAAAAAAACwAA +AAAAAADACAAAEAAAAAAAAAAAAAAAAAAAAAAAAADgCAAAEgABABRmAAAAAAAA9gUAAAAA +AADrCAAAEQAGAAAAAAAAAAAACQAAAAAAAAD7CAAAEgABACBPAQAAAAAABgAAAAAAAAAG +CQAAEgABAIkSAQAAAAAAfQAAAAAAAAARCQAAEgABABGQAAAAAAAAIgAAAAAAAAAcCQAA +EgABAAqoAQAAAAAAxAAAAAAAAAAnCQAAEgABALvUAAAAAAAAOAAAAAAAAAAyCQAAEgAB +AAznAAAAAAAAIAAAAAAAAAA9CQAAEgABADlhAAAAAAAAAQAAAAAAAABICQAAEgABAJ8P +AQAAAAAAeQAAAAAAAABTCQAAEgABANeUAAAAAAAABgAAAAAAAABeCQAAEgABAAyXAAAA +AAAAEwAAAAAAAABpCQAAEgABACmMAAAAAAAAhwAAAAAAAAB0CQAAEgABAIfoAAAAAAAA +JwAAAAAAAAB/CQAAEAAAAAAAAAAAAAAAAAAAAAAAAACOCQAAEgABAFeQAAAAAAAALAAA +AAAAAACZCQAAEQAGAABaAAAAAAAApAEAAAAAAACkCQAAEgABAPb0AAAAAAAAEwAAAAAA +AACvCQAAEgABAMPZAAAAAAAANwAAAAAAAAC6CQAAEgABAG6pAAAAAAAARQAAAAAAAADF +CQAAEgABAH5sAAAAAAAAFAAAAAAAAADQCQAAEgABAAiTAAAAAAAAlwAAAAAAAADbCQAA +EgABACXeAAAAAAAADQEAAAAAAADmCQAAEQAGAMBUAAAAAAAApAEAAAAAAADxCQAAEgAB +AHDsAAAAAAAAFAAAAAAAAAD8CQAAEgABAJaRAAAAAAAAGgAAAAAAAAAHCgAAEgABAG/3 +AAAAAAAAWgAAAAAAAAASCgAAEgABAN9TAQAAAAAANwAAAAAAAAAdCgAAEgABAB9JAQAA +AAAArQEAAAAAAAAoCgAAEgABALCMAAAAAAAAtwEAAAAAAAAzCgAAEgABAN3JAAAAAAAA +BgAAAAAAAAA+CgAAEgABAMNjAAAAAAAAFAAAAAAAAABJCgAAEgABADePAAAAAAAAMQAA +AAAAAABUCgAAEgABAPmsAAAAAAAADwEAAAAAAABfCgAAEgABABNyAAAAAAAAGAAAAAAA +AABqCgAAEgABAKH2AAAAAAAAUgAAAAAAAAB1CgAAEQAGAIBWAAAAAAAApAEAAAAAAACA +CgAAEgABADOQAAAAAAAAJAAAAAAAAACLCgAAEgABAAWRAAAAAAAAkQAAAAAAAACWCgAA +EgABAAFeAAAAAAAAGgAAAAAAAAChCgAAEgABAGQ6AQAAAAAAFAAAAAAAAACsCgAAEAAA +AAAAAAAAAAAAAAAAAAAAAAC7CgAAEgABAJbIAAAAAAAACAAAAAAAAADGCgAAEgABAJ/k +AAAAAAAAIAAAAAAAAADRCgAAEgABAJRaAAAAAAAAHwAAAAAAAADcCgAAEgABAPnpAAAA +AAAADgAAAAAAAADnCgAAEgABANCUAAAAAAAABgAAAAAAAADyCgAAEgABAF7lAAAAAAAA +WQAAAAAAAAD9CgAAEQAGAOBMAAAAAAAApAEAAAAAAAAICwAAEgABAJWYAAAAAAAACwAA +AAAAAAATCwAAEgABABOKAAAAAAAAowAAAAAAAAAeCwAAEgABABYBAAAAAAAALQAAAAAA +AAAsCwAAEQAGAGBJAAAAAAAApAEAAAAAAAA3CwAAEgABAEOYAAAAAAAAUgAAAAAAAABC +CwAAEgABALaKAAAAAAAABwAAAAAAAABNCwAAEQAGACAAAAAAAAAAQAAAAAAAAABfCwAA +EgABAABdAAAAAAAAGAAAAAAAAABqCwAAEgABAExdAAAAAAAACQAAAAAAAAB1CwAAEgAB +ADJPAQAAAAAAfQAAAAAAAACACwAAEgABADzfAAAAAAAAMQAAAAAAAACLCwAAEgABAJFi +AAAAAAAAbwAAAAAAAACWCwAAEgABAABjAAAAAAAAEwAAAAAAAAChCwAAEgABAL2TAAAA +AAAADgAAAAAAAACsCwAAEgABADT2AAAAAAAANwAAAAAAAAC3CwAAEgABAOdIAAAAAAAA +vgAAAAAAAADCCwAAEgABAFU6AQAAAAAADwAAAAAAAADNCwAAEgABAPGXAAAAAAAAUgAA +AAAAAADYCwAAEgABAK+UAAAAAAAAIQAAAAAAAADjCwAAEgABAAT2AAAAAAAAMAAAAAAA +AADuCwAAEgABAKFUAQAAAAAAswMAAAAAAAD5CwAAEgABAFLHAAAAAAAAGQAAAAAAAAAE +DAAAEgABAAQ0AQAAAAAAPQAAAAAAAAAPDAAAEgABAJ+TAAAAAAAAHgAAAAAAAAAaDAAA +EgABACQdAQAAAAAAxgAAAAAAAAAlDAAAEgABAL2KAAAAAAAAngAAAAAAAAAwDAAAEgAB +AJ7IAAAAAAAASgAAAAAAAAA7DAAAEQAGAKBOAAAAAAAApAEAAAAAAABGDAAAEgABAK9j +AAAAAAAAFAAAAAAAAABRDAAAEgABAJ1hAAAAAAAAAQAAAAAAAABcDAAAEgABAIZAAQAA +AAAACAAAAAAAAABnDAAAEgABAItWAAAAAAAAWwAAAAAAAAByDAAAEgABABRjAAAAAAAA +MQAAAAAAAAB9DAAAEgABAGrDAAAAAAAAxQMAAAAAAACIDAAAEgABAF5hAAAAAAAALwAA +AAAAAACTDAAAEgABABhgAAAAAAAADgAAAAAAAACeDAAAEgABAPrZAAAAAAAAQgEAAAAA +AACpDAAAEgABAIAyAQAAAAAAoAAAAAAAAAC0DAAAEgABAKCYAAAAAAAACwAAAAAAAAC/ +DAAAEgABAKVJAAAAAAAAKwAAAAAAAADKDAAAEgABAD3cAAAAAAAAYwAAAAAAAADVDAAA +EgABAPgKAAAAAAAAaAAAAAAAAADgDAAAEgABAFgHAAAAAAAAGQEAAAAAAADrDAAAEgAB +AKzbAAAAAAAAIgAAAAAAAAD2DAAAEgABAHBgAAAAAAAAmgAAAAAAAAABDQAAEgABAEhj +AAAAAAAACAAAAAAAAAAMDQAAEgABAM8rAQAAAAAAfwAAAAAAAAAXDQAAEgABAPdbAAAA +AAAAJAAAAAAAAAAiDQAAEgABAJ1SAQAAAAAAKwAAAAAAAAAtDQAAEgABAOodAQAAAAAA +LAAAAAAAAAA4DQAAEgABAKQ7AAAAAAAAHAAAAAAAAABDDQAAEgABAKMEAAAAAAAAVAAA +AAAAAABODQAAEgABAC3lAAAAAAAAMQAAAAAAAABZDQAAEAAAAAAAAAAAAAAAAAAAAAAA +AABpDQAAEgABAJawAAAAAAAAgAEAAAAAAAB0DQAAEgABAHhWAAAAAAAAEwAAAAAAAAB/ +DQAAEgABAGk9AQAAAAAAZwAAAAAAAACKDQAAEgABAEdcAAAAAAAAHwAAAAAAAACVDQAA +EgABAGPgAAAAAAAAiwAAAAAAAACgDQAAEgABADuSAAAAAAAAQQAAAAAAAACrDQAAEgAB +AADIAAAAAAAAkAAAAAAAAAC2DQAAEAAAAAAAAAAAAAAAAAAAAAAAAADWDQAAEgABAAJT +AQAAAAAArwAAAAAAAADhDQAAEgABAKYGAAAAAAAAsgAAAAAAAADsDQAAEgABANZaAAAA +AAAAYwAAAAAAAAD3DQAAEgABADlbAAAAAAAAMQAAAAAAAAACDgAAEgABAGiPAAAAAAAA +MQAAAAAAAAANDgAAEgABAKhXAAAAAAAAmQAAAAAAAAAYDgAAEgABAOWQAAAAAAAAIAAA +AAAAAAAjDgAAEgABAPPUAAAAAAAAngMAAAAAAAAuDgAAEgABAP2UAAAAAAAADgAAAAAA +AAA5DgAAEgABAPn3AAAAAAAALwEAAAAAAABEDgAAEgABACthAAAAAAAABgAAAAAAAABP +DgAAEgABAHRaAAAAAAAAIAAAAAAAAABaDgAAEgABAEZdAAAAAAAABgAAAAAAAABlDgAA +EAAAAAAAAAAAAAAAAAAAAAAAAABzDgAAEgABAGiOAAAAAAAAIAAAAAAAAAB+DgAAEgAB +ADAJAAAAAAAAlAAAAAAAAACJDgAAEgABADphAAAAAAAAJAAAAAAAAACUDgAAEgABANyX +AAAAAAAAFQAAAAAAAACfDgAAEgABAJGVAAAAAAAAFgAAAAAAAACqDgAAEgABABBtAAAA +AAAA2gAAAAAAAAC1DgAAEgABANdjAAAAAAAAFQAAAAAAAADADgAAEgABAIVRAQAAAAAA +GAEAAAAAAADLDgAAEgABABhdAAAAAAAALgAAAAAAAADWDgAAEgABAGDkAAAAAAAAIAAA +AAAAAADhDgAAEgABAPj1AAAAAAAADAAAAAAAAADsDgAAEgABAJoGAQAAAAAAYAAAAAAA +AAD3DgAAEgABAIOQAAAAAAAAHwAAAAAAAAACDwAAEgABAB7cAAAAAAAAHwAAAAAAAAAN +DwAAEgABAAYTAQAAAAAAUAQAAAAAAAAYDwAAEgABAMiAAAAAAAAABgAAAAAAAAAjDwAA +EgABABteAAAAAAAACwAAAAAAAAAuDwAAEgABACCXAAAAAAAASAAAAAAAAAA5DwAAEgAB +AJthAAAAAAAAAQAAAAAAAABEDwAAEgABALuRAAAAAAAAFgAAAAAAAABPDwAAEgABACh/ +AAAAAAAArwAAAAAAAABaDwAAEgABAMqOAAAAAAAAbQAAAAAAAABlDwAAEgABAN6UAAAA +AAAAAQAAAAAAAABwDwAAEgABAGB5AAAAAAAA3QAAAAAAAAB7DwAAEQAGAIBdAAAAAAAA +pAEAAAAAAACGDwAAEgABANBaAAAAAAAABgAAAAAAAACRDwAAEgABAMSOAAAAAAAABgAA +AAAAAACcDwAAEgABAFVVAAAAAAAANwAAAAAAAACnDwAAEgABAO1WAAAAAAAAhAAAAAAA +AACyDwAAEgABAPLbAAAAAAAALAAAAAAAAAC9DwAAEgABAGALAAAAAAAAcgAAAAAAAADI +DwAAEgABAHw/AQAAAAAAEwAAAAAAAADTDwAAEgABAK7oAAAAAAAABgAAAAAAAADeDwAA +EgABAAaSAAAAAAAANQAAAAAAAADpDwAAEgABAFcrAQAAAAAAeAAAAAAAAAD0DwAAEgAB +AJ2WAAAAAAAAbwAAAAAAAAD/DwAAEgABAMSZAAAAAAAAoAgAAAAAAAAKEAAAEQAGAEBf +AAAAAAAApAEAAAAAAAAVEAAAEgABAKfYAAAAAAAAHQAAAAAAAAAgEAAAEgABAMpbAAAA +AAAALQAAAAAAAAArEAAAEgABADsGAAAAAAAAJwAAAAAAAAA2EAAAEgABALNaAAAAAAAA +HQAAAAAAAABBEAAAEgABAN6AAAAAAAAAAQAAAAAAAABMEAAAEgABAEE+AQAAAAAAOwEA +AAAAAABXEAAAEgABAAU2AQAAAAAAeQAAAAAAAABiEAAAEgABAFhjAAAAAAAADAAAAAAA +AABtEAAAEgABAOqSAAAAAAAAHgAAAAAAAAB4EAAAEgABAOj1AAAAAAAACAAAAAAAAACD +EAAAEgABAGRjAAAAAAAASwAAAAAAAACOEAAAEgABALBUAAAAAAAAQQAAAAAAAACZEAAA +EgABAPpfAAAAAAAAHgAAAAAAAACkEAAAEgABAPSFAAAAAAAAGgAAAAAAAACvEAAAEgAB +AMQJAAAAAAAANAEAAAAAAAC6EAAAEgABAJnJAAAAAAAAAQAAAAAAAADFEAAAEgABACR9 +AAAAAAAAQQAAAAAAAADQEAAAEgABAKiVAAAAAAAAAQAAAAAAAADbEAAAEgABALSXAAAA +AAAAFAAAAAAAAADmEAAAEgABADJhAAAAAAAABgAAAAAAAADxEAAAEgABAPnCAAAAAAAA +cQAAAAAAAAD8EAAAEgABAIz2AAAAAAAAFQAAAAAAAAAHEQAAEgABALNnAQAAAAAAxAAA +AAAAAAASEQAAEgABAAphAAAAAAAAIQAAAAAAAAAdEQAAEgABAMRKAAAAAAAAJQAAAAAA +AAAoEQAAEgABAI9BAAAAAAAAWAcAAAAAAAA+EQAAEgABAEX3AAAAAAAAKgAAAAAAAABJ +EQAAEgABAOxjAAAAAAAAUgAAAAAAAABUEQAAEgABACj5AAAAAAAAcg0AAAAAAABfEQAA +EgABALTcAAAAAAAAagEAAAAAAABqEQAAEgABAGvHAAAAAAAAMQAAAAAAAAB1EQAAEgAB +AMiXAAAAAAAAFAAAAAAAAACAEQAAEgABAJzJAAAAAAAABgAAAAAAAACLEQAAEgABAGV9 +AAAAAAAAkgAAAAAAAACWEQAAEgABACg7AAAAAAAAfAAAAAAAAAChEQAAEgABAN1/AAAA +AAAACAAAAAAAAACsEQAAEgABAKpsAAAAAAAAZgAAAAAAAAC3EQAAEgABAISXAAAAAAAA +MAAAAAAAAADCEQAAEgABAGSiAAAAAAAAEwAAAAAAAADNEQAAEgABAPFUAAAAAAAAZAAA +AAAAAADYEQAAEgABALuAAAAAAAAAAQAAAAAAAADjEQAAEgABANNeAAAAAAAAcgAAAAAA +AADuEQAAEgABABq9AAAAAAAAQgAAAAAAAAD5EQAAEgABAIf0AAAAAAAAbwAAAAAAAAAE +EgAAEgABAA3oAAAAAAAAQQAAAAAAAAAPEgAAEgABANGRAAAAAAAANQAAAAAAAAAaEgAA +EgABADuBAAAAAAAAuQQAAAAAAAAlEgAAEgABABN1AAAAAAAAygIAAAAAAAAwEgAAEgAB +AHLoAAAAAAAADgAAAAAAAAA7EgAAEgABAC/HAAAAAAAADwAAAAAAAABGEgAAEgABACOB +AQAAAAAAzgAAAAAAAABREgAAEgABAKPnAAAAAAAANQAAAAAAAABcEgAAEgABADzbAAAA +AAAAbQAAAAAAAABnEgAAEgABAI4JAQAAAAAAUAIAAAAAAAByEgAAEgABAHg6AQAAAAAA +GQAAAAAAAAB9EgAAEgABACiIAAAAAAAAQQAAAAAAAACIEgAAEgABAFPZAAAAAAAAcAAA +AAAAAACTEgAAEgABAGpbAAAAAAAABgAAAAAAAACeEgAAEgABAAuVAAAAAAAABwAAAAAA +AACpEgAAEgABAF5+AAAAAAAAMgAAAAAAAAC0EgAAEgABAAHnAAAAAAAACwAAAAAAAAC/ +EgAAEgABAOpMAQAAAAAANAIAAAAAAADKEgAAEgABAL0mAQAAAAAA7gAAAAAAAADVEgAA +EgABALyiAAAAAAAAqQEAAAAAAADgEgAAEgABAG49AAAAAAAAkwAAAAAAAAD5EgAAEgAB +AJE6AQAAAAAAMQAAAAAAAAAAenowMDViNTg0NgB6ejBkYzE5OGRlAHp6MDAyZGIxMWMA +enowMmRiZjg3NQB6ejA1YjYzYzY0AHp6MDJkYmIxYjIAenowMmRiMjA1MwB6ejAwMmRi +YTQyAHp6MGZiYjFlM2YAenowYjc5ZWE5NAB6ejA1YjhjNjVhAHp6MDAxNmQ1NGQAenow +MDViNDBhZAB6ejA1Yjk0MmVkAHp6MGQ4ZGM2MmMAenowMDE5ZjQ3MAB6ejAyZGQ5NDJk +AHp6MDJkYmU3M2QAenowMDViNjkyYgB6ejBiNmQyMzI1AHp6MDA1Yjg1M2QAenowMDE2 +ZDkyZQB6ejBjZmIxODc1AHp6MDAyZGIzMWMAenowMmRhYmJhYwB6ejAyZGJjODUxAHp6 +MDAwYjZjNjgAenowMDBiNmJmOAB6ejAwYjZjZjVlAHp6MDE2ZTFkZmQAenowYjZmNTBi +OAB6ejA2ZTBhNGZlAHp6MDA2N2QyYjEAenowYjZjYTMyNQB6ejAwNWI2Y2ZkAHp6MDE2 +ZTBkZmQAenowMDBiNmY2OABhdGhfaGFsX3Byb2Nlc3Nfbm9pc2VmbG9vcgB6ejAwNWI0 +OGFkAHp6MDJkYmYxYjIAenowMDViODhjYgB6ejAzM2VjOGJmAHp6MGRiNDI1YzUAYXRo +X2hhbF9kbWFfYmVhY29uX3Jlc3BvbnNlX3RpbWUAenowMGI2ZjE2MQB6ejA2ZTAwYjhh +AHp6MDJkYmZjMWQAenowZGM0ZTM5MAB6ejBkYWZlZDg2AHp6MDBiNmUyN2EAenowMmRi +YmFiMgB6ejBiNmQxZWZmAHp6MDE2ZDkwZGQAenowMmRiZTg1MQB6ejAwNWI2NGZkAHp6 +MDAwYjZkNTIAenowYjZjOWVmZgB6ejAxNmUwMGRkAHp6MDBiNmU4MjIAenowMmRiZDg3 +NQB6ejAyZGIzMWIyAHp6MDBiNzA5MjMAenowMGI2ZDQ1MAB6ejAwMGI2ZDFkAHp6MGI2 +YzIzMjUAenowMmRiZGFiMgB6ejAwMDViNjMyAHp6MDZkZWRkOTMAenowMDE2ZGE1MAB6 +ejAwMDY3ZDMyAHp6MDBiNmQ5MjMAenowMDJkYjUxYwB6ejAxNmRjYmZlAHp6MDBiNzAx +NDUAenowMDE2ZGVjMQB6ejAwMTZkZjJjAHp6MGI3ZmFkM2UAenowMTZkOTkyMAB6ejAy +ZGIxYmFjAHp6MGRjNmUzOTAAenowNWI3MDFlMAB6ejAwMGI2YjEwAHp6MGI3MDllZmYA +enowMTZkZjg5YgBhdGhfaGFsX2F0dGFjaAB6ejA2ZTBmYzBkAHp6MDE2ZGFiMmQAenow +MmRiMTM1ZAB6ejBlMDQ2ODRiAHp6MDE2ZTI5MWQAenowMDBiNmZlOAB6ejAwY2ZiM2Uw +AHp6MDAxNmQ5NDgAenowMTZlMjA5YgB6ejBiNzAxZWZmAHp6MDAwYjZjOWQAenowMDA1 +YjVhMgB6ejAyZGIxNzBhAGF0aF9oYWxfY29tcHV0ZXR4dGltZQB6ejAyZGI1YmFjAHp6 +MDA1YjgxM2QAenowMGI2YzkyMwB6ejBiNmI1MGI4AHp6MDA1YjdmOWQAenowYjcwMWQw +MgB6ejA2ZGZmNDRhAHp6MDJkYjU3NjMAenowNmVlYWY2MAB6ejAxNmUzMThjAHp6MGUw +MDdjYTEAenowMDJkYWQxZAB6ejAwMmRhZjYyAHp6MGI4M2FkM2UAenowMDBiNmI5MAB6 +ejAxNmQ5ZWZhAHp6MDE2ZGUwNTEAenowMDJkYWIxZAB6ejAwMDViNmIyAHp6MDViN2Yx +MTQAenowNGFlMDMxZgB6ejAyZGJkZGZkAHp6MDA1NDdmZWQAenowMGI2YmY1ZQB6ejAw +YjcxNzdkAHp6MDBiNzBmM2QAenowMTZkODkyMAB6ejAyZGIxYWIyAHp6MDAwNWI2MjIA +enowMDBiNmY3OAB6ejBiNjliMDdjAGF0aF9oYWxfZnJlZQB6ejA1Yjc5YjFiAHp6MGRj +Mzk4ZGUAenowNWI2YmM2NAB6ejAwYjcwNzNkAHp6MDJkYmViYmQAenowYjVlMzE1MgB6 +ejAxNmRmYmYxAGF0aF9oYWxfbWh6MmllZWUAenowMTZlMTg5YgB6ejBkYzJhNWM1AHp6 +MDAyZGM2MGIAenowNmRmMGI4YQB6ejAyZGIzMzVkAHp6MDBiNmUwYjIAenowYjZjNTNh +NAB6ejBmNTRkMWIwAHp6MDJkYjBlZTIAenowYjZmZDM2MwB6ejBkOWRjNjJjAHp6MDVi +NzQxZTAAenowMmRhOWJhYwB6ejBkYzIxZDNhAHp6MDBiNzE3M2QAenowMTZkOWQ0MQB6 +ejAwNWI4NGZkAHp6MDE2ZGUxMWQAenowMDViOGFiZAB6ejAwYjcwMTIzAHp6MDA1YjY1 +MmIAenowMmRiMzg3NQB6ejAxNmUzMDliAHp6MDA1YjYwYjIAenowMmRiMTg3NQB6ejAw +MmRiODQyAHp6MDJkYjE3NjMAenowYjdkZWE5NAB6ejAwYjcwMTYxAHp6MDE2ZDdkNDEA +enowMDE2Y2QzMgB6ejA2ZGUwYjhhAHp6MDZkOWRkOTMAenowZGIzZWQ4NgB6ejAwNWI0 +OGVkAHp6MDAyZGM4MGIAenowMDJkYmM0MgB6ejAwYjZmMDIyAHp6MDJkYmE4NTEAenow +MmRiMzNlZAB6ejAwNWI4MGZkAHp6MDA1YjdmMmUAenowMmRiZmRmZAB6ejAxNmU2NDhh +AHp6MDAyZGFmZjIAenowMDViNzc5ZAB6ejAwMGI2ZWU4AHp6MDE2ZTQ0OGEAenowMGI2 +ZjZiYwB6ejAxNmRhOTIwAHp6MDViNzgxZTAAenowMDBiNmYxYwB6ejAwMmRjYTBiAHp6 +MDA1YjQ0YWQAenowMmRhZWVlMgB6ejA2ZGRmNDRhAHp6MGZhYzBjOWIAenowYjZmOWVm +ZgB6ejAwYjZjNmJjAGF0aF9oYWxfYWRkaXRpb25hbF9zd2JhX2JhY2tvZmYAenowMDAy +ZGI5MgBhdGhfaGFsX3ZlcnNpb24AenowZGM1OThkZQB6ejAyZGJhYzJlAHp6MDJkYjc5 +YWUAenowMDE2ZTUzMgB6ejBiNmNmMDA5AHp6MDAxNmUxMmMAenowMDE2ZDllNAB6ejAw +MDJkYWVhAHp6MDA1YjVjYjIAenowMTZkYTI1MQB6ejA2ZjZhZjYwAHp6MDZkZmRkOTMA +YXRoX2hhbF9tYWxsb2MAenowMDBiNmRkMgB6ejAyZGQ5MmFkAHp6MDE2ZGIyNTEAenow +ZTEwN2NhMQB6ejAwYjZjNzVlAHp6MDE2ZGQwNTEAenowMmRiZDFiMgB6ejAyZGMxNzYz +AHp6MGI2OTBkNmQAenowMTZkZjA1MQB6ejAwMTZkOTUwAHp6MDBiNzA2YmMAenowMGI2 +ZjA0ZAB6ejAwMTZkODcyAHp6MDZkZWY0NGEAenowMGI2ZThiMgB6ejA1YjhjMmVkAHp6 +MDZmYjk0N2IAenowZWJiMWUzZgB6ejBiNmY5ZDAyAHp6MGQxNGQxYjAAenowYjQ4MDMx +ZQB6ejAxNmRiYmZlAHp6MDE2ZTU0OGEAenowMDE2ZDg1MAB6ejAwMGI2ZmY4AGF0aF9o +YWxfbWVtY3B5AHp6MDJkYmNiYmQAenowMTZkYTBkZAB6ejAyZGJiZGZkAHp6MDJkYjI4 +NTEAenowMmRiZGMxZAB6ejA2ZGIwY2YyAHp6MDE2ZWI5YWQAenowMGI2Y2ViYwB6ejBk +OTQ4NGExAGF0aF9oYWxfcHJvYmUAenowMTZlYTlhZAB6ejBmZDRkMWIwAHp6MDJkYjM3 +NjMAYXRoX2hhbF9idWlsZG9wdHMAenowMmRhZjM1ZAB6ejA2ZGRkZDkzAHp6MDBiNmYw +YjIAenowZGFkYzYyYwB6ejAxNmRmMjUxAHp6MDE2ZDkyNTEAenowMmRiMDg1MQB6ejBi +NzIxYWVkAHp6MDY3Y2ZjYWUAenowMDBiNmNmOAB6ejBjOTRkMWIwAHp6MDJkYWZhYjIA +enowNWI5MmFlZAB6ejA1YjhjM2U0AHp6MDA1YjhjY2IAenowYjZkOWVmZgB6ejAyZGIx +MWIyAHp6MDJkYmZmYjEAenowMmRiZjc2MwB6ejAwNWI2OGZkAHp6MDA1YjQ0ZWQAenow +YjcxMWFlZAB6ejAwMTZkNDRkAHp6MGI1ZTMxNjAAenowZDg0ODRhMQB6ejAxNmQ4YjJk +AHp6MDE2ZTA4OWIAenowMmRiYjg3NQB6ejAyZGFlODUxAHp6MGI4MWVhOTQAenowMTZk +ZWMxZgB6ejAwYjZmZWJjAHp6MGU4OTQ5MDcAenowMGI2ZWE3YQB6ejAzM2U4ZmJmAHp6 +MGNmYTU4NzUAenowMmRiOTlhZQB6ejAyZGI5YWIyAHp6MDAwYjZiZTgAenowZGU2ODM3 +ZgB6ejAxNmRhYmZlAHp6MDAwYjcwMWMAenowYjcwOWQwMgB6ejA2N2QyNWUyAHp6MDE5 +ZjNhMDEAenowNzAzOTQ3YgBhdGhfaGFsX21lbXplcm8AenowNmRmZmMwZAB6ejBiNjc1 +MGI4AHp6MDE2ZTJkZmQAenowMDBiNmQyMgB6ejA2ZmVhZjYwAHp6MGRjNGE1YzUAenow +MGI3MGY3ZABhdGhfaGFsX3N3X2JlYWNvbl9yZXNwb25zZV90aW1lAHp6MDAxNmQ2NGQA +enowOWY2NGI2YQB6ejAwNWI2NTdhAHp6MDZmMzk0N2IAenowNmRhMGNmMgB6ejBiN2Jh +ZDNlAHp6MDBiNmY5NjEAenowYjY5NzNiYwB6ejAyZGJkMzVkAHp6MDA1Yjg4ZmQAenow +MmRiYmMxZAB6ejAyZGFmZGZkAHp6MDZkN2RkOTMAYXRoX2hhbF9kZWxheQB6ejAyZGIx +ZGZkAHp6MDY3ZDJmNDEAenowMmRhZjg3NQB6ejBiN2VkZTZkAHp6MDE2ZDhkNDEAenow +MDJkYWU5MgB6ejBiN2FkZTZkAHp6MGRhZGIwZGUAenowMmRiYjM1ZAB6ejAyZGIzZGZk +AHp6MDJkYjUzZWQAenowMTZkY2VhZQB6ejAwMGI2ZGEyAHp6MDAwYjZlMjIAenowNWI4 +MDA0MQB6ejAyZGFjZWUyAHp6MDAxNmQ4NDgAenowMTZkOWIyZAB6ejAwMmRhOTFkAHp6 +MDAxNmUwMmMAenowMGI3MDc3ZAB6ejAwNWI2OTdhAHp6MDAxNmRhZTQAenowMTZlMTA5 +YgB6ejAwNWI0YTJkAHp6MDE2ZGUwZGQAenowMTZkZjBkZAB6ejBkZjA3Y2ExAHp6MDJk +YmQ3NjMAenowMDBiNmU1MgB6ejA2N2QwYzQ3AHp6MDViNmM2ZGIAenowYzMxNWViNQB6 +ejBkYjFlZDg2AHp6MDZkNDA2ZTAAenowMTZlMDI1MQB6ejAwMDJkYmIyAHp6MDAyZGQ4 +NmQAenowMDE2ZTE0ZAB6ejAyZGI1OWFlAHp6MDA2N2QyMjEAenowMTZkODBkZAB6ejAw +YjZlMDIyAHp6MDA1Yjg5M2QAenowNWI4MWIxYgB6ejAyZGIxM2VkAHp6MDBiNmQxMjMA +enowMDBiNmNlOAB6ejA1YjhhYWVkAHp6MGI2ZWQzNjMAenowMmRhZjFiMgB6ejAwMDVi +NWUyAHp6MDMzZWJmYmYAenowNWI2ODZkYgB6ejAwMGI2ZWY4AHp6MDAwYjZmOWMAenow +YjcxOWFlZAB6ejAwNWI1OGIyAHp6MDViN2RiMWIAenowYjgyZGU2ZAB6ejAwMTZkNzMy +AHp6MDJkYWRhYjIAenowZjQ1ZTZlMwBhdGhfaGFsX2luaXRfY2hhbm5lbHMAenowMGI2 +ZDZiYwB6ejBjMTRkMWIwAHp6MDAwMmRiZDIAenowZGE0ODRhMQB6ejAxNmUwYjg3AHp6 +MDViOTAyZWQAenowNWI2N2M2NAB6ejBkYzJlMzkwAHp6MGE2MGQxNDUAenowMmRiYWJi +ZAB6ejAwMGI2YzFkAHp6MDViOGVhZWQAenowMDViN2I5ZAB6ejAwNWI1NDQ2AHp6MDVi +NjQ2ZGIAenowMGI2ZjkyMwB6ejBkZDY4MzdmAHp6MDE2ZTEyNTEAenowZGM2YTVjNQB6 +ejAyZGIzNzBhAHp6MDAwNWI2NzIAenowNmRlZmMwZAB6ejAyZGJmMzVkAHp6MDAwYjZj +NzgAenowMDE2ZDgzMgB6ejAyZGI1NzBhAHp6MDA1YjZkN2EAenowMDJkYjI5MgB6ejAw +NWI5MGNiAHp6MGI2ZjUzNjMAenowMDViNWM0NgB6ejA2ZDkwY2YyAHp6MDZkOGRkOTMA +enowMTZkZmI4NwB6ejAwMTZkYTQ4AHp6MDAyZGFmMDAAenowYjY2MzFhOAB6ejAwMmRi +MDkyAGF0aF9oYWxfZ2V0d2lyZWxlc3Ntb2RlcwB6ejAxNmUxYjg3AAAAAAAGAAAAAAAA +AAsAAAADAAAAMQAAAAAAAABYAAAAAAAAAAsAAAADAAAARAAAAAAAAACAAAAAAAAAAAsA +AAADAAAAUQAAAAAAAADFAAAAAAAAAAsAAAADAAAAZAAAAAAAAADTAAAAAAAAAAsAAAAD +AAAAeAAAAAAAAADjAAAAAAAAAAsAAAADAAAAjAAAAAAAAADsAAAAAAAAAAsAAAADAAAA +mQAAAAAAAAD1AAAAAAAAAAsAAAADAAAApgAAAAAAAAD+AAAAAAAAAAsAAAADAAAAuQAA +AAAAAAAHAQAAAAAAAAsAAAADAAAAzAAAAAAAAADPAQAAAAAAAAIAAAB+AAAA/P////// +///ZAQAAAAAAAAIAAAChAQAA/P/////////jAQAAAAAAAAIAAABLAAAA/P////////+P +AgAAAAAAAAIAAABMAQAA/P////////8xBQAAAAAAAAIAAADMAAAA/P////////+jBQAA +AAAAAAIAAADMAAAA/P////////9LBgAAAAAAAAIAAAA0AQAA/P////////9UBgAAAAAA +AAsAAAACAAAAAAAAAAAAAAByBgAAAAAAAAIAAAA0AQAA/P////////97BgAAAAAAAAsA +AAACAAAAAAAAAAAAAAAhBwAAAAAAAAIAAABrAAAA/P////////8+BwAAAAAAAAIAAABr +AAAA/P////////9tBwAAAAAAAAsAAAACAAAACAAAAAAAAAB5CwAAAAAAAAIAAAAQAQAA +/P////////+YCwAAAAAAAAIAAAA0AQAA/P////////+wCwAAAAAAAAsAAAACAAAA8AAA +AAAAAAAyDAAAAAAAAAIAAAA0AQAA/P////////9ADAAAAAAAAAsAAAACAAAA8AAAAAAA +AACsDAAAAAAAAAsAAAACAAAA8AAAAAAAAAA1DQAAAAAAAAsAAAACAAAAAAEAAAAAAAA+ +DQAAAAAAAAsAAAACAAAAIAEAAAAAAADFEAAAAAAAAAIAAADeAAAA/P////////9aFQAA +AAAAAAIAAAA2AQAA/P////////+cGAAAAAAAAAIAAACLAAAA/P////////+sIQAAAAAA +AAIAAADeAAAA/P/////////YIQAAAAAAAAIAAAA2AQAA/P////////9lIgAAAAAAAAIA +AAA2AQAA/P/////////uIgAAAAAAAAIAAAA2AQAA/P////////9YIwAAAAAAAAIAAACL +AAAA/P////////8hLQAAAAAAAAsAAAACAAAAYAEAAAAAAAAzLQAAAAAAAAsAAAACAAAA +QAEAAAAAAAA0PAAAAAAAAAsAAAAEAAAAIAoAAAAAAABgPAAAAAAAAAsAAAAEAAAAYAAA +AAAAAADKPAAAAAAAAAsAAAAEAAAAIAoAAAAAAABOPgAAAAAAAAsAAAAEAAAAIAoAAAAA +AABlPgAAAAAAAAsAAAAEAAAAIAoAAAAAAACzPgAAAAAAAAsAAAAEAAAAYAAAAAAAAADH +PgAAAAAAAAsAAAAEAAAAcAAAAAAAAAAGPwAAAAAAAAsAAAAEAAAAgC4AAAAAAAAWPwAA +AAAAAAsAAAAEAAAAgC4AAAAAAAAjPwAAAAAAAAIAAAD5AAAA/P////////9QPwAAAAAA +AAsAAAAEAAAAYAAAAAAAAAD8PwAAAAAAAAsAAAAEAAAAYAAAAAAAAAAWQAAAAAAAAAsA +AAAEAAAAYAAAAAAAAABvQAAAAAAAAAsAAAAEAAAAwAkAAAAAAACgQAAAAAAAAAsAAAAE +AAAAwAkAAAAAAACBQwAAAAAAAAsAAAACAAAAgAEAAAAAAACIQwAAAAAAAAsAAAACAAAA +mAEAAAAAAAA3RAAAAAAAAAsAAAAEAAAA4CQAAAAAAABmRAAAAAAAAAsAAAAEAAAAoB4A +AAAAAACSRAAAAAAAAAsAAAAEAAAAICgAAAAAAADBRAAAAAAAAAsAAAAEAAAAQCsAAAAA +AADxRAAAAAAAAAsAAAAEAAAA4C0AAAAAAAAhRQAAAAAAAAsAAAAEAAAA4CQAAAAAAABT +RgAAAAAAAAIAAAA2AQAA/P////////+8RwAAAAAAAAsAAAACAAAAmAEAAAAAAADnRwAA +AAAAAAsAAAABAAAAwDsAAAAAAACpSQAAAAAAAAIAAAAQAQAA/P////////9+SgAAAAAA +AAIAAAAQAQAA/P/////////JSgAAAAAAAAIAAAAQAQAA/P////////+nTAAAAAAAAAsA +AAAEAAAAAEcAAAAAAAArTQAAAAAAAAsAAAAEAAAAYEcAAAAAAAAJTgAAAAAAAAIAAADe +AAAA/P////////8qTgAAAAAAAAsAAAACAAAAoAEAAAAAAAAyTgAAAAAAAAIAAAD5AAAA +/P////////+vTgAAAAAAAAIAAABSAQAA/P////////8vTwAAAAAAAAIAAAAyAAAA/P// +//////9kTwAAAAAAAAIAAABBAQAA/P////////+YTwAAAAAAAAIAAABBAQAA/P////// +///ETwAAAAAAAAIAAABBAQAA/P////////8XUAAAAAAAAAIAAABBAQAA/P////////9V +UAAAAAAAAAIAAABBAQAA/P////////8PUQAAAAAAAAsAAACZAAAAAAAAAAAAAAAbUQAA +AAAAAAsAAAB3AQAAAAAAAAAAAAAnUQAAAAAAAAsAAACDAAAAAAAAAAAAAAB6UwAAAAAA +AAIAAABBAQAA/P/////////8UwAAAAAAAAIAAACLAAAA/P////////8sVAAAAAAAAAIA +AACLAAAA/P////////8GVQAAAAAAAAIAAAA0AAAA/P////////8VVQAAAAAAAAIAAAA+ +AQAA/P////////9MVQAAAAAAAAIAAAB+AQAA/P////////9VWgAAAAAAAAIAAAB0AAAA +/P////////+LWgAAAAAAAAIAAAD5AAAA/P////////+lWgAAAAAAAAIAAAD5AAAA/P// +///////CWgAAAAAAAAsAAAACAAAAeBYAAAAAAADHWgAAAAAAAAIAAAD5AAAA/P////// +//8IWwAAAAAAAAIAAABOAAAA/P////////+gWwAAAAAAAAIAAAA6AQAA/P////////+z +WwAAAAAAAAIAAAB7AAAA/P/////////EXAAAAAAAAAIAAABpAQAA/P////////9tXQAA +AAAAAAIAAAD5AAAA/P/////////4XgAAAAAAAAIAAAApAAAA/P////////8ZXwAAAAAA +AAIAAAB1AQAA/P////////9aXwAAAAAAAAIAAAApAAAA/P////////+LXwAAAAAAAAIA +AAApAAAA/P////////++XwAAAAAAAAIAAAB1AQAA/P////////8PYAAAAAAAAAIAAAAp +AAAA/P////////+YYAAAAAAAAAIAAAApAAAA/P/////////LYAAAAAAAAAIAAAB1AQAA +/P////////8iYQAAAAAAAAIAAAApAAAA/P////////9VYQAAAAAAAAIAAAArAQAA/P// +//////+EYQAAAAAAAAIAAAAfAAAA/P////////+SYQAAAAAAAAIAAABOAQAA/P////// +///3YQAAAAAAAAIAAABMAQAA/P////////8XYgAAAAAAAAIAAABMAQAA/P////////8d +YwAAAAAAAAsAAAAEAQAAAAAAAAAAAAArYwAAAAAAAAsAAAAVAAAAAAAAAAAAAAA8YwAA +AAAAAAIAAABAAQAA/P////////+TYwAAAAAAAAIAAABMAQAA/P////////8/ZgAAAAAA +AAIAAAAQAQAA/P////////+PZgAAAAAAAAIAAABSAQAA/P////////+haAAAAAAAAAIA +AADEAAAA/P////////9jaQAAAAAAAAsAAAACAAAAgBYAAAAAAACiaQAAAAAAAAIAAACi +AQAA/P/////////sagAAAAAAAAIAAABMAQAA/P////////8WawAAAAAAAAIAAABOAAAA +/P////////8hawAAAAAAAAIAAACgAAAA/P////////9EawAAAAAAAAIAAABcAAAA/P// +//////9cawAAAAAAAAIAAACGAAAA/P////////+MawAAAAAAAAIAAACcAQAA/P////// +//+nawAAAAAAAAIAAAAOAAAA/P/////////CawAAAAAAAAIAAAAtAQAA/P////////+5 +bAAAAAAAAAIAAAAMAQAA/P/////////nbAAAAAAAAAIAAABMAQAA/P////////8DbQAA +AAAAAAIAAABMAQAA/P////////8vbQAAAAAAAAIAAAAMAQAA/P////////+BbQAAAAAA +AAIAAABMAQAA/P////////+mbQAAAAAAAAIAAABMAQAA/P////////+4bQAAAAAAAAIA +AAAMAQAA/P////////8EbgAAAAAAAAIAAAAQAQAA/P////////9LbgAAAAAAAAIAAABM +AQAA/P////////9qbgAAAAAAAAIAAABMAQAA/P////////+MbgAAAAAAAAIAAABMAQAA +/P////////8DbwAAAAAAAAIAAABMAQAA/P////////8ibwAAAAAAAAIAAABMAQAA/P// +//////9PbwAAAAAAAAIAAABMAQAA/P////////95bwAAAAAAAAIAAABOAAAA/P////// +//+nbwAAAAAAAAIAAACgAAAA/P////////+1bwAAAAAAAAIAAABMAQAA/P/////////A +bwAAAAAAAAIAAACgAAAA/P////////8+cAAAAAAAAAIAAABMAQAA/P////////9VcAAA +AAAAAAIAAABOAAAA/P////////++cwAAAAAAAAsAAAACAAAA0hsAAAAAAAAsdQAAAAAA +AAsAAAACAAAA4BsAAAAAAAAxdQAAAAAAAAIAAAD5AAAA/P////////9CdQAAAAAAAAsA +AAACAAAAwBsAAAAAAABKdQAAAAAAAAIAAAD5AAAA/P////////+mdQAAAAAAAAIAAAAy +AAAA/P/////////NdQAAAAAAAAIAAAAyAAAA/P////////9adwAAAAAAAAIAAAAyAAAA +/P////////91dwAAAAAAAAIAAAAyAAAA/P////////+NdwAAAAAAAAIAAAAyAAAA/P// +//////8VeAAAAAAAAAIAAAAyAAAA/P////////+aeAAAAAAAAAIAAABOAAAA/P////// +//+yeAAAAAAAAAIAAABMAQAA/P////////+6eAAAAAAAAAIAAABXAAAA/P////////8k +eQAAAAAAAAIAAACBAQAA/P////////9XeQAAAAAAAAIAAAAqAQAA/P/////////geQAA +AAAAAAIAAAA2AQAA/P////////8ZegAAAAAAAAIAAADNAAAA/P////////99fQAAAAAA +AAIAAACuAAAA/P////////+QfQAAAAAAAAIAAABpAQAA/P////////+/fQAAAAAAAAIA +AABpAQAA/P/////////bfQAAAAAAAAIAAABpAQAA/P/////////ffgAAAAAAAAIAAABM +AQAA/P////////8WfwAAAAAAAAIAAABOAAAA/P////////8ygQAAAAAAAAIAAAAyAAAA +/P////////9hgQAAAAAAAAIAAADeAAAA/P////////+CgQAAAAAAAAsAAAACAAAAQBwA +AAAAAACKgQAAAAAAAAIAAAD5AAAA/P////////8IggAAAAAAAAIAAACyAQAA/P////// +//9HggAAAAAAAAIAAABMAQAA/P/////////VggAAAAAAAAIAAABMAQAA/P////////8N +gwAAAAAAAAIAAABiAQAA/P////////9sgwAAAAAAAAIAAABiAQAA/P////////+ngwAA +AAAAAAIAAABiAQAA/P////////8VhAAAAAAAAAsAAAACAAAAGDEAAAAAAABdhAAAAAAA +AAIAAACVAQAA/P////////+WhAAAAAAAAAIAAABMAQAA/P////////+9hAAAAAAAAAIA +AABMAQAA/P/////////1hAAAAAAAAAIAAABiAQAA/P////////8hhQAAAAAAAAsAAADu +AAAAAAAAAAAAAAAshQAAAAAAAAsAAABDAAAAAAAAAAAAAAA3hQAAAAAAAAsAAADjAAAA +AAAAAAAAAABHhQAAAAAAAAIAAACdAQAA/P////////9shQAAAAAAAAIAAABiAQAA/P// +///////OhQAAAAAAAAIAAACAAQAA/P////////8AhgAAAAAAAAIAAAAzAQAA/P////// +//8IhgAAAAAAAAIAAACLAAAA/P/////////2hgAAAAAAAAIAAABMAQAA/P////////9y +hwAAAAAAAAIAAADwAAAA/P////////8AiAAAAAAAAAIAAABiAQAA/P////////+hiAAA +AAAAAAIAAAA0AAAA/P////////+wiAAAAAAAAAIAAAA+AQAA/P/////////QiAAAAAAA +AAIAAACqAQAA/P////////9YjgAAAAAAAAIAAADcAAAA/P////////9/jgAAAAAAAAIA +AAD5AAAA/P////////+ZjgAAAAAAAAIAAAD5AAAA/P////////+2jgAAAAAAAAsAAAAC +AAAAIDEAAAAAAAC7jgAAAAAAAAIAAAD5AAAA/P////////8GjwAAAAAAAAIAAABOAAAA +/P/////////JjwAAAAAAAAIAAAD1AAAA/P/////////njwAAAAAAAAIAAABZAQAA/P// +///////6jwAAAAAAAAIAAAA6AAAA/P/////////ckAAAAAAAAAIAAAAaAQAA/P////// +///6kAAAAAAAAAsAAAACAAAAQDEAAAAAAAAlkQAAAAAAAAIAAAD5AAAA/P////////+h +kgAAAAAAAAIAAAApAAAA/P////////++kgAAAAAAAAIAAAB1AQAA/P//////////kgAA +AAAAAAIAAAApAAAA/P////////8wkwAAAAAAAAIAAAApAAAA/P////////9jkwAAAAAA +AAIAAAB1AQAA/P////////+0kwAAAAAAAAIAAAApAAAA/P////////89lAAAAAAAAAIA +AAApAAAA/P////////9wlAAAAAAAAAIAAAB1AQAA/P/////////HlAAAAAAAAAIAAAAp +AAAA/P////////8wlQAAAAAAAAIAAADxAAAA/P////////9ZlQAAAAAAAAIAAAArAQAA +/P////////+IlQAAAAAAAAIAAAAfAAAA/P////////+WlQAAAAAAAAIAAABOAQAA/P// +///////UlQAAAAAAAAIAAABMAQAA/P/////////0lQAAAAAAAAIAAABMAQAA/P////// +//88lwAAAAAAAAsAAADJAAAAAAAAAAAAAABFlwAAAAAAAAsAAAAcAQAAAAAAAAAAAABO +lwAAAAAAAAsAAAAAAQAAAAAAAAAAAABflwAAAAAAAAIAAABAAQAA/P////////+jlwAA +AAAAAAIAAABOAAAA/P////////9CmgAAAAAAAAIAAAAQAQAA/P////////9OmwAAAAAA +AAIAAACyAQAA/P////////9SnAAAAAAAAAIAAAAyAAAA/P////////9knAAAAAAAAAIA +AAAyAAAA/P////////9znAAAAAAAAAsAAAAEAAAAjFEAAAAAAACRnAAAAAAAAAsAAAAE +AAAAmFEAAAAAAAC9nAAAAAAAAAsAAAAEAAAAYFAAAAAAAAD3nAAAAAAAAAsAAAACAAAA +YDEAAAAAAAAonQAAAAAAAAsAAAACAAAAgDkAAAAAAABXnQAAAAAAAAsAAAACAAAAIDQA +AAAAAABenQAAAAAAAAsAAAACAAAAJDQAAAAAAACLnwAAAAAAAAIAAAA3AQAA/P////// +//9eoAAAAAAAAAIAAABMAQAA/P////////+IoAAAAAAAAAIAAABOAAAA/P////////+V +oAAAAAAAAAIAAAAhAAAA/P////////8NoQAAAAAAAAIAAAAiAQAA/P////////+zoQAA +AAAAAAIAAABWAAAA/P/////////joQAAAAAAAAIAAACnAAAA/P/////////+oQAAAAAA +AAIAAADlAAAA/P////////8ZogAAAAAAAAIAAAA7AAAA/P////////+GogAAAAAAAAIA +AABwAQAA/P////////+vogAAAAAAAAIAAABMAQAA/P/////////aogAAAAAAAAIAAABw +AQAA/P////////9towAAAAAAAAIAAABMAQAA/P////////+iowAAAAAAAAIAAABMAQAA +/P/////////4owAAAAAAAAIAAABMAQAA/P////////8mpAAAAAAAAAIAAABMAQAA/P// +//////84pAAAAAAAAAIAAABwAQAA/P////////+OpAAAAAAAAAIAAAAQAQAA/P////// +//9XpQAAAAAAAAIAAAAhAAAA/P////////9lpQAAAAAAAAIAAABMAQAA/P////////9w +pQAAAAAAAAIAAAAhAAAA/P/////////+pQAAAAAAAAIAAABMAQAA/P////////8VpgAA +AAAAAAIAAABOAAAA/P////////9ZpgAAAAAAAAIAAACTAAAA/P////////9xpgAAAAAA +AAsAAAACAAAAZD0AAAAAAAB+pgAAAAAAAAIAAAAyAAAA/P////////+1pgAAAAAAAAIA +AAAyAAAA/P/////////dpgAAAAAAAAIAAAAyAAAA/P/////////cpwAAAAAAAAIAAABM +AQAA/P/////////aqAAAAAAAAAIAAACLAQAA/P////////8HqQAAAAAAAAsAAAACAAAA +qD4AAAAAAAB2qQAAAAAAAAsAAAACAAAAwD4AAAAAAACCqQAAAAAAAAIAAAACAAAAvD4A +AAAAAACaqQAAAAAAAAsAAAACAAAAwj4AAAAAAADhqgAAAAAAAAsAAAAEAAAA/FEAAAAA +AAAAqwAAAAAAAAsAAAAEAAAACFIAAAAAAAAfqwAAAAAAAAsAAAAEAAAAvFIAAAAAAADA +qwAAAAAAAAsAAAAEAAAARFIAAAAAAADZqwAAAAAAAAIAAAAyAAAA/P/////////4qwAA +AAAAAAsAAAAEAAAAUFIAAAAAAAANrAAAAAAAAAIAAAAyAAAA/P////////8vrAAAAAAA +AAIAAAAyAAAA/P////////9FrAAAAAAAAAsAAAAEAAAAXFIAAAAAAABarAAAAAAAAAIA +AAAyAAAA/P////////94rAAAAAAAAAIAAAAyAAAA/P////////+MrAAAAAAAAAsAAAAE +AAAAjFIAAAAAAACvrAAAAAAAAAsAAAAEAAAAwFEAAAAAAADbrgAAAAAAAAIAAADxAAAA +/P////////+xsQAAAAAAAAIAAAAYAAAA/P////////9FsgAAAAAAAAsAAAAFAAAAAAAA +AAAAAABKsgAAAAAAAAIAAAA2AQAA/P////////9WsgAAAAAAAAsAAAAFAAAAIAEAAAAA +AABbsgAAAAAAAAIAAAA2AQAA/P////////9isgAAAAAAAAsAAAAFAAAACAAAAAAAAABp +sgAAAAAAAAsAAAAFAAAAiAAAAAAAAACMsgAAAAAAAAIAAAAFAAAAAgAAAAAAAACTsgAA +AAAAAAIAAAAFAAAA/P////////+csgAAAAAAAAIAAAAFAAAA/v////////+qsgAAAAAA +AAIAAAAFAAAAAgAAAAAAAADOsgAAAAAAAAIAAAAFAAAAAgAAAAAAAADdsgAAAAAAAAIA +AAAFAAAAAgAAAAAAAADvsgAAAAAAAAIAAAAFAAAAAgAAAAAAAAASswAAAAAAAAIAAAAF +AAAAAgAAAAAAAAA4swAAAAAAAAIAAAAFAAAAAgAAAAAAAABGswAAAAAAAAIAAAAFAAAA +AgAAAAAAAABPswAAAAAAAAIAAAAFAAAAAgAAAAAAAAC8swAAAAAAAAsAAAAFAAAAIAEA +AAAAAAD8swAAAAAAAAIAAAAFAAAAAgAAAAAAAACqtAAAAAAAAAsAAAAFAAAAIAEAAAAA +AADJtAAAAAAAAAIAAAAFAAAAAgAAAAAAAADjtAAAAAAAAAsAAAAFAAAAIAEAAAAAAADp +tAAAAAAAAAEAAAAFAAAAHgEAAAAAAAAUtQAAAAAAAAsAAAAFAAAAIgEAAAAAAAAbtQAA +AAAAAAsAAAAFAAAAIAEAAAAAAAC5tQAAAAAAAAsAAAAFAAAAoAEAAAAAAAD7tQAAAAAA +AAIAAAAoAQAA/P////////9StwAAAAAAAAsAAAACAAAA+D4AAAAAAAB4uAAAAAAAAAsA +AAACAAAA6D4AAAAAAACfuQAAAAAAAAIAAABxAAAA/P////////8jvQAAAAAAAAIAAAAC +AAAAQD8AAAAAAAA+vQAAAAAAAAsAAAACAAAASD8AAAAAAADRvgAAAAAAAAsAAAACAAAA +SD8AAAAAAAD/vgAAAAAAAAsAAAACAAAAQD8AAAAAAAAGvwAAAAAAAAsAAAACAAAASD8A +AAAAAABUvwAAAAAAAAIAAAACAAAAPD8AAAAAAABxvwAAAAAAAAIAAAACAAAAPD8AAAAA +AAB+vwAAAAAAAAsAAAACAAAAQD8AAAAAAACFvwAAAAAAAAsAAAACAAAASD8AAAAAAACk +wAAAAAAAAAIAAAAGAQAA/P////////+3wAAAAAAAAAIAAAAaAQAA/P/////////uwAAA +AAAAAAIAAAAaAQAA/P////////8ZwQAAAAAAAAIAAAAaAQAA/P////////9ZwQAAAAAA +AAIAAACBAQAA/P////////+MwQAAAAAAAAIAAAAqAQAA/P////////8lwgAAAAAAAAIA +AAA2AQAA/P////////9lwgAAAAAAAAIAAABnAAAA/P/////////QxQAAAAAAAAIAAAA+ +AQAA/P/////////WxQAAAAAAAAIAAAA0AAAA/P/////////nxQAAAAAAAAIAAADPAAAA +/P/////////FxwAAAAAAAAIAAACRAQAA/P/////////TxwAAAAAAAAIAAABMAQAA/P// +///////DygAAAAAAAAIAAAAyAAAA/P/////////WywAAAAAAAAIAAADeAAAA/P////// +///8ywAAAAAAAAsAAAACAAAAYEAAAAAAAAAEzAAAAAAAAAIAAAD5AAAA/P////////+0 +zAAAAAAAAAsAAAACAAAARFUAAAAAAAC5zAAAAAAAAAIAAAD5AAAA/P/////////rzAAA +AAAAAAIAAABTAAAA/P////////8RzQAAAAAAAAIAAACeAQAA/P////////98zQAAAAAA +AAIAAACoAQAA/P/////////JzQAAAAAAAAIAAAAeAAAA/P/////////vzQAAAAAAAAIA +AABHAAAA/P////////8TzwAAAAAAAAIAAACnAQAA/P////////+QzwAAAAAAAAIAAACn +AQAA/P////////+2zwAAAAAAAAIAAACnAQAA/P/////////pzwAAAAAAAAIAAACnAQAA +/P////////8t0AAAAAAAAAIAAACnAQAA/P////////+Z0AAAAAAAAAsAAAACAAAAOFUA +AAAAAACg0AAAAAAAAAsAAAACAAAAPlUAAAAAAADs0AAAAAAAAAIAAACVAQAA/P////// +//970QAAAAAAAAIAAABMAQAA/P////////+D0QAAAAAAAAIAAABHAAAA/P////////+i +0QAAAAAAAAIAAABMAQAA/P/////////R0QAAAAAAAAIAAACnAQAA/P/////////30QAA +AAAAAAsAAAAKAQAAAAAAAAAAAAAC0gAAAAAAAAsAAAC5AAAAAAAAAAAAAAAK0gAAAAAA +AAIAAABGAQAA/P////////9C0gAAAAAAAAIAAADVAAAA/P////////9h0gAAAAAAAAIA +AACyAAAA/P////////+C0gAAAAAAAAIAAAClAQAA/P////////+P0gAAAAAAAAIAAACJ +AQAA/P////////+t0gAAAAAAAAIAAAAvAQAA/P/////////S0gAAAAAAAAIAAACnAQAA +/P////////8w0wAAAAAAAAIAAADAAAAA/P////////9J0wAAAAAAAAIAAACIAAAA/P// +//////9y0wAAAAAAAAIAAAB4AAAA/P////////+N0wAAAAAAAAIAAAC5AAAA/P////// +//+V0wAAAAAAAAIAAABIAAAA/P////////+n0wAAAAAAAAIAAACeAQAA/P////////+2 +0wAAAAAAAAIAAAAzAQAA/P////////++0wAAAAAAAAIAAACLAAAA/P////////+s1AAA +AAAAAAIAAABMAQAA/P////////+Z2AAAAAAAAAIAAAC4AAAA/P////////+t2AAAAAAA +AAsAAAABAAAAkdgAAAAAAAC02AAAAAAAAAsAAACpAQAAAAAAAAAAAAAW2QAAAAAAAAIA +AAC4AAAA/P////////+L2QAAAAAAAAIAAAA0AAAA/P////////+a2QAAAAAAAAIAAAA+ +AQAA/P////////+62QAAAAAAAAIAAACdAAAA/P////////942wAAAAAAAAIAAABOAAAA +/P////////+X3AAAAAAAAAIAAADmAAAA/P////////9J4QAAAAAAAAsAAAACAAAAUFUA +AAAAAAAB4wAAAAAAAAIAAAA7AQAA/P////////8v5AAAAAAAAAIAAAA7AQAA/P////// +//935AAAAAAAAAIAAAD5AAAA/P////////+R5AAAAAAAAAIAAAD5AAAA/P////////+2 +5AAAAAAAAAIAAAD5AAAA/P/////////Q5AAAAAAAAAIAAAD5AAAA/P////////9L5gAA +AAAAAAsAAAACAAAAgFUAAAAAAAB25gAAAAAAAAIAAAD5AAAA/P////////+l6AAAAAAA +AAIAAAARAAAA/P/////////Z6AAAAAAAAAIAAAApAAAA/P/////////66AAAAAAAAAIA +AAB1AQAA/P////////876QAAAAAAAAIAAAApAAAA/P////////9s6QAAAAAAAAIAAAAp +AAAA/P////////+f6QAAAAAAAAIAAAB1AQAA/P/////////w6QAAAAAAAAIAAAApAAAA +/P////////956gAAAAAAAAIAAAApAAAA/P////////+s6gAAAAAAAAIAAAB1AQAA/P// +//////8D6wAAAAAAAAIAAAApAAAA/P////////+V6wAAAAAAAAIAAAB1AQAA/P////// +//977AAAAAAAAAIAAAAoAAAA/P////////+r7AAAAAAAAAIAAAAaAAAA/P/////////J +7gAAAAAAAAIAAAAaAAAA/P////////+37wAAAAAAAAsAAAACAAAAoFUAAAAAAADD7wAA +AAAAAAIAAAACAAAAnFUAAAAAAADb7wAAAAAAAAsAAAACAAAAolUAAAAAAAAI8AAAAAAA +AAsAAAACAAAA0FUAAAAAAADB8QAAAAAAAAIAAACRAAAA/P/////////c8QAAAAAAAAsA +AAACAAAAwFYAAAAAAAAM8gAAAAAAAAIAAAArAQAA/P////////878gAAAAAAAAsAAAAC +AAAAIFcAAAAAAAA88wAAAAAAAAsAAAACAAAAAFcAAAAAAABD8wAAAAAAAAIAAACrAAAA +/P////////9s8wAAAAAAAAIAAAAfAAAA/P////////968wAAAAAAAAIAAABOAQAA/P// +//////+08wAAAAAAAAIAAABMAQAA/P/////////U8wAAAAAAAAIAAABMAQAA/P////// +//9p9QAAAAAAAAsAAAAvAAAAAAAAAAAAAACX9QAAAAAAAAsAAAC2AAAAAAAAAAAAAACg +9QAAAAAAAAsAAABlAQAAAAAAAAAAAACp9QAAAAAAAAsAAADgAAAAAAAAAAAAAACy9QAA +AAAAAAsAAAAZAAAAAAAAAAAAAAC79QAAAAAAAAsAAAByAQAAAAAAAAAAAADE9QAAAAAA +AAsAAADnAAAAAAAAAAAAAADN9QAAAAAAAAsAAAD0AAAAAAAAAAAAAADe9QAAAAAAAAIA +AABAAQAA/P////////8j9gAAAAAAAAIAAABOAAAA/P////////9V9gAAAAAAAAIAAAAz +AAAA/P////////9d9gAAAAAAAAIAAADsAAAA/P////////9l9gAAAAAAAAIAAADrAAAA +/P////////+D9gAAAAAAAAIAAACKAAAA/P/////////n+AAAAAAAAAIAAACaAAAA/P// +///////6+AAAAAAAAAIAAAB1AAAA/P////////+m+QAAAAAAAAIAAACeAQAA/P////// +//+++QAAAAAAAAIAAAAQAQAA/P////////8h+gAAAAAAAAIAAADZAAAA/P////////8y ++gAAAAAAAAIAAADsAAAA/P////////+v+gAAAAAAAAIAAAAPAAAA/P////////8c+wAA +AAAAAAIAAABiAAAA/P////////8k+wAAAAAAAAIAAABQAAAA/P////////8v+wAAAAAA +AAIAAACoAQAA/P/////////++wAAAAAAAAsAAAACAAAAIFgAAAAAAAAw/AAAAAAAAAIA +AABMAQAA/P////////9G/AAAAAAAAAsAAAACAAAAgFoAAAAAAABz/AAAAAAAAAsAAAAC +AAAAhFoAAAAAAACJ/AAAAAAAAAIAAABMAQAA/P/////////H/AAAAAAAAAIAAAAmAQAA +/P////////9P/gAAAAAAAAIAAABeAAAA/P////////90/gAAAAAAAAIAAABYAQAA/P// +///////6/gAAAAAAAAIAAAChAAAA/P////////8F/wAAAAAAAAIAAAAZAQAA/P////// +//8S/wAAAAAAAAIAAABbAQAA/P////////+m/wAAAAAAAAIAAAAoAAAA/P////////+9 +AAEAAAAAAAIAAAC9AAAA/P/////////eAAEAAAAAAAIAAAA2AAAA/P/////////pAAEA +AAAAAAIAAABhAAAA/P/////////IAQEAAAAAAAIAAABMAQAA/P/////////6AQEAAAAA +AAIAAABMAQAA/P////////+fAgEAAAAAAAIAAABSAAAA/P/////////yAgEAAAAAAAIA +AACUAAAA/P////////9aAwEAAAAAAAIAAADFAAAA/P////////9xAwEAAAAAAAIAAABO +AAAA/P////////99AwEAAAAAAAIAAACmAAAA/P////////8IBAEAAAAAAAIAAAAoAQAA +/P////////95BQEAAAAAAAIAAABGAAAA/P////////+VBQEAAAAAAAIAAAAwAAAA/P// +//////+xBQEAAAAAAAIAAABKAAAA/P/////////8BQEAAAAAAAIAAAA/AQAA/P////// +//9cBgEAAAAAAAIAAABNAAAA/P////////9tBgEAAAAAAAIAAABzAQAA/P////////89 +BwEAAAAAAAIAAAAQAQAA/P////////9ZBwEAAAAAAAIAAAC0AQAA/P////////+tBwEA +AAAAAAIAAABMAQAA/P/////////QBwEAAAAAAAIAAAC9AAAA/P////////8kCAEAAAAA +AAIAAABMAQAA/P////////8yCAEAAAAAAAIAAABeAAAA/P////////+hCAEAAAAAAAIA +AAChAAAA/P////////+sCAEAAAAAAAIAAAAZAQAA/P////////9uCQEAAAAAAAIAAACe +AQAA/P/////////RCQEAAAAAAAIAAACeAQAA/P////////+KCwEAAAAAAAIAAABMAQAA +/P////////+kCwEAAAAAAAIAAABMAQAA/P/////////5CwEAAAAAAAIAAAAQAQAA/P// +///////aDQEAAAAAAAIAAADZAAAA/P/////////PDgEAAAAAAAIAAABMAQAA/P////// +///nDgEAAAAAAAIAAABOAAAA/P////////8MDwEAAAAAAAIAAACeAQAA/P/////////N +DwEAAAAAAAIAAABsAAAA/P////////8sEAEAAAAAAAIAAAArAQAA/P////////9EEQEA +AAAAAAIAAAAyAAAA/P////////9qFAEAAAAAAAIAAAARAAAA/P////////8vFgEAAAAA +AAIAAADTAAAA/P////////8NHgEAAAAAAAIAAABeAAAA/P////////86HgEAAAAAAAIA +AAA2AQAA/P////////9LHgEAAAAAAAIAAAA2AQAA/P////////98HgEAAAAAAAsAAAAC +AAAAoGAAAAAAAADPIQEAAAAAAAIAAAAYAAAA/P////////9gIwEAAAAAAAIAAAAoAQAA +/P////////8cJwEAAAAAAAsAAAACAAAAqmAAAAAAAADQJwEAAAAAAAIAAAD5AAAA/P// +//////8YKQEAAAAAAAIAAABvAQAA/P////////9ZKgEAAAAAAAIAAABvAQAA/P////// +///sKwEAAAAAAAIAAAACAAAAQGIAAAAAAAAALAEAAAAAAAsAAAACAAAASGIAAAAAAAAg +LAEAAAAAAAIAAAACAAAAwGAAAAAAAAAwLAEAAAAAAAsAAAACAAAAyGAAAAAAAAC9LgEA +AAAAAAsAAAACAAAAwGAAAAAAAADELgEAAAAAAAsAAAACAAAAQGIAAAAAAAB1MAEAAAAA +AAIAAAAyAAAA/P////////9YMQEAAAAAAAIAAABfAAAA/P////////+aMQEAAAAAAAIA +AABrAAAA/P/////////GMQEAAAAAAAIAAABfAAAA/P////////8dMgEAAAAAAAIAAABr +AAAA/P////////9ZMgEAAAAAAAIAAABrAAAA/P////////9KMwEAAAAAAAIAAADmAAAA +/P////////+nMwEAAAAAAAIAAADmAAAA/P/////////3MwEAAAAAAAIAAACBAQAA/P// +//////80NAEAAAAAAAIAAAAqAQAA/P////////8zNQEAAAAAAAIAAAA2AQAA/P////// +//9+NQEAAAAAAAIAAABbAAAA/P/////////DOAEAAAAAAAIAAAA+AQAA/P/////////J +OAEAAAAAAAIAAAA0AAAA/P/////////YOAEAAAAAAAIAAADPAAAA/P/////////yOgEA +AAAAAAIAAAC0AQAA/P////////8AOwEAAAAAAAIAAABMAQAA/P////////8QOwEAAAAA +AAIAAAC0AQAA/P////////+8OwEAAAAAAAIAAABMAQAA/P/////////mOwEAAAAAAAIA +AABMAQAA/P/////////xOwEAAAAAAAIAAAC0AQAA/P////////+cPwEAAAAAAAIAAACf +AQAA/P/////////8PwEAAAAAAAIAAACfAQAA/P/////////KQAEAAAAAAAIAAAA2AQAA +/P////////+yQQEAAAAAAAIAAAAzAAAA/P/////////cQQEAAAAAAAIAAACKAAAA/P// +//////8yQgEAAAAAAAsAAAACAAAAsGMAAAAAAAAdRgEAAAAAAAIAAAB4AAAA/P////// +//8lRgEAAAAAAAIAAACNAQAA/P////////81RgEAAAAAAAIAAADqAAAA/P////////9O +RgEAAAAAAAIAAACNAQAA/P////////9eRgEAAAAAAAIAAADqAAAA/P////////+GRgEA +AAAAAAIAAAAzAAAA/P////////+NRgEAAAAAAAIAAACNAQAA/P////////+dRgEAAAAA +AAIAAADqAAAA/P////////9VRwEAAAAAAAIAAACfAQAA/P/////////yRwEAAAAAAAIA +AACrAAAA/P////////8bSAEAAAAAAAIAAACrAAAA/P////////8xSAEAAAAAAAIAAAA0 +AQAA/P////////9RSAEAAAAAAAIAAACrAAAA/P////////9pSAEAAAAAAAIAAACrAAAA +/P/////////sSAEAAAAAAAIAAAA0AQAA/P////////8MSQEAAAAAAAIAAACrAAAA/P// +//////94SQEAAAAAAAIAAACrAAAA/P////////+KSQEAAAAAAAIAAACrAAAA/P////// +//+cSQEAAAAAAAIAAACrAAAA/P////////+uSQEAAAAAAAIAAACrAAAA/P/////////A +SQEAAAAAAAIAAACrAAAA/P/////////ISQEAAAAAAAIAAACNAQAA/P/////////YSQEA +AAAAAAIAAADqAAAA/P/////////8SQEAAAAAAAIAAACrAAAA/P////////8TSgEAAAAA +AAIAAACrAAAA/P////////8sSgEAAAAAAAIAAACrAAAA/P////////9DSgEAAAAAAAIA +AACrAAAA/P////////9aSgEAAAAAAAIAAACrAAAA/P////////9tSgEAAAAAAAIAAACN +AQAA/P////////99SgEAAAAAAAIAAADqAAAA/P////////+zSgEAAAAAAAIAAACNAQAA +/P/////////DSgEAAAAAAAIAAADqAAAA/P/////////9SgEAAAAAAAIAAACfAQAA/P// +//////9pTAEAAAAAAAIAAACrAAAA/P////////89TQEAAAAAAAIAAAAVAQAA/P////// +//+yTQEAAAAAAAIAAACfAQAA/P////////9TTwEAAAAAAAIAAACpAAAA/P////////9r +TwEAAAAAAAIAAADeAAAA/P////////+GTwEAAAAAAAIAAAAxAQAA/P/////////ITwEA +AAAAAAIAAAAxAQAA/P/////////UTwEAAAAAAAIAAACLAAAA/P////////+uUgEAAAAA +AAIAAAA2AQAA/P/////////ZUgEAAAAAAAIAAAA2AQAA/P/////////qUgEAAAAAAAIA +AAA2AQAA/P////////9CUwEAAAAAAAIAAAAxAQAA/P////////9mUwEAAAAAAAIAAACN +AQAA/P////////92UwEAAAAAAAIAAADqAAAA/P////////+KUwEAAAAAAAIAAACNAQAA +/P////////+aUwEAAAAAAAIAAADqAAAA/P////////+2UwEAAAAAAAIAAACNAQAA/P// +///////GUwEAAAAAAAIAAADqAAAA/P/////////uUwEAAAAAAAIAAACNAQAA/P////// +//8QVAEAAAAAAAIAAADqAAAA/P////////8yVAEAAAAAAAIAAACNAQAA/P////////9C +VAEAAAAAAAIAAADqAAAA/P////////9dVAEAAAAAAAIAAAAxAQAA/P/////////dVAEA +AAAAAAIAAAAxAQAA/P/////////3VwEAAAAAAAIAAAA2AQAA/P////////8PWAEAAAAA +AAIAAAA2AQAA/P////////85WAEAAAAAAAIAAABUAQAA/P/////////CWAEAAAAAAAsA +AAACAAAAAGQAAAAAAADyWAEAAAAAAAIAAABMAQAA/P////////8IWQEAAAAAAAsAAAAC +AAAAYGUAAAAAAAAUWQEAAAAAAAsAAAACAAAAZGUAAAAAAAAoWQEAAAAAAAIAAABMAQAA +/P////////87WQEAAAAAAAsAAAACAAAAQGkAAAAAAABpWQEAAAAAAAIAAABMAQAA/P// +//////+bWQEAAAAAAAIAAACTAAAA/P////////+yWQEAAAAAAAsAAAACAAAA5G8AAAAA +AAC/WQEAAAAAAAIAAAAyAAAA/P////////8hWgEAAAAAAAIAAAAyAAAA/P////////9J +WgEAAAAAAAIAAAAyAAAA/P/////////CWgEAAAAAAAsAAAACAAAAKHEAAAAAAAAjXQEA +AAAAAAsAAAACAAAAoGcAAAAAAABkXQEAAAAAAAIAAAB/AAAA/P////////9/XQEAAAAA +AAIAAAB/AAAA/P////////+SXQEAAAAAAAsAAAACAAAAoGcAAAAAAACvXQEAAAAAAAIA +AABMAQAA/P/////////FXQEAAAAAAAsAAAACAAAAQGwAAAAAAADQXQEAAAAAAAsAAAAC +AAAARGwAAAAAAADlXQEAAAAAAAIAAABMAQAA/P/////////1XQEAAAAAAAsAAAACAAAA +UGwAAAAAAAApXgEAAAAAAAIAAABMAQAA/P////////85XgEAAAAAAAsAAAACAAAAcGwA +AAAAAABtXgEAAAAAAAIAAABMAQAA/P////////+DXgEAAAAAAAsAAAACAAAAoGwAAAAA +AADWXgEAAAAAAAIAAAB/AAAA/P/////////2XgEAAAAAAAIAAAB/AAAA/P////////8Y +XwEAAAAAAAIAAAB/AAAA/P////////81XwEAAAAAAAIAAAB/AAAA/P////////9SXwEA +AAAAAAIAAAB/AAAA/P////////9vXwEAAAAAAAIAAAB/AAAA/P////////+CXwEAAAAA +AAsAAAACAAAAoGwAAAAAAACfXwEAAAAAAAIAAABMAQAA/P////////+4XwEAAAAAAAsA +AAACAAAAQG4AAAAAAADzXwEAAAAAAAIAAAB/AAAA/P////////8QYAEAAAAAAAIAAAB/ +AAAA/P////////9eYAEAAAAAAAIAAAB/AAAA/P////////95YAEAAAAAAAIAAAB/AAAA +/P////////+WYAEAAAAAAAIAAAB/AAAA/P////////+pYAEAAAAAAAsAAAACAAAAQG4A +AAAAAADGYAEAAAAAAAIAAABMAQAA/P////////9kYgEAAAAAAAIAAAA2AQAA/P////// +//+BZQEAAAAAAAIAAABvAQAA/P////////8rZwEAAAAAAAIAAABvAQAA/P////////9K +ZwEAAAAAAAIAAACLAAAA/P////////9rZwEAAAAAAAIAAACLAAAA/P////////+KZwEA +AAAAAAsAAAACAAAAgHEAAAAAAACWZwEAAAAAAAIAAAACAAAAfHEAAAAAAACuZwEAAAAA +AAsAAAACAAAAgnEAAAAAAADNZwEAAAAAAAIAAADeAAAA/P/////////tZwEAAAAAAAIA +AADeAAAA/P////////8SaAEAAAAAAAsAAAABAAAANGcBAAAAAAAdaAEAAAAAAAsAAAAB +AAAApFgBAAAAAAAoaAEAAAAAAAsAAAABAAAAsVoBAAAAAAAzaAEAAAAAAAsAAAABAAAA +g1kBAAAAAAA+aAEAAAAAAAsAAAABAAAA7FoBAAAAAABJaAEAAAAAAAsAAAABAAAAd2EB +AAAAAABUaAEAAAAAAAsAAAABAAAAfGcBAAAAAABfaAEAAAAAAAsAAAABAAAAgmcBAAAA +AACWaAEAAAAAAAsAAAACAAAAwHEAAAAAAADGaAEAAAAAAAIAAABMAQAA/P/////////c +aAEAAAAAAAsAAAACAAAAQHMAAAAAAADoaAEAAAAAAAsAAAACAAAARHMAAAAAAAD8aAEA +AAAAAAIAAABMAQAA/P////////8PaQEAAAAAAAsAAAACAAAAgHUAAAAAAAA9aQEAAAAA +AAIAAABMAQAA/P////////8uagEAAAAAAAIAAAAyAAAA/P////////+1agEAAAAAAAIA +AAAyAAAA/P////////8XawEAAAAAAAIAAAAyAAAA/P////////9wawEAAAAAAAIAAAAy +AAAA/P/////////KawEAAAAAAAIAAAAyAAAA/P/////////bawEAAAAAAAIAAAAyAAAA +/P////////9IbAEAAAAAAAsAAAACAAAA2H0AAAAAAAAjbgEAAAAAAAsAAAACAAAAhHgA +AAAAAABDbgEAAAAAAAsAAAACAAAAkHgAAAAAAABsbgEAAAAAAAsAAAACAAAAsHgAAAAA +AACVbgEAAAAAAAsAAAACAAAA4HgAAAAAAADObgEAAAAAAAIAAAB/AAAA/P/////////u +bgEAAAAAAAIAAAB/AAAA/P////////8PbwEAAAAAAAIAAAB/AAAA/P////////8+bwEA +AAAAAAIAAAB/AAAA/P////////9ibwEAAAAAAAIAAAB/AAAA/P////////+GbwEAAAAA +AAIAAAB/AAAA/P////////+qbwEAAAAAAAIAAAB/AAAA/P/////////ObwEAAAAAAAIA +AAB/AAAA/P/////////ybwEAAAAAAAIAAAB/AAAA/P////////8acAEAAAAAAAIAAAB/ +AAAA/P////////9NcAEAAAAAAAIAAAB/AAAA/P////////9qcAEAAAAAAAIAAAB/AAAA +/P/////////QcAEAAAAAAAIAAAB/AAAA/P/////////tcAEAAAAAAAIAAAB/AAAA/P// +//////8KcQEAAAAAAAIAAAB/AAAA/P////////8ncQEAAAAAAAIAAAB/AAAA/P////// +//9XcQEAAAAAAAIAAAB/AAAA/P////////90cQEAAAAAAAIAAAB/AAAA/P////////+R +cQEAAAAAAAIAAAB/AAAA/P////////+ucQEAAAAAAAIAAAB/AAAA/P/////////LcQEA +AAAAAAIAAAB/AAAA/P/////////dcQEAAAAAAAsAAAACAAAAoHwAAAAAAAAncgEAAAAA +AAIAAAB/AAAA/P////////9IcgEAAAAAAAIAAAB/AAAA/P////////+RcgEAAAAAAAIA +AAB/AAAA/P////////+scgEAAAAAAAIAAAB/AAAA/P////////+7cgEAAAAAAAsAAAAC +AAAAgHgAAAAAAADZcgEAAAAAAAIAAABMAQAA/P/////////wcgEAAAAAAAsAAAACAAAA +kHgAAAAAAAAOcwEAAAAAAAIAAABMAQAA/P////////8lcwEAAAAAAAsAAAACAAAAsHgA +AAAAAABDcwEAAAAAAAIAAABMAQAA/P////////9acwEAAAAAAAsAAAACAAAA4HgAAAAA +AAB4cwEAAAAAAAIAAABMAQAA/P////////+ScwEAAAAAAAsAAAACAAAAoHwAAAAAAACz +cwEAAAAAAAIAAABMAQAA/P////////8LdgEAAAAAAAIAAAD5AAAA/P////////8edgEA +AAAAAAIAAAD5AAAA/P////////+UdgEAAAAAAAIAAAD5AAAA/P////////+ndgEAAAAA +AAIAAAD5AAAA/P/////////5dgEAAAAAAAIAAAD5AAAA/P////////8ndwEAAAAAAAIA +AAD5AAAA/P////////86dwEAAAAAAAIAAAD5AAAA/P////////+IdwEAAAAAAAIAAAD5 +AAAA/P////////8BfgEAAAAAAAIAAACLAAAA/P////////8ifgEAAAAAAAIAAACLAAAA +/P////////89gQEAAAAAAAIAAADeAAAA/P////////9dgQEAAAAAAAIAAADeAAAA/P// +//////+MgQEAAAAAAAsAAAABAAAA630BAAAAAACXgQEAAAAAAAsAAAABAAAAeGgBAAAA +AACigQEAAAAAAAsAAAABAAAAN2wBAAAAAACtgQEAAAAAAAsAAAABAAAAV2kBAAAAAAC4 +gQEAAAAAAAsAAAABAAAAbWwBAAAAAADDgQEAAAAAAAsAAAABAAAA3XMBAAAAAADOgQEA +AAAAAAsAAAABAAAAq4ABAAAAAADZgQEAAAAAAAsAAAAlAAAAAAAAAAAAAAASggEAAAAA +AAsAAAACAAAAIH4AAAAAAABCggEAAAAAAAIAAABMAQAA/P////////9YggEAAAAAAAsA +AAACAAAAoH8AAAAAAABkggEAAAAAAAsAAAACAAAApH8AAAAAAAB4ggEAAAAAAAIAAABM +AQAA/P////////+OggEAAAAAAAsAAAACAAAAAIQAAAAAAAC8ggEAAAAAAAIAAABMAQAA +/P////////+tgwEAAAAAAAIAAAAyAAAA/P////////80hAEAAAAAAAIAAAAyAAAA/P// +//////+WhAEAAAAAAAIAAAAyAAAA/P/////////vhAEAAAAAAAIAAAAyAAAA/P////// +//9JhQEAAAAAAAIAAAAyAAAA/P////////9ahQEAAAAAAAIAAAAyAAAA/P////////87 +hgEAAAAAAAsAAAACAAAABIcAAAAAAABZhgEAAAAAAAsAAAACAAAAEIcAAAAAAACBhgEA +AAAAAAsAAAACAAAAMIcAAAAAAACphgEAAAAAAAsAAAACAAAAYIcAAAAAAADkhgEAAAAA +AAIAAAB/AAAA/P////////8BhwEAAAAAAAIAAAB/AAAA/P////////8RhwEAAAAAAAsA +AAACAAAAAIoAAAAAAAA6hwEAAAAAAAsAAAACAAAAAIcAAAAAAABXhwEAAAAAAAIAAABM +AQAA/P////////9uhwEAAAAAAAsAAAACAAAAEIcAAAAAAACMhwEAAAAAAAIAAABMAQAA +/P////////+jhwEAAAAAAAsAAAACAAAAMIcAAAAAAADBhwEAAAAAAAIAAABMAQAA/P// +///////YhwEAAAAAAAsAAAACAAAAYIcAAAAAAAD2hwEAAAAAAAIAAABMAQAA/P////// +//8QiAEAAAAAAAsAAAACAAAAAIoAAAAAAAAuiAEAAAAAAAIAAABMAQAA/P////////9p +iAEAAAAAAAsAAAACAAAASIoAAAAAAADikAEAAAAAAAIAAACLAAAA/P////////8DkQEA +AAAAAAIAAACLAAAA/P////////8klAEAAAAAAAIAAADeAAAA/P////////9ElAEAAAAA +AAIAAADeAAAA/P////////9plAEAAAAAAAsAAAABAAAAzJABAAAAAAB0lAEAAAAAAAsA +AAABAAAA9IEBAAAAAAB/lAEAAAAAAAsAAAABAAAAWIgBAAAAAACKlAEAAAAAAAsAAAAB +AAAA1oIBAAAAAACVlAEAAAAAAAsAAAABAAAAtoUBAAAAAACglAEAAAAAAAsAAAABAAAA +Qo8BAAAAAACrlAEAAAAAAAsAAAABAAAAkpMBAAAAAAC2lAEAAAAAAAsAAAAlAAAAAAAA +AAAAAADulAEAAAAAAAsAAAACAAAAoIoAAAAAAAAelQEAAAAAAAIAAABMAQAA/P////// +//80lQEAAAAAAAsAAAACAAAAgI0AAAAAAABAlQEAAAAAAAsAAAACAAAAhI0AAAAAAABU +lQEAAAAAAAIAAABMAQAA/P////////9nlQEAAAAAAAsAAAACAAAAgJEAAAAAAACVlQEA +AAAAAAIAAABMAQAA/P////////+GlgEAAAAAAAIAAAAyAAAA/P////////8NlwEAAAAA +AAIAAAAyAAAA/P/////////2lwEAAAAAAAIAAAAyAAAA/P////////8HmAEAAAAAAAIA +AAAyAAAA/P////////+dmQEAAAAAAAsAAAACAAAAhJQAAAAAAAC7mQEAAAAAAAsAAAAC +AAAAkJQAAAAAAADjmQEAAAAAAAsAAAACAAAAsJQAAAAAAAALmgEAAAAAAAsAAAACAAAA +4JQAAAAAAABRmgEAAAAAAAIAAAB/AAAA/P////////9umgEAAAAAAAIAAAB/AAAA/P// +//////+LmgEAAAAAAAIAAAB/AAAA/P////////+5mgEAAAAAAAIAAAAyAAAA/P////// +///zmgEAAAAAAAIAAAB/AAAA/P////////8QmwEAAAAAAAIAAAB/AAAA/P////////8g +mwEAAAAAAAsAAAACAAAAYJgAAAAAAABMmwEAAAAAAAsAAAACAAAAgJQAAAAAAABpmwEA +AAAAAAIAAABMAQAA/P////////+AmwEAAAAAAAsAAAACAAAAkJQAAAAAAACemwEAAAAA +AAIAAABMAQAA/P////////+1mwEAAAAAAAsAAAACAAAAsJQAAAAAAADTmwEAAAAAAAIA +AABMAQAA/P/////////qmwEAAAAAAAsAAAACAAAA4JQAAAAAAAAInAEAAAAAAAIAAABM +AQAA/P////////8inAEAAAAAAAsAAAACAAAAYJgAAAAAAABDnAEAAAAAAAIAAABMAQAA +/P////////9+nAEAAAAAAAsAAAACAAAAqJgAAAAAAAD7pAEAAAAAAAIAAACLAAAA/P// +//////8cpQEAAAAAAAIAAACLAAAA/P////////8kqAEAAAAAAAIAAADeAAAA/P////// +//9EqAEAAAAAAAIAAADeAAAA/P////////9pqAEAAAAAAAsAAAABAAAA5aQBAAAAAAB0 +qAEAAAAAAAsAAAABAAAA0JQBAAAAAAB/qAEAAAAAAAsAAAABAAAAbZwBAAAAAACKqAEA +AAAAAAsAAAABAAAAr5UBAAAAAACVqAEAAAAAAAsAAAABAAAAY5gBAAAAAACgqAEAAAAA +AAsAAAABAAAAWqMBAAAAAACrqAEAAAAAAAsAAAABAAAAkqcBAAAAAAC2qAEAAAAAAAsA +AAAlAAAAAAAAAAAAAAAIAAAAAAAAAAEAAAABAAAAcQcAAAAAAAAQAAAAAAAAAAEAAAAB +AAAAZQgAAAAAAAAYAAAAAAAAAAEAAAABAAAAZQgAAAAAAAAgAAAAAAAAAAEAAAABAAAA +ZQgAAAAAAAAoAAAAAAAAAAEAAAABAAAAawgAAAAAAAAwAAAAAAAAAAEAAAABAAAAZQgA +AAAAAAA4AAAAAAAAAAEAAAABAAAAegcAAAAAAABAAAAAAAAAAAEAAAABAAAAhwcAAAAA +AABIAAAAAAAAAAEAAAABAAAAawgAAAAAAABQAAAAAAAAAAEAAAABAAAAjgcAAAAAAABY +AAAAAAAAAAEAAAABAAAAlQcAAAAAAABgAAAAAAAAAAEAAAABAAAAxgcAAAAAAABoAAAA +AAAAAAEAAAABAAAAqAcAAAAAAABwAAAAAAAAAAEAAAABAAAAugcAAAAAAAB4AAAAAAAA +AAEAAAABAAAAwAcAAAAAAACAAAAAAAAAAAEAAAABAAAAzgcAAAAAAACIAAAAAAAAAAEA +AAABAAAAawgAAAAAAACQAAAAAAAAAAEAAAABAAAAawgAAAAAAACYAAAAAAAAAAEAAAAB +AAAACggAAAAAAACgAAAAAAAAAAEAAAABAAAAEQgAAAAAAACoAAAAAAAAAAEAAAABAAAA +ZQgAAAAAAACwAAAAAAAAAAEAAAABAAAAGAgAAAAAAAC4AAAAAAAAAAEAAAABAAAAZQgA +AAAAAADAAAAAAAAAAAEAAAABAAAAHwgAAAAAAADIAAAAAAAAAAEAAAABAAAAJggAAAAA +AADQAAAAAAAAAAEAAAABAAAAMAgAAAAAAADYAAAAAAAAAAEAAAABAAAAawgAAAAAAADg +AAAAAAAAAAEAAAABAAAAawgAAAAAAADoAAAAAAAAAAEAAAABAAAAZQgAAAAAAABYAgAA +AAAAAAEAAAAhAQAAAAAAAAAAAABgAgAAAAAAAAEAAABpAAAAAAAAAAAAAABoAgAAAAAA +AAEAAADQAAAAAAAAAAAAAABwAgAAAAAAAAEAAADBAAAAAAAAAAAAAAB4AgAAAAAAAAEA +AACXAQAAAAAAAAAAAACAAgAAAAAAAAEAAADkAAAAAAAAAAAAAACIAgAAAAAAAAEAAABZ +AAAAAAAAAAAAAACQAgAAAAAAAAEAAADyAAAAAAAAAAAAAACYAgAAAAAAAAEAAAAeAQAA +AAAAAAAAAACgAgAAAAAAAAEAAABfAQAAAAAAAAAAAACoAgAAAAAAAAEAAADHAAAAAAAA +AAAAAACwAgAAAAAAAAEAAAANAAAAAAAAAAAAAAC4AgAAAAAAAAEAAAAKAAAAAAAAAAAA +AADAAgAAAAAAAAEAAABcAQAAAAAAAAAAAADIAgAAAAAAAAEAAACtAAAAAAAAAAAAAADQ +AgAAAAAAAAEAAACUAQAAAAAAAAAAAADYAgAAAAAAAAEAAABkAQAAAAAAAAAAAADgAgAA +AAAAAAEAAADNAAAAAAAAAAAAAADoAgAAAAAAAAEAAABBAAAAAAAAAAAAAADwAgAAAAAA +AAEAAACMAAAAAAAAAAAAAAD4AgAAAAAAAAEAAABcAAAAAAAAAAAAAAAAAwAAAAAAAAEA +AAAkAAAAAAAAAAAAAAAIAwAAAAAAAAEAAACDAQAAAAAAAAAAAAAQAwAAAAAAAAEAAACu +AQAAAAAAAAAAAAAYAwAAAAAAAAEAAAAxAAAAAAAAAAAAAAAgAwAAAAAAAAEAAACWAAAA +AAAAAAAAAAAoAwAAAAAAAAEAAABhAQAAAAAAAAAAAAAwAwAAAAAAAAEAAAAsAAAAAAAA +AAAAAAA4AwAAAAAAAAEAAAA/AAAAAAAAAAAAAABAAwAAAAAAAAEAAABtAAAAAAAAAAAA +AABIAwAAAAAAAAEAAACbAQAAAAAAAAAAAABQAwAAAAAAAAEAAACWAQAAAAAAAAAAAABY +AwAAAAAAAAEAAAAuAQAAAAAAAAAAAABgAwAAAAAAAAEAAADCAAAAAAAAAAAAAABoAwAA +AAAAAAEAAAB6AQAAAAAAAAAAAABwAwAAAAAAAAEAAAB9AQAAAAAAAAAAAAB4AwAAAAAA +AAEAAAAdAQAAAAAAAAAAAACAAwAAAAAAAAEAAADvAAAAAAAAAAAAAACIAwAAAAAAAAEA +AABTAQAAAAAAAAAAAACQAwAAAAAAAAEAAACbAAAAAAAAAAAAAACYAwAAAAAAAAEAAACO +AQAAAAAAAAAAAACgAwAAAAAAAAEAAADOAAAAAAAAAAAAAACoAwAAAAAAAAEAAADEAAAA +AAAAAAAAAACwAwAAAAAAAAEAAACPAAAAAAAAAAAAAAC4AwAAAAAAAAEAAAC8AAAAAAAA +AAAAAADAAwAAAAAAAAEAAABaAAAAAAAAAAAAAADIAwAAAAAAAAEAAADYAAAAAAAAAAAA +AADQAwAAAAAAAAEAAABPAQAAAAAAAAAAAADYAwAAAAAAAAEAAAAjAQAAAAAAAAAAAADg +AwAAAAAAAAEAAACxAAAAAAAAAAAAAADoAwAAAAAAAAEAAABKAQAAAAAAAAAAAADwAwAA +AAAAAAEAAAD8AAAAAAAAAAAAAAD4AwAAAAAAAAEAAAB2AQAAAAAAAAAAAAAABAAAAAAA +AAEAAABmAQAAAAAAAAAAAAAIBAAAAAAAAAEAAABCAQAAAAAAAAAAAAAQBAAAAAAAAAEA +AAA1AAAAAAAAAAAAAAAYBAAAAAAAAAEAAADDAAAAAAAAAAAAAAAgBAAAAAAAAAEAAAB0 +AQAAAAAAAAAAAAAoBAAAAAAAAAEAAAAwAQAAAAAAAAAAAAAwBAAAAAAAAAEAAAA6AQAA +AAAAAAAAAAA4BAAAAAAAAAEAAABAAAAAAAAAAAAAAABABAAAAAAAAAEAAAB7AAAAAAAA +AAAAAABIBAAAAAAAAAEAAABdAQAAAAAAAAAAAABQBAAAAAAAAAEAAAD3AAAAAAAAAAAA +AABYBAAAAAAAAAEAAABUAAAAAAAAAAAAAABgBAAAAAAAAAEAAAA5AAAAAAAAAAAAAABo +BAAAAAAAAAEAAACVAAAAAAAAAAAAAABwBAAAAAAAAAEAAAALAAAAAAAAAAAAAAB4BAAA +AAAAAAEAAAAIAQAAAAAAAAAAAACABAAAAAAAAAEAAABVAQAAAAAAAAAAAACIBAAAAAAA +AAEAAABLAQAAAAAAAAAAAACQBAAAAAAAAAEAAAAJAQAAAAAAAAAAAACYBAAAAAAAAAEA +AACcAQAAAAAAAAAAAACgBAAAAAAAAAEAAABuAAAAAAAAAAAAAACoBAAAAAAAAAEAAAAO +AAAAAAAAAAAAAACwBAAAAAAAAAEAAAB/AQAAAAAAAAAAAAC4BAAAAAAAAAEAAAC6AAAA +AAAAAAAAAADABAAAAAAAAAEAAAAkAQAAAAAAAAAAAADIBAAAAAAAAAEAAAAtAQAAAAAA +AAAAAADQBAAAAAAAAAEAAACKAQAAAAAAAAAAAADYBAAAAAAAAAEAAABJAQAAAAAAAAAA +AADgBAAAAAAAAAEAAACzAAAAAAAAAAAAAADoBAAAAAAAAAEAAABJAAAAAAAAAAAAAADw +BAAAAAAAAAEAAABEAQAAAAAAAAAAAAD4BAAAAAAAAAEAAAAXAAAAAAAAAAAAAAAABQAA +AAAAAAEAAADLAAAAAAAAAAAAAAAIBQAAAAAAAAEAAAB0AAAAAAAAAAAAAAAQBQAAAAAA +AAEAAAAMAQAAAAAAAAAAAAAYBQAAAAAAAAEAAAANAQAAAAAAAAAAAAAgBQAAAAAAAAEA +AABrAQAAAAAAAAAAAAAoBQAAAAAAAAEAAAB+AQAAAAAAAAAAAAAwBQAAAAAAAAEAAACa +AQAAAAAAAAAAAAA4BQAAAAAAAAEAAAASAAAAAAAAAAAAAABABQAAAAAAAAEAAABoAQAA +AAAAAAAAAABIBQAAAAAAAAEAAAA4AQAAAAAAAAAAAABQBQAAAAAAAAEAAAAgAQAAAAAA +AAAAAABYBQAAAAAAAAEAAACuAAAAAAAAAAAAAABgBQAAAAAAAAEAAABpAQAAAAAAAAAA +AABoBQAAAAAAAAEAAAABAAAANVQAAAAAAABwBQAAAAAAAAEAAACsAQAAAAAAAAAAAAB4 +BQAAAAAAAAEAAABBAQAAAAAAAAAAAACIBQAAAAAAAAEAAAB0AQAAAAAAAAAAAACQBQAA +AAAAAAEAAAAwAQAAAAAAAAAAAACYBQAAAAAAAAEAAAA6AQAAAAAAAAAAAACgBQAAAAAA +AAEAAABAAAAAAAAAAAAAAACoBQAAAAAAAAEAAAB7AAAAAAAAAAAAAACwBQAAAAAAAAEA +AAABAAAAUlQAAAAAAAD4HAAAAAAAAAEAAABeAQAAAAAAAAAAAAAAHQAAAAAAAAEAAACA +AQAAAAAAAAAAAAAIHQAAAAAAAAEAAABxAQAAAAAAAAAAAAAQHQAAAAAAAAEAAACZAQAA +AAAAAAAAAAAYHQAAAAAAAAEAAABoAAAAAAAAAAAAAAAgHQAAAAAAAAEAAAB8AAAAAAAA +AAAAAAAoHQAAAAAAAAEAAACfAAAAAAAAAAAAAAAwHQAAAAAAAAEAAABxAAAAAAAAAAAA +AAA4HQAAAAAAAAEAAAAUAAAAAAAAAAAAAABAHQAAAAAAAAEAAAB9AAAAAAAAAAAAAABI +HQAAAAAAAAEAAACEAQAAAAAAAAAAAABQHQAAAAAAAAEAAACTAQAAAAAAAAAAAABYHQAA +AAAAAAEAAACNAAAAAAAAAAAAAABgHQAAAAAAAAEAAADKAAAAAAAAAAAAAABoHQAAAAAA +AAEAAAAQAAAAAAAAAAAAAABwHQAAAAAAAAEAAAA4AAAAAAAAAAAAAAB4HQAAAAAAAAEA +AABmAAAAAAAAAAAAAACAHQAAAAAAAAEAAABnAAAAAAAAAAAAAACIHQAAAAAAAAEAAAA8 +AAAAAAAAAAAAAACQHQAAAAAAAAEAAACHAQAAAAAAAAAAAACYHQAAAAAAAAEAAAAiAQAA +AAAAAAAAAACgHQAAAAAAAAEAAACkAQAAAAAAAAAAAACoHQAAAAAAAAEAAACJAAAAAAAA +AAAAAACwHQAAAAAAAAEAAACRAQAAAAAAAAAAAAC4HQAAAAAAAAEAAAAWAQAAAAAAAAAA +AADAHQAAAAAAAAEAAAC3AAAAAAAAAAAAAADIHQAAAAAAAAEAAAA9AQAAAAAAAAAAAADQ +HQAAAAAAAAEAAAAmAAAAAAAAAAAAAADYHQAAAAAAAAEAAAAbAQAAAAAAAAAAAADgHQAA +AAAAAAEAAAAdAAAAAAAAAAAAAADoHQAAAAAAAAEAAACCAQAAAAAAAAAAAADwHQAAAAAA +AAEAAAD6AAAAAAAAAAAAAAD4HQAAAAAAAAEAAAAjAAAAAAAAAAAAAAAAHgAAAAAAAAEA +AAAtAAAAAAAAAAAAAAAIHgAAAAAAAAEAAAC7AAAAAAAAAAAAAAAQHgAAAAAAAAEAAACY +AQAAAAAAAAAAAAAYHgAAAAAAAAEAAACFAQAAAAAAAAAAAAAgHgAAAAAAAAEAAACSAQAA +AAAAAAAAAAAoHgAAAAAAAAEAAABQAQAAAAAAAAAAAAAwHgAAAAAAAAEAAAAFAQAAAAAA +AAAAAAA4HgAAAAAAAAEAAAASAQAAAAAAAAAAAABAHgAAAAAAAAEAAAABAQAAAAAAAAAA +AABIHgAAAAAAAAEAAAAnAQAAAAAAAAAAAABQHgAAAAAAAAEAAACFAAAAAAAAAAAAAABY +HgAAAAAAAAEAAACkAAAAAAAAAAAAAABgHgAAAAAAAAEAAAB6AAAAAAAAAAAAAABoHgAA +AAAAAAEAAABjAQAAAAAAAAAAAABwHgAAAAAAAAEAAACsAAAAAAAAAAAAAAB4HgAAAAAA +AAEAAABEAAAAAAAAAAAAAACAHgAAAAAAAAEAAABRAQAAAAAAAAAAAACIHgAAAAAAAAEA +AABNAQAAAAAAAAAAAACQHgAAAAAAAAEAAACBAAAAAAAAAAAAAACYHgAAAAAAAAEAAAA9 +AAAAAAAAAAAAAACgHgAAAAAAAAEAAABnAQAAAAAAAAAAAACoHgAAAAAAAAEAAADwAAAA +AAAAAAAAAACwHgAAAAAAAAEAAABFAQAAAAAAAAAAAAC4HgAAAAAAAAEAAAD2AAAAAAAA +AAAAAADAHgAAAAAAAAEAAADUAAAAAAAAAAAAAADIHgAAAAAAAAEAAAD1AAAAAAAAAAAA +AADQHgAAAAAAAAEAAABZAQAAAAAAAAAAAADYHgAAAAAAAAEAAADfAAAAAAAAAAAAAADg +HgAAAAAAAAEAAAA6AAAAAAAAAAAAAADoHgAAAAAAAAEAAABlAAAAAAAAAAAAAADwHgAA +AAAAAAEAAADpAAAAAAAAAAAAAAD4HgAAAAAAAAEAAABgAQAAAAAAAAAAAAAAHwAAAAAA +AAEAAABuAQAAAAAAAAAAAAAIHwAAAAAAAAEAAAA8AQAAAAAAAAAAAAAQHwAAAAAAAAEA +AAAgAAAAAAAAAAAAAAAYHwAAAAAAAAEAAABgAAAAAAAAAAAAAAAgHwAAAAAAAAEAAABH +AQAAAAAAAAAAAAAoHwAAAAAAAAEAAACtAQAAAAAAAAAAAAAwHwAAAAAAAAEAAABMAAAA +AAAAAAAAAAA4HwAAAAAAAAEAAACnAAAAAAAAAAAAAABAHwAAAAAAAAEAAAB7AQAAAAAA +AAAAAABIHwAAAAAAAAEAAADlAAAAAAAAAAAAAABQHwAAAAAAAAEAAAAYAQAAAAAAAAAA +AABYHwAAAAAAAAEAAAAiAAAAAAAAAAAAAABgHwAAAAAAAAEAAAAOAQAAAAAAAAAAAABo +HwAAAAAAAAEAAAA7AAAAAAAAAAAAAABwHwAAAAAAAAEAAAATAQAAAAAAAAAAAAB4HwAA +AAAAAAEAAAD+AAAAAAAAAAAAAACAHwAAAAAAAAEAAACXAAAAAAAAAAAAAACIHwAAAAAA +AAEAAAAqAAAAAAAAAAAAAACQHwAAAAAAAAEAAABVAAAAAAAAAAAAAACYHwAAAAAAAAEA +AACeAAAAAAAAAAAAAACgHwAAAAAAAAEAAADtAAAAAAAAAAAAAACoHwAAAAAAAAEAAADc +AAAAAAAAAAAAAACwHwAAAAAAAAEAAABwAQAAAAAAAAAAAAC4HwAAAAAAAAEAAADbAAAA +AAAAAAAAAADAHwAAAAAAAAEAAABrAQAAAAAAAAAAAADIHwAAAAAAAAEAAACqAQAAAAAA +AAAAAADQHwAAAAAAAAEAAAAJAAAAAAAAAAAAAADYHwAAAAAAAAEAAACvAAAAAAAAAAAA +AADgHwAAAAAAAAEAAAB2AAAAAAAAAAAAAADoHwAAAAAAAAEAAABvAAAAAAAAAAAAAADw +HwAAAAAAAAEAAAACAQAAAAAAAAAAAAD4HwAAAAAAAAEAAAAGAQAAAAAAAAAAAAAAIAAA +AAAAAAEAAAAaAQAAAAAAAAAAAAAIIAAAAAAAAAEAAAABAAAABYcAAAAAAAAQIAAAAAAA +AAEAAABDAQAAAAAAAAAAAAAYIAAAAAAAAAEAAABiAQAAAAAAAAAAAAAoIAAAAAAAAAEA +AADUAAAAAAAAAAAAAAAwIAAAAAAAAAEAAAD1AAAAAAAAAAAAAAA4IAAAAAAAAAEAAABZ +AQAAAAAAAAAAAABAIAAAAAAAAAEAAADfAAAAAAAAAAAAAABIIAAAAAAAAAEAAAA6AAAA +AAAAAAAAAABQIAAAAAAAAAEAAAABAAAAPYcAAAAAAAD4PgAAAAAAAAEAAAABAAAAVrcA +AAAAAAAAPwAAAAAAAAEAAAABAAAAVrcAAAAAAAAIPwAAAAAAAAEAAAABAAAAfbcAAAAA +AAAQPwAAAAAAAAEAAAABAAAAfbcAAAAAAAAYPwAAAAAAAAEAAAABAAAApLcAAAAAAAAg +PwAAAAAAAAEAAAABAAAApLcAAAAAAAAoPwAAAAAAAAEAAAABAAAAy7cAAAAAAAAwPwAA +AAAAAAEAAAABAAAAy7cAAAAAAAAYQQAAAAAAAAEAAABfAAAAAAAAAAAAAAAgQQAAAAAA +AAEAAACIAAAAAAAAAAAAAAAoQQAAAAAAAAEAAACPAQAAAAAAAAAAAAAwQQAAAAAAAAEA +AABwAAAAAAAAAAAAAAA4QQAAAAAAAAEAAABIAAAAAAAAAAAAAABAQQAAAAAAAAEAAADo +AAAAAAAAAAAAAABIQQAAAAAAAAEAAADGAAAAAAAAAAAAAABQQQAAAAAAAAEAAAAyAQAA +AAAAAAAAAABYQQAAAAAAAAEAAAA/AQAAAAAAAAAAAABgQQAAAAAAAAEAAAB3AAAAAAAA +AAAAAABoQQAAAAAAAAEAAAAxAQAAAAAAAAAAAABwQQAAAAAAAAEAAACOAAAAAAAAAAAA +AAB4QQAAAAAAAAEAAADSAAAAAAAAAAAAAACAQQAAAAAAAAEAAACcAAAAAAAAAAAAAACI +QQAAAAAAAAEAAAC4AAAAAAAAAAAAAACQQQAAAAAAAAEAAABYAAAAAAAAAAAAAACYQQAA +AAAAAAEAAACqAAAAAAAAAAAAAACgQQAAAAAAAAEAAABbAAAAAAAAAAAAAACoQQAAAAAA +AAEAAAAXAQAAAAAAAAAAAACwQQAAAAAAAAEAAAB5AQAAAAAAAAAAAAC4QQAAAAAAAAEA +AACUAAAAAAAAAAAAAADAQQAAAAAAAAEAAAARAQAAAAAAAAAAAADIQQAAAAAAAAEAAAD4 +AAAAAAAAAAAAAADQQQAAAAAAAAEAAAC0AQAAAAAAAAAAAADYQQAAAAAAAAEAAACpAQAA +AAAAAAAAAADgQQAAAAAAAAEAAADIAAAAAAAAAAAAAADoQQAAAAAAAAEAAACEAAAAAAAA +AAAAAADwQQAAAAAAAAEAAAA5AQAAAAAAAAAAAAD4QQAAAAAAAAEAAAArAAAAAAAAAAAA +AAAAQgAAAAAAAAEAAAB4AQAAAAAAAAAAAAAIQgAAAAAAAAEAAABsAQAAAAAAAAAAAAAQ +QgAAAAAAAAEAAACQAAAAAAAAAAAAAAAYQgAAAAAAAAEAAAB8AQAAAAAAAAAAAAAgQgAA +AAAAAAEAAABjAAAAAAAAAAAAAAAoQgAAAAAAAAEAAABXAQAAAAAAAAAAAAAwQgAAAAAA +AAEAAAAUAQAAAAAAAAAAAAA4QgAAAAAAAAEAAAAPAQAAAAAAAAAAAABAQgAAAAAAAAEA +AAAWAAAAAAAAAAAAAABIQgAAAAAAAAEAAACIAQAAAAAAAAAAAABQQgAAAAAAAAEAAACC +AAAAAAAAAAAAAABYQgAAAAAAAAEAAADzAAAAAAAAAAAAAABgQgAAAAAAAAEAAACNAQAA +AAAAAAAAAABoQgAAAAAAAAEAAADqAAAAAAAAAAAAAABwQgAAAAAAAAEAAACiAAAAAAAA +AAAAAAB4QgAAAAAAAAEAAABIAQAAAAAAAAAAAACAQgAAAAAAAAEAAACwAQAAAAAAAAAA +AACIQgAAAAAAAAEAAAATAAAAAAAAAAAAAACQQgAAAAAAAAEAAACpAAAAAAAAAAAAAACY +QgAAAAAAAAEAAAAMAAAAAAAAAAAAAACgQgAAAAAAAAEAAACjAAAAAAAAAAAAAACoQgAA +AAAAAAEAAABWAQAAAAAAAAAAAACwQgAAAAAAAAEAAAC+AAAAAAAAAAAAAAC4QgAAAAAA +AAEAAAD7AAAAAAAAAAAAAADAQgAAAAAAAAEAAABCAAAAAAAAAAAAAADIQgAAAAAAAAEA +AAA1AQAAAAAAAAAAAADQQgAAAAAAAAEAAACwAAAAAAAAAAAAAADYQgAAAAAAAAEAAAC/ +AAAAAAAAAAAAAADgQgAAAAAAAAEAAAAsAQAAAAAAAAAAAADoQgAAAAAAAAEAAABRAAAA +AAAAAAAAAADwQgAAAAAAAAEAAABaAQAAAAAAAAAAAAD4QgAAAAAAAAEAAABqAQAAAAAA +AAAAAAAAQwAAAAAAAAEAAAApAQAAAAAAAAAAAAAIQwAAAAAAAAEAAACvAQAAAAAAAAAA +AAAQQwAAAAAAAAEAAABNAAAAAAAAAAAAAAAYQwAAAAAAAAEAAADXAAAAAAAAAAAAAAAg +QwAAAAAAAAEAAAC1AAAAAAAAAAAAAAAoQwAAAAAAAAEAAACfAQAAAAAAAAAAAAAwQwAA +AAAAAAEAAABQAAAAAAAAAAAAAAA4QwAAAAAAAAEAAACYAAAAAAAAAAAAAABAQwAAAAAA +AAEAAACjAQAAAAAAAAAAAABIQwAAAAAAAAEAAAC0AAAAAAAAAAAAAABQQwAAAAAAAAEA +AADdAAAAAAAAAAAAAABYQwAAAAAAAAEAAABGAAAAAAAAAAAAAABgQwAAAAAAAAEAAABP +AAAAAAAAAAAAAABoQwAAAAAAAAEAAAAwAAAAAAAAAAAAAABwQwAAAAAAAAEAAABFAAAA +AAAAAAAAAAB4QwAAAAAAAAEAAAA+AAAAAAAAAAAAAACAQwAAAAAAAAEAAAD9AAAAAAAA +AAAAAACIQwAAAAAAAAEAAABKAAAAAAAAAAAAAACQQwAAAAAAAAEAAACHAAAAAAAAAAAA +AACYQwAAAAAAAAEAAAA3AAAAAAAAAAAAAACgQwAAAAAAAAEAAAA2AAAAAAAAAAAAAACo +QwAAAAAAAAEAAAAcAAAAAAAAAAAAAACwQwAAAAAAAAEAAAB5AAAAAAAAAAAAAAC4QwAA +AAAAAAEAAAALAQAAAAAAAAAAAADAQwAAAAAAAAEAAAByAAAAAAAAAAAAAADIQwAAAAAA +AAEAAAA7AQAAAAAAAAAAAADQQwAAAAAAAAEAAACeAQAAAAAAAAAAAADYQwAAAAAAAAEA +AADhAAAAAAAAAAAAAADgQwAAAAAAAAEAAABrAQAAAAAAAAAAAADoQwAAAAAAAAEAAACd +AAAAAAAAAAAAAADwQwAAAAAAAAEAAACrAQAAAAAAAAAAAAD4QwAAAAAAAAEAAAAlAQAA +AAAAAAAAAAAARAAAAAAAAAEAAADiAAAAAAAAAAAAAAAIRAAAAAAAAAEAAAAnAAAAAAAA +AAAAAAAQRAAAAAAAAAEAAACQAQAAAAAAAAAAAAAYRAAAAAAAAAEAAABzAAAAAAAAAAAA +AAAgRAAAAAAAAAEAAADmAAAAAAAAAAAAAAAoRAAAAAAAAAEAAADWAAAAAAAAAAAAAAAw +RAAAAAAAAAEAAAD/AAAAAAAAAAAAAAA4RAAAAAAAAAEAAACnAQAAAAAAAAAAAABIRAAA +AAAAAAEAAAAsAQAAAAAAAAAAAABQRAAAAAAAAAEAAABRAAAAAAAAAAAAAABYRAAAAAAA +AAEAAABaAQAAAAAAAAAAAABgRAAAAAAAAAEAAABqAQAAAAAAAAAAAABoRAAAAAAAAAEA +AAApAQAAAAAAAAAAAABwRAAAAAAAAAEAAACxAQAAAAAAAAAAAABQVQAAAAAAAAEAAAAB +AAAAjOEAAAAAAABYVQAAAAAAAAEAAAABAAAATeEAAAAAAABgVQAAAAAAAAEAAAABAAAA +VeEAAAAAAABoVQAAAAAAAAEAAAABAAAAweEAAAAAAABwVQAAAAAAAAEAAAABAAAAY+EA +AAAAAAB4VQAAAAAAAAEAAAABAAAAueEAAAAAAADQVQAAAAAAAAEAAAABAAAABvIAAAAA +AADYVQAAAAAAAAEAAAABAAAADPAAAAAAAADgVQAAAAAAAAEAAAABAAAAPPAAAAAAAADo +VQAAAAAAAAEAAAABAAAA//EAAAAAAADwVQAAAAAAAAEAAAABAAAAjvAAAAAAAAD4VQAA +AAAAAAEAAAABAAAAl/AAAAAAAAAAVgAAAAAAAAEAAAABAAAABvIAAAAAAAAIVgAAAAAA +AAEAAAABAAAABvIAAAAAAAAQVgAAAAAAAAEAAAABAAAABvIAAAAAAAAYVgAAAAAAAAEA +AAABAAAABvIAAAAAAAAgVgAAAAAAAAEAAAABAAAABvIAAAAAAAAoVgAAAAAAAAEAAAAB +AAAAv/AAAAAAAAAwVgAAAAAAAAEAAAABAAAABvIAAAAAAAA4VgAAAAAAAAEAAAABAAAA +BvIAAAAAAABAVgAAAAAAAAEAAAABAAAABvIAAAAAAABIVgAAAAAAAAEAAAABAAAABvIA +AAAAAABQVgAAAAAAAAEAAAABAAAAyvAAAAAAAABYVgAAAAAAAAEAAAABAAAA6fAAAAAA +AABgVgAAAAAAAAEAAAABAAAABvIAAAAAAABoVgAAAAAAAAEAAAABAAAAJPEAAAAAAABw +VgAAAAAAAAEAAAABAAAARvEAAAAAAAB4VgAAAAAAAAEAAAABAAAABvIAAAAAAACAVgAA +AAAAAAEAAAABAAAAYPAAAAAAAACIVgAAAAAAAAEAAAABAAAABvIAAAAAAACQVgAAAAAA +AAEAAAABAAAABvIAAAAAAACYVgAAAAAAAAEAAAABAAAABvIAAAAAAACgVgAAAAAAAAEA +AAABAAAAfPEAAAAAAACoVgAAAAAAAAEAAAABAAAAh/EAAAAAAACwVgAAAAAAAAEAAAAB +AAAABvIAAAAAAAC4VgAAAAAAAAEAAAABAAAAl/EAAAAAAADAVgAAAAAAAAEAAAABAAAA +//EAAAAAAADIVgAAAAAAAAEAAAABAAAA//EAAAAAAADQVgAAAAAAAAEAAAABAAAA4PEA +AAAAAADYVgAAAAAAAAEAAAABAAAA5vEAAAAAAADgVgAAAAAAAAEAAAABAAAA7PEAAAAA +AADoVgAAAAAAAAEAAAABAAAA8vEAAAAAAADwVgAAAAAAAAEAAAABAAAA+PEAAAAAAAAg +VwAAAAAAAAEAAAABAAAAa/MAAAAAAAAoVwAAAAAAAAEAAAABAAAAa/MAAAAAAAAwVwAA +AAAAAAEAAAABAAAAP/IAAAAAAAA4VwAAAAAAAAEAAAABAAAAa/MAAAAAAABAVwAAAAAA +AAEAAAABAAAAa/MAAAAAAABIVwAAAAAAAAEAAAABAAAAYfIAAAAAAABQVwAAAAAAAAEA +AAABAAAAa/MAAAAAAABYVwAAAAAAAAEAAAABAAAAa/MAAAAAAABgVwAAAAAAAAEAAAAB +AAAAa/MAAAAAAABoVwAAAAAAAAEAAAABAAAAa/MAAAAAAABwVwAAAAAAAAEAAAABAAAA +a/MAAAAAAAB4VwAAAAAAAAEAAAABAAAAi/IAAAAAAACAVwAAAAAAAAEAAAABAAAAa/MA +AAAAAACIVwAAAAAAAAEAAAABAAAAa/MAAAAAAACQVwAAAAAAAAEAAAABAAAAa/MAAAAA +AACYVwAAAAAAAAEAAAABAAAAa/MAAAAAAACgVwAAAAAAAAEAAAABAAAAoPIAAAAAAACo +VwAAAAAAAAEAAAABAAAAa/MAAAAAAACwVwAAAAAAAAEAAAABAAAAa/MAAAAAAAC4VwAA +AAAAAAEAAAABAAAAs/IAAAAAAADAVwAAAAAAAAEAAAABAAAASfMAAAAAAADIVwAAAAAA +AAEAAAABAAAAa/MAAAAAAADQVwAAAAAAAAEAAAABAAAAa/MAAAAAAADYVwAAAAAAAAEA +AAABAAAAa/MAAAAAAADgVwAAAAAAAAEAAAABAAAAa/MAAAAAAADoVwAAAAAAAAEAAAAB +AAAAa/MAAAAAAADwVwAAAAAAAAEAAAABAAAA1fIAAAAAAAD4VwAAAAAAAAEAAAABAAAA +1fIAAAAAAAAAWAAAAAAAAAEAAAABAAAAa/MAAAAAAAAIWAAAAAAAAAEAAAABAAAALfMA +AAAAAACwYwAAAAAAAAEAAAABAAAAqEYBAAAAAAC4YwAAAAAAAAEAAAABAAAANkIBAAAA +AADAYwAAAAAAAAEAAAABAAAADUMBAAAAAADIYwAAAAAAAAEAAAABAAAAoUQBAAAAAADQ +YwAAAAAAAAEAAAABAAAA/0QBAAAAAADYYwAAAAAAAAEAAAABAAAAdkUBAAAAAADgYwAA +AAAAAAEAAAABAAAAEUYBAAAAAAAocQAAAAAAAAEAAAABAAAAxloBAAAAAAAwcQAAAAAA +AAEAAAABAAAAyloBAAAAAAA4cQAAAAAAAAEAAAABAAAAz1oBAAAAAABAcQAAAAAAAAEA +AAABAAAA1FoBAAAAAABIcQAAAAAAAAEAAAABAAAA5loBAAAAAABQcQAAAAAAAAEAAAAB +AAAA5loBAAAAAABYcQAAAAAAAAEAAAABAAAA2VoBAAAAAABgcQAAAAAAAAEAAAABAAAA +3loBAAAAAADYfQAAAAAAAAEAAAABAAAAZ2wBAAAAAADgfQAAAAAAAAEAAAABAAAATGwB +AAAAAADofQAAAAAAAAEAAAABAAAAUGwBAAAAAADwfQAAAAAAAAEAAAABAAAAVWwBAAAA +AAD4fQAAAAAAAAEAAAABAAAAZ2wBAAAAAAAAfgAAAAAAAAEAAAABAAAAZ2wBAAAAAAAI +fgAAAAAAAAEAAAABAAAAWmwBAAAAAAAQfgAAAAAAAAEAAAABAAAAX2wBAAAAAABIigAA +AAAAAAEAAAABAAAAhYgBAAAAAABQigAAAAAAAAEAAAABAAAAbYgBAAAAAABYigAAAAAA +AAEAAAABAAAAcYgBAAAAAABgigAAAAAAAAEAAAABAAAAdogBAAAAAABoigAAAAAAAAEA +AAABAAAAhYgBAAAAAABwigAAAAAAAAEAAAABAAAAhYgBAAAAAAB4igAAAAAAAAEAAAAB +AAAAe4gBAAAAAACAigAAAAAAAAEAAAABAAAAgIgBAAAAAAComAAAAAAAAAEAAAABAAAA +nZwBAAAAAACwmAAAAAAAAAEAAAABAAAAgpwBAAAAAAC4mAAAAAAAAAEAAAABAAAAhpwB +AAAAAADAmAAAAAAAAAEAAAABAAAAi5wBAAAAAADImAAAAAAAAAEAAAABAAAAnZwBAAAA +AADQmAAAAAAAAAEAAAABAAAAnZwBAAAAAADYmAAAAAAAAAEAAAABAAAAkJwBAAAAAADg +mAAAAAAAAAEAAAABAAAAlZwBAAAAAAAgAAAAAAAAAAEAAAADAAAAAAAAAAAAAAAoAAAA +AAAAAAEAAAADAAAABwAAAAAAAAAwAAAAAAAAAAEAAAADAAAADgAAAAAAAAA4AAAAAAAA +AAEAAAADAAAAFQAAAAAAAABAAAAAAAAAAAEAAAADAAAAHAAAAAAAAABIAAAAAAAAAAEA +AAADAAAAIwAAAAAAAABQAAAAAAAAAAEAAAADAAAAKgAAAAAAAAAoCgAAAAAAAAEAAAAD +AAAA2QAAAAAAAAAwCgAAAAAAAAEAAAADAAAA3AAAAAAAAABQCgAAAAAAAAEAAAADAAAA +4gAAAAAAAABYCgAAAAAAAAEAAAADAAAA5QAAAAAAAAB4CgAAAAAAAAEAAAADAAAA9AAA +AAAAAACACgAAAAAAAAEAAAADAAAA9wAAAAAAAACgCgAAAAAAAAEAAAADAAAA/wAAAAAA +AACoCgAAAAAAAAEAAAADAAAAAgEAAAAAAADICgAAAAAAAAEAAAADAAAACgEAAAAAAADQ +CgAAAAAAAAEAAAADAAAADQEAAAAAAADwCgAAAAAAAAEAAAADAAAAFwEAAAAAAAD4CgAA +AAAAAAEAAAADAAAAGgEAAAAAAAAYCwAAAAAAAAEAAAADAAAAIgEAAAAAAAAgCwAAAAAA +AAEAAAADAAAAJQEAAAAAAABACwAAAAAAAAEAAAADAAAALwEAAAAAAABICwAAAAAAAAEA +AAADAAAAMgEAAAAAAABoCwAAAAAAAAEAAAADAAAAOgEAAAAAAABwCwAAAAAAAAEAAAAD +AAAAPQEAAAAAAACQCwAAAAAAAAEAAAADAAAASAEAAAAAAACYCwAAAAAAAAEAAAADAAAA +SwEAAAAAAAC4CwAAAAAAAAEAAAADAAAAUwEAAAAAAADACwAAAAAAAAEAAAADAAAAVgEA +AAAAAADgCwAAAAAAAAEAAAADAAAAXgEAAAAAAADoCwAAAAAAAAEAAAADAAAAYQEAAAAA +AAAIDAAAAAAAAAEAAAADAAAAaQEAAAAAAAAQDAAAAAAAAAEAAAADAAAAbAEAAAAAAAAw +DAAAAAAAAAEAAAADAAAAcwEAAAAAAAA4DAAAAAAAAAEAAAADAAAAdgEAAAAAAABYDAAA +AAAAAAEAAAADAAAAfQEAAAAAAABgDAAAAAAAAAEAAAADAAAAgAEAAAAAAACADAAAAAAA +AAEAAAADAAAAhwEAAAAAAACIDAAAAAAAAAEAAAADAAAAigEAAAAAAACoDAAAAAAAAAEA +AAADAAAAnAEAAAAAAACwDAAAAAAAAAEAAAADAAAAnwEAAAAAAADQDAAAAAAAAAEAAAAD +AAAAqAEAAAAAAADYDAAAAAAAAAEAAAADAAAAqwEAAAAAAAD4DAAAAAAAAAEAAAADAAAA +sgEAAAAAAAAADQAAAAAAAAEAAAADAAAAtQEAAAAAAAAgDQAAAAAAAAEAAAADAAAAuwEA +AAAAAAAoDQAAAAAAAAEAAAADAAAAvgEAAAAAAABIDQAAAAAAAAEAAAADAAAAxAEAAAAA +AABQDQAAAAAAAAEAAAADAAAAxwEAAAAAAABwDQAAAAAAAAEAAAADAAAA0AEAAAAAAAB4 +DQAAAAAAAAEAAAADAAAA0wEAAAAAAACYDQAAAAAAAAEAAAADAAAA3gEAAAAAAACgDQAA +AAAAAAEAAAADAAAA4QEAAAAAAADADQAAAAAAAAEAAAADAAAA6QEAAAAAAADIDQAAAAAA +AAEAAAADAAAA7AEAAAAAAADoDQAAAAAAAAEAAAADAAAA8wEAAAAAAADwDQAAAAAAAAEA +AAADAAAA9gEAAAAAAAAQDgAAAAAAAAEAAAADAAAABQIAAAAAAAAYDgAAAAAAAAEAAAAD +AAAACAIAAAAAAAA4DgAAAAAAAAEAAAADAAAAEAIAAAAAAABADgAAAAAAAAEAAAADAAAA +EwIAAAAAAABgDgAAAAAAAAEAAAADAAAAJgIAAAAAAABoDgAAAAAAAAEAAAADAAAAKQIA +AAAAAACIDgAAAAAAAAEAAAADAAAAMQIAAAAAAACQDgAAAAAAAAEAAAADAAAANAIAAAAA +AACwDgAAAAAAAAEAAAADAAAAOgIAAAAAAAC4DgAAAAAAAAEAAAADAAAAPQIAAAAAAADY +DgAAAAAAAAEAAAADAAAASQIAAAAAAADgDgAAAAAAAAEAAAADAAAATAIAAAAAAAAADwAA +AAAAAAEAAAADAAAAVAIAAAAAAAAIDwAAAAAAAAEAAAADAAAAVwIAAAAAAAAoDwAAAAAA +AAEAAAADAAAAXwIAAAAAAAAwDwAAAAAAAAEAAAADAAAAYgIAAAAAAABQDwAAAAAAAAEA +AAADAAAAaQIAAAAAAABYDwAAAAAAAAEAAAADAAAAbAIAAAAAAAB4DwAAAAAAAAEAAAAD +AAAAdwIAAAAAAACADwAAAAAAAAEAAAADAAAAegIAAAAAAACgDwAAAAAAAAEAAAADAAAA +ggIAAAAAAACoDwAAAAAAAAEAAAADAAAAhQIAAAAAAADIDwAAAAAAAAEAAAADAAAAjQIA +AAAAAADQDwAAAAAAAAEAAAADAAAAkAIAAAAAAADwDwAAAAAAAAEAAAADAAAAlwIAAAAA +AAD4DwAAAAAAAAEAAAADAAAAmgIAAAAAAAAYEAAAAAAAAAEAAAADAAAApAIAAAAAAAAg +EAAAAAAAAAEAAAADAAAApwIAAAAAAABAEAAAAAAAAAEAAAADAAAAsAIAAAAAAABIEAAA +AAAAAAEAAAADAAAAswIAAAAAAABoEAAAAAAAAAEAAAADAAAAvQIAAAAAAABwEAAAAAAA +AAEAAAADAAAAwAIAAAAAAACQEAAAAAAAAAEAAAADAAAAyAIAAAAAAACYEAAAAAAAAAEA +AAADAAAAywIAAAAAAAC4EAAAAAAAAAEAAAADAAAA0wIAAAAAAADAEAAAAAAAAAEAAAAD +AAAA1gIAAAAAAADgEAAAAAAAAAEAAAADAAAA3AIAAAAAAADoEAAAAAAAAAEAAAADAAAA +3wIAAAAAAAAIEQAAAAAAAAEAAAADAAAA6QIAAAAAAAAQEQAAAAAAAAEAAAADAAAA7AIA +AAAAAAAwEQAAAAAAAAEAAAADAAAA8QIAAAAAAAA4EQAAAAAAAAEAAAADAAAA9AIAAAAA +AABYEQAAAAAAAAEAAAADAAAA/AIAAAAAAABgEQAAAAAAAAEAAAADAAAA/wIAAAAAAACA +EQAAAAAAAAEAAAADAAAABgMAAAAAAACIEQAAAAAAAAEAAAADAAAACQMAAAAAAACoEQAA +AAAAAAEAAAADAAAADwMAAAAAAACwEQAAAAAAAAEAAAADAAAAEgMAAAAAAADQEQAAAAAA +AAEAAAADAAAADwMAAAAAAADYEQAAAAAAAAEAAAADAAAAGAMAAAAAAAD4EQAAAAAAAAEA +AAADAAAADwMAAAAAAAAAEgAAAAAAAAEAAAADAAAAHwMAAAAAAAAgEgAAAAAAAAEAAAAD +AAAADwMAAAAAAAAoEgAAAAAAAAEAAAADAAAAJgMAAAAAAABIEgAAAAAAAAEAAAADAAAA +DwMAAAAAAABQEgAAAAAAAAEAAAADAAAALQMAAAAAAABwEgAAAAAAAAEAAAADAAAADwMA +AAAAAAB4EgAAAAAAAAEAAAADAAAANAMAAAAAAACYEgAAAAAAAAEAAAADAAAADwMAAAAA +AACgEgAAAAAAAAEAAAADAAAAOwMAAAAAAADAEgAAAAAAAAEAAAADAAAADwMAAAAAAADI +EgAAAAAAAAEAAAADAAAAQgMAAAAAAADoEgAAAAAAAAEAAAADAAAADwMAAAAAAADwEgAA +AAAAAAEAAAADAAAASQMAAAAAAAAQEwAAAAAAAAEAAAADAAAADwMAAAAAAAAYEwAAAAAA +AAEAAAADAAAAUAMAAAAAAAA4EwAAAAAAAAEAAAADAAAADwMAAAAAAABAEwAAAAAAAAEA +AAADAAAAVwMAAAAAAABgEwAAAAAAAAEAAAADAAAADwMAAAAAAABoEwAAAAAAAAEAAAAD +AAAAXwMAAAAAAACIEwAAAAAAAAEAAAADAAAADwMAAAAAAACQEwAAAAAAAAEAAAADAAAA +ZwMAAAAAAACwEwAAAAAAAAEAAAADAAAADwMAAAAAAAC4EwAAAAAAAAEAAAADAAAAbwMA +AAAAAADYEwAAAAAAAAEAAAADAAAADwMAAAAAAADgEwAAAAAAAAEAAAADAAAAdwMAAAAA +AAAAFAAAAAAAAAEAAAADAAAADwMAAAAAAAAIFAAAAAAAAAEAAAADAAAAfwMAAAAAAAAo +FAAAAAAAAAEAAAADAAAADwMAAAAAAAAwFAAAAAAAAAEAAAADAAAAhwMAAAAAAABQFAAA +AAAAAAEAAAADAAAADwMAAAAAAABYFAAAAAAAAAEAAAADAAAAjwMAAAAAAAB4FAAAAAAA +AAEAAAADAAAADwMAAAAAAACAFAAAAAAAAAEAAAADAAAAlwMAAAAAAACgFAAAAAAAAAEA +AAADAAAADwMAAAAAAACoFAAAAAAAAAEAAAADAAAAnwMAAAAAAADIFAAAAAAAAAEAAAAD +AAAADwMAAAAAAADQFAAAAAAAAAEAAAADAAAApwMAAAAAAADwFAAAAAAAAAEAAAADAAAA +DwMAAAAAAAD4FAAAAAAAAAEAAAADAAAArwMAAAAAAAAYFQAAAAAAAAEAAAADAAAADwMA +AAAAAAAgFQAAAAAAAAEAAAADAAAAtwMAAAAAAABAFQAAAAAAAAEAAAADAAAADwMAAAAA +AABIFQAAAAAAAAEAAAADAAAAvwMAAAAAAABoFQAAAAAAAAEAAAADAAAADwMAAAAAAABw +FQAAAAAAAAEAAAADAAAAxwMAAAAAAACQFQAAAAAAAAEAAAADAAAAzwMAAAAAAACYFQAA +AAAAAAEAAAADAAAA0gMAAAAAAAC4FQAAAAAAAAEAAAADAAAA2QMAAAAAAADAFQAAAAAA +AAEAAAADAAAA3AMAAAAAAADgFQAAAAAAAAEAAAADAAAA5wMAAAAAAADoFQAAAAAAAAEA +AAADAAAA6gMAAAAAAAAIFgAAAAAAAAEAAAADAAAA9gMAAAAAAAAQFgAAAAAAAAEAAAAD +AAAA+QMAAAAAAAAwFgAAAAAAAAEAAAADAAAACAQAAAAAAAA4FgAAAAAAAAEAAAADAAAA +CwQAAAAAAABYFgAAAAAAAAEAAAADAAAAGwQAAAAAAABgFgAAAAAAAAEAAAADAAAAHgQA +AAAAAACAFgAAAAAAAAEAAAADAAAALgQAAAAAAACIFgAAAAAAAAEAAAADAAAAMQQAAAAA +AACoFgAAAAAAAAEAAAADAAAAOAQAAAAAAACwFgAAAAAAAAEAAAADAAAAOwQAAAAAAADQ +FgAAAAAAAAEAAAADAAAAQgQAAAAAAADYFgAAAAAAAAEAAAADAAAARQQAAAAAAAD4FgAA +AAAAAAEAAAADAAAATQQAAAAAAAAAFwAAAAAAAAEAAAADAAAAUAQAAAAAAAAgFwAAAAAA +AAEAAAADAAAAXgQAAAAAAAAoFwAAAAAAAAEAAAADAAAAYQQAAAAAAABIFwAAAAAAAAEA +AAADAAAAawQAAAAAAABQFwAAAAAAAAEAAAADAAAAbgQAAAAAAABwFwAAAAAAAAEAAAAD +AAAAeQQAAAAAAAB4FwAAAAAAAAEAAAADAAAAfAQAAAAAAACYFwAAAAAAAAEAAAADAAAA +ggQAAAAAAACgFwAAAAAAAAEAAAADAAAAhQQAAAAAAADAFwAAAAAAAAEAAAADAAAAjwQA +AAAAAADIFwAAAAAAAAEAAAADAAAAkgQAAAAAAADoFwAAAAAAAAEAAAADAAAAmwQAAAAA +AADwFwAAAAAAAAEAAAADAAAAngQAAAAAAAAQGAAAAAAAAAEAAAADAAAApAQAAAAAAAAY +GAAAAAAAAAEAAAADAAAApwQAAAAAAAA4GAAAAAAAAAEAAAADAAAArgQAAAAAAABAGAAA +AAAAAAEAAAADAAAAsQQAAAAAAABgGAAAAAAAAAEAAAADAAAAuAQAAAAAAABoGAAAAAAA +AAEAAAADAAAAuwQAAAAAAACIGAAAAAAAAAEAAAADAAAAwwQAAAAAAACQGAAAAAAAAAEA +AAADAAAAxgQAAAAAAACwGAAAAAAAAAEAAAADAAAA0gQAAAAAAAC4GAAAAAAAAAEAAAAD +AAAA1QQAAAAAAADYGAAAAAAAAAEAAAADAAAA4QQAAAAAAADgGAAAAAAAAAEAAAADAAAA +5AQAAAAAAAAAGQAAAAAAAAEAAAADAAAA6wQAAAAAAAAIGQAAAAAAAAEAAAADAAAA7gQA +AAAAAAAoGQAAAAAAAAEAAAADAAAA8wQAAAAAAAAwGQAAAAAAAAEAAAADAAAA9gQAAAAA +AABQGQAAAAAAAAEAAAADAAAA/wQAAAAAAABYGQAAAAAAAAEAAAADAAAAAgUAAAAAAAB4 +GQAAAAAAAAEAAAADAAAACQUAAAAAAACAGQAAAAAAAAEAAAADAAAADAUAAAAAAACgGQAA +AAAAAAEAAAADAAAAEQUAAAAAAACoGQAAAAAAAAEAAAADAAAAFAUAAAAAAADIGQAAAAAA +AAEAAAADAAAAIAUAAAAAAADQGQAAAAAAAAEAAAADAAAAIwUAAAAAAADwGQAAAAAAAAEA +AAADAAAAKgUAAAAAAAD4GQAAAAAAAAEAAAADAAAALQUAAAAAAAAYGgAAAAAAAAEAAAAD +AAAANgUAAAAAAAAgGgAAAAAAAAEAAAADAAAAOQUAAAAAAABAGgAAAAAAAAEAAAADAAAA +RQUAAAAAAABIGgAAAAAAAAEAAAADAAAASAUAAAAAAABoGgAAAAAAAAEAAAADAAAATgUA +AAAAAABwGgAAAAAAAAEAAAADAAAAUQUAAAAAAACQGgAAAAAAAAEAAAADAAAAWQUAAAAA +AACYGgAAAAAAAAEAAAADAAAAXAUAAAAAAAC4GgAAAAAAAAEAAAADAAAAYwUAAAAAAADA +GgAAAAAAAAEAAAADAAAAZgUAAAAAAADgGgAAAAAAAAEAAAADAAAAcwUAAAAAAADoGgAA +AAAAAAEAAAADAAAAdgUAAAAAAAAIGwAAAAAAAAEAAAADAAAAgAUAAAAAAAAQGwAAAAAA +AAEAAAADAAAAgwUAAAAAAAAwGwAAAAAAAAEAAAADAAAAkwUAAAAAAAA4GwAAAAAAAAEA +AAADAAAAlgUAAAAAAABYGwAAAAAAAAEAAAADAAAAnwUAAAAAAABgGwAAAAAAAAEAAAAD +AAAAogUAAAAAAACAGwAAAAAAAAEAAAADAAAArwUAAAAAAACIGwAAAAAAAAEAAAADAAAA +sgUAAAAAAACoGwAAAAAAAAEAAAADAAAAuAUAAAAAAACwGwAAAAAAAAEAAAADAAAAuwUA +AAAAAADQGwAAAAAAAAEAAAADAAAAwgUAAAAAAADYGwAAAAAAAAEAAAADAAAAxQUAAAAA +AAD4GwAAAAAAAAEAAAADAAAA0QUAAAAAAAAAHAAAAAAAAAEAAAADAAAA1AUAAAAAAAAg +HAAAAAAAAAEAAAADAAAA2gUAAAAAAAAoHAAAAAAAAAEAAAADAAAA3QUAAAAAAABIHAAA +AAAAAAEAAAADAAAA5AUAAAAAAABQHAAAAAAAAAEAAAADAAAA5wUAAAAAAABwHAAAAAAA +AAEAAAADAAAA8AUAAAAAAAB4HAAAAAAAAAEAAAADAAAA8wUAAAAAAACYHAAAAAAAAAEA +AAADAAAABQYAAAAAAACgHAAAAAAAAAEAAAADAAAACAYAAAAAAADAHAAAAAAAAAEAAAAD +AAAAEAYAAAAAAADIHAAAAAAAAAEAAAADAAAAEwYAAAAAAADoHAAAAAAAAAEAAAADAAAA +GgYAAAAAAADwHAAAAAAAAAEAAAADAAAAHQYAAAAAAAAQHQAAAAAAAAEAAAADAAAAJQYA +AAAAAAAYHQAAAAAAAAEAAAADAAAAKAYAAAAAAAA4HQAAAAAAAAEAAAADAAAAPQYAAAAA +AABAHQAAAAAAAAEAAAADAAAAQAYAAAAAAABgHQAAAAAAAAEAAAADAAAATwYAAAAAAABo +HQAAAAAAAAEAAAADAAAAUgYAAAAAAACIHQAAAAAAAAEAAAADAAAAYAYAAAAAAACQHQAA +AAAAAAEAAAADAAAAYwYAAAAAAACwHQAAAAAAAAEAAAADAAAAgQYAAAAAAAC4HQAAAAAA +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 +AAEAAAABAAAAkGQAAAAAAAAQEwAAAAAAAAEAAAABAAAAm2QAAAAAAAAoEwAAAAAAAAEA +AAABAAAAt2QAAAAAAABAEwAAAAAAAAEAAAABAAAA8mQAAAAAAABwEwAAAAAAAAEAAAAB +AAAAFGYAAAAAAACwEwAAAAAAAAEAAAABAAAACmwAAAAAAADIEwAAAAAAAAEAAAABAAAA +fmwAAAAAAADoEwAAAAAAAAEAAAABAAAAkmwAAAAAAAAIFAAAAAAAAAEAAAABAAAAqmwA +AAAAAAAoFAAAAAAAAAEAAAABAAAAEG0AAAAAAABIFAAAAAAAAAEAAAABAAAA6m0AAAAA +AACIFAAAAAAAAAEAAAABAAAADXAAAAAAAACwFAAAAAAAAAEAAAABAAAAgXAAAAAAAADI +FAAAAAAAAAEAAAABAAAALnEAAAAAAADoFAAAAAAAAAEAAAABAAAAE3IAAAAAAAAAFQAA +AAAAAAEAAAABAAAAK3IAAAAAAABAFQAAAAAAAAEAAAABAAAAE3UAAAAAAABwFQAAAAAA +AAEAAAABAAAA3XcAAAAAAACQFQAAAAAAAAEAAAABAAAAUXgAAAAAAACoFQAAAAAAAAEA +AAABAAAAbXgAAAAAAADQFQAAAAAAAAEAAAABAAAA83gAAAAAAADoFQAAAAAAAAEAAAAB +AAAA+XgAAAAAAAAYFgAAAAAAAAEAAAABAAAAAHkAAAAAAAA4FgAAAAAAAAEAAAABAAAA +LXkAAAAAAABYFgAAAAAAAAEAAAABAAAAYHkAAAAAAACAFgAAAAAAAAEAAAABAAAAPXoA +AAAAAACYFgAAAAAAAAEAAAABAAAAm3oAAAAAAACwFgAAAAAAAAEAAAABAAAA+3wAAAAA +AADIFgAAAAAAAAEAAAABAAAAJH0AAAAAAADgFgAAAAAAAAEAAAABAAAAZX0AAAAAAAAI +FwAAAAAAAAEAAAABAAAA930AAAAAAAAgFwAAAAAAAAEAAAABAAAAXn4AAAAAAAA4FwAA +AAAAAAEAAAABAAAAkH4AAAAAAABgFwAAAAAAAAEAAAABAAAAKH8AAAAAAAB4FwAAAAAA +AAEAAAABAAAA138AAAAAAACQFwAAAAAAAAEAAAABAAAA3X8AAAAAAACoFwAAAAAAAAEA +AAABAAAA5X8AAAAAAADAFwAAAAAAAAEAAAABAAAAL4AAAAAAAADYFwAAAAAAAAEAAAAB +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 +AAAAAADQLwAAAAAAAAEAAAABAAAAo+cAAAAAAADoLwAAAAAAAAEAAAABAAAA2OcAAAAA +AAAAMAAAAAAAAAEAAAABAAAADegAAAAAAAAYMAAAAAAAAAEAAAABAAAATugAAAAAAAAw +MAAAAAAAAAEAAAABAAAAVOgAAAAAAABIMAAAAAAAAAEAAAABAAAAZOgAAAAAAABgMAAA +AAAAAAEAAAABAAAAcugAAAAAAAB4MAAAAAAAAAEAAAABAAAAgOgAAAAAAACQMAAAAAAA +AAEAAAABAAAAh+gAAAAAAACwMAAAAAAAAAEAAAABAAAArugAAAAAAADIMAAAAAAAAAEA +AAABAAAAtOgAAAAAAADwMAAAAAAAAAEAAAABAAAAJukAAAAAAAAQMQAAAAAAAAEAAAAB +AAAAROkAAAAAAAA4MQAAAAAAAAEAAAABAAAA2+kAAAAAAABYMQAAAAAAAAEAAAABAAAA ++ekAAAAAAABwMQAAAAAAAAEAAAABAAAAB+oAAAAAAACIMQAAAAAAAAEAAAABAAAAUeoA +AAAAAACwMQAAAAAAAAEAAAABAAAA6+oAAAAAAADQMQAAAAAAAAEAAAABAAAADOsAAAAA +AADoMQAAAAAAAAEAAAABAAAASesAAAAAAAAIMgAAAAAAAAEAAAABAAAAcOwAAAAAAAAo +MgAAAAAAAAEAAAABAAAAhOwAAAAAAABAMgAAAAAAAAEAAAABAAAApuwAAAAAAABgMgAA +AAAAAAEAAAABAAAAxO4AAAAAAACAMgAAAAAAAAEAAAABAAAAr+8AAAAAAACYMgAAAAAA +AAEAAAABAAAA4O8AAAAAAAC4MgAAAAAAAAEAAAABAAAAH/IAAAAAAADYMgAAAAAAAAEA +AAABAAAAdfMAAAAAAAAQMwAAAAAAAAEAAAABAAAAjPMAAAAAAAA4MwAAAAAAAAEAAAAB +AAAAH/QAAAAAAABQMwAAAAAAAAEAAAABAAAAU/QAAAAAAABoMwAAAAAAAAEAAAABAAAA +h/QAAAAAAACQMwAAAAAAAAEAAAABAAAA9vQAAAAAAADAMwAAAAAAAAEAAAABAAAADPUA +AAAAAAD4MwAAAAAAAAEAAAABAAAA6PUAAAAAAAAQNAAAAAAAAAEAAAABAAAA8PUAAAAA +AAAoNAAAAAAAAAEAAAABAAAA+PUAAAAAAABANAAAAAAAAAEAAAABAAAABPYAAAAAAABg +NAAAAAAAAAEAAAABAAAANPYAAAAAAACANAAAAAAAAAEAAAABAAAAa/YAAAAAAACgNAAA +AAAAAAEAAAABAAAAjPYAAAAAAAC4NAAAAAAAAAEAAAABAAAAofYAAAAAAADQNAAAAAAA +AAEAAAABAAAA8/YAAAAAAADoNAAAAAAAAAEAAAABAAAARfcAAAAAAAAANQAAAAAAAAEA +AAABAAAAb/cAAAAAAAAYNQAAAAAAAAEAAAABAAAAyfcAAAAAAAAwNQAAAAAAAAEAAAAB +AAAA+fcAAAAAAAB4NQAAAAAAAAEAAAABAAAAKPkAAAAAAAC4NQAAAAAAAAEAAAABAAAA +mgYBAAAAAADQNQAAAAAAAAEAAAABAAAA+gYBAAAAAADwNQAAAAAAAAEAAAABAAAAHwcB +AAAAAAAwNgAAAAAAAAEAAAABAAAA2QgBAAAAAABINgAAAAAAAAEAAAABAAAATAkBAAAA +AABoNgAAAAAAAAEAAAABAAAAXwkBAAAAAACINgAAAAAAAAEAAAABAAAAjgkBAAAAAACw +NgAAAAAAAAEAAAABAAAA3gsBAAAAAADoNgAAAAAAAAEAAAABAAAAeA4BAAAAAAAQNwAA +AAAAAAEAAAABAAAANA8BAAAAAAAoNwAAAAAAAAEAAAABAAAAUA8BAAAAAABANwAAAAAA +AAEAAAABAAAAnw8BAAAAAABoNwAAAAAAAAEAAAABAAAAGBABAAAAAACINwAAAAAAAAEA +AAABAAAAqBABAAAAAAC4NwAAAAAAAAEAAAABAAAAUxEBAAAAAADQNwAAAAAAAAEAAAAB +AAAAiRIBAAAAAADwNwAAAAAAAAEAAAABAAAABhMBAAAAAAAwOAAAAAAAAAEAAAABAAAA +VhcBAAAAAABwOAAAAAAAAAEAAAABAAAAJB0BAAAAAACIOAAAAAAAAAEAAAABAAAA6h0B +AAAAAACoOAAAAAAAAAEAAAABAAAAFh4BAAAAAADYOAAAAAAAAAEAAAABAAAASyEBAAAA +AAAYOQAAAAAAAAEAAAABAAAAvSYBAAAAAABYOQAAAAAAAAEAAAABAAAAqycBAAAAAACI +OQAAAAAAAAEAAAABAAAA0igBAAAAAAC4OQAAAAAAAAEAAAABAAAAeCkBAAAAAADYOQAA +AAAAAAEAAAABAAAA/ykBAAAAAAAYOgAAAAAAAAEAAAABAAAAVysBAAAAAAAwOgAAAAAA +AAEAAAABAAAAzysBAAAAAABIOgAAAAAAAAEAAAABAAAATiwBAAAAAABoOgAAAAAAAAEA +AAABAAAAQC0BAAAAAACAOgAAAAAAAAEAAAABAAAAbS0BAAAAAACoOgAAAAAAAAEAAAAB +AAAAkC4BAAAAAADAOgAAAAAAAAEAAAABAAAAqC4BAAAAAADYOgAAAAAAAAEAAAABAAAA +oy8BAAAAAAAAOwAAAAAAAAEAAAABAAAAWzABAAAAAAAwOwAAAAAAAAEAAAABAAAAFDEB +AAAAAABwOwAAAAAAAAEAAAABAAAAgDIBAAAAAACgOwAAAAAAAAEAAAABAAAAIDMBAAAA +AADIOwAAAAAAAAEAAAABAAAAzTMBAAAAAADoOwAAAAAAAAEAAAABAAAABDQBAAAAAAAI +PAAAAAAAAAEAAAABAAAAQTQBAAAAAABIPAAAAAAAAAEAAAABAAAAlTUBAAAAAABgPAAA +AAAAAAEAAAABAAAABTYBAAAAAACAPAAAAAAAAAEAAAABAAAAfjYBAAAAAACgPAAAAAAA +AAEAAAABAAAAVToBAAAAAAC4PAAAAAAAAAEAAAABAAAAZDoBAAAAAADQPAAAAAAAAAEA +AAABAAAAeDoBAAAAAADoPAAAAAAAAAEAAAABAAAAkToBAAAAAAAAPQAAAAAAAAEAAAAB +AAAAwjoBAAAAAAAwPQAAAAAAAAEAAAABAAAAMDwBAAAAAABIPQAAAAAAAAEAAAABAAAA +aT0BAAAAAABgPQAAAAAAAAEAAAABAAAA0D0BAAAAAAB4PQAAAAAAAAEAAAABAAAA2D0B +AAAAAACQPQAAAAAAAAEAAAABAAAAQT4BAAAAAACoPQAAAAAAAAEAAAABAAAAfD8BAAAA +AADYPQAAAAAAAAEAAAABAAAAkD8BAAAAAAD4PQAAAAAAAAEAAAABAAAA5T8BAAAAAAAY +PgAAAAAAAAEAAAABAAAAHkABAAAAAAAwPgAAAAAAAAEAAAABAAAAfkABAAAAAABIPgAA +AAAAAAEAAAABAAAAhkABAAAAAABgPgAAAAAAAAEAAAABAAAAjkABAAAAAACIPgAAAAAA +AAEAAAABAAAAzkEBAAAAAACoPgAAAAAAAAEAAAABAAAA/kEBAAAAAADQPgAAAAAAAAEA +AAABAAAAwkYBAAAAAADwPgAAAAAAAAEAAAABAAAAaUcBAAAAAAAQPwAAAAAAAAEAAAAB +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 ==== - diff --git a/usr/src/uts/common/io/dld/dld_drv.c b/usr/src/uts/common/io/dld/dld_drv.c index c37ab7651a..778a73528d 100644 --- a/usr/src/uts/common/io/dld/dld_drv.c +++ b/usr/src/uts/common/io/dld/dld_drv.c @@ -55,6 +55,19 @@ static int drv_attach(dev_info_t *, ddi_attach_cmd_t); static int drv_detach(dev_info_t *, ddi_detach_cmd_t); /* + * Secure objects declarations + */ +#define SECOBJ_WEP_HASHSZ 67 +static krwlock_t drv_secobj_lock; +static kmem_cache_t *drv_secobj_cachep; +static mod_hash_t *drv_secobj_hash; +static void drv_secobj_init(void); +static void drv_secobj_fini(void); +static void drv_ioc_secobj_set(dld_ctl_str_t *, mblk_t *); +static void drv_ioc_secobj_get(dld_ctl_str_t *, mblk_t *); +static void drv_ioc_secobj_unset(dld_ctl_str_t *, mblk_t *); + +/* * The following entry points are private to dld and are used for control * operations only. The entry points exported to mac drivers are defined * in dld_str.c. Refer to the comment on top of dld_str.c for details. @@ -161,7 +174,6 @@ _info(struct modinfo *modinfop) return (mod_info(&drv_modlinkage, modinfop)); } - /* * Initialize component modules. */ @@ -170,6 +182,7 @@ drv_init(void) { dld_ctl_vmem = vmem_create("dld_ctl", (void *)1, MAXMIN, 1, NULL, NULL, NULL, 1, VM_SLEEP | VMC_IDENTIFIER); + drv_secobj_init(); dld_str_init(); } @@ -181,6 +194,7 @@ drv_fini(void) if ((err = dld_str_fini()) != 0) return (err); + drv_secobj_fini(); vmem_destroy(dld_ctl_vmem); return (0); } @@ -489,6 +503,15 @@ drv_ioc(dld_ctl_str_t *ctls, mblk_t *mp) case DLDIOCVLAN: drv_ioc_vlan(ctls, mp); return; + case DLDIOCSECOBJSET: + drv_ioc_secobj_set(ctls, mp); + return; + case DLDIOCSECOBJGET: + drv_ioc_secobj_get(ctls, mp); + return; + case DLDIOCSECOBJUNSET: + drv_ioc_secobj_unset(ctls, mp); + return; default: miocnak(ctls->cs_wq, mp, 0, ENOTSUP); return; @@ -524,3 +547,222 @@ drv_uw_srv(queue_t *q) while (mp = getq(q)) drv_uw_put(q, mp); } + +/* + * Secure objects implementation + */ + +/* ARGSUSED */ +static int +drv_secobj_ctor(void *buf, void *arg, int kmflag) +{ + bzero(buf, sizeof (dld_secobj_t)); + return (0); +} + +static void +drv_secobj_init(void) +{ + rw_init(&drv_secobj_lock, NULL, RW_DEFAULT, NULL); + drv_secobj_cachep = kmem_cache_create("drv_secobj_cache", + sizeof (dld_secobj_t), 0, drv_secobj_ctor, NULL, + NULL, NULL, NULL, 0); + drv_secobj_hash = mod_hash_create_extended("drv_secobj_hash", + SECOBJ_WEP_HASHSZ, mod_hash_null_keydtor, mod_hash_null_valdtor, + mod_hash_bystr, NULL, mod_hash_strkey_cmp, KM_SLEEP); +} + +static void +drv_secobj_fini(void) +{ + mod_hash_destroy_hash(drv_secobj_hash); + kmem_cache_destroy(drv_secobj_cachep); + rw_destroy(&drv_secobj_lock); +} + +static void +drv_ioc_secobj_set(dld_ctl_str_t *ctls, mblk_t *mp) +{ + dld_ioc_secobj_set_t *ssp; + dld_secobj_t *sobjp, *objp; + int err = EINVAL; + queue_t *q = ctls->cs_wq; + + if ((err = miocpullup(mp, sizeof (dld_ioc_secobj_set_t))) != 0) + goto failed; + + ssp = (dld_ioc_secobj_set_t *)mp->b_cont->b_rptr; + sobjp = &ssp->ss_obj; + + if (sobjp->so_class != DLD_SECOBJ_CLASS_WEP) + goto failed; + + if (sobjp->so_name[DLD_SECOBJ_NAME_MAX - 1] != '\0' || + sobjp->so_len > DLD_SECOBJ_VAL_MAX) + goto failed; + + rw_enter(&drv_secobj_lock, RW_WRITER); + err = mod_hash_find(drv_secobj_hash, (mod_hash_key_t)sobjp->so_name, + (mod_hash_val_t *)&objp); + if (err == 0) { + if ((ssp->ss_flags & DLD_SECOBJ_OPT_CREATE) != 0) { + err = EEXIST; + rw_exit(&drv_secobj_lock); + goto failed; + } + } else { + ASSERT(err == MH_ERR_NOTFOUND); + if ((ssp->ss_flags & DLD_SECOBJ_OPT_CREATE) == 0) { + err = ENOENT; + rw_exit(&drv_secobj_lock); + goto failed; + } + objp = kmem_cache_alloc(drv_secobj_cachep, KM_SLEEP); + (void) strlcpy(objp->so_name, sobjp->so_name, + DLD_SECOBJ_NAME_MAX); + + err = mod_hash_insert(drv_secobj_hash, + (mod_hash_key_t)objp->so_name, (mod_hash_val_t)objp); + ASSERT(err == 0); + } + bcopy(sobjp->so_val, objp->so_val, sobjp->so_len); + objp->so_len = sobjp->so_len; + objp->so_class = sobjp->so_class; + rw_exit(&drv_secobj_lock); + miocack(q, mp, 0, 0); + return; + +failed: + ASSERT(err != 0); + miocnak(q, mp, 0, err); + +} + +typedef struct dld_secobj_state { + uint_t ss_free; + uint_t ss_count; + int ss_rc; + dld_secobj_t *ss_objp; +} dld_secobj_state_t; + +/* ARGSUSED */ +static uint_t +drv_secobj_walker(mod_hash_key_t key, mod_hash_val_t *val, void *arg) +{ + dld_secobj_state_t *statep = arg; + dld_secobj_t *sobjp = (dld_secobj_t *)val; + + if (statep->ss_free < sizeof (dld_secobj_t)) { + statep->ss_rc = ENOSPC; + return (MH_WALK_TERMINATE); + } + bcopy(sobjp, statep->ss_objp, sizeof (dld_secobj_t)); + statep->ss_objp++; + statep->ss_free -= sizeof (dld_secobj_t); + statep->ss_count++; + return (MH_WALK_CONTINUE); +} + +static void +drv_ioc_secobj_get(dld_ctl_str_t *ctls, mblk_t *mp) +{ + dld_ioc_secobj_get_t *sgp; + dld_secobj_t *sobjp, *objp; + int err = EINVAL; + uint_t extra = 0; + queue_t *q = ctls->cs_wq; + mblk_t *bp; + + if ((err = miocpullup(mp, sizeof (dld_ioc_secobj_get_t))) != 0) + goto failed; + + if ((bp = msgpullup(mp->b_cont, -1)) == NULL) + goto failed; + + freemsg(mp->b_cont); + mp->b_cont = bp; + sgp = (dld_ioc_secobj_get_t *)bp->b_rptr; + sobjp = &sgp->sg_obj; + + if (sobjp->so_name[DLD_SECOBJ_NAME_MAX - 1] != '\0') + goto failed; + + rw_enter(&drv_secobj_lock, RW_READER); + if (sobjp->so_name[0] != '\0') { + err = mod_hash_find(drv_secobj_hash, + (mod_hash_key_t)sobjp->so_name, (mod_hash_val_t *)&objp); + if (err != 0) { + ASSERT(err == MH_ERR_NOTFOUND); + err = ENOENT; + rw_exit(&drv_secobj_lock); + goto failed; + } + bcopy(objp->so_val, sobjp->so_val, objp->so_len); + sobjp->so_len = objp->so_len; + sobjp->so_class = objp->so_class; + sgp->sg_count = 1; + } else { + dld_secobj_state_t state; + + state.ss_free = MBLKL(bp) - sizeof (dld_ioc_secobj_get_t); + state.ss_count = 0; + state.ss_rc = 0; + state.ss_objp = (dld_secobj_t *)(sgp + 1); + mod_hash_walk(drv_secobj_hash, drv_secobj_walker, &state); + if (state.ss_rc != 0) { + err = state.ss_rc; + rw_exit(&drv_secobj_lock); + goto failed; + } + sgp->sg_count = state.ss_count; + extra = state.ss_count * sizeof (dld_secobj_t); + } + rw_exit(&drv_secobj_lock); + miocack(q, mp, sizeof (dld_ioc_secobj_get_t) + extra, 0); + return; + +failed: + ASSERT(err != 0); + miocnak(q, mp, 0, err); + +} + +static void +drv_ioc_secobj_unset(dld_ctl_str_t *ctls, mblk_t *mp) +{ + dld_ioc_secobj_unset_t *sup; + dld_secobj_t *objp; + mod_hash_val_t val; + int err = EINVAL; + queue_t *q = ctls->cs_wq; + + if ((err = miocpullup(mp, sizeof (dld_ioc_secobj_unset_t))) != 0) + goto failed; + + sup = (dld_ioc_secobj_unset_t *)mp->b_cont->b_rptr; + if (sup->su_name[DLD_SECOBJ_NAME_MAX - 1] != '\0') + goto failed; + + rw_enter(&drv_secobj_lock, RW_WRITER); + err = mod_hash_find(drv_secobj_hash, (mod_hash_key_t)sup->su_name, + (mod_hash_val_t *)&objp); + if (err != 0) { + ASSERT(err == MH_ERR_NOTFOUND); + err = ENOENT; + rw_exit(&drv_secobj_lock); + goto failed; + } + err = mod_hash_remove(drv_secobj_hash, (mod_hash_key_t)sup->su_name, + (mod_hash_val_t *)&val); + ASSERT(err == 0); + ASSERT(objp == (dld_secobj_t *)val); + + kmem_cache_free(drv_secobj_cachep, objp); + rw_exit(&drv_secobj_lock); + miocack(q, mp, 0, 0); + return; + +failed: + ASSERT(err != 0); + miocnak(q, mp, 0, err); +} diff --git a/usr/src/uts/common/io/dld/dld_proto.c b/usr/src/uts/common/io/dld/dld_proto.c index 88d1e46ef6..e4939245f7 100644 --- a/usr/src/uts/common/io/dld/dld_proto.c +++ b/usr/src/uts/common/io/dld/dld_proto.c @@ -274,7 +274,10 @@ proto_info_req(dld_str_t *dsp, union DL_primitives *udlp, mblk_t *mp) /* * Set the media type (properly this time). */ - dlp->dl_mac_type = minfop->mi_media; + if (dsp->ds_native) + dlp->dl_mac_type = minfop->mi_nativemedia; + else + dlp->dl_mac_type = minfop->mi_media; /* * Set the DLSAP length. We only support 16 bit values and they diff --git a/usr/src/uts/common/io/dld/dld_str.c b/usr/src/uts/common/io/dld/dld_str.c index 7b311cf7e6..9ebffec151 100644 --- a/usr/src/uts/common/io/dld/dld_str.c +++ b/usr/src/uts/common/io/dld/dld_str.c @@ -52,6 +52,7 @@ static void str_notify_capab_reneg(dld_str_t *); static void str_notify_speed(dld_str_t *, uint32_t); static void str_notify(void *, mac_notify_type_t); +static void ioc_native(dld_str_t *, mblk_t *); static void ioc_raw(dld_str_t *, mblk_t *); static void ioc_fast(dld_str_t *, mblk_t *); static void ioc(dld_str_t *, mblk_t *); @@ -688,6 +689,7 @@ dld_str_destroy(dld_str_t *dsp) dsp->ds_notifications = 0; dsp->ds_passivestate = DLD_UNINITIALIZED; dsp->ds_mode = DLD_UNITDATA; + dsp->ds_native = B_FALSE; /* * Free the dummy mblk if exists. @@ -945,16 +947,18 @@ str_mdata_raw_put(dld_str_t *dsp, mblk_t *mp) /* * Certain MAC type plugins provide an illusion for raw DLPI * consumers. They pretend that the MAC layer is something that - * it's not for the benefit of observability tools. For example, a - * wifi plugin might pretend that it's Ethernet for such consumers. - * Here, we call into the MAC layer so that this illusion can be - * maintained. The plugin will optionally transform the MAC header - * here into something that can be passed down. The header goes - * from raw mode to "cooked" mode. - */ - if ((newmp = mac_header_cook(dsp->ds_mh, mp)) == NULL) - goto discard; - mp = newmp; + * it's not for the benefit of observability tools. For example, + * mac_wifi pretends that it's Ethernet for such consumers. + * Here, unless native mode is enabled, we call into the MAC layer so + * that this illusion can be maintained. The plugin will optionally + * transform the MAC header here into something that can be passed + * down. The header goes from raw mode to "cooked" mode. + */ + if (!dsp->ds_native) { + if ((newmp = mac_header_cook(dsp->ds_mh, mp)) == NULL) + goto discard; + mp = newmp; + } size = MBLKL(mp); @@ -1202,18 +1206,21 @@ dld_str_rx_raw(void *arg, mac_resource_handle_t mrh, mblk_t *mp, * Certain MAC type plugins provide an illusion for raw * DLPI consumers. They pretend that the MAC layer is * something that it's not for the benefit of observability - * tools. For example, a wifi plugin might pretend that - * it's Ethernet for such consumers. Here, we call into - * the MAC layer so that this illusion can be maintained. - * The plugin will optionally transform the MAC header here - * into something that can be passed up to raw consumers. - * The header goes from "cooked" mode to raw mode. + * tools. For example, mac_wifi pretends that it's Ethernet + * for such consumers. Here, unless native mode is enabled, + * we call into the MAC layer so that this illusion can be + * maintained. The plugin will optionally transform the MAC + * header here into something that can be passed up to raw + * consumers. The header goes from "cooked" mode to raw mode. */ - if ((newmp = mac_header_uncook(dsp->ds_mh, mp)) == NULL) { - freemsg(mp); - goto next; + if (!dsp->ds_native) { + newmp = mac_header_uncook(dsp->ds_mh, mp); + if (newmp == NULL) { + freemsg(mp); + goto next; + } + mp = newmp; } - mp = newmp; /* * Strip the VLAN tag for VLAN streams. @@ -1875,6 +1882,9 @@ dld_ioc(dld_str_t *dsp, mblk_t *mp) ASSERT(dsp->ds_type == DLD_DLPI); switch (cmd) { + case DLIOCNATIVE: + ioc_native(dsp, mp); + break; case DLIOCRAW: ioc_raw(dsp, mp); break; @@ -1887,6 +1897,32 @@ dld_ioc(dld_str_t *dsp, mblk_t *mp) } /* + * DLIOCNATIVE + */ +static void +ioc_native(dld_str_t *dsp, mblk_t *mp) +{ + queue_t *q = dsp->ds_wq; + const mac_info_t *mip = dsp->ds_mip; + + rw_enter(&dsp->ds_lock, RW_WRITER); + + /* + * Native mode can be enabled if it's disabled and if the + * native media type is different. + */ + if (!dsp->ds_native && mip->mi_media != mip->mi_nativemedia) + dsp->ds_native = B_TRUE; + + rw_exit(&dsp->ds_lock); + + if (dsp->ds_native) + miocack(q, mp, 0, mip->mi_nativemedia); + else + miocnak(q, mp, 0, ENOTSUP); +} + +/* * DLIOCRAW */ static void diff --git a/usr/src/uts/common/io/dls/dls_vlan.c b/usr/src/uts/common/io/dls/dls_vlan.c index eb6bc4c3bb..bea767627a 100644 --- a/usr/src/uts/common/io/dls/dls_vlan.c +++ b/usr/src/uts/common/io/dls/dls_vlan.c @@ -308,7 +308,9 @@ again: * dls_mac_hold() assigns the dl_mip of the dls_link_t we're * interested in. */ - if (dvp->dv_id != VLAN_ID_NONE && dlp->dl_mip->mi_media != DL_ETHER) { + if (dvp->dv_id != VLAN_ID_NONE && + (dlp->dl_mip->mi_media != DL_ETHER || + dlp->dl_mip->mi_nativemedia != DL_ETHER)) { dls_mac_rele(dlp); err = EINVAL; goto done; diff --git a/usr/src/uts/common/io/mac/mac.c b/usr/src/uts/common/io/mac/mac.c index 3f414af351..74df893b58 100644 --- a/usr/src/uts/common/io/mac/mac.c +++ b/usr/src/uts/common/io/mac/mac.c @@ -1083,8 +1083,8 @@ mac_register(mac_register_t *mregp, mac_handle_t *mhp) mip->mi_driver = mregp->m_driver; mip->mi_type = mtype; - mip->mi_info.mi_media = mtype->mt_type; + mip->mi_info.mi_nativemedia = mtype->mt_nativetype; mip->mi_info.mi_sdu_min = mregp->m_min_sdu; if (mregp->m_max_sdu <= mregp->m_min_sdu) { err = EINVAL; @@ -1814,6 +1814,7 @@ mactype_register(mactype_register_t *mtrp) mtp->mt_ident = mtrp->mtr_ident; mtp->mt_ops = *ops; mtp->mt_type = mtrp->mtr_mactype; + mtp->mt_nativetype = mtrp->mtr_nativetype; mtp->mt_addr_length = mtrp->mtr_addrlen; if (mtrp->mtr_brdcst_addr != NULL) { mtp->mt_brdcst_addr = kmem_alloc(mtrp->mtr_addrlen, KM_SLEEP); diff --git a/usr/src/uts/common/io/mac/plugins/mac_ether.c b/usr/src/uts/common/io/mac/plugins/mac_ether.c index 62f2f2c6b3..69ea0f66bb 100644 --- a/usr/src/uts/common/io/mac/plugins/mac_ether.c +++ b/usr/src/uts/common/io/mac/plugins/mac_ether.c @@ -122,6 +122,7 @@ _init(void) mtrp->mtr_ident = MAC_PLUGIN_IDENT_ETHER; mtrp->mtr_ops = &mac_ether_type_ops; mtrp->mtr_mactype = DL_ETHER; + mtrp->mtr_nativetype = DL_ETHER; mtrp->mtr_addrlen = ETHERADDRL; mtrp->mtr_brdcst_addr = ether_brdcst; mtrp->mtr_stats = ether_stats; diff --git a/usr/src/uts/common/io/mac/plugins/mac_wifi.c b/usr/src/uts/common/io/mac/plugins/mac_wifi.c new file mode 100644 index 0000000000..81da3e878c --- /dev/null +++ b/usr/src/uts/common/io/mac/plugins/mac_wifi.c @@ -0,0 +1,416 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +/* + * WiFi MAC Type plugin for the Nemo mac module + * + * This is a bit of mutant since we pretend to be mostly DL_ETHER. + */ + +#include <sys/types.h> +#include <sys/modctl.h> +#include <sys/dlpi.h> +#include <sys/mac.h> +#include <sys/mac_wifi.h> +#include <sys/dls.h> +#include <sys/ethernet.h> +#include <sys/byteorder.h> +#include <sys/strsun.h> +#include <inet/common.h> + +uint8_t wifi_bcastaddr[] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; +static uint8_t wifi_ietfmagic[] = { 0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00 }; +static uint8_t wifi_ieeemagic[] = { 0xaa, 0xaa, 0x03, 0x00, 0x00, 0xf8 }; + +static mac_stat_info_t wifi_stats[] = { + /* statistics described in ieee802.11(5) */ +{ WIFI_STAT_TX_FRAGS, "tx_frags", KSTAT_DATA_UINT32, 0 }, +{ WIFI_STAT_MCAST_TX, "mcast_tx", KSTAT_DATA_UINT32, 0 }, +{ WIFI_STAT_TX_FAILED, "tx_failed", KSTAT_DATA_UINT32, 0 }, +{ WIFI_STAT_TX_RETRANS, "tx_retrans", KSTAT_DATA_UINT32, 0 }, +{ WIFI_STAT_TX_RERETRANS, "tx_reretrans", KSTAT_DATA_UINT32, 0 }, +{ WIFI_STAT_RTS_SUCCESS, "rts_success", KSTAT_DATA_UINT32, 0 }, +{ WIFI_STAT_RTS_FAILURE, "rts_failure", KSTAT_DATA_UINT32, 0 }, +{ WIFI_STAT_ACK_FAILURE, "ack_failure", KSTAT_DATA_UINT32, 0 }, +{ WIFI_STAT_RX_FRAGS, "rx_frags", KSTAT_DATA_UINT32, 0 }, +{ WIFI_STAT_MCAST_RX, "mcast_rx", KSTAT_DATA_UINT32, 0 }, +{ WIFI_STAT_FCS_ERRORS, "fcs_errors", KSTAT_DATA_UINT32, 0 }, +{ WIFI_STAT_WEP_ERRORS, "wep_errors", KSTAT_DATA_UINT32, 0 }, +{ WIFI_STAT_RX_DUPS, "rx_dups", KSTAT_DATA_UINT32, 0 } +}; + +static struct modlmisc mac_wifi_modlmisc = { + &mod_miscops, + "WiFi MAC plugin %I%" +}; + +static struct modlinkage mac_wifi_modlinkage = { + MODREV_1, + &mac_wifi_modlmisc, + NULL +}; + +static mactype_ops_t mac_wifi_type_ops; + +int +_init(void) +{ + mactype_register_t *mtrp = mactype_alloc(MACTYPE_VERSION); + int err; + + /* + * If `mtrp' is NULL, then this plugin is not compatible with + * the system's MAC Type plugin framework. + */ + if (mtrp == NULL) + return (ENOTSUP); + + mtrp->mtr_ops = &mac_wifi_type_ops; + mtrp->mtr_ident = MAC_PLUGIN_IDENT_WIFI; + mtrp->mtr_mactype = DL_ETHER; + mtrp->mtr_nativetype = DL_WIFI; + mtrp->mtr_stats = wifi_stats; + mtrp->mtr_statcount = A_CNT(wifi_stats); + mtrp->mtr_addrlen = IEEE80211_ADDR_LEN; + mtrp->mtr_brdcst_addr = wifi_bcastaddr; + + if ((err = mactype_register(mtrp)) == 0) { + if ((err = mod_install(&mac_wifi_modlinkage)) != 0) + (void) mactype_unregister(MAC_PLUGIN_IDENT_WIFI); + } + mactype_free(mtrp); + return (err); +} + +int +_fini(void) +{ + int err; + + if ((err = mactype_unregister(MAC_PLUGIN_IDENT_WIFI)) != 0) + return (err); + return (mod_remove(&mac_wifi_modlinkage)); +} + +int +_info(struct modinfo *modinfop) +{ + return (mod_info(&mac_wifi_modlinkage, modinfop)); +} + +/* + * MAC Type plugin operations + */ + +static boolean_t +mac_wifi_pdata_verify(void *pdata, size_t pdata_size) +{ + wifi_data_t *wdp = pdata; + + return (pdata_size == sizeof (wifi_data_t) && wdp->wd_opts == 0); +} + +/* ARGSUSED */ +static int +mac_wifi_unicst_verify(const void *addr, void *pdata) +{ + /* If it's not a group address, then it's a valid unicast address. */ + return (IEEE80211_IS_MULTICAST(addr) ? EINVAL : 0); +} + +/* ARGSUSED */ +static int +mac_wifi_multicst_verify(const void *addr, void *pdata) +{ + /* The address must be a group address. */ + if (!IEEE80211_IS_MULTICAST(addr)) + return (EINVAL); + /* The address must not be the media broadcast address. */ + if (bcmp(addr, wifi_bcastaddr, sizeof (wifi_bcastaddr)) == 0) + return (EINVAL); + return (0); +} + +/* + * Verify that `sap' is valid, and return the actual SAP to bind to in + * `*bind_sap'. The WiFI SAP space is identical to Ethernet. + */ +/* ARGSUSED */ +static boolean_t +mac_wifi_sap_verify(uint32_t sap, uint32_t *bind_sap, void *pdata) +{ + if (sap >= ETHERTYPE_802_MIN && sap <= ETHERTYPE_MAX) { + if (bind_sap != NULL) + *bind_sap = sap; + return (B_TRUE); + } + + if (sap <= ETHERMTU) { + if (bind_sap != NULL) + *bind_sap = DLS_SAP_LLC; + return (B_TRUE); + } + return (B_FALSE); +} + +/* + * Create a template WiFi datalink header for `sap' packets between `saddr' + * and `daddr'. Any enabled modes and features relevant to building the + * header are passed via `pdata'. Return NULL on failure. + */ +/* ARGSUSED */ +static mblk_t * +mac_wifi_header(const void *saddr, const void *daddr, uint32_t sap, + void *pdata, mblk_t *payload, size_t extra_len) +{ + struct ieee80211_frame *wh; + struct ieee80211_llc *llc; + mblk_t *mp; + wifi_data_t *wdp = pdata; + + if (!mac_wifi_sap_verify(sap, NULL, NULL)) + return (NULL); + + if ((mp = allocb(WIFI_HDRSIZE + extra_len, BPRI_HI)) == NULL) + return (NULL); + bzero(mp->b_rptr, WIFI_HDRSIZE + extra_len); + + /* + * Fill in the fixed parts of the ieee80211_frame. + */ + wh = (struct ieee80211_frame *)mp->b_rptr; + mp->b_wptr += sizeof (struct ieee80211_frame); + wh->i_fc[0] = IEEE80211_FC0_VERSION_0 | IEEE80211_FC0_TYPE_DATA; + + switch (wdp->wd_opmode) { + case IEEE80211_M_STA: + wh->i_fc[1] = IEEE80211_FC1_DIR_TODS; + IEEE80211_ADDR_COPY(wh->i_addr1, wdp->wd_bssid); + IEEE80211_ADDR_COPY(wh->i_addr2, saddr); + IEEE80211_ADDR_COPY(wh->i_addr3, daddr); + break; + + case IEEE80211_M_IBSS: + case IEEE80211_M_AHDEMO: + wh->i_fc[1] = IEEE80211_FC1_DIR_NODS; + IEEE80211_ADDR_COPY(wh->i_addr1, daddr); + IEEE80211_ADDR_COPY(wh->i_addr2, saddr); + IEEE80211_ADDR_COPY(wh->i_addr3, wdp->wd_bssid); + break; + + case IEEE80211_M_HOSTAP: + wh->i_fc[1] = IEEE80211_FC1_DIR_FROMDS; + IEEE80211_ADDR_COPY(wh->i_addr1, daddr); + IEEE80211_ADDR_COPY(wh->i_addr2, wdp->wd_bssid); + IEEE80211_ADDR_COPY(wh->i_addr3, saddr); + break; + } + + /* + * Fill in the fixed parts of the WEP-portion of the frame. + */ + if (wdp->wd_secalloc == WIFI_SEC_WEP) { + wh->i_fc[1] |= IEEE80211_FC1_WEP; + /* + * The actual contents of the WEP-portion of the packet + * are computed when the packet is sent -- for now, we + * just need to account for the size. + */ + mp->b_wptr += IEEE80211_WEP_IVLEN + IEEE80211_WEP_KIDLEN; + } + + /* + * Fill in the fixed parts of the ieee80211_llc header. + */ + llc = (struct ieee80211_llc *)mp->b_wptr; + mp->b_wptr += sizeof (struct ieee80211_llc); + bcopy(wifi_ietfmagic, llc, sizeof (wifi_ietfmagic)); + llc->illc_ether_type = htons(sap); + + return (mp); +} + +/* + * Use the provided `mp' (which is expected to point to a WiFi header), and + * fill in the provided `mhp'. Return an errno on failure. + */ +/* ARGSUSED */ +static int +mac_wifi_header_info(mblk_t *mp, void *pdata, mac_header_info_t *mhp) +{ + struct ieee80211_frame *wh; + struct ieee80211_llc *llc; + uchar_t *llcp; + + if (MBLKL(mp) < sizeof (struct ieee80211_frame)) + return (EINVAL); + + wh = (struct ieee80211_frame *)mp->b_rptr; + llcp = mp->b_rptr + sizeof (struct ieee80211_frame); + + /* + * When we receive frames from other hosts, the hardware will have + * already performed WEP decryption, and thus there will not be a WEP + * portion. However, when we receive a loopback copy of our own + * packets, it will still have a WEP portion. Skip past it to get to + * the LLC header. + */ + if (wh->i_fc[1] & IEEE80211_FC1_WEP) + llcp += IEEE80211_WEP_IVLEN + IEEE80211_WEP_KIDLEN; + + if (mp->b_wptr - llcp < sizeof (struct ieee80211_llc)) + return (EINVAL); + + llc = (struct ieee80211_llc *)llcp; + mhp->mhi_origsap = ntohs(llc->illc_ether_type); + mhp->mhi_bindsap = mhp->mhi_origsap; + mhp->mhi_pktsize = 0; + mhp->mhi_hdrsize = llcp + sizeof (*llc) - mp->b_rptr; + + /* + * Verify the LLC header is one of the known formats. As per MSFT's + * convention, if the header is using IEEE 802.1H encapsulation, then + * treat the LLC header as data. As per DL_ETHER custom when treating + * the LLC header as data, set the mhi_bindsap to be DLS_SAP_LLC, and + * assume mhi_origsap contains the data length. + */ + if (bcmp(llc, wifi_ieeemagic, sizeof (wifi_ieeemagic)) == 0) { + mhp->mhi_bindsap = DLS_SAP_LLC; + mhp->mhi_hdrsize -= sizeof (*llc); + mhp->mhi_pktsize = mhp->mhi_hdrsize + mhp->mhi_origsap; + } else if (bcmp(llc, wifi_ietfmagic, sizeof (wifi_ietfmagic)) != 0) { + return (EINVAL); + } + + switch (wh->i_fc[1] & IEEE80211_FC1_DIR_MASK) { + case IEEE80211_FC1_DIR_NODS: + mhp->mhi_daddr = wh->i_addr1; + mhp->mhi_saddr = wh->i_addr2; + break; + + case IEEE80211_FC1_DIR_TODS: + mhp->mhi_daddr = wh->i_addr3; + mhp->mhi_saddr = wh->i_addr2; + break; + + case IEEE80211_FC1_DIR_FROMDS: + mhp->mhi_daddr = wh->i_addr1; + mhp->mhi_saddr = wh->i_addr3; + break; + + case IEEE80211_FC1_DIR_DSTODS: + /* We don't support AP-to-AP mode yet */ + return (ENOTSUP); + } + + if (mac_wifi_unicst_verify(mhp->mhi_daddr, NULL) == 0) + mhp->mhi_dsttype = MAC_ADDRTYPE_UNICAST; + else if (mac_wifi_multicst_verify(mhp->mhi_daddr, NULL) == 0) + mhp->mhi_dsttype = MAC_ADDRTYPE_MULTICAST; + else + mhp->mhi_dsttype = MAC_ADDRTYPE_BROADCAST; + + return (0); +} + +/* + * Take the provided `mp' (which is expected to have an Ethernet header), and + * return a pointer to an mblk_t with a WiFi header. Note that the returned + * header will not be complete until the driver finishes filling it in prior + * to transmit. If the conversion cannot be performed, return NULL. + */ +static mblk_t * +mac_wifi_header_cook(mblk_t *mp, void *pdata) +{ + struct ether_header *ehp; + mblk_t *llmp; + + if (MBLKL(mp) < sizeof (struct ether_header)) + return (NULL); + + ehp = (struct ether_header *)mp->b_rptr; + llmp = mac_wifi_header(&ehp->ether_shost, &ehp->ether_dhost, + ntohs(ehp->ether_type), pdata, NULL, 0); + if (llmp == NULL) + return (NULL); + + /* + * The plugin framework guarantees that we have the only reference + * to the mblk_t, so we can safely modify it. + */ + ASSERT(DB_REF(mp) == 1); + mp->b_rptr += sizeof (struct ether_header); + llmp->b_cont = mp; + return (llmp); +} + +/* + * Take the provided `mp' (which is expected to have a WiFi header), and + * return a pointer to an mblk_t with an Ethernet header. If the conversion + * cannot be performed, return NULL. + */ +static mblk_t * +mac_wifi_header_uncook(mblk_t *mp, void *pdata) +{ + mac_header_info_t mhi; + struct ether_header eh; + + if (mac_wifi_header_info(mp, pdata, &mhi) != 0) { + /* + * The plugin framework guarantees the header is properly + * formed, so this should never happen. + */ + return (NULL); + } + + /* + * The plugin framework guarantees that we have the only reference to + * the mblk_t and the underlying dblk_t, so we can safely modify it. + */ + ASSERT(DB_REF(mp) == 1); + + IEEE80211_ADDR_COPY(&eh.ether_dhost, mhi.mhi_daddr); + IEEE80211_ADDR_COPY(&eh.ether_shost, mhi.mhi_saddr); + eh.ether_type = htons(mhi.mhi_origsap); + + ASSERT(mhi.mhi_hdrsize >= sizeof (struct ether_header)); + mp->b_rptr += mhi.mhi_hdrsize - sizeof (struct ether_header); + bcopy(&eh, mp->b_rptr, sizeof (struct ether_header)); + return (mp); +} + +static mactype_ops_t mac_wifi_type_ops = { + MTOPS_PDATA_VERIFY | MTOPS_HEADER_COOK | MTOPS_HEADER_UNCOOK, + mac_wifi_unicst_verify, + mac_wifi_multicst_verify, + mac_wifi_sap_verify, + mac_wifi_header, + mac_wifi_header_info, + mac_wifi_pdata_verify, + mac_wifi_header_cook, + mac_wifi_header_uncook +}; diff --git a/usr/src/uts/common/io/net80211/net80211.c b/usr/src/uts/common/io/net80211/net80211.c new file mode 100644 index 0000000000..5a6eef0f06 --- /dev/null +++ b/usr/src/uts/common/io/net80211/net80211.c @@ -0,0 +1,634 @@ +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +/* + * Copyright (c) 2001 Atsushi Onoe + * Copyright (c) 2002-2005 Sam Leffler, Errno Consulting + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * Alternatively, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2 as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +/* + * IEEE 802.11 generic handler + */ + +#include <sys/param.h> +#include <sys/types.h> +#include <sys/cmn_err.h> +#include <sys/modctl.h> +#include "net80211_impl.h" + +uint32_t ieee80211_debug = 0x0; /* debug msg flags */ + +const char *ieee80211_phymode_name[] = { + "auto", /* IEEE80211_MODE_AUTO */ + "11a", /* IEEE80211_MODE_11A */ + "11b", /* IEEE80211_MODE_11B */ + "11g", /* IEEE80211_MODE_11G */ + "FH", /* IEEE80211_MODE_FH */ + "turboA", /* IEEE80211_MODE_TURBO_A */ + "turboG", /* IEEE80211_MODE_TURBO_G */ +}; + +#define IEEE80211_DPRINT(_level, _fmt) do { \ + _NOTE(CONSTCOND) \ + va_list ap; \ + va_start(ap, (_fmt)); \ + vcmn_err((_level), (_fmt), ap); \ + va_end(ap); \ + _NOTE(CONSTCOND) \ + } while (0) + +/* + * Print error messages + */ +void +ieee80211_err(const int8_t *fmt, ...) +{ + IEEE80211_DPRINT(CE_WARN, fmt); +} + +/* + * Print debug messages + */ +void +ieee80211_dbg(uint32_t flag, const int8_t *fmt, ...) +{ + if (flag & ieee80211_debug) + IEEE80211_DPRINT(CE_CONT, fmt); +} + +/* + * Default reset method for use with the ioctl support. This + * method is invoked after any state change in the 802.11 + * layer that should be propagated to the hardware but not + * require re-initialization of the 802.11 state machine (e.g + * rescanning for an ap). We always return ENETRESET which + * should cause the driver to re-initialize the device. Drivers + * can override this method to implement more optimized support. + */ +/* ARGSUSED */ +static int +ieee80211_default_reset(ieee80211com_t *ic) +{ + return (ENETRESET); +} + +/* + * Convert channel to IEEE channel number. + */ +uint32_t +ieee80211_chan2ieee(ieee80211com_t *ic, struct ieee80211_channel *ch) +{ + if ((ic->ic_sup_channels <= ch) && + (ch <= &ic->ic_sup_channels[IEEE80211_CHAN_MAX])) { + return (ch - ic->ic_sup_channels); + } else if (ch == IEEE80211_CHAN_ANYC) { + return (IEEE80211_CHAN_ANY); + } else if (ch != NULL) { + ieee80211_err("invalid channel freq %u flags %x\n", + ch->ich_freq, ch->ich_flags); + return (0); + } + ieee80211_err("invalid channel (NULL)\n"); /* ch == NULL */ + return (0); +} + +/* + * Convert IEEE channel number to MHz frequency. + * chan IEEE channel number + * flags specify whether the frequency is in the 2GHz ISM + * band or the 5GHz band + * + * 802.11b 2GHz: 14 channels, each 5 MHz wide. Channel 1 is placed + * at 2.412 GHz, channel 2 at 2.417 GHz, and so on up to channel 13 + * at 2.472 GHz. Channel 14 was defined especially for operation in + * Japan, and has a center frequency 2.484 GHz. + * 802.11g 2GHz: adopts the frequency plan of 802.11b. Japan only + * allows 802.11g operation in channels 1-13 + * 802.11a 5GHz: starting every 5 MHz + * 802.11b/g channels 15-24 (2512-2692) are used by some implementation + * (Atheros etc.) + */ +uint32_t +ieee80211_ieee2mhz(uint32_t chan, uint32_t flags) +{ + if (flags & IEEE80211_CHAN_2GHZ) { /* 2GHz band */ + if (chan == 14) + return (2484); + if (chan < 14) + return (2412 + (chan - 1) * 5); + else + return (2512 + ((chan - 15) * 20)); + } else if (flags & IEEE80211_CHAN_5GHZ) { /* 5Ghz band */ + return (5000 + (chan * 5)); /* OFDM */ + } else { /* either, guess */ + if (chan == 14) + return (2484); + if (chan < 14) /* 0-13 */ + return (2412 + (chan - 1) * 5); + if (chan < 27) /* 15-26 */ + return (2512 + ((chan - 15) * 20)); + return (5000 + (chan * 5)); + } +} + +/* + * Do late attach work. It must be called by the driver after + * calling ieee80211_attach() and before calling most ieee80211 + * functions. + */ +void +ieee80211_media_init(ieee80211com_t *ic) +{ + /* + * Do late attach work that must wait for any subclass + * (i.e. driver) work such as overriding methods. + */ + ieee80211_node_lateattach(ic); +} + +/* + * Start Watchdog timer. After count down timer(s), ic_watchdog + * will be called + */ +void +ieee80211_start_watchdog(ieee80211com_t *ic, uint32_t timer) +{ + if (ic->ic_watchdog_timer == 0 && ic->ic_watchdog != NULL) { + ic->ic_watchdog_timer = timeout(ic->ic_watchdog, ic, + drv_usectohz(1000000 * timer)); + } +} + +/* + * Stop watchdog timer. + */ +void +ieee80211_stop_watchdog(ieee80211com_t *ic) +{ + if (ic->ic_watchdog_timer != 0) { + if (ic->ic_watchdog != NULL) + (void) untimeout(ic->ic_watchdog_timer); + ic->ic_watchdog_timer = 0; + } +} + +/* + * Called from a driver's xxx_watchdog routine. It is used to + * perform periodic cleanup of state for net80211, as well as + * timeout scans. + */ +void +ieee80211_watchdog(void *arg) +{ + ieee80211com_t *ic = arg; + struct ieee80211_impl *im = ic->ic_private; + ieee80211_node_table_t *nt; + int inact_timer = 0; + + if (ic->ic_state == IEEE80211_S_INIT) + return; + + IEEE80211_LOCK(ic); + if ((im->im_mgt_timer != 0) && (--im->im_mgt_timer == 0)) { + IEEE80211_UNLOCK(ic); + ieee80211_new_state(ic, IEEE80211_S_SCAN, -1); + IEEE80211_LOCK(ic); + } + + nt = &ic->ic_scan; + if (nt->nt_inact_timer != 0) { + if (--nt->nt_inact_timer == 0) + nt->nt_timeout(nt); + inact_timer += nt->nt_inact_timer; + } + nt = &ic->ic_sta; + if (nt->nt_inact_timer != 0) { + if (--nt->nt_inact_timer == 0) + nt->nt_timeout(nt); + inact_timer += nt->nt_inact_timer; + } + + IEEE80211_UNLOCK(ic); + + if (im->im_mgt_timer != 0 || inact_timer > 0) + ieee80211_start_watchdog(ic, 1); +} + +/* + * Set the current phy mode and recalculate the active channel + * set and supported rates based on the available channels for + * this mode. Also select a new BSS channel if the current one + * is inappropriate for this mode. + * This function is called by net80211, and not intended to be + * called directly. + */ +static int +ieee80211_setmode(ieee80211com_t *ic, enum ieee80211_phymode mode) +{ + static const uint32_t chanflags[] = { + 0, /* IEEE80211_MODE_AUTO */ + IEEE80211_CHAN_A, /* IEEE80211_MODE_11A */ + IEEE80211_CHAN_B, /* IEEE80211_MODE_11B */ + IEEE80211_CHAN_PUREG, /* IEEE80211_MODE_11G */ + IEEE80211_CHAN_FHSS, /* IEEE80211_MODE_FH */ + IEEE80211_CHAN_T, /* IEEE80211_MODE_TURBO_A */ + IEEE80211_CHAN_108G, /* IEEE80211_MODE_TURBO_G */ + }; + struct ieee80211_channel *ch; + uint32_t modeflags; + int i; + int achannels = 0; + + /* validate new mode */ + if ((ic->ic_modecaps & (1 << mode)) == 0) { + ieee80211_err("ieee80211_setmode(): mode %u not supported" + " (caps 0x%x)\n", mode, ic->ic_modecaps); + return (EINVAL); + } + + /* + * Verify at least one channel is present in the available + * channel list before committing to the new mode. + * Calculate the active channel set. + */ + ASSERT(mode < IEEE80211_N(chanflags)); + modeflags = chanflags[mode]; + bzero(ic->ic_chan_active, sizeof (ic->ic_chan_active)); + for (i = 0; i <= IEEE80211_CHAN_MAX; i++) { + ch = &ic->ic_sup_channels[i]; + if (ch->ich_flags == 0) + continue; + if (mode == IEEE80211_MODE_AUTO) { + /* take anything but pure turbo channels */ + if ((ch->ich_flags & ~IEEE80211_CHAN_TURBO) != 0) { + ieee80211_setbit(ic->ic_chan_active, i); + achannels++; + } + } else { + if ((ch->ich_flags & modeflags) == modeflags) { + ieee80211_setbit(ic->ic_chan_active, i); + achannels++; + } + } + } + if (achannels == 0) { + ieee80211_err("ieee80211_setmode(): " + "no channel found for mode %u\n", mode); + return (EINVAL); + } + + /* + * If no current/default channel is setup or the current + * channel is wrong for the mode then pick the first + * available channel from the active list. This is likely + * not the right one. + */ + if (ic->ic_ibss_chan == NULL || + ieee80211_isclr(ic->ic_chan_active, + ieee80211_chan2ieee(ic, ic->ic_ibss_chan))) { + for (i = 0; i <= IEEE80211_CHAN_MAX; i++) { + if (ieee80211_isset(ic->ic_chan_active, i)) { + ic->ic_ibss_chan = &ic->ic_sup_channels[i]; + break; + } + } + } + /* + * If the desired channel is set but no longer valid then reset it. + */ + if (ic->ic_des_chan != IEEE80211_CHAN_ANYC && + ieee80211_isclr(ic->ic_chan_active, + ieee80211_chan2ieee(ic, ic->ic_des_chan))) { + ic->ic_des_chan = IEEE80211_CHAN_ANYC; + } + + /* + * Do mode-specific rate setup. + */ + if (mode == IEEE80211_MODE_11G || mode == IEEE80211_MODE_11B) + ieee80211_setbasicrates(&ic->ic_sup_rates[mode], mode); + + /* + * Setup an initial rate set according to the + * current/default channel. This will be changed + * when scanning but must exist now so drivers have + * consistent state of ic_bsschan. + */ + if (ic->ic_bss != NULL) + ic->ic_bss->in_rates = ic->ic_sup_rates[mode]; + ic->ic_curmode = mode; + ieee80211_reset_erp(ic); /* reset ERP state */ + + return (0); +} + +/* + * Return the phy mode for with the specified channel so the + * caller can select a rate set. This is problematic for channels + * where multiple operating modes are possible (e.g. 11g+11b). + * In those cases we defer to the current operating mode when set. + */ +enum ieee80211_phymode +ieee80211_chan2mode(ieee80211com_t *ic, struct ieee80211_channel *chan) +{ + if (IEEE80211_IS_CHAN_T(chan)) { + return (IEEE80211_MODE_TURBO_A); + } else if (IEEE80211_IS_CHAN_5GHZ(chan)) { + return (IEEE80211_MODE_11A); + } else if (IEEE80211_IS_CHAN_FHSS(chan)) { + return (IEEE80211_MODE_FH); + } else if (chan->ich_flags & (IEEE80211_CHAN_OFDM|IEEE80211_CHAN_DYN)) { + /* + * This assumes all 11g channels are also usable + * for 11b, which is currently true. + */ + if (ic->ic_curmode == IEEE80211_MODE_TURBO_G) + return (IEEE80211_MODE_TURBO_G); + if (ic->ic_curmode == IEEE80211_MODE_11B) + return (IEEE80211_MODE_11B); + return (IEEE80211_MODE_11G); + } else { + return (IEEE80211_MODE_11B); + } +} + +/* + * Return the size of the 802.11 header for a management or data frame. + */ +int +ieee80211_hdrspace(const void *data) +{ + const struct ieee80211_frame *wh = data; + int size = sizeof (struct ieee80211_frame); + + /* NB: we don't handle control frames */ + ASSERT((wh->i_fc[0]&IEEE80211_FC0_TYPE_MASK) != + IEEE80211_FC0_TYPE_CTL); + if ((wh->i_fc[1] & IEEE80211_FC1_DIR_MASK) == IEEE80211_FC1_DIR_DSTODS) + size += IEEE80211_ADDR_LEN; + + return (size); +} + +/* + * Allocate and setup a management frame of the specified + * size. We return the mblk and a pointer to the start + * of the contiguous data area that's been reserved based + * on the packet length. + */ +mblk_t * +ieee80211_getmgtframe(uint8_t **frm, int pktlen) +{ + mblk_t *mp; + int len; + + len = sizeof (struct ieee80211_frame) + pktlen; + mp = allocb(len, BPRI_MED); + if (mp != NULL) { + *frm = mp->b_rptr + sizeof (struct ieee80211_frame); + mp->b_wptr = mp->b_rptr + len; + } else { + ieee80211_err("ieee80211_getmgtframe: " + "alloc frame failed, %d\n", len); + } + return (mp); +} + +/* + * Send system messages to notify the device has joined a WLAN. + * This is an OS specific function. Solaris marks link status + * as up. + */ +void +ieee80211_notify_node_join(ieee80211com_t *ic, ieee80211_node_t *in) +{ + if (in == ic->ic_bss) + mac_link_update(ic->ic_mach, LINK_STATE_UP); +} + +/* + * Send system messages to notify the device has left a WLAN. + * This is an OS specific function. Solaris marks link status + * as down. + */ +void +ieee80211_notify_node_leave(ieee80211com_t *ic, ieee80211_node_t *in) +{ + if (in == ic->ic_bss) + mac_link_update(ic->ic_mach, LINK_STATE_DOWN); +} + +/* + * Get 802.11 kstats defined in ieee802.11(5) + * + * Return 0 on success + */ +int +ieee80211_stat(ieee80211com_t *ic, uint_t stat, uint64_t *val) +{ + ASSERT(val != NULL); + IEEE80211_LOCK(ic); + switch (stat) { + case WIFI_STAT_TX_FRAGS: + *val = ic->ic_stats.is_tx_frags; + break; + case WIFI_STAT_MCAST_TX: + *val = ic->ic_stats.is_tx_mcast; + break; + case WIFI_STAT_TX_FAILED: + *val = ic->ic_stats.is_tx_failed; + break; + case WIFI_STAT_TX_RETRANS: + *val = ic->ic_stats.is_tx_retries; + break; + case WIFI_STAT_RTS_SUCCESS: + *val = ic->ic_stats.is_rts_success; + break; + case WIFI_STAT_RTS_FAILURE: + *val = ic->ic_stats.is_rts_failure; + break; + case WIFI_STAT_ACK_FAILURE: + *val = ic->ic_stats.is_ack_failure; + break; + case WIFI_STAT_RX_FRAGS: + *val = ic->ic_stats.is_rx_frags; + break; + case WIFI_STAT_MCAST_RX: + *val = ic->ic_stats.is_rx_mcast; + break; + case WIFI_STAT_RX_DUPS: + *val = ic->ic_stats.is_rx_dups; + break; + case WIFI_STAT_FCS_ERRORS: + *val = ic->ic_stats.is_fcs_errors; + break; + case WIFI_STAT_WEP_ERRORS: + *val = ic->ic_stats.is_wep_errors; + break; + } + IEEE80211_UNLOCK(ic); + return (0); +} + +/* + * Attach network interface to the 802.11 support module. This + * function must be called before using any of the ieee80211 + * functionss. The parameter "ic" MUST be initialized to tell + * net80211 about interface's capabilities. + */ +void +ieee80211_attach(ieee80211com_t *ic) +{ + struct ieee80211_impl *im; + struct ieee80211_channel *ch; + int i; + + /* Check mandatory callback functions not NULL */ + ASSERT(ic->ic_xmit != NULL); + + mutex_init(&ic->ic_genlock, NULL, MUTEX_DRIVER, NULL); + + im = kmem_alloc(sizeof (ieee80211_impl_t), KM_SLEEP); + ic->ic_private = im; + cv_init(&im->im_scan_cv, NULL, CV_DRIVER, NULL); + + /* + * Fill in 802.11 available channel set, mark + * all available channels as active, and pick + * a default channel if not already specified. + */ + bzero(im->im_chan_avail, sizeof (im->im_chan_avail)); + ic->ic_modecaps |= 1 << IEEE80211_MODE_AUTO; + for (i = 0; i <= IEEE80211_CHAN_MAX; i++) { + ch = &ic->ic_sup_channels[i]; + if (ch->ich_flags) { + /* Verify driver passed us valid data */ + if (i != ieee80211_chan2ieee(ic, ch)) { + ieee80211_err("bad channel ignored: " + "freq %u flags%x number %u\n", + ch->ich_freq, ch->ich_flags, i); + ch->ich_flags = 0; + continue; + } + ieee80211_setbit(im->im_chan_avail, i); + /* Identify mode capabilities */ + if (IEEE80211_IS_CHAN_A(ch)) + ic->ic_modecaps |= 1 << IEEE80211_MODE_11A; + if (IEEE80211_IS_CHAN_B(ch)) + ic->ic_modecaps |= 1 << IEEE80211_MODE_11B; + if (IEEE80211_IS_CHAN_PUREG(ch)) + ic->ic_modecaps |= 1 << IEEE80211_MODE_11G; + if (IEEE80211_IS_CHAN_FHSS(ch)) + ic->ic_modecaps |= 1 << IEEE80211_MODE_FH; + if (IEEE80211_IS_CHAN_T(ch)) + ic->ic_modecaps |= 1 << IEEE80211_MODE_TURBO_A; + if (IEEE80211_IS_CHAN_108G(ch)) + ic->ic_modecaps |= 1 << IEEE80211_MODE_TURBO_G; + if (ic->ic_curchan == NULL) { + /* arbitrarily pick the first channel */ + ic->ic_curchan = &ic->ic_sup_channels[i]; + } + } + } + /* validate ic->ic_curmode */ + if ((ic->ic_modecaps & (1 << ic->ic_curmode)) == 0) + ic->ic_curmode = IEEE80211_MODE_AUTO; + ic->ic_des_chan = IEEE80211_CHAN_ANYC; /* any channel is ok */ + (void) ieee80211_setmode(ic, ic->ic_curmode); + + if (ic->ic_caps & IEEE80211_C_BURST) + ic->ic_flags |= IEEE80211_F_BURST; + ic->ic_bintval = IEEE80211_BINTVAL_DEFAULT; + ic->ic_lintval = ic->ic_bintval; + ic->ic_txpowlimit = IEEE80211_TXPOWER_MAX; + ic->ic_bmissthreshold = IEEE80211_HWBMISS_DEFAULT; + + ic->ic_reset = ieee80211_default_reset; + + ieee80211_node_attach(ic); + ieee80211_proto_attach(ic); + ieee80211_crypto_attach(ic); + + ic->ic_watchdog_timer = 0; +} + +/* + * Free any ieee80211 structures associated with the driver. + */ +void +ieee80211_detach(ieee80211com_t *ic) +{ + struct ieee80211_impl *im = ic->ic_private; + + ieee80211_stop_watchdog(ic); + cv_destroy(&im->im_scan_cv); + kmem_free(im, sizeof (ieee80211_impl_t)); + + ieee80211_node_detach(ic); + ieee80211_crypto_detach(ic); + + mutex_destroy(&ic->ic_genlock); +} + +static struct modlmisc i_wifi_modlmisc = { + &mod_miscops, + "IEEE80211 Kernel Misc Module" +}; + +static struct modlinkage i_wifi_modlinkage = { + MODREV_1, + &i_wifi_modlmisc, + NULL +}; + +/* + * modlinkage functions + */ +int +_init(void) +{ + return (mod_install(&i_wifi_modlinkage)); +} + +int +_fini(void) +{ + return (mod_remove(&i_wifi_modlinkage)); +} + +int +_info(struct modinfo *modinfop) +{ + return (mod_info(&i_wifi_modlinkage, modinfop)); +} diff --git a/usr/src/uts/common/io/net80211/net80211_crypto.c b/usr/src/uts/common/io/net80211/net80211_crypto.c new file mode 100644 index 0000000000..214e1700ec --- /dev/null +++ b/usr/src/uts/common/io/net80211/net80211_crypto.c @@ -0,0 +1,510 @@ +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +/* + * Copyright (c) 2001 Atsushi Onoe + * Copyright (c) 2002-2005 Sam Leffler, Errno Consulting + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * Alternatively, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2 as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +/* + * IEEE 802.11 generic crypto support + */ +#include <sys/types.h> +#include <sys/note.h> +#include "net80211_impl.h" + +extern const struct ieee80211_cipher wep; + +/* + * Table of registered cipher modules. + */ +static const struct ieee80211_cipher *ciphers[IEEE80211_CIPHER_MAX]; +static const char *cipher_modnames[] = { + "wlan_wep", /* IEEE80211_CIPHER_WEP */ + "wlan_tkip", /* IEEE80211_CIPHER_TKIP */ + "wlan_aes_ocb", /* IEEE80211_CIPHER_AES_OCB */ + "wlan_ccmp", /* IEEE80211_CIPHER_AES_CCM */ + "wlan_ckip", /* IEEE80211_CIPHER_CKIP */ +}; + +/* + * Default "null" key management routines. + */ +/* ARGSUSED */ +static int +nulldev_key_alloc(ieee80211com_t *ic, const struct ieee80211_key *k, + ieee80211_keyix *keyix, ieee80211_keyix *rxkeyix) +{ + *keyix = 0; /* use key index 0 for ucast key */ + *rxkeyix = IEEE80211_KEYIX_NONE; + return (1); +} + +/* ARGSUSED */ +static int +nulldev_key_delete(ieee80211com_t *ic, const struct ieee80211_key *k) +{ + return (1); +} + +/* ARGSUSED */ +static int +nulldev_key_set(ieee80211com_t *ic, const struct ieee80211_key *k, + const uint8_t *mac) +{ + return (1); +} + +/* ARGSUSED */ +static void +nulldev_key_update(ieee80211com_t *ic) +{ + /* noop */ +} + +/* + * Reset key state to an unused state. The crypto + * key allocation mechanism insures other state (e.g. + * key data) is properly setup before a key is used. + */ +void +ieee80211_crypto_resetkey(ieee80211com_t *ic, + struct ieee80211_key *k, ieee80211_keyix ix) +{ + k->wk_cipher = &ieee80211_cipher_none; + k->wk_private = k->wk_cipher->ic_attach(ic, k); + k->wk_keyix = ix; + k->wk_flags = IEEE80211_KEY_XMIT | IEEE80211_KEY_RECV; +} + +/* + * Establish a relationship between the specified key and cipher + * and, if necessary, allocate a hardware index from the driver. + * Note that when a fixed key index is required it must be specified + * and we blindly assign it w/o consulting the driver. + * + * This must be the first call applied to a key; all the other key + * routines assume wk_cipher is setup. + * + * Locking must be handled by the caller using: + * ieee80211_key_update_begin(ic); + * ieee80211_key_update_end(ic); + */ +int +ieee80211_crypto_newkey(ieee80211com_t *ic, int cipher, int flags, + struct ieee80211_key *key) +{ + const struct ieee80211_cipher *cip; + ieee80211_keyix keyix, rxkeyix; + void *keyctx; + uint16_t oflags; + + /* + * Validate cipher and set reference to cipher routines. + */ + if (cipher >= IEEE80211_CIPHER_MAX) { + ieee80211_dbg(IEEE80211_MSG_CRYPTO, "ieee80211_crypto_newkey: " + "invalid cipher %u\n", cipher); + return (0); + } + cip = ciphers[cipher]; + /* already load all the ciphers, cip can't be NULL */ + if (cip == NULL) { + ieee80211_dbg(IEEE80211_MSG_CRYPTO, "ieee80211_crypto_newkey: " + "unable to load cipher %u, module %s\n", + cipher, cipher < IEEE80211_N(cipher_modnames) ? + cipher_modnames[cipher] : "<unknown>"); + return (0); + } + + oflags = key->wk_flags; + flags &= IEEE80211_KEY_COMMON; + /* + * If the hardware does not support the cipher then + * fallback to a host-based implementation. + */ + if ((ic->ic_caps & (1<<cipher)) == 0) { + ieee80211_dbg(IEEE80211_MSG_CRYPTO, "ieee80211_crypto_newkey: " + "no h/w support for cipher %s, falling back to s/w\n", + cip->ic_name); + flags |= IEEE80211_KEY_SWCRYPT; + } + + /* + * Bind cipher to key instance. Note we do this + * after checking the device capabilities so the + * cipher module can optimize space usage based on + * whether or not it needs to do the cipher work. + */ + if (key->wk_cipher != cip || key->wk_flags != flags) { +again: + /* + * Fillin the flags so cipher modules can see s/w + * crypto requirements and potentially allocate + * different state and/or attach different method + * pointers. + */ + key->wk_flags = (uint16_t)flags; + keyctx = cip->ic_attach(ic, key); + if (keyctx == NULL) { + ieee80211_dbg(IEEE80211_MSG_CRYPTO, "crypto_setkey: " + "unable to attach cipher %s\n", cip->ic_name); + key->wk_flags = oflags; /* restore old flags */ + return (0); + } + CIPHER_DETACH(key); /* Detach old cipher */ + key->wk_cipher = cip; + key->wk_private = keyctx; + } + /* + * Commit to requested usage so driver can see the flags. + */ + key->wk_flags = (uint16_t)flags; + + /* + * Ask the driver for a key index if we don't have one. + * Note that entries in the global key table always have + * an index; this means it's safe to call this routine + * for these entries just to setup the reference to the + * cipher template. Note also that when using software + * crypto we also call the driver to give us a key index. + */ + if (key->wk_keyix == IEEE80211_KEYIX_NONE) { + if (!DEV_KEY_ALLOC(ic, key, &keyix, &rxkeyix)) { + /* + * Driver has no room; fallback to doing crypto + * in the host. We change the flags and start the + * procedure over. If we get back here then there's + * no hope and we bail. Note that this can leave + * the key in a inconsistent state if the caller + * continues to use it. + */ + if ((key->wk_flags & IEEE80211_KEY_SWCRYPT) == 0) { + ieee80211_dbg(IEEE80211_MSG_CRYPTO, + "crypto_setkey: " + "no h/w resources for cipher %s, " + "falling back to s/w\n", cip->ic_name); + oflags = key->wk_flags; + flags |= IEEE80211_KEY_SWCRYPT; + if (cipher == IEEE80211_CIPHER_TKIP) + flags |= IEEE80211_KEY_SWMIC; + goto again; + } + ieee80211_dbg(IEEE80211_MSG_CRYPTO, "crypto_setkey: " + "unable to setup cipher %s\n", cip->ic_name); + return (0); + } + key->wk_keyix = keyix; + key->wk_rxkeyix = rxkeyix; + } + return (1); +} + +/* + * Remove the key (no locking, for internal use). + */ +static int +ieee80211_crypto_delkey_locked(ieee80211com_t *ic, struct ieee80211_key *key) +{ + uint16_t keyix; + + ASSERT(key->wk_cipher != NULL); + + keyix = key->wk_keyix; + if (keyix != IEEE80211_KEYIX_NONE) { + /* + * Remove hardware entry. + */ + if (!DEV_KEY_DELETE(ic, key)) { + ieee80211_dbg(IEEE80211_MSG_CRYPTO, + "ieee80211_crypto_delkey_locked: ", + "driverdeletes key %u failed\n", keyix); + } + } + CIPHER_DETACH(key); + bzero(key, sizeof (struct ieee80211_key)); + /* NB: cannot depend on key index to decide this */ + ieee80211_crypto_resetkey(ic, key, IEEE80211_KEYIX_NONE); + return (1); +} + +/* + * Remove the specified key. + */ +int +ieee80211_crypto_delkey(ieee80211com_t *ic, struct ieee80211_key *key) +{ + int status; + + KEY_UPDATE_BEGIN(ic); + status = ieee80211_crypto_delkey_locked(ic, key); + KEY_UPDATE_END(ic); + return (status); +} + +/* + * Clear the global key table. + */ +static void +ieee80211_crypto_delglobalkeys(ieee80211com_t *ic) +{ + int i; + + KEY_UPDATE_BEGIN(ic); + for (i = 0; i < IEEE80211_WEP_NKID; i++) + (void) ieee80211_crypto_delkey_locked(ic, &ic->ic_nw_keys[i]); + KEY_UPDATE_END(ic); +} + +/* + * Set the contents of the specified key. + * + * Locking must be handled by the caller using: + * ieee80211_key_update_begin(ic); + * ieee80211_key_update_end(ic); + */ +int +ieee80211_crypto_setkey(ieee80211com_t *ic, struct ieee80211_key *key, + const uint8_t *macaddr) +{ + const struct ieee80211_cipher *cip = key->wk_cipher; + + ASSERT(cip != NULL); + + ieee80211_dbg(IEEE80211_MSG_CRYPTO, "ieee80211_crypto_setkey: " + "%s keyix %u flags 0x%x mac %s len %u\n", + cip->ic_name, key->wk_keyix, key->wk_flags, + ieee80211_macaddr_sprintf(macaddr), key->wk_keylen); + + /* + * Give cipher a chance to validate key contents. + * should happen before modifying state. + */ + if (cip->ic_setkey(key) == 0) { + ieee80211_dbg(IEEE80211_MSG_CRYPTO, "ieee80211_crypto_setkey: " + "cipher %s rejected key index %u len %u flags 0x%x\n", + cip->ic_name, key->wk_keyix, key->wk_keylen, + key->wk_flags); + return (0); + } + if (key->wk_keyix == IEEE80211_KEYIX_NONE) { + ieee80211_dbg(IEEE80211_MSG_CRYPTO, "ieee80211_crypto_setkey: " + "no key index; should not happen!\n"); + return (0); + } + return (DEV_KEY_SET(ic, key, macaddr)); +} + +/* + * Return the transmit key to use in sending a frame. + */ +struct ieee80211_key * +ieee80211_crypto_getkey(ieee80211com_t *ic) +{ + if (ic->ic_def_txkey == IEEE80211_KEYIX_NONE || + KEY_UNDEFINED(ic->ic_nw_keys[ic->ic_def_txkey])) + return (NULL); + return (&ic->ic_nw_keys[ic->ic_def_txkey]); +} + +uint8_t +ieee80211_crypto_getciphertype(ieee80211com_t *ic) +{ + struct ieee80211_key *key; + uint32_t cipher; + static const uint8_t ciphermap[] = { + WIFI_SEC_WEP, /* IEEE80211_CIPHER_WEP */ + (uint8_t)-1, /* IEEE80211_CIPHER_TKIP */ + (uint8_t)-1, /* IEEE80211_CIPHER_AES_OCB */ + (uint8_t)-1, /* IEEE80211_CIPHER_AES_CCM */ + (uint8_t)-1, /* 4 is not allocated */ + (uint8_t)-1, /* IEEE80211_CIPHER_CKIP */ + WIFI_SEC_NONE, /* IEEE80211_CIPHER_NONE */ + }; + + if ((ic->ic_flags & IEEE80211_F_PRIVACY) == 0) + return (WIFI_SEC_NONE); + + key = ieee80211_crypto_getkey(ic); + if (key == NULL) + return (WIFI_SEC_NONE); + + cipher = key->wk_cipher->ic_cipher; + ASSERT(cipher < IEEE80211_N(ciphermap)); + return (ciphermap[cipher]); +} + +/* + * Add privacy headers appropriate for the specified key. + */ +struct ieee80211_key * +ieee80211_crypto_encap(ieee80211com_t *ic, mblk_t *mp) +{ + struct ieee80211_key *k; + const struct ieee80211_cipher *cip; + uint8_t keyix; + + if (ic->ic_def_txkey == IEEE80211_KEYIX_NONE) { + ieee80211_dbg(IEEE80211_MSG_CRYPTO, + "ieee80211_crypto_encap: %s", + " No default xmit key for frame\n"); + return (NULL); + } + keyix = ic->ic_def_txkey; + k = &ic->ic_nw_keys[ic->ic_def_txkey]; + cip = k->wk_cipher; + return (cip->ic_encap(k, mp, keyix<<6) ? k : NULL); +} + +/* + * Validate and strip privacy headers (and trailer) for a + * received frame that has the WEP/Privacy bit set. + */ +struct ieee80211_key * +ieee80211_crypto_decap(ieee80211com_t *ic, mblk_t *mp, int hdrlen) +{ + struct ieee80211_key *k; + const struct ieee80211_cipher *cip; + uint8_t *ivp; + uint8_t keyid; + + /* NB: this minimum size data frame could be bigger */ + if ((mp->b_wptr - mp->b_rptr) < IEEE80211_WEP_MINLEN) { + ieee80211_dbg(IEEE80211_MSG_CRYPTO, "ieee80211_crypto_decap:" + " WEP data frame too short, len %u\n", + mp->b_wptr - mp->b_rptr); + return (NULL); + } + /* + * Locate the key. If unicast and there is no unicast + * key then we fall back to the key id in the header. + * This assumes unicast keys are only configured when + * the key id in the header is meaningless (typically 0). + */ + ivp = mp->b_rptr + hdrlen; + keyid = ivp[IEEE80211_WEP_IVLEN]; + k = &ic->ic_nw_keys[keyid >> 6]; + + /* check to avoid panic when wep is on but key is not set */ + if (k->wk_cipher == &ieee80211_cipher_none || + k->wk_cipher == NULL) + return (NULL); + + cip = k->wk_cipher; + return ((cip->ic_decap)(k, mp, hdrlen) ? k : NULL); +} + + +/* + * Setup crypto support. + */ +void +ieee80211_crypto_attach(ieee80211com_t *ic) +{ + struct ieee80211_crypto_state *cs = &ic->ic_crypto; + int i; + + /* NB: we assume everything is pre-zero'd */ + cs->cs_def_txkey = IEEE80211_KEYIX_NONE; + for (i = 0; i < IEEE80211_WEP_NKID; i++) { + ieee80211_crypto_resetkey(ic, &cs->cs_nw_keys[i], + IEEE80211_KEYIX_NONE); + } + + /* + * Initialize the driver key support routines to noop entries. + * This is useful especially for the cipher test modules. + */ + cs->cs_key_alloc = nulldev_key_alloc; + cs->cs_key_set = nulldev_key_set; + cs->cs_key_delete = nulldev_key_delete; + cs->cs_key_update_begin = nulldev_key_update; + cs->cs_key_update_end = nulldev_key_update; + + ieee80211_crypto_register(&wep); +} + +/* + * Teardown crypto support. + */ +void +ieee80211_crypto_detach(ieee80211com_t *ic) +{ + ieee80211_crypto_delglobalkeys(ic); + + ieee80211_crypto_unregister(&wep); +} + +/* + * Register a crypto cipher module. + */ +void +ieee80211_crypto_register(const struct ieee80211_cipher *cip) +{ + if (cip->ic_cipher >= IEEE80211_CIPHER_MAX) { + ieee80211_err("ieee80211_crypto_register: " + "cipher %s has an invalid cipher index %u\n", + cip->ic_name, cip->ic_cipher); + return; + } + if (ciphers[cip->ic_cipher] != NULL && ciphers[cip->ic_cipher] != cip) { + ieee80211_err("ieee80211_crypto_register: " + "cipher %s registered with a different template\n", + cip->ic_name); + return; + } + ciphers[cip->ic_cipher] = cip; +} + +/* + * Unregister a crypto cipher module. + */ +void +ieee80211_crypto_unregister(const struct ieee80211_cipher *cip) +{ + if (cip->ic_cipher >= IEEE80211_CIPHER_MAX) { + ieee80211_err("ieee80211_crypto_unregister: " + "cipher %s has an invalid cipher index %u\n", + cip->ic_name, cip->ic_cipher); + return; + } + if (ciphers[cip->ic_cipher] != NULL && ciphers[cip->ic_cipher] != cip) { + ieee80211_err("ieee80211_crypto_unregister: " + "cipher %s registered with a different template\n", + cip->ic_name); + return; + } + /* NB: don't complain about not being registered */ + ciphers[cip->ic_cipher] = NULL; +} diff --git a/usr/src/uts/common/io/net80211/net80211_crypto_none.c b/usr/src/uts/common/io/net80211/net80211_crypto_none.c new file mode 100644 index 0000000000..6f2200258c --- /dev/null +++ b/usr/src/uts/common/io/net80211/net80211_crypto_none.c @@ -0,0 +1,131 @@ +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +/* + * Copyright (c) 2001 Atsushi Onoe + * Copyright (c) 2002-2005 Sam Leffler, Errno Consulting + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * Alternatively, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2 as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +/* + * IEEE 802.11 NULL crypto support. + */ +#include "net80211_impl.h" + +static void *none_attach(struct ieee80211com *, struct ieee80211_key *); +static void none_detach(struct ieee80211_key *); +static int none_setkey(struct ieee80211_key *); +static int none_encap(struct ieee80211_key *, mblk_t *, uint8_t); +static int none_decap(struct ieee80211_key *, mblk_t *, int); +static int none_enmic(struct ieee80211_key *, mblk_t *, int); +static int none_demic(struct ieee80211_key *, mblk_t *, int); + +const struct ieee80211_cipher ieee80211_cipher_none = { + "NONE", + IEEE80211_CIPHER_NONE, + 0, + 0, + 0, + none_attach, + none_detach, + none_setkey, + none_encap, + none_decap, + none_enmic, + none_demic, +}; + +/* ARGSUSED */ +static void * +none_attach(struct ieee80211com *ic, struct ieee80211_key *k) +{ + return (ic); /* for diagnostics+stats */ +} + +/* ARGSUSED */ +static void +none_detach(struct ieee80211_key *k) +{ + /* noop */ +} + +/* ARGSUSED */ +static int +none_setkey(struct ieee80211_key *k) +{ + return (1); +} + +/* ARGSUSED */ +static int +none_encap(struct ieee80211_key *k, mblk_t *mp, uint8_t keyid) +{ + /* + * The specified key is not setup; this can + * happen, at least, when changing keys. + */ + ieee80211_dbg(IEEE80211_MSG_CRYPTO, "none_encap: " + "key id %u is not set (encap)\n", keyid >> 6); + return (0); +} + +/* ARGSUSED */ +static int +none_decap(struct ieee80211_key *k, mblk_t *mp, int hdrlen) +{ + struct ieee80211_frame *wh = (struct ieee80211_frame *)mp->b_rptr; + const uint8_t *ivp = (const uint8_t *)&wh[1]; + + /* + * The specified key is not setup; this can + * happen, at least, when changing keys. + */ + ieee80211_dbg(IEEE80211_MSG_CRYPTO, "none_decap" + "key id %u is not set (decap)\n", + ivp[IEEE80211_WEP_IVLEN] >> 6); + return (0); +} + +/* ARGSUSED */ +static int +none_enmic(struct ieee80211_key *k, mblk_t *mp, int force) +{ + return (0); +} + +/* ARGSUSED */ +static int +none_demic(struct ieee80211_key *k, mblk_t *mp, int force) +{ + return (0); +} diff --git a/usr/src/uts/common/io/net80211/net80211_crypto_wep.c b/usr/src/uts/common/io/net80211/net80211_crypto_wep.c new file mode 100644 index 0000000000..5141a3c25a --- /dev/null +++ b/usr/src/uts/common/io/net80211/net80211_crypto_wep.c @@ -0,0 +1,420 @@ +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +/* + * Copyright (c) 2001 Atsushi Onoe + * Copyright (c) 2002-2005 Sam Leffler, Errno Consulting + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * Alternatively, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2 as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +/* + * IEEE 802.11 WEP crypto support. + */ +#include <sys/byteorder.h> +#include <sys/crypto/common.h> +#include <sys/crypto/api.h> +#include <sys/crc32.h> +#include <sys/random.h> +#include "net80211_impl.h" + +static void *wep_attach(struct ieee80211com *, struct ieee80211_key *); +static void wep_detach(struct ieee80211_key *); +static int wep_setkey(struct ieee80211_key *); +static int wep_encap(struct ieee80211_key *, mblk_t *, uint8_t keyid); +static int wep_decap(struct ieee80211_key *, mblk_t *, int); +static int wep_enmic(struct ieee80211_key *, mblk_t *, int); +static int wep_demic(struct ieee80211_key *, mblk_t *, int); + +const struct ieee80211_cipher wep = { + "WEP", + IEEE80211_CIPHER_WEP, + IEEE80211_WEP_IVLEN + IEEE80211_WEP_KIDLEN, + IEEE80211_WEP_CRCLEN, + 0, + wep_attach, + wep_detach, + wep_setkey, + wep_encap, + wep_decap, + wep_enmic, + wep_demic, +}; + +int rc4_init(crypto_context_t *, const uint8_t *, int); +int rc4_crypt(crypto_context_t, const uint8_t *, uint8_t *, int); +int rc4_final(crypto_context_t, uint8_t *, int); + +static int wep_encrypt(struct ieee80211_key *, mblk_t *, int); +static int wep_decrypt(struct ieee80211_key *, mblk_t *, int); + +struct wep_ctx { + ieee80211com_t *wc_ic; /* for diagnostics */ + uint32_t wc_iv; /* initial vector for crypto */ +}; + +/* Table of CRCs of all 8-bit messages */ +static uint32_t crc_table[] = { CRC32_TABLE }; + +/* ARGSUSED */ +static void * +wep_attach(struct ieee80211com *ic, struct ieee80211_key *k) +{ + struct wep_ctx *ctx; + + ctx = kmem_zalloc(sizeof (struct wep_ctx), KM_NOSLEEP); + if (ctx == NULL) + return (NULL); + + ctx->wc_ic = ic; + (void) random_get_pseudo_bytes((unsigned char *)&ctx->wc_iv, + sizeof (uint32_t)); + return (ctx); +} + +static void +wep_detach(struct ieee80211_key *k) +{ + struct wep_ctx *ctx = k->wk_private; + + if (ctx != NULL) + kmem_free(ctx, sizeof (struct wep_ctx)); +} + +static int +wep_setkey(struct ieee80211_key *k) +{ + /* + * WEP key length is standardized to 40-bit. Many + * implementations support 104-bit WEP kwys. + */ + return (k->wk_keylen == 40/NBBY || k->wk_keylen == 104/NBBY); +} + +/* + * Add privacy headers appropriate for the specified key. + */ +static int +wep_encap(struct ieee80211_key *k, mblk_t *mp, uint8_t keyid) +{ + struct wep_ctx *ctx = k->wk_private; + struct ieee80211_frame *wh = (struct ieee80211_frame *)mp->b_rptr; + uint32_t iv; + uint8_t *ivp; + int hdrlen; + + if (mp == NULL) + return (0); + hdrlen = ieee80211_hdrspace(wh); + + ivp = (uint8_t *)wh; + ivp += hdrlen; + + /* + * IV must not duplicate during the lifetime of the key. + * But no mechanism to renew keys is defined in IEEE 802.11 + * WEP. And IV may be duplicated between other stations + * because of the session key itself is shared. + * So we use pseudo random IV for now, though it is not the + * right way. + */ + iv = ctx->wc_iv; + /* + * Skip 'bad' IVs from Fluhrer/Mantin/Shamir: + * (B, 255, N) with 3 <= B < 8 + */ + if ((iv & 0xff00) == 0xff00) { + int B = (iv & 0xff0000) >> 16; + if (3 <= B && B < 16) + iv = (B+1) << 16; + } + ctx->wc_iv = iv + 1; + + ivp[2] = (uint8_t)(iv >> 0); + ivp[1] = (uint8_t)(iv >> 8); + ivp[0] = (uint8_t)(iv >> 16); + + /* Key ID and pad */ + ivp[IEEE80211_WEP_IVLEN] = keyid; + + if ((k->wk_flags & IEEE80211_KEY_SWCRYPT) && + (wep_encrypt(k, mp, hdrlen) == 0)) + return (0); + + return (1); +} + +/* + * Validate and strip privacy headers (and trailer) for a + * received frame. If necessary, decrypt the frame using + * the specified key. + */ +static int +wep_decap(struct ieee80211_key *k, mblk_t *mp, int hdrlen) +{ + struct ieee80211_frame *wh, whbuf; + + wh = (struct ieee80211_frame *)mp->b_rptr; + + /* + * Check if the device handled the decrypt in hardware. + * If so we just strip the header; otherwise we need to + * handle the decrypt in software. + */ + if ((k->wk_flags & IEEE80211_KEY_SWCRYPT) && + (wep_decrypt(k, mp, hdrlen) == 0)) { + ieee80211_err("WEP ICV mismatch on decrypt\n"); + return (0); + } + + /* + * Copy up 802.11 header and strip crypto bits. + */ + bcopy(wh, &whbuf, sizeof (whbuf)); + mp->b_rptr += wep.ic_header; + bcopy(&whbuf, mp->b_rptr, hdrlen); + mp->b_wptr -= wep.ic_trailer; + + return (1); +} + +/* + * Add MIC to the frame as needed. + */ +/* ARGSUSED */ +static int +wep_enmic(struct ieee80211_key *k, mblk_t *mp, int force) +{ + return (1); +} + +/* + * Verify and strip MIC from the frame. + */ +/* ARGSUSED */ +static int +wep_demic(struct ieee80211_key *k, mblk_t *mp, int force) +{ + return (1); +} + +static int +wep_encrypt(struct ieee80211_key *key, mblk_t *mp, int hdrlen) +{ + uint8_t rc4key[IEEE80211_WEP_IVLEN + IEEE80211_KEYBUF_SIZE]; + uint8_t crcbuf[IEEE80211_WEP_CRCLEN]; + uint8_t *icv; + uint32_t crc; + crypto_context_t ctx; + int rv; + + ASSERT(key->wk_flags & IEEE80211_KEY_SWCRYPT); + + /* ctx->wc_ic->isc_stats.is_crypto_wep++; */ + + (void) memcpy(rc4key, mp->b_rptr + hdrlen, IEEE80211_WEP_IVLEN); + (void) memcpy(rc4key + IEEE80211_WEP_IVLEN, key->wk_key, + key->wk_keylen); + + ctx = NULL; + rv = rc4_init(&ctx, (const uint8_t *)rc4key, + IEEE80211_WEP_IVLEN + key->wk_keylen); + + if (rv != CRYPTO_SUCCESS) + return (0); + + /* calculate CRC over unencrypted data */ + CRC32(crc, mp->b_rptr + hdrlen + wep.ic_header, + mp->b_wptr - mp->b_rptr - (hdrlen + wep.ic_header), + -1U, crc_table); + + /* encrypt data */ + (void) rc4_crypt(ctx, + mp->b_rptr + hdrlen + wep.ic_header, + mp->b_rptr + hdrlen + wep.ic_header, + mp->b_wptr - mp->b_rptr - (hdrlen + wep.ic_header)); + + /* tack on ICV */ + *(uint32_t *)crcbuf = LE_32(~crc); + icv = mp->b_wptr; + mp->b_wptr += IEEE80211_WEP_CRCLEN; + (void) rc4_crypt(ctx, crcbuf, icv, IEEE80211_WEP_CRCLEN); + + (void) rc4_final(ctx, icv, IEEE80211_WEP_CRCLEN); + + return (1); +} + +static int +wep_decrypt(struct ieee80211_key *key, mblk_t *mp, int hdrlen) +{ + uint8_t rc4key[IEEE80211_WEP_IVLEN + IEEE80211_KEYBUF_SIZE]; + uint8_t crcbuf[IEEE80211_WEP_CRCLEN]; + uint8_t *icv; + uint32_t crc; + crypto_context_t ctx; + int rv; + + ASSERT(key->wk_flags & IEEE80211_KEY_SWCRYPT); + + /* ctx->wc_ic->isc_stats.is_crypto_wep++; */ + + (void) memcpy(rc4key, mp->b_rptr + hdrlen, IEEE80211_WEP_IVLEN); + (void) memcpy(rc4key + IEEE80211_WEP_IVLEN, key->wk_key, + key->wk_keylen); + + ctx = NULL; + rv = rc4_init(&ctx, (const uint8_t *)rc4key, + IEEE80211_WEP_IVLEN + key->wk_keylen); + + if (rv != CRYPTO_SUCCESS) + return (0); + + /* decrypt data */ + (void) rc4_crypt(ctx, + mp->b_rptr + hdrlen + wep.ic_header, + mp->b_rptr + hdrlen + wep.ic_header, + mp->b_wptr - mp->b_rptr - + (hdrlen + wep.ic_header + wep.ic_trailer)); + + /* calculate CRC over unencrypted data */ + CRC32(crc, mp->b_rptr + hdrlen + wep.ic_header, + mp->b_wptr - mp->b_rptr - + (hdrlen + wep.ic_header + wep.ic_trailer), + -1U, crc_table); + + /* decrypt ICV and compare to CRC */ + icv = mp->b_wptr - IEEE80211_WEP_CRCLEN; + (void) rc4_crypt(ctx, icv, crcbuf, IEEE80211_WEP_CRCLEN); + + (void) rc4_final(ctx, crcbuf, IEEE80211_WEP_CRCLEN); + + return (crc == ~LE_32(*(uint32_t *)crcbuf)); +} + +/* + * rc_init() - To init the key, for multiply encryption/decryption + * Using the Kernel encryption framework + */ +int +rc4_init(crypto_context_t *ctx, const uint8_t *key, int keylen) +{ + crypto_mechanism_t mech; + crypto_key_t crkey; + int rv; + + bzero(&crkey, sizeof (crkey)); + + crkey.ck_format = CRYPTO_KEY_RAW; + crkey.ck_data = (char *)key; + /* keys are measured in bits, not bytes, so multiply by 8 */ + crkey.ck_length = keylen * 8; + + mech.cm_type = crypto_mech2id(SUN_CKM_RC4); + mech.cm_param = NULL; + mech.cm_param_len = 0; + + rv = crypto_encrypt_init(&mech, &crkey, NULL, ctx, NULL); + if (rv != CRYPTO_SUCCESS) + cmn_err(CE_WARN, "rc4_init failed (%x)", rv); + + return (rv); +} + +/* + * rc4_crypt + * + * Use the Kernel encryption framework to provide the + * crypto operations for the indicated data. + */ +int +rc4_crypt(crypto_context_t ctx, const uint8_t *inbuf, + uint8_t *outbuf, int buflen) +{ + int rv = CRYPTO_FAILED; + + crypto_data_t d1, d2; + + ASSERT(inbuf != NULL); + ASSERT(outbuf != NULL); + + bzero(&d1, sizeof (d1)); + bzero(&d2, sizeof (d2)); + + d1.cd_format = CRYPTO_DATA_RAW; + d1.cd_offset = 0; + d1.cd_length = buflen; + d1.cd_raw.iov_base = (char *)inbuf; + d1.cd_raw.iov_len = buflen; + + d2.cd_format = CRYPTO_DATA_RAW; + d2.cd_offset = 0; + d2.cd_length = buflen; + d2.cd_raw.iov_base = (char *)outbuf; + d2.cd_raw.iov_len = buflen; + + rv = crypto_encrypt_update(ctx, &d1, &d2, NULL); + + if (rv != CRYPTO_SUCCESS) + cmn_err(CE_WARN, "rc4_crypt failed (%x)", rv); + return (rv); +} + +/* + * rc4_final + * + * Use the Kernel encryption framework to provide the + * crypto operations for the indicated data. + */ +int +rc4_final(crypto_context_t ctx, uint8_t *outbuf, int buflen) +{ + int rv = CRYPTO_FAILED; + + crypto_data_t d2; + + ASSERT(outbuf != NULL); + + bzero(&d2, sizeof (d2)); + + d2.cd_format = CRYPTO_DATA_RAW; + d2.cd_offset = 0; + d2.cd_length = buflen; + d2.cd_raw.iov_base = (char *)outbuf; + d2.cd_raw.iov_len = buflen; + + rv = crypto_encrypt_final(ctx, &d2, NULL); + + if (rv != CRYPTO_SUCCESS) + cmn_err(CE_WARN, "rc4_final failed (%x)", rv); + return (rv); +} diff --git a/usr/src/uts/common/io/net80211/net80211_impl.h b/usr/src/uts/common/io/net80211/net80211_impl.h new file mode 100644 index 0000000000..2b535f4170 --- /dev/null +++ b/usr/src/uts/common/io/net80211/net80211_impl.h @@ -0,0 +1,408 @@ +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +/* + * Copyright (c) 2001 Atsushi Onoe + * Copyright (c) 2002-2005 Sam Leffler, Errno Consulting + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * Alternatively, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2 as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +#ifndef _SYS_NET80211_IMPL_H +#define _SYS_NET80211_IMPL_H + +#include <sys/sysmacros.h> +#include <sys/list.h> +#include <sys/note.h> +#include <sys/net80211_proto.h> +#include <sys/net80211.h> +#include <sys/mac_wifi.h> + +/* + * IEEE802.11 kernel support module + */ + +#ifdef __cplusplus +extern "C" { +#endif + +#define IEEE80211_TXPOWER_MAX 100 /* .5 dbM */ +#define IEEE80211_TXPOWER_MIN 0 /* kill radio */ + +#define IEEE80211_DTIM_MAX 15 /* max DTIM period */ +#define IEEE80211_DTIM_MIN 1 /* min DTIM period */ +#define IEEE80211_DTIM_DEFAULT 1 /* default DTIM period */ + +/* NB: min+max come from WiFi requirements */ +#define IEEE80211_BINTVAL_MAX 1000 /* max beacon interval (TU's) */ +#define IEEE80211_BINTVAL_MIN 25 /* min beacon interval (TU's) */ +#define IEEE80211_BINTVAL_DEFAULT 100 /* default beacon interval (TU's) */ + +#define IEEE80211_BMISS_MAX 2 /* maximum consecutive bmiss allowed */ +#define IEEE80211_SWBMISS_THRESHOLD 50 /* s/w bmiss threshold (TU's) */ +#define IEEE80211_HWBMISS_DEFAULT 7 /* h/w bmiss threshold (beacons) */ + +#define IEEE80211_PS_SLEEP 0x1 /* STA is in power saving mode */ +#define IEEE80211_PS_MAX_QUEUE 50 /* maximum saved packets */ + +#define IEEE80211_RTS_DEFAULT IEEE80211_RTS_MAX +#define IEEE80211_FRAG_DEFAULT IEEE80211_FRAG_MAX + +/* + * The RSSI values of two node are taken as almost the same when + * the difference between these two node's RSSI values is within + * IEEE80211_RSSI_CMP_THRESHOLD + */ +#define IEEE80211_RSSI_CMP_THRESHOLD 5 + +/* + * Each ieee80211com instance has a single timer that fires once a + * second. This is used to initiate various work depending on the + * state of the instance: scanning (passive or active), ``transition'' + * (waiting for a response to a management frame when operating + * as a station), and node inactivity processing (when operating + * as an AP). For inactivity processing each node has a timeout + * set in it's in_inact field that is decremented on each timeout + * and the node is reclaimed when the counter goes to zero. We + * use different inactivity timeout values depending on whether + * the node is associated and authorized (either by 802.1x or + * open/shared key authentication) or associated but yet to be + * authorized. The latter timeout is shorter to more aggressively + * reclaim nodes that leave part way through the 802.1x exchange. + * + * IEEE80211_INACT_WAIT defines node table's inactivity interval in + * seconds. On timeout, node table's registered nt_timeout callback + * function is executed. Each node in the node table has a timeout + * set in its in_inact field with IEEE80211_INACT_<state>. In + * nt_timeout function, node table is iterated and each node's + * in_inact is decremented. So IEEE80211_INACT_<state> is defined in + * the form [inact_sec]/IEEE80211_INACT_WAIT. + * + */ +#define IEEE80211_INACT_WAIT 15 /* inactivity interval (secs) */ +#define IEEE80211_INACT_INIT (30/IEEE80211_INACT_WAIT) /* initial */ +#define IEEE80211_INACT_ASSOC (180/IEEE80211_INACT_WAIT) + /* associated but not authorized */ +#define IEEE80211_INACT_RUN (300/IEEE80211_INACT_WAIT) /* authorized */ +#define IEEE80211_INACT_PROBE (30/IEEE80211_INACT_WAIT) /* probe */ +#define IEEE80211_INACT_SCAN (300/IEEE80211_INACT_WAIT) /* scanned */ + +#define IEEE80211_TRANS_WAIT 5 /* mgt frame tx timer (secs) */ + +/* + * Useful combinations of channel characteristics. + */ +#define IEEE80211_CHAN_FHSS \ + (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_GFSK) +#define IEEE80211_CHAN_A \ + (IEEE80211_CHAN_5GHZ | IEEE80211_CHAN_OFDM) +#define IEEE80211_CHAN_B \ + (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_CCK) +#define IEEE80211_CHAN_PUREG \ + (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_OFDM) +#define IEEE80211_CHAN_G \ + (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_DYN) +#define IEEE80211_CHAN_T \ + (IEEE80211_CHAN_5GHZ | IEEE80211_CHAN_OFDM | IEEE80211_CHAN_TURBO) +#define IEEE80211_CHAN_108G \ + (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_OFDM | IEEE80211_CHAN_TURBO) + +#define IEEE80211_CHAN_ALL \ + (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_5GHZ | IEEE80211_CHAN_GFSK | \ + IEEE80211_CHAN_CCK | IEEE80211_CHAN_OFDM | IEEE80211_CHAN_DYN) +#define IEEE80211_CHAN_ALLTURBO \ + (IEEE80211_CHAN_ALL | IEEE80211_CHAN_TURBO) + +#define IEEE80211_IS_CHAN_FHSS(_c) \ + (((_c)->ich_flags & IEEE80211_CHAN_FHSS) == IEEE80211_CHAN_FHSS) +#define IEEE80211_IS_CHAN_A(_c) \ + (((_c)->ich_flags & IEEE80211_CHAN_A) == IEEE80211_CHAN_A) +#define IEEE80211_IS_CHAN_B(_c) \ + (((_c)->ich_flags & IEEE80211_CHAN_B) == IEEE80211_CHAN_B) +#define IEEE80211_IS_CHAN_PUREG(_c) \ + (((_c)->ich_flags & IEEE80211_CHAN_PUREG) == IEEE80211_CHAN_PUREG) +#define IEEE80211_IS_CHAN_G(_c) \ + (((_c)->ich_flags & IEEE80211_CHAN_G) == IEEE80211_CHAN_G) +#define IEEE80211_IS_CHAN_ANYG(_c) \ + (IEEE80211_IS_CHAN_PUREG(_c) || IEEE80211_IS_CHAN_G(_c)) +#define IEEE80211_IS_CHAN_T(_c) \ + (((_c)->ich_flags & IEEE80211_CHAN_T) == IEEE80211_CHAN_T) +#define IEEE80211_IS_CHAN_108G(_c) \ + (((_c)->ich_flags & IEEE80211_CHAN_108G) == IEEE80211_CHAN_108G) + +#define IEEE80211_IS_CHAN_OFDM(_c) \ + ((_c)->ich_flags & IEEE80211_CHAN_OFDM) +#define IEEE80211_IS_CHAN_CCK(_c) \ + ((_c)->ich_flags & IEEE80211_CHAN_CCK) +#define IEEE80211_IS_CHAN_GFSK(_c) \ + ((_c)->ich_flags & IEEE80211_CHAN_GFSK) +#define IEEE80211_IS_CHAN_PASSIVE(_c) \ + ((_c)->ich_flags & IEEE80211_CHAN_PASSIVE) + +/* ni_chan encoding for FH phy */ +#define IEEE80211_FH_CHANMOD 80 +#define IEEE80211_FH_CHAN(set, pat) \ + (((set) - 1) * IEEE80211_FH_CHANMOD + (pat)) +#define IEEE80211_FH_CHANSET(chan) \ + ((chan) / IEEE80211_FH_CHANMOD + 1) +#define IEEE80211_FH_CHANPAT(chan) \ + ((chan) % IEEE80211_FH_CHANMOD) + +#define IEEE80211_NODE_AUTH 0x0001 /* authorized for data */ +#define IEEE80211_NODE_QOS 0x0002 /* QoS enabled */ +#define IEEE80211_NODE_ERP 0x0004 /* ERP enabled */ +#define IEEE80211_NODE_PWR_MGT 0x0010 /* power save mode enabled */ +#define IEEE80211_NODE_AREF 0x0020 /* authentication ref held */ + +#define IEEE80211_MAXRSSI 127 + +/* Debug Flags */ +#define IEEE80211_MSG_DEBUG 0x40000000 /* IFF_DEBUG equivalent */ +#define IEEE80211_MSG_DUMPPKTS 0x20000000 /* IFF_LINK2 equivalant */ +#define IEEE80211_MSG_CRYPTO 0x10000000 /* crypto work */ +#define IEEE80211_MSG_INPUT 0x08000000 /* input handling */ +#define IEEE80211_MSG_XRATE 0x04000000 /* rate set handling */ +#define IEEE80211_MSG_ELEMID 0x02000000 /* element id parsing */ +#define IEEE80211_MSG_NODE 0x01000000 /* node handling */ +#define IEEE80211_MSG_ASSOC 0x00800000 /* association handling */ +#define IEEE80211_MSG_AUTH 0x00400000 /* authentication handling */ +#define IEEE80211_MSG_SCAN 0x00200000 /* scanning */ +#define IEEE80211_MSG_OUTPUT 0x00100000 /* output handling */ +#define IEEE80211_MSG_STATE 0x00080000 /* state machine */ +#define IEEE80211_MSG_POWER 0x00040000 /* power save handling */ +#define IEEE80211_MSG_DOT1X 0x00020000 /* 802.1x authenticator */ +#define IEEE80211_MSG_DOT1XSM 0x00010000 /* 802.1x state machine */ +#define IEEE80211_MSG_RADIUS 0x00008000 /* 802.1x radius client */ +#define IEEE80211_MSG_RADDUMP 0x00004000 /* dump 802.1x radius packets */ +#define IEEE80211_MSG_RADKEYS 0x00002000 /* dump 802.1x keys */ +#define IEEE80211_MSG_WPA 0x00001000 /* WPA/RSN protocol */ +#define IEEE80211_MSG_ACL 0x00000800 /* ACL handling */ +#define IEEE80211_MSG_WME 0x00000400 /* WME protocol */ +#define IEEE80211_MSG_SUPERG 0x00000200 /* Atheros SuperG protocol */ +#define IEEE80211_MSG_DOTH 0x00000100 /* 802.11h support */ +#define IEEE80211_MSG_INACT 0x00000080 /* inactivity handling */ +#define IEEE80211_MSG_ROAM 0x00000040 /* sta-mode roaming */ +#define IEEE80211_MSG_CONFIG 0x00000020 /* wificonfig/dladm */ +#define IEEE80211_MSG_ANY 0xffffffff /* anything */ + +/* Error flags returned by ieee80211_match_bss */ +#define IEEE80211_BADCHAN 0x01 +#define IEEE80211_BADOPMODE 0x02 +#define IEEE80211_BADPRIVACY 0x04 +#define IEEE80211_BADRATE 0x08 +#define IEEE80211_BADESSID 0x10 +#define IEEE80211_BADBSSID 0x20 +#define IEEE80211_NODEFAIL 0x40 + +typedef struct ieee80211_impl { + struct ieee80211com *ic; + uint8_t im_chan_avail[IEEE80211_CHAN_BYTES]; + uint8_t im_chan_scan[IEEE80211_CHAN_BYTES]; + + uint8_t im_bmiss_count; /* current beacon miss count */ + int32_t im_bmiss_max; /* max bmiss before scan */ + timeout_id_t im_swbmiss; + uint16_t im_swbmiss_count; /* beacons in last period */ + uint16_t im_swbmiss_period; /* s/w bmiss period */ + + int32_t im_mgt_timer; /* mgmt timeout, secs */ + int32_t im_inact_timer; /* inactivity timer wait, sec */ + int32_t im_inact_init; /* initial setting */ + int32_t im_inact_assoc; /* assoc but not authorized */ + int32_t im_inact_run; /* authorized setting */ + int32_t im_inact_probe; /* inactive probe time */ + + kcondvar_t im_scan_cv; /* wait scan complete */ +} ieee80211_impl_t; + +/* + * Parameters supplied when adding/updating an entry in a + * scan cache. Pointer variables should be set to NULL + * if no data is available. Pointer references can be to + * local data; any information that is saved will be copied. + * All multi-byte values must be in host byte order. + */ +struct ieee80211_scanparams { + uint16_t capinfo; /* 802.11 capabilities */ + enum ieee80211_phytype phytype; + uint16_t fhdwell; /* FHSS dwell interval */ + uint8_t chan; + uint8_t bchan; + uint8_t fhindex; + uint8_t erp; + uint16_t bintval; + uint8_t timoff; + uint8_t *tim; + uint8_t *tstamp; + uint8_t *country; + uint8_t *ssid; + uint8_t *rates; + uint8_t *xrates; + uint8_t *wpa; + uint8_t *wme; +}; + +#define IEEE80211_SEND_MGMT(_ic, _in, _type, _arg) \ + ((*(_ic)->ic_send_mgmt)((_ic), (_in), (_type), (_arg))) + +/* Verify the existence and length of __elem or get out. */ +#define IEEE80211_VERIFY_ELEMENT(__elem, __maxlen, __func) do { \ + _NOTE(CONSTCOND) \ + if ((__elem) == NULL) { \ + ieee80211_err("ieee80211: no #__elem \n"); \ + __func; \ + } \ + if ((__elem)[1] > (__maxlen)) { \ + ieee80211_err("ieee80211: bad "#__elem " len %d\n", \ + (__elem)[1]); \ + __func; \ + } \ + _NOTE(CONSTCOND) \ +} while (0) + +#define IEEE80211_VERIFY_LENGTH(_len, _minlen, _func) do { \ + _NOTE(CONSTCOND) \ + if ((_len) < (_minlen)) { \ + ieee80211_dbg(IEEE80211_MSG_ELEMID, \ + "ie of type %s too short", \ + ieee80211_mgt_subtype_name[subtype >> \ + IEEE80211_FC0_SUBTYPE_SHIFT]); \ + _func; \ + } \ + _NOTE(CONSTCOND) \ +} while (0) + +#define IEEE80211_VERIFY_SSID(_in, _ssid, _func) do { \ + _NOTE(CONSTCOND) \ + ASSERT((_in) != NULL); \ + if ((_ssid)[1] != 0 && \ + ((_ssid)[1] != (_in)->in_esslen || \ + bcmp((_ssid) + 2, (_in)->in_essid, (_ssid)[1]) != 0)) { \ + _func; \ + } \ + _NOTE(CONSTCOND) \ +} while (0) + +#define ieee80211_setbit(a, i) ((a)[(i)/NBBY] |= (1 << ((i)%NBBY))) +#define ieee80211_clrbit(a, i) ((a)[(i)/NBBY] &= ~(1 << ((i)%NBBY))) +#define ieee80211_isset(a, i) ((a)[(i)/NBBY] & (1 << ((i)%NBBY))) +#define ieee80211_isclr(a, i) (!((a)[(i)/NBBY] & (1 << ((i)%NBBY)))) + +#define IEEE80211_N(a) (sizeof (a) / sizeof (a[0])) + +#define IEEE80211_LOCK(_ic) \ + mutex_enter(&(_ic)->ic_genlock) +#define IEEE80211_UNLOCK(_ic) \ + mutex_exit(&(_ic)->ic_genlock) +#define IEEE80211_IS_LOCKED(_ic) \ + mutex_owned(&(_ic)->ic_genlock) +#define IEEE80211_LOCK_ASSERT(_ic) \ + ASSERT(mutex_owned(&(_ic)->ic_genlock)) + +#define IEEE80211_NODE_LOCK(_nt) \ + mutex_enter(&(_nt)->nt_nodelock) +#define IEEE80211_NODE_UNLOCK(_nt) \ + mutex_exit(&(_nt)->nt_nodelock) +#define IEEE80211_NODE_IS_LOCKED(_nt) \ + mutex_owned(&(_nt)->nt_nodelock) +#define IEEE80211_NODE_LOCK_ASSERT(_nt) \ + ASSERT(mutex_owned(&(_nt)->nt_nodelock)) +#define ieee80211_node_hash(addr) \ + (((uint8_t *)(addr))[IEEE80211_ADDR_LEN - 1] % IEEE80211_NODE_HASHSIZE) + +#define IEEE80211_SCAN_LOCK(_nt) mutex_enter(&(_nt)->nt_scanlock) +#define IEEE80211_SCAN_UNLOCK(_nt) mutex_exit(&(_nt)->nt_scanlock) + +#define IEEE80211_RV(v) ((v) & IEEE80211_RATE_VAL) + +#define IEEE80211_SUBTYPE_NAME(subtype) \ + ieee80211_mgt_subtype_name[(subtype) >> IEEE80211_FC0_SUBTYPE_SHIFT] + +extern const char *ieee80211_mgt_subtype_name[]; +extern const char *ieee80211_phymode_name[]; + +void ieee80211_err(const int8_t *, ...); +void ieee80211_dbg(uint32_t, const int8_t *, ...); +int ieee80211_hdrspace(const void *); + +/* node */ +void ieee80211_node_attach(ieee80211com_t *); +void ieee80211_node_lateattach(ieee80211com_t *); +void ieee80211_node_detach(ieee80211com_t *); +void ieee80211_reset_bss(ieee80211com_t *); +void ieee80211_cancel_scan(ieee80211com_t *); +void ieee80211_add_scan(ieee80211com_t *, const struct ieee80211_scanparams *, + const struct ieee80211_frame *, int, int, int); +void ieee80211_init_neighbor(ieee80211_node_t *, const struct ieee80211_frame *, + const struct ieee80211_scanparams *); +ieee80211_node_t *ieee80211_add_neighbor(ieee80211com_t *, + const struct ieee80211_frame *, const struct ieee80211_scanparams *); +void ieee80211_create_ibss(ieee80211com_t *, struct ieee80211_channel *); +ieee80211_node_t *ieee80211_fakeup_adhoc_node(ieee80211_node_table_t *, + const uint8_t *); +ieee80211_node_t *ieee80211_tmp_node(ieee80211com_t *, const uint8_t *); + +/* proto */ +void ieee80211_proto_attach(ieee80211com_t *); +int ieee80211_fix_rate(ieee80211_node_t *, int); +void ieee80211_setbasicrates(struct ieee80211_rateset *, + enum ieee80211_phymode); +void ieee80211_reset_erp(ieee80211com_t *); +void ieee80211_set_shortslottime(ieee80211com_t *, boolean_t); + +/* input */ +int ieee80211_setup_rates(ieee80211_node_t *, const uint8_t *, + const uint8_t *, int); +void ieee80211_recv_mgmt(ieee80211com_t *, mblk_t *, ieee80211_node_t *, + int, int, uint32_t); + +/* output */ +int ieee80211_send_probereq(ieee80211_node_t *, const uint8_t *, + const uint8_t *, const uint8_t *, const uint8_t *, size_t, const void *, + size_t); +int ieee80211_send_mgmt(ieee80211com_t *, ieee80211_node_t *, int, int); +int ieee80211_send_nulldata(ieee80211_node_t *); + +/* crypto */ +struct ieee80211_key *ieee80211_crypto_getkey(ieee80211com_t *); +uint8_t ieee80211_crypto_getciphertype(ieee80211com_t *); + +/* generic */ +mblk_t *ieee80211_getmgtframe(uint8_t **, int); +void ieee80211_notify_node_join(ieee80211com_t *, ieee80211_node_t *); +void ieee80211_notify_node_leave(ieee80211com_t *, ieee80211_node_t *); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_NET80211_IMPL_H */ diff --git a/usr/src/uts/common/io/net80211/net80211_input.c b/usr/src/uts/common/io/net80211/net80211_input.c new file mode 100644 index 0000000000..39d5db2df0 --- /dev/null +++ b/usr/src/uts/common/io/net80211/net80211_input.c @@ -0,0 +1,1233 @@ +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +/* + * Copyright (c) 2001 Atsushi Onoe + * Copyright (c) 2002-2005 Sam Leffler, Errno Consulting + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * Alternatively, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2 as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +/* + * Process received frame + */ + +#include <sys/byteorder.h> +#include "net80211_impl.h" + +static mblk_t *ieee80211_defrag(ieee80211com_t *, ieee80211_node_t *, + mblk_t *, int); + +/* + * Process a received frame. The node associated with the sender + * should be supplied. If nothing was found in the node table then + * the caller is assumed to supply a reference to ic_bss instead. + * The RSSI and a timestamp are also supplied. The RSSI data is used + * during AP scanning to select a AP to associate with; it can have + * any units so long as values have consistent units and higher values + * mean ``better signal''. The receive timestamp is currently not used + * by the 802.11 layer. + */ +int +ieee80211_input(ieee80211com_t *ic, mblk_t *mp, struct ieee80211_node *in, + int32_t rssi, uint32_t rstamp) +{ + struct ieee80211_frame *wh; + struct ieee80211_key *key; + uint8_t *bssid; + int hdrspace; + int len; + uint16_t rxseq; + uint8_t dir; + uint8_t type; + uint8_t subtype; + uint8_t tid; + + ASSERT(in != NULL); + type = (uint8_t)-1; /* undefined */ + len = mp->b_wptr - mp->b_rptr; + if (len < sizeof (struct ieee80211_frame_min)) { + ieee80211_dbg(IEEE80211_MSG_ANY, "ieee80211_input: " + "too short (1): len %u", len); + goto out; + } + /* + * Bit of a cheat here, we use a pointer for a 3-address + * frame format but don't reference fields past outside + * ieee80211_frame_min w/o first validating the data is + * present. + */ + wh = (struct ieee80211_frame *)mp->b_rptr; + if ((wh->i_fc[0] & IEEE80211_FC0_VERSION_MASK) != + IEEE80211_FC0_VERSION_0) { + ieee80211_dbg(IEEE80211_MSG_ANY, "ieee80211_input: " + "discard pkt with wrong version %x", wh->i_fc[0]); + goto out; + } + + dir = wh->i_fc[1] & IEEE80211_FC1_DIR_MASK; + type = wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK; + subtype = wh->i_fc[0] & IEEE80211_FC0_SUBTYPE_MASK; + + IEEE80211_LOCK(ic); + if (!(ic->ic_flags & IEEE80211_F_SCAN)) { + switch (ic->ic_opmode) { + case IEEE80211_M_STA: + bssid = wh->i_addr2; + if (!IEEE80211_ADDR_EQ(bssid, in->in_bssid)) + goto out_exit_mutex; + break; + case IEEE80211_M_IBSS: + case IEEE80211_M_AHDEMO: + if (dir != IEEE80211_FC1_DIR_NODS) { + bssid = wh->i_addr1; + } else if (type == IEEE80211_FC0_TYPE_CTL) { + bssid = wh->i_addr1; + } else { + if (len < sizeof (struct ieee80211_frame)) { + ieee80211_dbg(IEEE80211_MSG_ANY, + "ieee80211_input: too short(2):" + "len %u\n", len); + goto out_exit_mutex; + } + bssid = wh->i_addr3; + } + if (type != IEEE80211_FC0_TYPE_DATA) + break; + /* + * Data frame, validate the bssid. + */ + if (!IEEE80211_ADDR_EQ(bssid, ic->ic_bss->in_bssid) && + !IEEE80211_ADDR_EQ(bssid, wifi_bcastaddr)) { + /* not interested in */ + ieee80211_dbg(IEEE80211_MSG_INPUT, + "ieee80211_input: not to bss %s\n", + ieee80211_macaddr_sprintf(bssid)); + goto out_exit_mutex; + } + /* + * For adhoc mode we cons up a node when it doesn't + * exist. This should probably done after an ACL check. + */ + if (in == ic->ic_bss && + ic->ic_opmode != IEEE80211_M_HOSTAP && + !IEEE80211_ADDR_EQ(wh->i_addr2, in->in_macaddr)) { + /* + * Fake up a node for this newly + * discovered member of the IBSS. + */ + in = ieee80211_fakeup_adhoc_node(&ic->ic_sta, + wh->i_addr2); + if (in == NULL) { + /* NB: stat kept for alloc failure */ + goto out_exit_mutex; + } + } + break; + default: + goto out_exit_mutex; + } + in->in_rssi = (uint8_t)rssi; + in->in_rstamp = rstamp; + if (!(type & IEEE80211_FC0_TYPE_CTL)) { + tid = 0; + rxseq = (*(uint16_t *)wh->i_seq); + if ((wh->i_fc[1] & IEEE80211_FC1_RETRY) && + (rxseq - in->in_rxseqs[tid]) <= 0) { + /* duplicate, discard */ + ieee80211_dbg(IEEE80211_MSG_INPUT, + "ieee80211_input: duplicate", + "seqno <%u,%u> fragno <%u,%u> tid %u", + rxseq >> IEEE80211_SEQ_SEQ_SHIFT, + in->in_rxseqs[tid] >> + IEEE80211_SEQ_SEQ_SHIFT, + rxseq & IEEE80211_SEQ_FRAG_MASK, + in->in_rxseqs[tid] & + IEEE80211_SEQ_FRAG_MASK, + tid); + ic->ic_stats.is_rx_dups++; + goto out_exit_mutex; + } + in->in_rxseqs[tid] = rxseq; + } + in->in_inact = 0; + } + + hdrspace = ieee80211_hdrspace(wh); + switch (type) { + case IEEE80211_FC0_TYPE_DATA: + if (len < hdrspace) { + ieee80211_dbg(IEEE80211_MSG_ANY, "ieee80211_input: " + "data too short: expecting %u", hdrspace); + goto out_exit_mutex; + } + switch (ic->ic_opmode) { + case IEEE80211_M_STA: + if (dir != IEEE80211_FC1_DIR_FROMDS) { + ieee80211_dbg(IEEE80211_MSG_INPUT, + "ieee80211_input: data ", + "unknown dir 0x%x", dir); + goto out_exit_mutex; + } + if (IEEE80211_IS_MULTICAST(wh->i_addr1) && + IEEE80211_ADDR_EQ(wh->i_addr3, ic->ic_macaddr)) { + /* + * In IEEE802.11 network, multicast packet + * sent from me is broadcasted from AP. + * It should be silently discarded for + * SIMPLEX interface. + */ + ieee80211_dbg(IEEE80211_MSG_INPUT, + "ieee80211_input: multicast echo\n"); + goto out_exit_mutex; + } + break; + case IEEE80211_M_IBSS: + case IEEE80211_M_AHDEMO: + if (dir != IEEE80211_FC1_DIR_NODS) { + ieee80211_dbg(IEEE80211_MSG_INPUT, + "ieee80211_input: unknown dir 0x%x", + dir); + goto out_exit_mutex; + } + break; + default: + ieee80211_err("ieee80211_input: " + "receive data, unknown opmode %u, skip\n", + ic->ic_opmode); + goto out_exit_mutex; + } + + /* + * Handle privacy requirements. + */ + if (wh->i_fc[1] & IEEE80211_FC1_WEP) { + if ((ic->ic_flags & IEEE80211_F_PRIVACY) == 0) { + /* + * Discard encrypted frames when privacy off. + */ + ieee80211_dbg(IEEE80211_MSG_INPUT, + "ieee80211_input: ""WEP PRIVACY off"); + ic->ic_stats.is_wep_errors++; + goto out_exit_mutex; + } + key = ieee80211_crypto_decap(ic, mp, hdrspace); + if (key == NULL) { + /* NB: stats+msgs handled in crypto_decap */ + ic->ic_stats.is_wep_errors++; + goto out_exit_mutex; + } + wh = (struct ieee80211_frame *)mp->b_rptr; + wh->i_fc[1] &= ~IEEE80211_FC1_WEP; + } else { + key = NULL; + } + + /* + * Next up, any fragmentation + */ + if (!IEEE80211_IS_MULTICAST(wh->i_addr1)) { + mp = ieee80211_defrag(ic, in, mp, hdrspace); + if (mp == NULL) { + /* Fragment dropped or frame not complete yet */ + goto out_exit_mutex; + } + } + wh = NULL; /* no longer valid, catch any uses */ + + /* + * Next strip any MSDU crypto bits. + */ + if (key != NULL && !ieee80211_crypto_demic(ic, key, mp, 0)) { + ieee80211_dbg(IEEE80211_MSG_INPUT, "ieee80211_input: " + "data demic error\n"); + goto out_exit_mutex; + } + + ic->ic_stats.is_rx_frags++; + ic->ic_stats.is_rx_bytes += len; + IEEE80211_UNLOCK(ic); + mac_rx(ic->ic_mach, NULL, mp); + return (IEEE80211_FC0_TYPE_DATA); + + case IEEE80211_FC0_TYPE_MGT: + if (dir != IEEE80211_FC1_DIR_NODS) + goto out_exit_mutex; + if (len < sizeof (struct ieee80211_frame)) + goto out_exit_mutex; + if (wh->i_fc[1] & IEEE80211_FC1_WEP) { + if (subtype != IEEE80211_FC0_SUBTYPE_AUTH) { + /* + * Only shared key auth frames with a challenge + * should be encrypted, discard all others. + */ + ieee80211_dbg(IEEE80211_MSG_INPUT, + "ieee80211_input: " + "%s WEP set but not permitted", + IEEE80211_SUBTYPE_NAME(subtype)); + ic->ic_stats.is_wep_errors++; + goto out_exit_mutex; + } + if ((ic->ic_flags & IEEE80211_F_PRIVACY) == 0) { + /* + * Discard encrypted frames when privacy off. + */ + ieee80211_dbg(IEEE80211_MSG_INPUT, + "ieee80211_input: " + "mgt WEP set but PRIVACY off"); + ic->ic_stats.is_wep_errors++; + goto out_exit_mutex; + } + key = ieee80211_crypto_decap(ic, mp, hdrspace); + if (key == NULL) { + /* NB: stats+msgs handled in crypto_decap */ + goto out_exit_mutex; + } + wh = (struct ieee80211_frame *)mp->b_rptr; + wh->i_fc[1] &= ~IEEE80211_FC1_WEP; + } + IEEE80211_UNLOCK(ic); + ic->ic_recv_mgmt(ic, mp, in, subtype, rssi, rstamp); + goto out; + + case IEEE80211_FC0_TYPE_CTL: + default: + ieee80211_dbg(IEEE80211_MSG_ANY, "ieee80211_input: " + "bad frame type 0x%x", type); + /* should not come here */ + break; + } +out_exit_mutex: + IEEE80211_UNLOCK(ic); +out: + if (mp != NULL) + freemsg(mp); + + return (type); +} + +/* + * This function reassemble fragments. + * More fragments bit in the frame control means the packet is fragmented. + * While the sequence control field consists of 4-bit fragment number + * field and a 12-bit sequence number field. + */ +/* ARGSUSED */ +static mblk_t * +ieee80211_defrag(ieee80211com_t *ic, struct ieee80211_node *in, mblk_t *mp, + int hdrspace) +{ + struct ieee80211_frame *wh = (struct ieee80211_frame *)mp->b_rptr; + struct ieee80211_frame *lwh; + mblk_t *mfrag; + uint16_t rxseq; + uint8_t fragno; + uint8_t more_frag; + + ASSERT(!IEEE80211_IS_MULTICAST(wh->i_addr1)); + more_frag = wh->i_fc[1] & IEEE80211_FC1_MORE_FRAG; + rxseq = LE_16(*(uint16_t *)wh->i_seq); + fragno = rxseq & IEEE80211_SEQ_FRAG_MASK; + + /* Quick way out, if there's nothing to defragment */ + if (!more_frag && fragno == 0 && in->in_rxfrag == NULL) + return (mp); + + /* + * Remove frag to insure it doesn't get reaped by timer. + */ + if (in->in_table == NULL) { + /* + * Should never happen. If the node is orphaned (not in + * the table) then input packets should not reach here. + * Otherwise, a concurrent request that yanks the table + * should be blocked by other interlocking and/or by first + * shutting the driver down. Regardless, be defensive + * here and just bail + */ + freemsg(mp); + return (NULL); + } + IEEE80211_NODE_LOCK(in->in_table); + mfrag = in->in_rxfrag; + in->in_rxfrag = NULL; + IEEE80211_NODE_UNLOCK(in->in_table); + + /* + * Validate new fragment is in order and + * related to the previous ones. + */ + if (mfrag != NULL) { + uint16_t last_rxseq; + + lwh = (struct ieee80211_frame *)mfrag->b_rptr; + last_rxseq = LE_16(*(uint16_t *)lwh->i_seq); + /* + * Sequence control field contains 12-bit sequence no + * and 4-bit fragment number. For fragemnts, the + * sequence no is not changed. + * NB: check seq # and frag together + */ + if (rxseq != last_rxseq + 1 || + !IEEE80211_ADDR_EQ(wh->i_addr1, lwh->i_addr1) || + !IEEE80211_ADDR_EQ(wh->i_addr2, lwh->i_addr2)) { + /* + * Unrelated fragment or no space for it, + * clear current fragments. + */ + freemsg(mfrag); + mfrag = NULL; + } + } + + if (mfrag == NULL) { + if (fragno != 0) { /* !first fragment, discard */ + freemsg(mp); + return (NULL); + } + mfrag = mp; + } else { /* concatenate */ + (void) adjmsg(mp, hdrspace); + linkb(mfrag, mp); + /* track last seqnum and fragno */ + lwh = (struct ieee80211_frame *)mfrag->b_rptr; + *(uint16_t *)lwh->i_seq = *(uint16_t *)wh->i_seq; + } + if (more_frag != 0) { /* more to come, save */ + in->in_rxfragstamp = ddi_get_lbolt(); + in->in_rxfrag = mfrag; + mfrag = NULL; + } + + return (mfrag); +} + +/* + * Install received rate set information in the node's state block. + */ +int +ieee80211_setup_rates(struct ieee80211_node *in, const uint8_t *rates, + const uint8_t *xrates, int flags) +{ + struct ieee80211_rateset *rs = &in->in_rates; + + bzero(rs, sizeof (*rs)); + rs->ir_nrates = rates[1]; + /* skip 1 byte element ID and 1 byte length */ + bcopy(rates + 2, rs->ir_rates, rs->ir_nrates); + if (xrates != NULL) { + uint8_t nxrates; + + /* + * Tack on 11g extended supported rate element. + */ + nxrates = xrates[1]; + if (rs->ir_nrates + nxrates > IEEE80211_RATE_MAXSIZE) { + nxrates = IEEE80211_RATE_MAXSIZE - rs->ir_nrates; + ieee80211_dbg(IEEE80211_MSG_XRATE, + "ieee80211_setup_rates: %s", + "[%s] extended rate set too large;" + " only using %u of %u rates\n", + ieee80211_macaddr_sprintf(in->in_macaddr), + nxrates, xrates[1]); + } + bcopy(xrates + 2, rs->ir_rates + rs->ir_nrates, nxrates); + rs->ir_nrates += nxrates; + } + return (ieee80211_fix_rate(in, flags)); +} + +/* + * Process open-system authentication response frame and start + * association if the authentication request is accepted. + */ +static void +ieee80211_auth_open(ieee80211com_t *ic, struct ieee80211_frame *wh, + struct ieee80211_node *in, uint16_t seq, uint16_t status) +{ + IEEE80211_LOCK_ASSERT(ic); + if (in->in_authmode == IEEE80211_AUTH_SHARED) { + ieee80211_dbg(IEEE80211_MSG_AUTH, + "open auth: bad sta auth mode %u", in->in_authmode); + return; + } + if (ic->ic_opmode == IEEE80211_M_STA) { + if (ic->ic_state != IEEE80211_S_AUTH || + seq != IEEE80211_AUTH_OPEN_RESPONSE) { + return; + } + IEEE80211_UNLOCK(ic); + if (status != 0) { + ieee80211_dbg(IEEE80211_MSG_DEBUG | IEEE80211_MSG_AUTH, + "open auth failed (reason %d)\n", status); + if (in != ic->ic_bss) + in->in_fails++; + ieee80211_new_state(ic, IEEE80211_S_SCAN, 0); + } else { + /* i_fc[0] - frame control's type & subtype field */ + ieee80211_new_state(ic, IEEE80211_S_ASSOC, + wh->i_fc[0] & IEEE80211_FC0_SUBTYPE_MASK); + } + IEEE80211_LOCK(ic); + } else { + ieee80211_dbg(IEEE80211_MSG_AUTH, "ieee80211_auth_open: " + "bad operating mode %u", ic->ic_opmode); + } +} + +/* + * Allocate challenge text for use by shared-key authentication + * Return B_TRUE on success, B_FALST otherwise. + */ +static boolean_t +ieee80211_alloc_challenge(struct ieee80211_node *in) +{ + if (in->in_challenge == NULL) { + in->in_challenge = kmem_alloc(IEEE80211_CHALLENGE_LEN, + KM_NOSLEEP); + } + if (in->in_challenge == NULL) { + ieee80211_dbg(IEEE80211_MSG_DEBUG | IEEE80211_MSG_AUTH, + "[%s] shared key challenge alloc failed\n", + ieee80211_macaddr_sprintf(in->in_macaddr)); + } + return (in->in_challenge != NULL); +} + +/* + * Process shared-key authentication response frames. If authentication + * succeeds, start association; otherwise, restart scan. + */ +static void +ieee80211_auth_shared(ieee80211com_t *ic, struct ieee80211_frame *wh, + uint8_t *frm, uint8_t *efrm, struct ieee80211_node *in, uint16_t seq, + uint16_t status) +{ + uint8_t *challenge; + + /* + * Pre-shared key authentication is evil; accept + * it only if explicitly configured (it is supported + * mainly for compatibility with clients like OS X). + */ + IEEE80211_LOCK_ASSERT(ic); + if (in->in_authmode != IEEE80211_AUTH_AUTO && + in->in_authmode != IEEE80211_AUTH_SHARED) { + ieee80211_dbg(IEEE80211_MSG_AUTH, "ieee80211_auth_shared: " + "bad sta auth mode %u", in->in_authmode); + goto bad; + } + + challenge = NULL; + if (frm + 1 < efrm) { + /* + * Challenge text information element + * frm[0] - element ID + * frm[1] - length + * frm[2]... - challenge text + */ + if ((frm[1] + 2) > (efrm - frm)) { + ieee80211_dbg(IEEE80211_MSG_AUTH, + "ieee80211_auth_shared: ie %d%d too long\n", + frm[0], (frm[1] + 2) - (efrm - frm)); + goto bad; + } + if (*frm == IEEE80211_ELEMID_CHALLENGE) + challenge = frm; + frm += frm[1] + 2; + } + switch (seq) { + case IEEE80211_AUTH_SHARED_CHALLENGE: + case IEEE80211_AUTH_SHARED_RESPONSE: + if (challenge == NULL) { + ieee80211_dbg(IEEE80211_MSG_AUTH, + "ieee80211_auth_shared: no challenge\n"); + goto bad; + } + if (challenge[1] != IEEE80211_CHALLENGE_LEN) { + ieee80211_dbg(IEEE80211_MSG_AUTH, + "ieee80211_auth_shared: bad challenge len %d\n", + challenge[1]); + goto bad; + } + default: + break; + } + switch (ic->ic_opmode) { + case IEEE80211_M_STA: + if (ic->ic_state != IEEE80211_S_AUTH) + return; + switch (seq) { + case IEEE80211_AUTH_SHARED_PASS: + if (in->in_challenge != NULL) { + kmem_free(in->in_challenge, + IEEE80211_CHALLENGE_LEN); + in->in_challenge = NULL; + } + if (status != 0) { + ieee80211_dbg(IEEE80211_MSG_DEBUG | + IEEE80211_MSG_AUTH, + "shared key auth failed (reason %d)\n", + status); + if (in != ic->ic_bss) + in->in_fails++; + return; + } + IEEE80211_UNLOCK(ic); + ieee80211_new_state(ic, IEEE80211_S_ASSOC, + wh->i_fc[0] & IEEE80211_FC0_SUBTYPE_MASK); + IEEE80211_LOCK(ic); + break; + case IEEE80211_AUTH_SHARED_CHALLENGE: + if (!ieee80211_alloc_challenge(in)) + return; + bcopy(&challenge[2], in->in_challenge, challenge[1]); + IEEE80211_UNLOCK(ic); + IEEE80211_SEND_MGMT(ic, in, IEEE80211_FC0_SUBTYPE_AUTH, + seq + 1); + IEEE80211_LOCK(ic); + break; + default: + ieee80211_dbg(IEEE80211_MSG_AUTH, "80211_auth_shared: " + "shared key auth: bad seq %d", seq); + return; + } + break; + + default: + ieee80211_dbg(IEEE80211_MSG_AUTH, + "ieee80211_auth_shared: bad opmode %u\n", + ic->ic_opmode); + break; + } + return; +bad: + if (ic->ic_opmode == IEEE80211_M_STA) { + /* + * Kick the state machine. This short-circuits + * using the mgt frame timeout to trigger the + * state transition. + */ + if (ic->ic_state == IEEE80211_S_AUTH) { + IEEE80211_UNLOCK(ic); + ieee80211_new_state(ic, IEEE80211_S_SCAN, 0); + IEEE80211_LOCK(ic); + } + } +} + +/* + * Process a beacon/probe response frame. + * When the device is in station mode, create a node and add it + * to the node database for a new ESS or update node info if it's + * already there. + */ +static void +ieee80211_recv_beacon(ieee80211com_t *ic, mblk_t *mp, struct ieee80211_node *in, + int subtype, int rssi, uint32_t rstamp) +{ + ieee80211_impl_t *im = ic->ic_private; + struct ieee80211_frame *wh; + uint8_t *frm; + uint8_t *efrm; /* end of frame body */ + struct ieee80211_scanparams scan; + + wh = (struct ieee80211_frame *)mp->b_rptr; + frm = (uint8_t *)&wh[1]; + efrm = (uint8_t *)mp->b_wptr; + + /* + * We process beacon/probe response frames: + * o when scanning, or + * o station mode when associated (to collect state + * updates such as 802.11g slot time), or + * o adhoc mode (to discover neighbors) + * Frames otherwise received are discarded. + */ + if (!((ic->ic_flags & IEEE80211_F_SCAN) || + (ic->ic_opmode == IEEE80211_M_STA && in->in_associd != 0) || + ic->ic_opmode == IEEE80211_M_IBSS)) { + return; + } + + /* + * beacon/probe response frame format + * [8] time stamp + * [2] beacon interval + * [2] capability information + * [tlv] ssid + * [tlv] supported rates + * [tlv] country information + * [tlv] parameter set (FH/DS) + * [tlv] erp information + * [tlv] extended supported rates + * [tlv] WME + * [tlv] WPA or RSN + */ + IEEE80211_VERIFY_LENGTH(efrm - frm, IEEE80211_BEACON_ELEM_MIN, return); + bzero(&scan, sizeof (scan)); + scan.tstamp = frm; + frm += 8; + scan.bintval = (*(uint16_t *)frm); + frm += 2; + scan.capinfo = (*(uint16_t *)frm); + frm += 2; + scan.bchan = ieee80211_chan2ieee(ic, ic->ic_curchan); + scan.chan = scan.bchan; + + while (frm < efrm) { + /* Agere element in beacon */ + if ((*frm == IEEE80211_ELEMID_AGERE1) || + (*frm == IEEE80211_ELEMID_AGERE2)) { + frm = efrm; + break; + } + + IEEE80211_VERIFY_LENGTH(efrm - frm, frm[1], return); + switch (*frm) { + case IEEE80211_ELEMID_SSID: + scan.ssid = frm; + break; + case IEEE80211_ELEMID_RATES: + scan.rates = frm; + break; + case IEEE80211_ELEMID_COUNTRY: + scan.country = frm; + break; + case IEEE80211_ELEMID_FHPARMS: + if (ic->ic_phytype == IEEE80211_T_FH) { + scan.fhdwell = LE_16(*(uint16_t *)(frm + 2)); + scan.chan = IEEE80211_FH_CHAN(frm[4], frm[5]); + scan.fhindex = frm[6]; + scan.phytype = IEEE80211_T_FH; + } + break; + case IEEE80211_ELEMID_DSPARMS: + if (ic->ic_phytype != IEEE80211_T_FH) { + scan.chan = frm[2]; + scan.phytype = IEEE80211_T_DS; + } + break; + case IEEE80211_ELEMID_TIM: + scan.tim = frm; + scan.timoff = frm - mp->b_rptr; + break; + case IEEE80211_ELEMID_IBSSPARMS: + break; + case IEEE80211_ELEMID_XRATES: + scan.xrates = frm; + break; + case IEEE80211_ELEMID_ERP: + if (frm[1] != 1) { + ieee80211_dbg(IEEE80211_MSG_ELEMID, + "ieee80211_recv_mgmt: ignore %s, " + "invalid ERP element; " + "length %u, expecting 1\n", + IEEE80211_SUBTYPE_NAME(subtype), + frm[1]); + break; + } + scan.erp = frm[2]; + scan.phytype = IEEE80211_T_OFDM; + break; + case IEEE80211_ELEMID_RSN: + scan.wpa = frm; + break; + default: + ieee80211_dbg(IEEE80211_MSG_ELEMID, + "ieee80211_recv_mgmt: ignore %s," + "unhandled id %u, len %u, totallen %u", + IEEE80211_SUBTYPE_NAME(subtype), + *frm, frm[1], + mp->b_wptr - mp->b_rptr); + break; + } + /* frm[1] - component length */ + frm += IEEE80211_ELEM_LEN(frm[1]); + } + IEEE80211_VERIFY_ELEMENT(scan.rates, IEEE80211_RATE_MAXSIZE, return); + IEEE80211_VERIFY_ELEMENT(scan.ssid, IEEE80211_NWID_LEN, return); + if (ieee80211_isclr(ic->ic_chan_active, scan.chan)) { + ieee80211_dbg(IEEE80211_MSG_ELEMID | IEEE80211_MSG_INPUT, + "ieee80211_recv_mgmt: ignore %s ," + "invalid channel %u\n", + IEEE80211_SUBTYPE_NAME(subtype), scan.chan); + return; + } + if (scan.chan != scan.bchan && + ic->ic_phytype != IEEE80211_T_FH) { + /* + * Frame was received on a channel different from the + * one indicated in the DS params element id; + * silently discard it. + * + * NB: this can happen due to signal leakage. + * But we should take it for FH phy because + * the rssi value should be correct even for + * different hop pattern in FH. + */ + ieee80211_dbg(IEEE80211_MSG_ELEMID, + "ieee80211_recv_mgmt: ignore %s ," + "phytype %u channel %u marked for %u\n", + IEEE80211_SUBTYPE_NAME(subtype), + ic->ic_phytype, scan.bchan, scan.chan); + return; + } + if (!(IEEE80211_BINTVAL_MIN <= scan.bintval && + scan.bintval <= IEEE80211_BINTVAL_MAX)) { + ieee80211_dbg(IEEE80211_MSG_ELEMID | IEEE80211_MSG_INPUT, + "ieee80211_recv_mgmt: ignore %s ," + "bogus beacon interval %u\n", + IEEE80211_SUBTYPE_NAME(subtype), scan.bintval); + return; + } + + /* + * When operating in station mode, check for state updates. + * Be careful to ignore beacons received while doing a + * background scan. We consider only 11g/WMM stuff right now. + */ + if (ic->ic_opmode == IEEE80211_M_STA && + in->in_associd != 0 && + (!(ic->ic_flags & IEEE80211_F_SCAN) || + IEEE80211_ADDR_EQ(wh->i_addr2, in->in_bssid))) { + /* record tsf of last beacon */ + bcopy(scan.tstamp, in->in_tstamp.data, + sizeof (in->in_tstamp)); + /* count beacon frame for s/w bmiss handling */ + im->im_swbmiss_count++; + im->im_bmiss_count = 0; + + if ((in->in_capinfo ^ scan.capinfo) & + IEEE80211_CAPINFO_SHORT_SLOTTIME) { + ieee80211_dbg(IEEE80211_MSG_ASSOC, + "ieee80211_recv_mgmt: " + "[%s] cap change: before 0x%x, now 0x%x\n", + ieee80211_macaddr_sprintf(wh->i_addr2), + in->in_capinfo, scan.capinfo); + /* + * NB: we assume short preamble doesn't + * change dynamically + */ + ieee80211_set_shortslottime(ic, + ic->ic_curmode == IEEE80211_MODE_11A || + (scan.capinfo & + IEEE80211_CAPINFO_SHORT_SLOTTIME)); + in->in_capinfo = scan.capinfo; + } + + if (scan.tim != NULL) { + struct ieee80211_tim_ie *ie; + + ie = (struct ieee80211_tim_ie *)scan.tim; + in->in_dtim_count = ie->tim_count; + in->in_dtim_period = ie->tim_period; + } + if (ic->ic_flags & IEEE80211_F_SCAN) { + ieee80211_add_scan(ic, &scan, wh, subtype, rssi, + rstamp); + } + return; + } + /* + * If scanning, just pass information to the scan module. + */ + if (ic->ic_flags & IEEE80211_F_SCAN) { + ieee80211_add_scan(ic, &scan, wh, subtype, rssi, rstamp); + return; + } + + if (scan.capinfo & IEEE80211_CAPINFO_IBSS) { + if (!IEEE80211_ADDR_EQ(wh->i_addr2, in->in_macaddr)) { + /* + * Create a new entry in the neighbor table. + */ + in = ieee80211_add_neighbor(ic, wh, &scan); + } else if (in->in_capinfo == 0) { + /* + * Update faked node created on transmit. + * Note this also updates the tsf. + */ + ieee80211_init_neighbor(in, wh, &scan); + } else { + /* + * Record tsf for potential resync. + */ + bcopy(scan.tstamp, in->in_tstamp.data, + sizeof (in->in_tstamp)); + } + if (in != NULL) { + in->in_rssi = (uint8_t)rssi; + in->in_rstamp = rstamp; + } + } +} + +/* + * Perform input processing for 802.11 management frames. + * It's the default ic_recv_mgmt callback function for the interface + * softc, ic. Tipically ic_recv_mgmt is called within ieee80211_input() + */ +void +ieee80211_recv_mgmt(ieee80211com_t *ic, mblk_t *mp, struct ieee80211_node *in, + int subtype, int rssi, uint32_t rstamp) +{ + struct ieee80211_frame *wh; + uint8_t *frm; /* pointer to start of the frame */ + uint8_t *efrm; /* pointer to end of the frame */ + uint8_t *ssid; + uint8_t *rates; + uint8_t *xrates; /* extended rates */ + boolean_t allocbs = B_FALSE; + uint8_t rate; + uint16_t algo; /* authentication algorithm */ + uint16_t seq; /* sequence no */ + uint16_t status; + uint16_t capinfo; + uint16_t associd; /* association ID */ + + IEEE80211_LOCK(ic); + wh = (struct ieee80211_frame *)mp->b_rptr; + frm = (uint8_t *)&wh[1]; + efrm = (uint8_t *)mp->b_wptr; + switch (subtype) { + case IEEE80211_FC0_SUBTYPE_PROBE_RESP: + case IEEE80211_FC0_SUBTYPE_BEACON: + ieee80211_recv_beacon(ic, mp, in, subtype, rssi, rstamp); + break; + + case IEEE80211_FC0_SUBTYPE_PROBE_REQ: + if (ic->ic_opmode == IEEE80211_M_STA || + ic->ic_state != IEEE80211_S_RUN || + IEEE80211_IS_MULTICAST(wh->i_addr2)) { + break; + } + + /* + * prreq frame format + * [tlv] ssid + * [tlv] supported rates + * [tlv] extended supported rates + */ + ssid = rates = xrates = NULL; + while (frm < efrm) { + IEEE80211_VERIFY_LENGTH(efrm - frm, frm[1], goto out); + switch (*frm) { + case IEEE80211_ELEMID_SSID: + ssid = frm; + break; + case IEEE80211_ELEMID_RATES: + rates = frm; + break; + case IEEE80211_ELEMID_XRATES: + xrates = frm; + break; + } + frm += frm[1] + 2; + } + IEEE80211_VERIFY_ELEMENT(rates, IEEE80211_RATE_MAXSIZE, break); + IEEE80211_VERIFY_ELEMENT(ssid, IEEE80211_NWID_LEN, break); + IEEE80211_VERIFY_SSID(ic->ic_bss, ssid, break); + if ((ic->ic_flags & IEEE80211_F_HIDESSID) && ssid[1] == 0) { + ieee80211_dbg(IEEE80211_MSG_INPUT, + "ieee80211_recv_mgmt: ignore %s, " + "no ssid with ssid suppression enabled", + IEEE80211_SUBTYPE_NAME(subtype)); + break; + } + + if (in == ic->ic_bss) { + if (ic->ic_opmode != IEEE80211_M_IBSS) { + in = ieee80211_tmp_node(ic, wh->i_addr2); + allocbs = B_TRUE; + } else if (!IEEE80211_ADDR_EQ(wh->i_addr2, + in->in_macaddr)) { + /* + * Cannot tell if the sender is operating + * in ibss mode. But we need a new node to + * send the response so blindly add them to the + * neighbor table. + */ + in = ieee80211_fakeup_adhoc_node(&ic->ic_sta, + wh->i_addr2); + } + if (in == NULL) + break; + } + ieee80211_dbg(IEEE80211_MSG_ASSOC, "ieee80211_recv_mgmt: " + "[%s] recv probe req\n", + ieee80211_macaddr_sprintf(wh->i_addr2)); + in->in_rssi = (uint8_t)rssi; + in->in_rstamp = rstamp; + /* + * Adjust and check station's rate list with device's + * supported rate. Send back response if there is at + * least one rate or the fixed rate(if being set) is + * supported by both station and the device + */ + rate = ieee80211_setup_rates(in, rates, xrates, + IEEE80211_F_DOSORT | IEEE80211_F_DOFRATE | + IEEE80211_F_DONEGO | IEEE80211_F_DODEL); + if (rate & IEEE80211_RATE_BASIC) { + ieee80211_dbg(IEEE80211_MSG_XRATE, "ieee80211_recv_mgmt" + "%s recv'd rate set invalid", + IEEE80211_SUBTYPE_NAME(subtype)); + } else { + IEEE80211_UNLOCK(ic); + IEEE80211_SEND_MGMT(ic, in, + IEEE80211_FC0_SUBTYPE_PROBE_RESP, 0); + IEEE80211_LOCK(ic); + } + if (allocbs) { + /* + * Temporary node created just to send a + * response, reclaim immediately. + */ + ieee80211_free_node(in); + } + break; + + case IEEE80211_FC0_SUBTYPE_AUTH: + /* + * auth frame format + * [2] algorithm + * [2] sequence + * [2] status + * [tlv*] challenge + */ + IEEE80211_VERIFY_LENGTH(efrm - frm, IEEE80211_AUTH_ELEM_MIN, + break); + algo = (*(uint16_t *)frm); + seq = (*(uint16_t *)(frm + 2)); + status = (*(uint16_t *)(frm + 4)); + ieee80211_dbg(IEEE80211_MSG_AUTH, "ieee80211_recv_mgmt: " + "[%s] recv auth frame with algorithm %d seq %d\n", + ieee80211_macaddr_sprintf(wh->i_addr2), algo, seq); + + if (ic->ic_flags & IEEE80211_F_COUNTERM) { + ieee80211_dbg(IEEE80211_MSG_AUTH | IEEE80211_MSG_CRYPTO, + "ieee80211_recv_mgmt: ignore auth, %s\n", + "TKIP countermeasures enabled"); + break; + } + switch (algo) { + case IEEE80211_AUTH_ALG_SHARED: + ieee80211_auth_shared(ic, wh, frm + 6, efrm, in, + seq, status); + break; + case IEEE80211_AUTH_ALG_OPEN: + ieee80211_auth_open(ic, wh, in, seq, status); + break; + default: + ieee80211_dbg(IEEE80211_MSG_ANY, "ieee80211_recv_mgmt: " + "ignore auth, unsupported alg %d", algo); + break; + } + break; + + case IEEE80211_FC0_SUBTYPE_ASSOC_RESP: + case IEEE80211_FC0_SUBTYPE_REASSOC_RESP: + if (ic->ic_opmode != IEEE80211_M_STA || + ic->ic_state != IEEE80211_S_ASSOC) + break; + + /* + * asresp frame format + * [2] capability information + * [2] status + * [2] association ID + * [tlv] supported rates + * [tlv] extended supported rates + * [tlv] WME + */ + IEEE80211_VERIFY_LENGTH(efrm - frm, + IEEE80211_ASSOC_RESP_ELEM_MIN, break); + in = ic->ic_bss; + capinfo = (*(uint16_t *)frm); + frm += 2; + status = (*(uint16_t *)frm); + frm += 2; + if (status != 0) { + ieee80211_dbg(IEEE80211_MSG_ASSOC, + "assoc failed (reason %d)\n", status); + in = ieee80211_find_node(&ic->ic_scan, wh->i_addr2); + if (in != NULL) { + in->in_fails++; + ieee80211_free_node(in); + } + break; + } + associd = (*(uint16_t *)frm); + frm += 2; + + rates = xrates = NULL; + while (frm < efrm) { + /* + * Do not discard frames containing proprietary Agere + * elements 128 and 129, as the reported element length + * is often wrong. Skip rest of the frame, since we can + * not rely on the given element length making it + * impossible to know where the next element starts + */ + if ((*frm == IEEE80211_ELEMID_AGERE1) || + (*frm == IEEE80211_ELEMID_AGERE2)) { + frm = efrm; + break; + } + + IEEE80211_VERIFY_LENGTH(efrm - frm, frm[1], goto out); + switch (*frm) { + case IEEE80211_ELEMID_RATES: + rates = frm; + break; + case IEEE80211_ELEMID_XRATES: + xrates = frm; + break; + } + frm += frm[1] + 2; + } + + IEEE80211_VERIFY_ELEMENT(rates, IEEE80211_RATE_MAXSIZE, break); + /* + * Adjust and check AP's rate list with device's + * supported rate. Re-start scan if no rate is or the + * fixed rate(if being set) cannot be supported by + * either AP or the device. + */ + rate = ieee80211_setup_rates(in, rates, xrates, + IEEE80211_F_DOSORT | IEEE80211_F_DOFRATE | + IEEE80211_F_DONEGO | IEEE80211_F_DODEL); + if (rate & IEEE80211_RATE_BASIC) { + ieee80211_dbg(IEEE80211_MSG_ASSOC, + "assoc failed (rate set mismatch)\n"); + if (in != ic->ic_bss) + in->in_fails++; + IEEE80211_UNLOCK(ic); + ieee80211_new_state(ic, IEEE80211_S_SCAN, 0); + return; + } + + in->in_capinfo = capinfo; + in->in_associd = associd; + in->in_flags &= ~IEEE80211_NODE_QOS; + /* + * Configure state now that we are associated. + */ + if (ic->ic_curmode == IEEE80211_MODE_11A || + (in->in_capinfo & IEEE80211_CAPINFO_SHORT_PREAMBLE)) { + ic->ic_flags |= IEEE80211_F_SHPREAMBLE; + ic->ic_flags &= ~IEEE80211_F_USEBARKER; + } else { + ic->ic_flags &= ~IEEE80211_F_SHPREAMBLE; + ic->ic_flags |= IEEE80211_F_USEBARKER; + } + ieee80211_set_shortslottime(ic, + ic->ic_curmode == IEEE80211_MODE_11A || + (in->in_capinfo & IEEE80211_CAPINFO_SHORT_SLOTTIME)); + /* + * Honor ERP protection. + * + * NB: in_erp should zero for non-11g operation. + * check ic_curmode anyway + */ + if (ic->ic_curmode == IEEE80211_MODE_11G && + (in->in_erp & IEEE80211_ERP_USE_PROTECTION)) + ic->ic_flags |= IEEE80211_F_USEPROT; + else + ic->ic_flags &= ~IEEE80211_F_USEPROT; + ieee80211_dbg(IEEE80211_MSG_ASSOC, + "assoc success: %s preamble, %s slot time%s%s\n", + ic->ic_flags&IEEE80211_F_SHPREAMBLE ? "short" : "long", + ic->ic_flags&IEEE80211_F_SHSLOT ? "short" : "long", + ic->ic_flags&IEEE80211_F_USEPROT ? ", protection" : "", + in->in_flags & IEEE80211_NODE_QOS ? ", QoS" : ""); + IEEE80211_UNLOCK(ic); + ieee80211_new_state(ic, IEEE80211_S_RUN, subtype); + return; + + case IEEE80211_FC0_SUBTYPE_DEAUTH: + if (ic->ic_state == IEEE80211_S_SCAN) + break; + + /* + * deauth frame format + * [2] reason + */ + IEEE80211_VERIFY_LENGTH(efrm - frm, 2, break); + status = (*(uint16_t *)frm); + + ieee80211_dbg(IEEE80211_MSG_AUTH, + "recv deauthenticate (reason %d)\n", status); + switch (ic->ic_opmode) { + case IEEE80211_M_STA: + IEEE80211_UNLOCK(ic); + ieee80211_new_state(ic, IEEE80211_S_AUTH, + wh->i_fc[0] & IEEE80211_FC0_SUBTYPE_MASK); + return; + default: + break; + } + break; + + case IEEE80211_FC0_SUBTYPE_DISASSOC: + if (ic->ic_state != IEEE80211_S_RUN && + ic->ic_state != IEEE80211_S_ASSOC && + ic->ic_state != IEEE80211_S_AUTH) + break; + /* + * disassoc frame format + * [2] reason + */ + IEEE80211_VERIFY_LENGTH(efrm - frm, 2, break); + status = (*(uint16_t *)frm); + + ieee80211_dbg(IEEE80211_MSG_ASSOC, + "recv disassociate (reason %d)\n", status); + switch (ic->ic_opmode) { + case IEEE80211_M_STA: + IEEE80211_UNLOCK(ic); + ieee80211_new_state(ic, IEEE80211_S_ASSOC, + wh->i_fc[0] & IEEE80211_FC0_SUBTYPE_MASK); + return; + default: + break; + } + break; + + default: + ieee80211_dbg(IEEE80211_MSG_ANY, "ieee80211_recv_mgmt: " + "subtype 0x%x not handled\n", subtype); + break; + } /* switch subtype */ +out: + IEEE80211_UNLOCK(ic); +} diff --git a/usr/src/uts/common/io/net80211/net80211_ioctl.c b/usr/src/uts/common/io/net80211/net80211_ioctl.c new file mode 100644 index 0000000000..3701baa6f7 --- /dev/null +++ b/usr/src/uts/common/io/net80211/net80211_ioctl.c @@ -0,0 +1,1359 @@ +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * Alternatively, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2 as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +#include <sys/param.h> +#include <sys/types.h> +#include <sys/errno.h> +#include <sys/strsun.h> +#include <sys/policy.h> +#include <inet/common.h> +#include <inet/nd.h> +#include <inet/mi.h> +#include <sys/note.h> +#include <sys/mac.h> +#include <inet/wifi_ioctl.h> +#include "net80211_impl.h" + +static size_t +wifi_strnlen(const char *s, size_t n) +{ + size_t i; + + for (i = 0; i < n && s[i] != '\0'; i++) + /* noop */; + return (i); +} + +/* + * Initialize an output message block by copying from an + * input message block. The message is of type wldp_t. + * mp input message block + * buflen length of wldp_buf + */ +static void +wifi_setupoutmsg(mblk_t *mp, int buflen) +{ + wldp_t *wp; + + wp = (wldp_t *)mp->b_rptr; + wp->wldp_length = WIFI_BUF_OFFSET + buflen; + wp->wldp_result = WL_SUCCESS; + mp->b_wptr = mp->b_rptr + wp->wldp_length; +} + +/* + * Allocate and initialize an output message. + */ +static mblk_t * +wifi_getoutmsg(mblk_t *mp, uint32_t cmd, int buflen) +{ + mblk_t *mp1; + int size; + + size = WIFI_BUF_OFFSET; + if (cmd == WLAN_GET_PARAM) + size += buflen; /* to hold output parameters */ + mp1 = allocb(size, BPRI_HI); + if (mp1 == NULL) { + ieee80211_err("wifi_getoutbuf: allocb %d bytes failed!\n", + size); + return (NULL); + } + + bzero(mp1->b_rptr, size); + bcopy(mp->b_rptr, mp1->b_rptr, WIFI_BUF_OFFSET); + wifi_setupoutmsg(mp1, size - WIFI_BUF_OFFSET); + + return (mp1); +} + +static int +wifi_cfg_essid(struct ieee80211com *ic, uint32_t cmd, mblk_t **mp) +{ + mblk_t *omp; + wldp_t *inp = (wldp_t *)(*mp)->b_rptr; + wldp_t *outp; + wl_essid_t *iw_essid = (wl_essid_t *)inp->wldp_buf; + wl_essid_t *ow_essid; + char *essid; + int err = 0; + + if ((omp = wifi_getoutmsg(*mp, cmd, sizeof (wl_essid_t))) == NULL) + return (ENOMEM); + outp = (wldp_t *)omp->b_rptr; + ow_essid = (wl_essid_t *)outp->wldp_buf; + + switch (cmd) { + case WLAN_GET_PARAM: + essid = (char *)ic->ic_des_essid; + if (essid[0] == '\0') + essid = (char *)ic->ic_bss->in_essid; + ow_essid->wl_essid_length = wifi_strnlen((const char *)essid, + IEEE80211_NWID_LEN); + bcopy(essid, ow_essid->wl_essid_essid, + ow_essid->wl_essid_length); + break; + case WLAN_SET_PARAM: + if (iw_essid->wl_essid_length > IEEE80211_NWID_LEN) { + ieee80211_err("wifi_cfg_essid: " + "essid too long, %u, max %u\n", + iw_essid->wl_essid_length, IEEE80211_NWID_LEN); + outp->wldp_result = WL_NOTSUPPORTED; + err = EINVAL; + break; + } + essid = iw_essid->wl_essid_essid; + essid[IEEE80211_NWID_LEN] = 0; + ieee80211_dbg(IEEE80211_MSG_CONFIG, "wifi_cfg_essid: " + "set essid=%s length=%d\n", + essid, iw_essid->wl_essid_length); + + ic->ic_des_esslen = iw_essid->wl_essid_length; + if (ic->ic_des_esslen != 0) + bcopy(essid, ic->ic_des_essid, ic->ic_des_esslen); + if (ic->ic_des_esslen < IEEE80211_NWID_LEN) + ic->ic_des_essid[ic->ic_des_esslen] = 0; + err = ENETRESET; + break; + default: + ieee80211_err("wifi_cfg_essid: unknown command %x\n", cmd); + outp->wldp_result = WL_NOTSUPPORTED; + err = EINVAL; + break; + } + + freemsg(*mp); + *mp = omp; + return (err); +} + +static int +wifi_cfg_bssid(struct ieee80211com *ic, uint32_t cmd, mblk_t **mp) +{ + mblk_t *omp; + wldp_t *inp = (wldp_t *)(*mp)->b_rptr; + wldp_t *outp; + uint8_t *bssid; + int err = 0; + + if ((omp = wifi_getoutmsg(*mp, cmd, sizeof (wl_bssid_t))) == NULL) + return (ENOMEM); + outp = (wldp_t *)omp->b_rptr; + + switch (cmd) { + case WLAN_GET_PARAM: + if (ic->ic_flags & IEEE80211_F_DESBSSID) + bssid = ic->ic_des_bssid; + else + bssid = ic->ic_bss->in_bssid; + bcopy(bssid, outp->wldp_buf, sizeof (wl_bssid_t)); + break; + case WLAN_SET_PARAM: + ieee80211_dbg(IEEE80211_MSG_CONFIG, "wifi_cfg_bssid: " + "set bssid=%s\n", + ieee80211_macaddr_sprintf(inp->wldp_buf)); + bcopy(inp->wldp_buf, ic->ic_des_bssid, sizeof (wl_bssid_t)); + ic->ic_flags |= IEEE80211_F_DESBSSID; + err = ENETRESET; + break; + default: + ieee80211_err("wifi_cfg_bssid: unknown command %x\n", cmd); + outp->wldp_result = WL_NOTSUPPORTED; + err = EINVAL; + break; + } + + freemsg(*mp); + *mp = omp; + return (err); +} + +static int +wifi_cfg_nodename(struct ieee80211com *ic, uint32_t cmd, mblk_t **mp) +{ + mblk_t *omp; + wldp_t *inp = (wldp_t *)(*mp)->b_rptr; + wldp_t *outp; + wl_nodename_t *iw_name = (wl_nodename_t *)inp->wldp_buf; + wl_nodename_t *ow_name; + char *nodename; + int len, err; + + err = 0; + if ((omp = wifi_getoutmsg(*mp, cmd, sizeof (wl_nodename_t))) == NULL) + return (ENOMEM); + outp = (wldp_t *)omp->b_rptr; + ow_name = (wl_nodename_t *)outp->wldp_buf; + + switch (cmd) { + case WLAN_GET_PARAM: + len = wifi_strnlen((const char *)ic->ic_nickname, + IEEE80211_NWID_LEN); + ow_name->wl_nodename_length = len; + bcopy(ic->ic_nickname, ow_name->wl_nodename_name, len); + break; + case WLAN_SET_PARAM: + if (iw_name->wl_nodename_length > IEEE80211_NWID_LEN) { + ieee80211_err("wifi_cfg_nodename: " + "node name too long, %u\n", + iw_name->wl_nodename_length); + outp->wldp_result = WL_NOTSUPPORTED; + err = EINVAL; + break; + } + nodename = iw_name->wl_nodename_name; + nodename[IEEE80211_NWID_LEN] = 0; + ieee80211_dbg(IEEE80211_MSG_CONFIG, + "wifi_cfg_nodename: set nodename %s, len=%d\n", + nodename, iw_name->wl_nodename_length); + + len = iw_name->wl_nodename_length; + if (len > 0) + bcopy(nodename, ic->ic_nickname, len); + if (len < IEEE80211_NWID_LEN) + ic->ic_nickname[len] = 0; + break; + default: + ieee80211_err("wifi_cfg_nodename: unknown command %x\n", cmd); + outp->wldp_result = WL_NOTSUPPORTED; + err = EINVAL; + break; + } + + freemsg(*mp); + *mp = omp; + return (err); +} + +static int +wifi_cfg_phy(struct ieee80211com *ic, uint32_t cmd, mblk_t **mp) +{ + mblk_t *omp; + wldp_t *inp = (wldp_t *)(*mp)->b_rptr; + wldp_t *outp; + wl_phy_conf_t *iw_phy = (wl_phy_conf_t *)inp->wldp_buf; + wl_phy_conf_t *ow_phy; + struct ieee80211_channel *ch = ic->ic_curchan; + int err = 0; + + if ((omp = wifi_getoutmsg(*mp, cmd, sizeof (wl_phy_conf_t))) == NULL) + return (ENOMEM); + outp = (wldp_t *)omp->b_rptr; + ow_phy = (wl_phy_conf_t *)outp->wldp_buf; + + switch (cmd) { + case WLAN_GET_PARAM: { + /* get current physical (FH, DS, ERP) parameters */ + if (IEEE80211_IS_CHAN_A(ch) || IEEE80211_IS_CHAN_T(ch)) { + wl_ofdm_t *ofdm = (wl_ofdm_t *)ow_phy; + + ofdm->wl_ofdm_subtype = WL_OFDM; + ofdm->wl_ofdm_frequency = ch->ich_freq; + } else { + switch (ic->ic_phytype) { + case IEEE80211_T_FH: { + wl_fhss_t *fhss = (wl_fhss_t *)ow_phy; + + fhss->wl_fhss_subtype = WL_FHSS; + fhss->wl_fhss_channel = + ieee80211_chan2ieee(ic, ch); + break; + } + case IEEE80211_T_DS: { + wl_dsss_t *dsss = (wl_dsss_t *)ow_phy; + + dsss->wl_dsss_subtype = WL_DSSS; + dsss->wl_dsss_channel = + ieee80211_chan2ieee(ic, ch); + break; + } + case IEEE80211_T_OFDM: { + wl_erp_t *erp = (wl_erp_t *)ow_phy; + + erp->wl_erp_subtype = WL_ERP; + erp->wl_erp_channel = + ieee80211_chan2ieee(ic, ch); + break; + } + default: + ieee80211_err("wifi_cfg_phy: " + "unknown phy type, %x\n", ic->ic_phytype); + outp->wldp_result = WL_HW_ERROR; + err = EIO; + break; + } /* switch (ic->ic_phytype) */ + } + break; + } + + case WLAN_SET_PARAM: { + wl_dsss_t *dsss = (wl_dsss_t *)iw_phy; + int16_t ch = dsss->wl_dsss_channel; + + ieee80211_dbg(IEEE80211_MSG_CONFIG, "wifi_cfg_phy: " + "set channel=%d\n", ch); + if (ch == 0 || ch == (int16_t)IEEE80211_CHAN_ANY) { + ic->ic_des_chan = IEEE80211_CHAN_ANYC; + } else if ((uint_t)ch > IEEE80211_CHAN_MAX || + ieee80211_isclr(ic->ic_chan_active, ch)) { + outp->wldp_result = WL_NOTSUPPORTED; + err = EINVAL; + break; + } else { + ic->ic_des_chan = ic->ic_ibss_chan = + &ic->ic_sup_channels[ch]; + } + switch (ic->ic_state) { + case IEEE80211_S_INIT: + case IEEE80211_S_SCAN: + err = ENETRESET; + break; + default: + /* + * If the desired channel has changed (to something + * other than any) and we're not already scanning, + * then kick the state machine. + */ + if (ic->ic_des_chan != IEEE80211_CHAN_ANYC && + ic->ic_bss->in_chan != ic->ic_des_chan && + (ic->ic_flags & IEEE80211_F_SCAN) == 0) + err = ENETRESET; + break; + } + break; + } + + default: + ieee80211_err("wifi_cfg_phy: unknown command %x\n", cmd); + outp->wldp_result = WL_NOTSUPPORTED; + err = EINVAL; + break; + } /* switch (cmd) */ + + freemsg(*mp); + *mp = omp; + return (err); +} + +static int +wifi_cfg_wepkey(struct ieee80211com *ic, uint32_t cmd, mblk_t **mp) +{ + mblk_t *omp; + wldp_t *inp = (wldp_t *)(*mp)->b_rptr; + wldp_t *outp; + wl_wep_key_t *iw_wepkey = (wl_wep_key_t *)inp->wldp_buf; + struct ieee80211_key *k; + uint16_t i; + uint32_t klen; + int err = 0; + + if ((omp = wifi_getoutmsg(*mp, cmd, 0)) == NULL) + return (ENOMEM); + outp = (wldp_t *)omp->b_rptr; + + switch (cmd) { + case WLAN_GET_PARAM: + outp->wldp_result = WL_WRITEONLY; + err = EINVAL; + break; + case WLAN_SET_PARAM: + if (inp->wldp_length < sizeof (wl_wep_key_tab_t)) { + ieee80211_err("wifi_cfg_wepkey: " + "parameter too short, %d, expected %d\n", + inp->wldp_length, sizeof (wl_wep_key_tab_t)); + outp->wldp_result = WL_NOTSUPPORTED; + err = EINVAL; + break; + } + + /* set all valid keys */ + for (i = 0; i < MAX_NWEPKEYS; i++) { + if (iw_wepkey[i].wl_wep_operation != WL_ADD) + continue; + klen = iw_wepkey[i].wl_wep_length; + if (klen > IEEE80211_KEYBUF_SIZE) { + ieee80211_err("wifi_cfg_wepkey: " + "invalid wepkey length, %u\n", klen); + outp->wldp_result = WL_NOTSUPPORTED; + err = EINVAL; + continue; /* continue to set other keys */ + } + if (klen == 0) + continue; + + /* + * Set key contents. Only WEP is supported + */ + ieee80211_dbg(IEEE80211_MSG_CONFIG, "wifi_cfg_wepkey: " + "set key %u, len=%u\n", i, klen); + k = &ic->ic_nw_keys[i]; + if (ieee80211_crypto_newkey(ic, IEEE80211_CIPHER_WEP, + IEEE80211_KEY_XMIT | IEEE80211_KEY_RECV, k) == 0) { + ieee80211_err("wifi_cfg_wepkey: " + "abort, create key failed. id=%u\n", i); + outp->wldp_result = WL_HW_ERROR; + err = EIO; + continue; + } + k->wk_keyix = i; + k->wk_keylen = (uint8_t)klen; + k->wk_flags |= IEEE80211_KEY_XMIT | IEEE80211_KEY_RECV; + bzero(k->wk_key, IEEE80211_KEYBUF_SIZE); + bcopy(iw_wepkey[i].wl_wep_key, k->wk_key, klen); + if (ieee80211_crypto_setkey(ic, k, ic->ic_macaddr) + == 0) { + ieee80211_err("wifi_cfg_wepkey: " + "set key failed len=%u\n", klen); + outp->wldp_result = WL_HW_ERROR; + err = EIO; + } + } + if (err == 0) + err = ENETRESET; + break; + default: + ieee80211_err("wifi_cfg_wepkey: unknown command %x\n", cmd); + outp->wldp_result = WL_NOTSUPPORTED; + err = EINVAL; + break; + } + + freemsg(*mp); + *mp = omp; + return (err); +} + +static int +wifi_cfg_keyid(struct ieee80211com *ic, uint32_t cmd, mblk_t **mp) +{ + mblk_t *omp; + wldp_t *inp = (wldp_t *)(*mp)->b_rptr; + wldp_t *outp; + wl_wep_key_id_t *iw_kid = (wl_wep_key_id_t *)inp->wldp_buf; + wl_wep_key_id_t *ow_kid; + int err = 0; + + if ((omp = wifi_getoutmsg(*mp, cmd, sizeof (wl_wep_key_id_t))) == NULL) + return (ENOMEM); + outp = (wldp_t *)omp->b_rptr; + ow_kid = (wl_wep_key_id_t *)outp->wldp_buf; + + switch (cmd) { + case WLAN_GET_PARAM: + *ow_kid = (ic->ic_def_txkey == IEEE80211_KEYIX_NONE) ? + 0 : ic->ic_def_txkey; + break; + case WLAN_SET_PARAM: + if (*iw_kid >= MAX_NWEPKEYS) { + ieee80211_err("wifi_cfg_keyid: " + "keyid too large, %u\n", *iw_kid); + outp->wldp_result = WL_NOTSUPPORTED; + err = EINVAL; + } else { + ieee80211_dbg(IEEE80211_MSG_CONFIG, "wifi_cfg_keyid: " + "set keyid=%u\n", *iw_kid); + ic->ic_def_txkey = *iw_kid; + err = ENETRESET; + } + break; + default: + ieee80211_err("wifi_cfg_keyid: unknown command %x\n", cmd); + outp->wldp_result = WL_NOTSUPPORTED; + err = EINVAL; + break; + } + + freemsg(*mp); + *mp = omp; + return (err); +} + +static int +wifi_cfg_authmode(struct ieee80211com *ic, uint32_t cmd, mblk_t **mp) +{ + mblk_t *omp; + wldp_t *inp = (wldp_t *)(*mp)->b_rptr; + wldp_t *outp; + wl_authmode_t *iw_auth = (wl_authmode_t *)inp->wldp_buf; + wl_authmode_t *ow_auth; + int err = 0; + + if ((omp = wifi_getoutmsg(*mp, cmd, sizeof (wl_authmode_t))) == NULL) + return (ENOMEM); + outp = (wldp_t *)omp->b_rptr; + ow_auth = (wl_authmode_t *)outp->wldp_buf; + + switch (cmd) { + case WLAN_GET_PARAM: + *ow_auth = ic->ic_bss->in_authmode; + break; + case WLAN_SET_PARAM: + if (*iw_auth == ic->ic_bss->in_authmode) + break; + + ieee80211_dbg(IEEE80211_MSG_CONFIG, "wifi_cfg_authmode: " + "set authmode=%u\n", *iw_auth); + switch (*iw_auth) { + case WL_OPENSYSTEM: + case WL_SHAREDKEY: + ic->ic_bss->in_authmode = *iw_auth; + err = ENETRESET; + break; + default: + ieee80211_err("wifi_cfg_authmode: " + "unknown authmode %u\n", *iw_auth); + outp->wldp_result = WL_NOTSUPPORTED; + err = EINVAL; + break; + } + break; + default: + ieee80211_err("wifi_cfg_authmode: unknown command %x\n", cmd); + outp->wldp_result = WL_NOTSUPPORTED; + err = EINVAL; + break; + } + + freemsg(*mp); + *mp = omp; + return (err); +} + +static int +wifi_cfg_encrypt(struct ieee80211com *ic, uint32_t cmd, mblk_t **mp) +{ + mblk_t *omp; + wldp_t *inp = (wldp_t *)(*mp)->b_rptr; + wldp_t *outp; + wl_encryption_t *iw_encryp = (wl_encryption_t *)inp->wldp_buf; + wl_encryption_t *ow_encryp; + uint32_t flags; + int err = 0; + + if ((omp = wifi_getoutmsg(*mp, cmd, sizeof (wl_encryption_t))) == NULL) + return (ENOMEM); + outp = (wldp_t *)omp->b_rptr; + ow_encryp = (wl_encryption_t *)outp->wldp_buf; + + switch (cmd) { + case WLAN_GET_PARAM: + *ow_encryp = (ic->ic_flags & IEEE80211_F_PRIVACY) ? 1 : 0; + break; + case WLAN_SET_PARAM: + ieee80211_dbg(IEEE80211_MSG_CONFIG, "wifi_cfg_encrypt: " + "set encryption=%u\n", *iw_encryp); + flags = ic->ic_flags; + if (*iw_encryp == WL_NOENCRYPTION) + flags &= ~IEEE80211_F_PRIVACY; + else + flags |= IEEE80211_F_PRIVACY; + + if (ic->ic_flags != flags) { + ic->ic_flags = flags; + err = ENETRESET; + } + break; + default: + ieee80211_err("wifi_cfg_encrypt: unknown command %x\n", cmd); + outp->wldp_result = WL_NOTSUPPORTED; + err = EINVAL; + break; + } + + freemsg(*mp); + *mp = omp; + return (err); +} + +static int +wifi_cfg_bsstype(struct ieee80211com *ic, uint32_t cmd, mblk_t **mp) +{ + mblk_t *omp; + wldp_t *inp = (wldp_t *)(*mp)->b_rptr; + wldp_t *outp; + wl_bss_type_t *iw_opmode = (wl_bss_type_t *)inp->wldp_buf; + wl_bss_type_t *ow_opmode; + int err = 0; + + if ((omp = wifi_getoutmsg(*mp, cmd, sizeof (wl_bss_type_t))) == NULL) + return (ENOMEM); + outp = (wldp_t *)omp->b_rptr; + ow_opmode = (wl_bss_type_t *)outp->wldp_buf; + + switch (cmd) { + case WLAN_GET_PARAM: + switch (ic->ic_opmode) { + case IEEE80211_M_STA: + *ow_opmode = WL_BSS_BSS; + break; + case IEEE80211_M_IBSS: + *ow_opmode = WL_BSS_IBSS; + break; + default: + *ow_opmode = WL_BSS_ANY; + break; + } + break; + case WLAN_SET_PARAM: + ieee80211_dbg(IEEE80211_MSG_CONFIG, "wifi_cfg_bsstype: " + "set bsstype=%u\n", *iw_opmode); + switch (*iw_opmode) { + case WL_BSS_BSS: + ic->ic_flags &= ~IEEE80211_F_IBSSON; + ic->ic_opmode = IEEE80211_M_STA; + err = ENETRESET; + break; + case WL_BSS_IBSS: + if ((ic->ic_caps & IEEE80211_C_IBSS) == 0) { + outp->wldp_result = WL_LACK_FEATURE; + err = ENOTSUP; + break; + } + + if ((ic->ic_flags & IEEE80211_F_IBSSON) == 0) { + ic->ic_flags |= IEEE80211_F_IBSSON; + ic->ic_opmode = IEEE80211_M_IBSS; + err = ENETRESET; + } + break; + default: + ieee80211_err("wifi_cfg_bsstype: " + "unknown opmode %u\n", *iw_opmode); + outp->wldp_result = WL_NOTSUPPORTED; + err = EINVAL; + break; + } + break; + default: + ieee80211_err("wifi_cfg_bsstype: unknown command %x\n", cmd); + outp->wldp_result = WL_NOTSUPPORTED; + err = EINVAL; + break; + } + + freemsg(*mp); + *mp = omp; + return (err); +} + +static int +wifi_cfg_linkstatus(struct ieee80211com *ic, uint32_t cmd, mblk_t **mp) +{ + mblk_t *omp; + wldp_t *outp; + wl_linkstatus_t *ow_linkstat; + int err = 0; + + if ((omp = wifi_getoutmsg(*mp, cmd, sizeof (wl_linkstatus_t))) == NULL) + return (ENOMEM); + outp = (wldp_t *)omp->b_rptr; + ow_linkstat = (wl_linkstatus_t *)outp->wldp_buf; + + switch (cmd) { + case WLAN_GET_PARAM: + *ow_linkstat = (ic->ic_state == IEEE80211_S_RUN) ? + WL_CONNECTED : WL_NOTCONNECTED; + break; + case WLAN_SET_PARAM: + outp->wldp_result = WL_READONLY; + err = EINVAL; + break; + default: + ieee80211_err("wifi_cfg_linkstatus: unknown command %x\n", cmd); + outp->wldp_result = WL_NOTSUPPORTED; + err = EINVAL; + break; + } + + freemsg(*mp); + *mp = omp; + return (err); +} + +static int +wifi_cfg_suprates(struct ieee80211com *ic, uint32_t cmd, mblk_t **mp) +{ + mblk_t *omp; + wldp_t *outp; + wl_rates_t *ow_rates; + const struct ieee80211_rateset *srs; + uint8_t srates, *drates; + int err, buflen, i, j, k, l; + + err = 0; + /* rate value (wl_rates_rates) is of type char */ + buflen = offsetof(wl_rates_t, wl_rates_rates) + + sizeof (char) * IEEE80211_MODE_MAX * IEEE80211_RATE_MAXSIZE; + if ((omp = wifi_getoutmsg(*mp, cmd, buflen)) == NULL) + return (ENOMEM); + outp = (wldp_t *)omp->b_rptr; + ow_rates = (wl_rates_t *)outp->wldp_buf; + + switch (cmd) { + case WLAN_GET_PARAM: + /* all rates supported by the device */ + ow_rates->wl_rates_num = 0; + drates = (uint8_t *)ow_rates->wl_rates_rates; + for (i = 0; i < IEEE80211_MODE_MAX; i++) { + srs = &ic->ic_sup_rates[i]; + if (srs->ir_nrates == 0) + continue; + + for (j = 0; j < srs->ir_nrates; j++) { + srates = IEEE80211_RV(srs->ir_rates[j]); + /* sort and skip duplicated rates */ + for (k = 0; k < ow_rates->wl_rates_num; k++) { + if (srates <= drates[k]) + break; + } + if (srates == drates[k]) + continue; /* duplicate, skip */ + /* sort */ + for (l = ow_rates->wl_rates_num; l > k; l--) + drates[l] = drates[l-1]; + drates[k] = srates; + ow_rates->wl_rates_num++; + } + } + break; + case WLAN_SET_PARAM: + outp->wldp_result = WL_READONLY; + err = EINVAL; + break; + default: + ieee80211_err("wifi_cfg_suprates: unknown command %x\n", cmd); + outp->wldp_result = WL_NOTSUPPORTED; + err = EINVAL; + break; + } + + freemsg(*mp); + *mp = omp; + return (err); +} + +static int +wifi_cfg_desrates(struct ieee80211com *ic, uint32_t cmd, mblk_t **mp) +{ + wldp_t *inp = (wldp_t *)(*mp)->b_rptr; + wl_rates_t *iw_rates = (wl_rates_t *)inp->wldp_buf; + mblk_t *omp; + wldp_t *outp; + wl_rates_t *ow_rates; + struct ieee80211_node *in = ic->ic_bss; + struct ieee80211_rateset *rs = &in->in_rates; + uint8_t drate, srate; + int err, i, j; + boolean_t found; + + err = 0; + if ((omp = wifi_getoutmsg(*mp, cmd, sizeof (wl_rates_t))) == NULL) + return (ENOMEM); + outp = (wldp_t *)omp->b_rptr; + ow_rates = (wl_rates_t *)outp->wldp_buf; + + srate = rs->ir_rates[in->in_txrate] & IEEE80211_RATE_VAL; + switch (cmd) { + case WLAN_GET_PARAM: + ow_rates->wl_rates_num = 1; + ow_rates->wl_rates_rates[0] = + (ic->ic_fixed_rate == IEEE80211_FIXED_RATE_NONE) ? + srate : ic->ic_fixed_rate; + break; + case WLAN_SET_PARAM: + drate = iw_rates->wl_rates_rates[0]; + if (ic->ic_fixed_rate == drate) + break; + + ieee80211_dbg(IEEE80211_MSG_CONFIG, "wifi_cfg_desrates: " + "set desired rate=%u\n", drate); + + if (drate == 0) { /* reset */ + ic->ic_fixed_rate = IEEE80211_FIXED_RATE_NONE; + if (ic->ic_state == IEEE80211_S_RUN) { + IEEE80211_UNLOCK(ic); + ieee80211_new_state(ic, IEEE80211_S_ASSOC, 0); + IEEE80211_LOCK(ic); + } + break; + } + + /* + * Set desired rate. the desired rate is for data transfer + * and usually is checked and used when driver changes to + * RUN state. + * If the driver is in AUTH | ASSOC | RUN state, desired + * rate is checked against rates supported by current ESS. + * If it's supported and current state is AUTH|ASSOC, nothing + * needs to be doen by driver since the desired rate will + * be enabled when the device changes to RUN state. And + * when current state is RUN, Re-associate with the ESS to + * enable the desired rate. + */ + if (ic->ic_state != IEEE80211_S_INIT && + ic->ic_state != IEEE80211_S_SCAN) { + /* check if the rate is supported by current ESS */ + for (i = 0; i < rs->ir_nrates; i++) { + if (drate == IEEE80211_RV(rs->ir_rates[i])) + break; + } + if (i < rs->ir_nrates) { /* supported */ + ic->ic_fixed_rate = drate; + if (ic->ic_state == IEEE80211_S_RUN) { + IEEE80211_UNLOCK(ic); + ieee80211_new_state(ic, + IEEE80211_S_ASSOC, 0); + IEEE80211_LOCK(ic); + } + break; + } + } + + /* check the rate is supported by device */ + found = B_FALSE; + for (i = 0; i < IEEE80211_MODE_MAX; i++) { + rs = &ic->ic_sup_rates[i]; + for (j = 0; j < rs->ir_nrates; j++) { + if (drate == IEEE80211_RV(rs->ir_rates[j])) { + found = B_TRUE; + break; + } + } + if (found) + break; + } + if (!found) { + ieee80211_err("wifi_cfg_desrates: " + "invalid rate %d\n", drate); + outp->wldp_result = WL_NOTSUPPORTED; + err = EINVAL; + break; + } + ic->ic_fixed_rate = drate; + if (ic->ic_state != IEEE80211_S_SCAN) + err = ENETRESET; /* restart */ + break; + default: + ieee80211_err("wifi_cfg_desrates: unknown command %x\n", cmd); + outp->wldp_result = WL_NOTSUPPORTED; + err = EINVAL; + break; + } + + freemsg(*mp); + *mp = omp; + return (err); +} + +/* + * Rescale device's RSSI value to (0, 15) as required by WiFi + * driver IOCTLs (PSARC/2003/722) + */ +static wl_rssi_t +wifi_getrssi(struct ieee80211_node *in) +{ + struct ieee80211com *ic = in->in_ic; + wl_rssi_t rssi, max_rssi; + + rssi = ic->ic_node_getrssi(in); + max_rssi = (ic->ic_maxrssi == 0) ? IEEE80211_MAXRSSI : ic->ic_maxrssi; + if (rssi == 0) + rssi = 0; + else if (rssi >= max_rssi) + rssi = MAX_RSSI; + else + rssi = rssi * MAX_RSSI / max_rssi + 1; + + return (rssi); +} + +static int +wifi_cfg_rssi(struct ieee80211com *ic, uint32_t cmd, mblk_t **mp) +{ + mblk_t *omp; + wldp_t *outp; + wl_rssi_t *ow_rssi; + int err = 0; + + if ((omp = wifi_getoutmsg(*mp, cmd, sizeof (wl_rssi_t))) == NULL) + return (ENOMEM); + outp = (wldp_t *)omp->b_rptr; + ow_rssi = (wl_rssi_t *)outp->wldp_buf; + + switch (cmd) { + case WLAN_GET_PARAM: + *ow_rssi = wifi_getrssi(ic->ic_bss); + break; + case WLAN_SET_PARAM: + outp->wldp_result = WL_READONLY; + err = EINVAL; + break; + default: + ieee80211_err("wifi_cfg_rssi: unknown command %x\n", cmd); + outp->wldp_result = WL_NOTSUPPORTED; + return (EINVAL); + } + + freemsg(*mp); + *mp = omp; + return (err); +} + +/* + * maximum scan wait time in second. + * Time spent on scaning one channel is usually 100~200ms. The maximum + * number of channels defined in wifi_ioctl.h is 99 (MAX_CHANNEL_NUM). + * As a result the maximum total scan time is defined as below in ms. + */ +#define WAIT_SCAN_MAX (200 * MAX_CHANNEL_NUM) + +static void +wifi_wait_scan(struct ieee80211com *ic) +{ + ieee80211_impl_t *im = ic->ic_private; + + while ((ic->ic_flags & (IEEE80211_F_SCAN | IEEE80211_F_ASCAN)) != 0) { + if (cv_timedwait_sig(&im->im_scan_cv, &ic->ic_genlock, + ddi_get_lbolt() + drv_usectohz(WAIT_SCAN_MAX * 1000)) != + 0) { + break; + } + } +} + +#define WIFI_HAVE_CAP(in, flag) (((in)->in_capinfo & (flag)) ? 1 : 0) + +/* + * Callback function used by ieee80211_iterate_nodes() in + * wifi_cfg_esslist() to get info of each node in a node table + * arg output buffer, pointer to wl_ess_list_t + * in each node in the node table + */ +static void +wifi_read_ap(void *arg, struct ieee80211_node *in) +{ + wl_ess_list_t *aps = arg; + ieee80211com_t *ic = in->in_ic; + struct ieee80211_channel *chan = in->in_chan; + struct ieee80211_rateset *rates = &(in->in_rates); + wl_ess_conf_t *conf; + uint8_t *end; + uint_t i, nrates; + + end = (uint8_t *)aps - WIFI_BUF_OFFSET + MAX_BUF_LEN - + sizeof (wl_ess_list_t); + conf = &aps->wl_ess_list_ess[aps->wl_ess_list_num]; + if ((uint8_t *)conf > end) + return; + + /* skip newly allocated NULL bss node */ + if (IEEE80211_ADDR_EQ(in->in_macaddr, ic->ic_macaddr)) + return; + + conf->wl_ess_conf_essid.wl_essid_length = in->in_esslen; + bcopy(in->in_essid, conf->wl_ess_conf_essid.wl_essid_essid, + in->in_esslen); + bcopy(in->in_bssid, conf->wl_ess_conf_bssid, IEEE80211_ADDR_LEN); + conf->wl_ess_conf_wepenabled = + (in->in_capinfo & IEEE80211_CAPINFO_PRIVACY ? + WL_ENC_WEP : WL_NOENCRYPTION); + conf->wl_ess_conf_bsstype = + (in->in_capinfo & IEEE80211_CAPINFO_ESS ? + WL_BSS_BSS : WL_BSS_IBSS); + conf->wl_ess_conf_sl = wifi_getrssi(in); + + /* physical (FH, DS, ERP) parameters */ + if (IEEE80211_IS_CHAN_A(chan) || IEEE80211_IS_CHAN_T(chan)) { + wl_ofdm_t *ofdm = + (wl_ofdm_t *)&((conf->wl_phy_conf).wl_phy_ofdm_conf); + ofdm->wl_ofdm_subtype = WL_OFDM; + ofdm->wl_ofdm_frequency = chan->ich_freq; + } else { + switch (in->in_phytype) { + case IEEE80211_T_FH: { + wl_fhss_t *fhss = (wl_fhss_t *) + &((conf->wl_phy_conf).wl_phy_fhss_conf); + + fhss->wl_fhss_subtype = WL_FHSS; + fhss->wl_fhss_channel = ieee80211_chan2ieee(ic, chan); + fhss->wl_fhss_dwelltime = in->in_fhdwell; + break; + } + case IEEE80211_T_DS: { + wl_dsss_t *dsss = (wl_dsss_t *) + &((conf->wl_phy_conf).wl_phy_dsss_conf); + + dsss->wl_dsss_subtype = WL_DSSS; + dsss->wl_dsss_channel = ieee80211_chan2ieee(ic, chan); + dsss->wl_dsss_have_short_preamble = WIFI_HAVE_CAP(in, + IEEE80211_CAPINFO_SHORT_PREAMBLE); + dsss->wl_dsss_agility_enabled = WIFI_HAVE_CAP(in, + IEEE80211_CAPINFO_CHNL_AGILITY); + dsss->wl_dsss_have_pbcc = dsss->wl_dsss_pbcc_enable = + WIFI_HAVE_CAP(in, IEEE80211_CAPINFO_PBCC); + break; + } + case IEEE80211_T_OFDM: { + wl_erp_t *erp = (wl_erp_t *) + &((conf->wl_phy_conf).wl_phy_erp_conf); + + erp->wl_erp_subtype = WL_ERP; + erp->wl_erp_channel = ieee80211_chan2ieee(ic, chan); + erp->wl_erp_have_short_preamble = WIFI_HAVE_CAP(in, + IEEE80211_CAPINFO_SHORT_PREAMBLE); + erp->wl_erp_have_agility = erp->wl_erp_agility_enabled = + WIFI_HAVE_CAP(in, IEEE80211_CAPINFO_CHNL_AGILITY); + erp->wl_erp_have_pbcc = erp->wl_erp_pbcc_enabled = + WIFI_HAVE_CAP(in, IEEE80211_CAPINFO_PBCC); + erp->wl_erp_dsss_ofdm_enabled = + WIFI_HAVE_CAP(in, IEEE80211_CAPINFO_DSSSOFDM); + erp->wl_erp_sst_enabled = WIFI_HAVE_CAP(in, + IEEE80211_CAPINFO_SHORT_SLOTTIME); + break; + } /* case IEEE80211_T_OFDM */ + } /* switch in->in_phytype */ + } + + /* supported rates */ + nrates = MIN(rates->ir_nrates, MAX_SCAN_SUPPORT_RATES); + /* + * The number of supported rates might exceed + * MAX_SCAN_SUPPORT_RATES. Fill in highest rates + * first so userland command could properly show + * maximum speed of AP + */ + for (i = 0; i < nrates; i++) { + conf->wl_supported_rates[i] = + rates->ir_rates[rates->ir_nrates - i - 1]; + } + + aps->wl_ess_list_num++; +} + +static int +wifi_cfg_esslist(struct ieee80211com *ic, uint32_t cmd, mblk_t **mp) +{ + mblk_t *omp; + wldp_t *outp; + wl_ess_list_t *ow_aps; + int err = 0; + + if ((omp = wifi_getoutmsg(*mp, cmd, MAX_BUF_LEN - WIFI_BUF_OFFSET)) == + NULL) { + return (ENOMEM); + } + outp = (wldp_t *)omp->b_rptr; + ow_aps = (wl_ess_list_t *)outp->wldp_buf; + + switch (cmd) { + case WLAN_GET_PARAM: + ow_aps->wl_ess_list_num = 0; + ieee80211_iterate_nodes(&ic->ic_scan, wifi_read_ap, ow_aps); + outp->wldp_length = WIFI_BUF_OFFSET + + offsetof(wl_ess_list_t, wl_ess_list_ess) + + ow_aps->wl_ess_list_num * sizeof (wl_ess_conf_t); + omp->b_wptr = omp->b_rptr + outp->wldp_length; + break; + case WLAN_SET_PARAM: + outp->wldp_result = WL_READONLY; + err = EINVAL; + break; + default: + ieee80211_err("wifi_cfg_esslist: unknown command %x\n", cmd); + outp->wldp_result = WL_NOTSUPPORTED; + err = EINVAL; + break; + } + + freemsg(*mp); + *mp = omp; + return (err); +} + +/* + * Scan the network for all available ESSs. + * IEEE80211_F_SCANONLY is set when current state is INIT. And + * with this flag, after scan the state will be changed back to + * INIT. The reason is at the end of SCAN stage, the STA will + * consequently connect to an AP. Then it looks unreasonable that + * for a disconnected device, A SCAN command causes it connected. + * So the state is changed back to INIT. + */ +static int +wifi_cmd_scan(struct ieee80211com *ic, mblk_t *mp) +{ + int ostate = ic->ic_state; + + /* + * Do not scan when current state is RUN. The reason is + * when connected, STA is on the same channel as AP. But + * to do scan, STA have to switch to each available channel, + * send probe request and wait certian time for probe + * response/beacon. Then when the STA switches to a channel + * different than AP's, as a result it cannot send/receive + * data packets to/from the connected WLAN. This eventually + * will cause data loss. + */ + if (ostate == IEEE80211_S_RUN) + return (0); + + IEEE80211_UNLOCK(ic); + ieee80211_new_state(ic, IEEE80211_S_SCAN, -1); + IEEE80211_LOCK(ic); + if (ostate == IEEE80211_S_INIT) + ic->ic_flags |= IEEE80211_F_SCANONLY; + + /* wait scan complete */ + wifi_wait_scan(ic); + + wifi_setupoutmsg(mp, 0); + return (0); +} + +static void +wifi_loaddefdata(struct ieee80211com *ic) +{ + struct ieee80211_node *in = ic->ic_bss; + int i; + + ic->ic_des_esslen = 0; + bzero(ic->ic_des_essid, IEEE80211_NWID_LEN); + ic->ic_flags &= ~IEEE80211_F_DESBSSID; + bzero(ic->ic_des_bssid, IEEE80211_ADDR_LEN); + bzero(ic->ic_bss->in_bssid, IEEE80211_ADDR_LEN); + ic->ic_des_chan = IEEE80211_CHAN_ANYC; + ic->ic_fixed_rate = IEEE80211_FIXED_RATE_NONE; + bzero(ic->ic_nickname, IEEE80211_NWID_LEN); + in->in_authmode = IEEE80211_AUTH_OPEN; + ic->ic_flags &= ~IEEE80211_F_PRIVACY; + ic->ic_def_txkey = 0; + for (i = 0; i < MAX_NWEPKEYS; i++) { + ic->ic_nw_keys[i].wk_keylen = 0; + bzero(ic->ic_nw_keys[i].wk_key, IEEE80211_KEYBUF_SIZE); + } + ic->ic_curmode = IEEE80211_MODE_AUTO; +} + +static int +wifi_cmd_loaddefaults(struct ieee80211com *ic, mblk_t *mp) +{ + wifi_loaddefdata(ic); + wifi_setupoutmsg(mp, 0); + return (ENETRESET); +} + +static int +wifi_cmd_disassoc(struct ieee80211com *ic, mblk_t *mp) +{ + if (ic->ic_state != IEEE80211_S_INIT) { + IEEE80211_UNLOCK(ic); + (void) ieee80211_new_state(ic, IEEE80211_S_INIT, -1); + IEEE80211_LOCK(ic); + } + wifi_loaddefdata(ic); + wifi_setupoutmsg(mp, 0); + return (0); +} + +static int +wifi_cfg_getset(struct ieee80211com *ic, mblk_t **mp, uint32_t cmd) +{ + mblk_t *mp1 = *mp; + wldp_t *wp = (wldp_t *)mp1->b_rptr; + int err = 0; + + ASSERT(ic != NULL && mp1 != NULL); + IEEE80211_LOCK_ASSERT(ic); + if (MBLKL(mp1) < WIFI_BUF_OFFSET) { + ieee80211_err("wifi_cfg_getset: " + "invalid input buffer, size=%d\n", MBLKL(mp1)); + return (EINVAL); + } + + switch (wp->wldp_id) { + /* Commands */ + case WL_SCAN: + err = wifi_cmd_scan(ic, mp1); + break; + case WL_LOAD_DEFAULTS: + err = wifi_cmd_loaddefaults(ic, mp1); + break; + case WL_DISASSOCIATE: + err = wifi_cmd_disassoc(ic, mp1); + break; + /* Parameters */ + case WL_ESSID: + err = wifi_cfg_essid(ic, cmd, mp); + break; + case WL_BSSID: + err = wifi_cfg_bssid(ic, cmd, mp); + break; + case WL_NODE_NAME: + err = wifi_cfg_nodename(ic, cmd, mp); + break; + case WL_PHY_CONFIG: + err = wifi_cfg_phy(ic, cmd, mp); + break; + case WL_WEP_KEY_TAB: + err = wifi_cfg_wepkey(ic, cmd, mp); + break; + case WL_WEP_KEY_ID: + err = wifi_cfg_keyid(ic, cmd, mp); + break; + case WL_AUTH_MODE: + err = wifi_cfg_authmode(ic, cmd, mp); + break; + case WL_ENCRYPTION: + err = wifi_cfg_encrypt(ic, cmd, mp); + break; + case WL_BSS_TYPE: + err = wifi_cfg_bsstype(ic, cmd, mp); + break; + case WL_DESIRED_RATES: + err = wifi_cfg_desrates(ic, cmd, mp); + break; + case WL_LINKSTATUS: + err = wifi_cfg_linkstatus(ic, cmd, mp); + break; + case WL_ESS_LIST: + err = wifi_cfg_esslist(ic, cmd, mp); + break; + case WL_SUPPORTED_RATES: + err = wifi_cfg_suprates(ic, cmd, mp); + break; + case WL_RSSI: + err = wifi_cfg_rssi(ic, cmd, mp); + break; + default: + wifi_setupoutmsg(mp1, 0); + wp->wldp_result = WL_LACK_FEATURE; + err = ENOTSUP; + break; + } + + return (err); +} + +/* + * Typically invoked by drivers in response to requests for + * information or to change settings from the userland. + * + * Return value should be checked by WiFi drivers. Return 0 + * on success. Otherwise, return non-zero value to indicate + * the error. Driver should operate as below when the return + * error is: + * ENETRESET Reset wireless network and re-start to join a + * WLAN. ENETRESET is returned when a configuration + * parameter has been changed. + * When acknowledge a M_IOCTL message, thie error + * is ignored. + */ +int +ieee80211_ioctl(struct ieee80211com *ic, queue_t *wq, mblk_t *mp) +{ + struct iocblk *iocp; + int32_t cmd, err, len; + boolean_t need_privilege; + mblk_t *mp1; + + if (MBLKL(mp) < sizeof (struct iocblk)) { + ieee80211_err("ieee80211_ioctl: ioctl buffer too short, %u\n", + MBLKL(mp)); + miocnak(wq, mp, 0, EINVAL); + return (EINVAL); + } + + /* + * Validate the command + */ + iocp = (struct iocblk *)mp->b_rptr; + iocp->ioc_error = 0; + cmd = iocp->ioc_cmd; + need_privilege = B_TRUE; + switch (cmd) { + case WLAN_SET_PARAM: + case WLAN_COMMAND: + break; + case WLAN_GET_PARAM: + need_privilege = B_FALSE; + break; + default: + ieee80211_dbg(IEEE80211_MSG_ANY, "ieee80211_ioctl(): " + "unknown cmd 0x%x\n", cmd); + miocnak(wq, mp, 0, EINVAL); + return (EINVAL); + } + + if (need_privilege) { + /* + * Check for specific net_config privilege on Solaris 10+. + */ + err = secpolicy_net_config(iocp->ioc_cr, B_FALSE); + if (err != 0) { + miocnak(wq, mp, 0, err); + return (err); + } + } + + IEEE80211_LOCK(ic); + + /* sanity check */ + mp1 = mp->b_cont; + if (iocp->ioc_count == 0 || iocp->ioc_count < sizeof (wldp_t) || + mp1 == NULL) { + miocnak(wq, mp, 0, EINVAL); + IEEE80211_UNLOCK(ic); + return (EINVAL); + } + + /* assuming single data block */ + if (mp1->b_cont != NULL) { + freemsg(mp1->b_cont); + mp1->b_cont = NULL; + } + + err = wifi_cfg_getset(ic, &mp1, cmd); + mp->b_cont = mp1; + IEEE80211_UNLOCK(ic); + + len = msgdsize(mp1); + /* ignore ENETRESET when acknowledge the M_IOCTL message */ + if (err == 0 || err == ENETRESET) + miocack(wq, mp, len, 0); + else + miocack(wq, mp, len, err); + + return (err); +} diff --git a/usr/src/uts/common/io/net80211/net80211_node.c b/usr/src/uts/common/io/net80211/net80211_node.c new file mode 100644 index 0000000000..59cb9ccbbf --- /dev/null +++ b/usr/src/uts/common/io/net80211/net80211_node.c @@ -0,0 +1,1503 @@ +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +/* + * Copyright (c) 2001 Atsushi Onoe + * Copyright (c) 2002-2005 Sam Leffler, Errno Consulting + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * Alternatively, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2 as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +/* + * Node management routines + */ + +#include "net80211_impl.h" + +static ieee80211_node_t *ieee80211_node_alloc(ieee80211com_t *); +static void ieee80211_node_cleanup(ieee80211_node_t *); +static void ieee80211_node_free(ieee80211_node_t *); +static uint8_t ieee80211_node_getrssi(const ieee80211_node_t *); +static void ieee80211_setup_node(ieee80211com_t *, ieee80211_node_table_t *, + ieee80211_node_t *, const uint8_t *); +static void ieee80211_node_reclaim(ieee80211_node_table_t *, + ieee80211_node_t *); +static void ieee80211_free_node_locked(ieee80211_node_t *); +static void ieee80211_free_allnodes(ieee80211_node_table_t *); +static void ieee80211_node_leave(ieee80211com_t *, ieee80211_node_t *); +static void ieee80211_timeout_scan_candidates(ieee80211_node_table_t *); +static void ieee80211_timeout_stations(ieee80211_node_table_t *); +static void ieee80211_node_table_init(ieee80211com_t *, + ieee80211_node_table_t *, const char *, int, int, + void (*timeout)(ieee80211_node_table_t *)); +static void ieee80211_node_table_cleanup(ieee80211_node_table_t *); + +/* + * association failures before ignored + * The failure may be caused by the response frame is lost for + * environmental reason. So Try associate more than once before + * ignore the node + */ +#define IEEE80211_STA_FAILS_MAX 2 + +/* + * Initialize node database management callbacks for the interface. + * This function is called by ieee80211_attach(). These callback + * functions may be overridden in special circumstances, as long as + * as this is done after calling ieee80211_attach() and prior to any + * other call which may allocate a node + */ +void +ieee80211_node_attach(ieee80211com_t *ic) +{ + struct ieee80211_impl *im = ic->ic_private; + + ic->ic_node_alloc = ieee80211_node_alloc; + ic->ic_node_free = ieee80211_node_free; + ic->ic_node_cleanup = ieee80211_node_cleanup; + ic->ic_node_getrssi = ieee80211_node_getrssi; + + /* default station inactivity timer setings */ + im->im_inact_init = IEEE80211_INACT_INIT; + im->im_inact_assoc = IEEE80211_INACT_ASSOC; + im->im_inact_run = IEEE80211_INACT_RUN; + im->im_inact_probe = IEEE80211_INACT_PROBE; +} + +/* + * Initialize node databases and the ic_bss node element. + */ +void +ieee80211_node_lateattach(ieee80211com_t *ic) +{ + /* + * Calculate ic_tim_bitmap size in bytes + * IEEE80211_AID_MAX defines maximum bits in ic_tim_bitmap + */ + ic->ic_tim_len = howmany(IEEE80211_AID_MAX, 8) * sizeof (uint8_t); + + ieee80211_node_table_init(ic, &ic->ic_sta, "station", + IEEE80211_INACT_INIT, IEEE80211_WEP_NKID, + ieee80211_timeout_stations); + ieee80211_node_table_init(ic, &ic->ic_scan, "scan", + IEEE80211_INACT_SCAN, 0, ieee80211_timeout_scan_candidates); + + ieee80211_reset_bss(ic); +} + +/* + * Destroy all node databases and is usually called during device detach + */ +void +ieee80211_node_detach(ieee80211com_t *ic) +{ + /* Node Detach */ + if (ic->ic_bss != NULL) { + ieee80211_free_node(ic->ic_bss); + ic->ic_bss = NULL; + } + ieee80211_node_table_cleanup(&ic->ic_scan); + ieee80211_node_table_cleanup(&ic->ic_sta); +} + +/* + * Increase a node's reference count + * + * Return pointer to the node + */ +ieee80211_node_t * +ieee80211_ref_node(ieee80211_node_t *in) +{ + ieee80211_node_incref(in); + return (in); +} + +/* + * Dexrease a node's reference count + */ +void +ieee80211_unref_node(ieee80211_node_t **in) +{ + ieee80211_node_decref(*in); + *in = NULL; /* guard against use */ +} + +/* + * Mark ports authorized for data traffic. This function is usually + * used by 802.1x authenticator. + */ +void +ieee80211_node_authorize(ieee80211_node_t *in) +{ + ieee80211_impl_t *im = in->in_ic->ic_private; + + in->in_flags |= IEEE80211_NODE_AUTH; + in->in_inact_reload = im->im_inact_run; +} + +/* + * Mark ports unauthorized for data traffic. This function is usually + * used by 802.1x authenticator. + */ +void +ieee80211_node_unauthorize(ieee80211_node_t *in) +{ + in->in_flags &= ~IEEE80211_NODE_AUTH; +} + +/* + * Set/change the channel. The rate set is also updated as + * to insure a consistent view by drivers. + */ +static void +ieee80211_node_setchan(ieee80211com_t *ic, ieee80211_node_t *in, + struct ieee80211_channel *chan) +{ + if (chan == IEEE80211_CHAN_ANYC) + chan = ic->ic_curchan; + in->in_chan = chan; + in->in_rates = ic->ic_sup_rates[ieee80211_chan2mode(ic, chan)]; +} + +/* + * Initialize the channel set to scan based on the available channels + * and the current PHY mode. + */ +static void +ieee80211_reset_scan(ieee80211com_t *ic) +{ + ieee80211_impl_t *im = ic->ic_private; + + if (ic->ic_des_chan != IEEE80211_CHAN_ANYC) { + (void) memset(im->im_chan_scan, 0, sizeof (im->im_chan_scan)); + ieee80211_setbit(im->im_chan_scan, + ieee80211_chan2ieee(ic, ic->ic_des_chan)); + } else { + bcopy(ic->ic_chan_active, im->im_chan_scan, + sizeof (ic->ic_chan_active)); + } + ieee80211_dbg(IEEE80211_MSG_SCAN, "ieee80211_reset_scan(): " + "start chan %u\n", ieee80211_chan2ieee(ic, ic->ic_curchan)); +} + +/* + * Begin an active scan. Initialize the node cache. The scan + * begins on the next radio channel by calling ieee80211_next_scan(). + * The actual scanning is not automated. The driver itself + * only handles setting the radio frequency and stepping through + * the channels. + */ +void +ieee80211_begin_scan(ieee80211com_t *ic, boolean_t reset) +{ + IEEE80211_LOCK(ic); + + if (ic->ic_opmode != IEEE80211_M_HOSTAP) + ic->ic_flags |= IEEE80211_F_ASCAN; + ieee80211_dbg(IEEE80211_MSG_SCAN, + "begin %s scan in %s mode on channel %u\n", + (ic->ic_flags & IEEE80211_F_ASCAN) ? "active" : "passive", + ieee80211_phymode_name[ic->ic_curmode], + ieee80211_chan2ieee(ic, ic->ic_curchan)); + + /* + * Clear scan state and flush any previously seen AP's. + */ + ieee80211_reset_scan(ic); + if (reset) + ieee80211_free_allnodes(&ic->ic_scan); + + ic->ic_flags |= IEEE80211_F_SCAN; + IEEE80211_UNLOCK(ic); + + /* Scan the next channel. */ + ieee80211_next_scan(ic); +} + +/* + * Switch to the next channel marked for scanning. + * A driver is expected to first call ieee80211_begin_scan(), + * to initialize the node cache, then set the radio channel + * on the device. And then after a certain time has elapsed, + * call ieee80211_next_scan() to move to the next channel. + * Typically, a timeout routine is used to automate this process. + */ +void +ieee80211_next_scan(ieee80211com_t *ic) +{ + ieee80211_impl_t *im = ic->ic_private; + struct ieee80211_channel *chan; + + IEEE80211_LOCK(ic); + /* + * Insure any previous mgt frame timeouts don't fire. + * This assumes the driver does the right thing in + * flushing anything queued in the driver and below. + */ + im->im_mgt_timer = 0; + + chan = ic->ic_curchan; + do { + if (++chan > &ic->ic_sup_channels[IEEE80211_CHAN_MAX]) + chan = &ic->ic_sup_channels[0]; + if (ieee80211_isset(im->im_chan_scan, + ieee80211_chan2ieee(ic, chan))) { + ieee80211_clrbit(im->im_chan_scan, + ieee80211_chan2ieee(ic, chan)); + ieee80211_dbg(IEEE80211_MSG_SCAN, + "ieee80211_next_scan: chan %d->%d\n", + ieee80211_chan2ieee(ic, ic->ic_curchan), + ieee80211_chan2ieee(ic, chan)); + ic->ic_curchan = chan; + /* + * drivers should do this as needed, + * for now maintain compatibility + */ + ic->ic_bss->in_rates = + ic->ic_sup_rates[ieee80211_chan2mode(ic, chan)]; + IEEE80211_UNLOCK(ic); + ieee80211_new_state(ic, IEEE80211_S_SCAN, -1); + return; + } + } while (chan != ic->ic_curchan); + IEEE80211_UNLOCK(ic); + ieee80211_end_scan(ic); +} + +/* + * Copy useful state from node obss into nbss. + */ +static void +ieee80211_copy_bss(ieee80211_node_t *nbss, const ieee80211_node_t *obss) +{ + /* propagate useful state */ + nbss->in_authmode = obss->in_authmode; + nbss->in_txpower = obss->in_txpower; + nbss->in_vlan = obss->in_vlan; +} + +/* + * Setup the net80211 specific portion of an interface's softc, ic, + * for use in IBSS mode + */ +void +ieee80211_create_ibss(ieee80211com_t *ic, struct ieee80211_channel *chan) +{ + ieee80211_impl_t *im = ic->ic_private; + ieee80211_node_table_t *nt; + ieee80211_node_t *in; + + IEEE80211_LOCK_ASSERT(ic); + ieee80211_dbg(IEEE80211_MSG_SCAN, "ieee80211_create_ibss: " + "creating ibss\n"); + + /* + * Create the station/neighbor table. Note that for adhoc + * mode we make the initial inactivity timer longer since + * we create nodes only through discovery and they typically + * are long-lived associations. + */ + nt = &ic->ic_sta; + IEEE80211_NODE_LOCK(nt); + nt->nt_name = "neighbor"; + nt->nt_inact_init = im->im_inact_run; + IEEE80211_NODE_UNLOCK(nt); + + in = ieee80211_alloc_node(ic, &ic->ic_sta, ic->ic_macaddr); + if (in == NULL) { + ieee80211_err("ieee80211_create_ibss(): alloc node failed\n"); + return; + } + IEEE80211_ADDR_COPY(in->in_bssid, ic->ic_macaddr); + in->in_esslen = ic->ic_des_esslen; + (void) memcpy(in->in_essid, ic->ic_des_essid, in->in_esslen); + ieee80211_copy_bss(in, ic->ic_bss); + in->in_intval = ic->ic_bintval; + if (ic->ic_flags & IEEE80211_F_PRIVACY) + in->in_capinfo |= IEEE80211_CAPINFO_PRIVACY; + if (ic->ic_phytype == IEEE80211_T_FH) { + in->in_fhdwell = 200; + in->in_fhindex = 1; + } + switch (ic->ic_opmode) { + case IEEE80211_M_IBSS: + ic->ic_flags |= IEEE80211_F_SIBSS; + in->in_capinfo |= IEEE80211_CAPINFO_IBSS; + if (ic->ic_flags & IEEE80211_F_DESBSSID) + IEEE80211_ADDR_COPY(in->in_bssid, ic->ic_des_bssid); + else + in->in_bssid[0] |= 0x02; /* local bit for IBSS */ + break; + case IEEE80211_M_AHDEMO: + if (ic->ic_flags & IEEE80211_F_DESBSSID) + IEEE80211_ADDR_COPY(in->in_bssid, ic->ic_des_bssid); + else + (void) memset(in->in_bssid, 0, IEEE80211_ADDR_LEN); + break; + default: + ieee80211_err("ieee80211_create_ibss(): " + "wrong opmode %u to creat IBSS, abort\n", + ic->ic_opmode); + ieee80211_free_node(in); + return; + } + + /* + * Fix the channel and related attributes. + */ + ieee80211_node_setchan(ic, in, chan); + ic->ic_curchan = chan; + ic->ic_curmode = ieee80211_chan2mode(ic, chan); + /* + * Do mode-specific rate setup. + */ + ieee80211_setbasicrates(&in->in_rates, ic->ic_curmode); + IEEE80211_UNLOCK(ic); + ieee80211_sta_join(ic, in); + IEEE80211_LOCK(ic); +} + +void +ieee80211_reset_bss(ieee80211com_t *ic) +{ + ieee80211_node_t *in; + ieee80211_node_t *obss; + + in = ieee80211_alloc_node(ic, &ic->ic_scan, ic->ic_macaddr); + ASSERT(in != NULL); + obss = ic->ic_bss; + ic->ic_bss = ieee80211_ref_node(in); + if (obss != NULL) { + ieee80211_copy_bss(in, obss); + in->in_intval = ic->ic_bintval; + ieee80211_free_node(obss); + } +} + +static int +ieee80211_match_bss(ieee80211com_t *ic, ieee80211_node_t *in) +{ + uint8_t rate; + int fail; + + fail = 0; + if (ieee80211_isclr(ic->ic_chan_active, + ieee80211_chan2ieee(ic, in->in_chan))) { + fail |= IEEE80211_BADCHAN; + } + if (ic->ic_des_chan != IEEE80211_CHAN_ANYC && + in->in_chan != ic->ic_des_chan) { + fail |= IEEE80211_BADCHAN; + } + if (ic->ic_opmode == IEEE80211_M_IBSS) { + if (!(in->in_capinfo & IEEE80211_CAPINFO_IBSS)) + fail |= IEEE80211_BADOPMODE; + } else { + if (!(in->in_capinfo & IEEE80211_CAPINFO_ESS)) + fail |= IEEE80211_BADOPMODE; + } + if (ic->ic_flags & IEEE80211_F_PRIVACY) { + if (!(in->in_capinfo & IEEE80211_CAPINFO_PRIVACY)) + fail |= IEEE80211_BADPRIVACY; + } else { + if (in->in_capinfo & IEEE80211_CAPINFO_PRIVACY) + fail |= IEEE80211_BADPRIVACY; + } + rate = ieee80211_fix_rate(in, IEEE80211_F_DONEGO | IEEE80211_F_DOFRATE); + if (rate & IEEE80211_RATE_BASIC) + fail |= IEEE80211_BADRATE; + if (ic->ic_des_esslen != 0 && + (in->in_esslen != ic->ic_des_esslen || + memcmp(in->in_essid, ic->ic_des_essid, ic->ic_des_esslen) != 0)) { + fail |= IEEE80211_BADESSID; + } + if ((ic->ic_flags & IEEE80211_F_DESBSSID) && + !IEEE80211_ADDR_EQ(ic->ic_des_bssid, in->in_bssid)) { + fail |= IEEE80211_BADBSSID; + } + if (in->in_fails >= IEEE80211_STA_FAILS_MAX) + fail |= IEEE80211_NODEFAIL; + + return (fail); +} + +#define IEEE80211_MAXRATE(_rs) \ + ((_rs).ir_rates[(_rs).ir_nrates - 1] & IEEE80211_RATE_VAL) + +/* + * Compare the capabilities of node a with node b and decide which is + * more desirable (return b if b is considered better than a). Note + * that we assume compatibility/usability has already been checked + * so we don't need to (e.g. validate whether privacy is supported). + * Used to select the best scan candidate for association in a BSS. + * + * Return desired node + */ +static ieee80211_node_t * +ieee80211_node_compare(ieee80211com_t *ic, ieee80211_node_t *a, + ieee80211_node_t *b) +{ + uint8_t maxa; + uint8_t maxb; + uint8_t rssia; + uint8_t rssib; + + /* privacy support preferred */ + if ((a->in_capinfo & IEEE80211_CAPINFO_PRIVACY) && + !(b->in_capinfo & IEEE80211_CAPINFO_PRIVACY)) { + return (a); + } + if (!(a->in_capinfo & IEEE80211_CAPINFO_PRIVACY) && + (b->in_capinfo & IEEE80211_CAPINFO_PRIVACY)) { + return (b); + } + + /* compare count of previous failures */ + if (b->in_fails != a->in_fails) + return ((a->in_fails > b->in_fails) ? b : a); + + rssia = ic->ic_node_getrssi(a); + rssib = ic->ic_node_getrssi(b); + if (ABS(rssib - rssia) < IEEE80211_RSSI_CMP_THRESHOLD) { + /* best/max rate preferred if signal level close enough */ + maxa = IEEE80211_MAXRATE(a->in_rates); + maxb = IEEE80211_MAXRATE(b->in_rates); + if (maxa != maxb) + return ((maxb > maxa) ? b : a); + /* for now just prefer 5Ghz band to all other bands */ + if (IEEE80211_IS_CHAN_5GHZ(a->in_chan) && + !IEEE80211_IS_CHAN_5GHZ(b->in_chan)) { + return (a); + } + if (!IEEE80211_IS_CHAN_5GHZ(a->in_chan) && + IEEE80211_IS_CHAN_5GHZ(b->in_chan)) { + return (b); + } + } + /* all things being equal, compare signal level */ + return ((rssib > rssia) ? b : a); +} + +/* + * Mark an ongoing scan stopped. + */ +void +ieee80211_cancel_scan(ieee80211com_t *ic) +{ + IEEE80211_LOCK(ic); + ieee80211_dbg(IEEE80211_MSG_SCAN, "ieee80211_cancel_scan()" + "end %s scan\n", + (ic->ic_flags & IEEE80211_F_ASCAN) ? "active" : "passive"); + ic->ic_flags &= ~(IEEE80211_F_SCAN | IEEE80211_F_ASCAN); + cv_broadcast(&((ieee80211_impl_t *)ic->ic_private)->im_scan_cv); + IEEE80211_UNLOCK(ic); +} + +/* + * Complete a scan of potential channels. It is called by + * ieee80211_next_scan() when the state machine has performed + * a full cycle of scaning on all available radio channels. + * ieee80211_end_scan() will inspect the node cache for suitable + * APs found during scaning, and associate with one, should + * the parameters of the node match those of the configuration + * requested from userland. + */ +void +ieee80211_end_scan(ieee80211com_t *ic) +{ + ieee80211_node_table_t *nt = &ic->ic_scan; + ieee80211_node_t *in; + ieee80211_node_t *selbs; + + ieee80211_cancel_scan(ic); + IEEE80211_LOCK(ic); + + /* + * Automatic sequencing; look for a candidate and + * if found join the network. + */ + /* NB: unlocked read should be ok */ + in = list_head(&nt->nt_node); + if (in == NULL) { + ieee80211_dbg(IEEE80211_MSG_SCAN, "ieee80211_end_scan: " + "no scan candidate\n"); + notfound: + if (ic->ic_opmode == IEEE80211_M_IBSS && + (ic->ic_flags & IEEE80211_F_IBSSON) && + ic->ic_des_esslen != 0) { + ieee80211_create_ibss(ic, ic->ic_ibss_chan); + IEEE80211_UNLOCK(ic); + return; + } + + /* + * Reset the list of channels to scan and start again. + */ + ieee80211_reset_scan(ic); + ic->ic_flags |= IEEE80211_F_SCAN | IEEE80211_F_ASCAN; + IEEE80211_UNLOCK(ic); + + ieee80211_next_scan(ic); + return; + } + + if (ic->ic_flags & IEEE80211_F_SCANONLY) { /* scan only */ + ic->ic_flags &= ~IEEE80211_F_SCANONLY; + IEEE80211_UNLOCK(ic); + ieee80211_new_state(ic, IEEE80211_S_INIT, -1); + return; + } + + selbs = NULL; + IEEE80211_NODE_LOCK(nt); + while (in != NULL) { + if (in->in_fails >= IEEE80211_STA_FAILS_MAX) { + ieee80211_node_t *tmpin = in; + + /* + * The configuration of the access points may change + * during my scan. So delete the entry for the AP + * and retry to associate if there is another beacon. + */ + in = list_next(&nt->nt_node, tmpin); + ieee80211_node_reclaim(nt, tmpin); + continue; + } + if (ieee80211_match_bss(ic, in) == 0) { + if (selbs == NULL) + selbs = in; + else + selbs = ieee80211_node_compare(ic, selbs, in); + } + in = list_next(&nt->nt_node, in); + } + IEEE80211_NODE_UNLOCK(nt); + if (selbs == NULL) + goto notfound; + IEEE80211_UNLOCK(ic); + ieee80211_sta_join(ic, selbs); +} + + +/* + * Handle 802.11 ad hoc network merge. The convention, set by the + * Wireless Ethernet Compatibility Alliance (WECA), is that an 802.11 + * station will change its BSSID to match the "oldest" 802.11 ad hoc + * network, on the same channel, that has the station's desired SSID. + * The "oldest" 802.11 network sends beacons with the greatest TSF + * timestamp. + * The caller is assumed to validate TSF's before attempting a merge. + * + * Return B_TRUE if the BSSID changed, B_FALSE otherwise. + */ +boolean_t +ieee80211_ibss_merge(ieee80211_node_t *in) +{ + ieee80211com_t *ic = in->in_ic; + + if (in == ic->ic_bss || + IEEE80211_ADDR_EQ(in->in_bssid, ic->ic_bss->in_bssid)) { + /* unchanged, nothing to do */ + return (B_FALSE); + } + if (ieee80211_match_bss(ic, in) != 0) { /* capabilities mismatch */ + ieee80211_dbg(IEEE80211_MSG_ASSOC, "ieee80211_ibss_merge: " + " merge failed, capabilities mismatch\n"); + return (B_FALSE); + } + ieee80211_dbg(IEEE80211_MSG_ASSOC, "ieee80211_ibss_merge: " + "new bssid %s: %s preamble, %s slot time%s\n", + ieee80211_macaddr_sprintf(in->in_bssid), + (ic->ic_flags & IEEE80211_F_SHPREAMBLE) ? "short" : "long", + (ic->ic_flags & IEEE80211_F_SHSLOT) ? "short" : "long", + (ic->ic_flags&IEEE80211_F_USEPROT) ? ", protection" : ""); + ieee80211_sta_join(ic, in); + return (B_TRUE); +} + +/* + * Join the specified IBSS/BSS network. The node is assumed to + * be passed in with a held reference. + */ +void +ieee80211_sta_join(ieee80211com_t *ic, ieee80211_node_t *selbs) +{ + ieee80211_impl_t *im = ic->ic_private; + ieee80211_node_t *obss; + + IEEE80211_LOCK(ic); + if (ic->ic_opmode == IEEE80211_M_IBSS) { + ieee80211_node_table_t *nt; + + /* + * Delete unusable rates; we've already checked + * that the negotiated rate set is acceptable. + */ + (void) ieee80211_fix_rate(selbs, IEEE80211_F_DODEL); + /* + * Fillin the neighbor table + */ + nt = &ic->ic_sta; + IEEE80211_NODE_LOCK(nt); + nt->nt_name = "neighbor"; + nt->nt_inact_init = im->im_inact_run; + IEEE80211_NODE_UNLOCK(nt); + } + + /* + * Committed to selbs, setup state. + */ + obss = ic->ic_bss; + ic->ic_bss = ieee80211_ref_node(selbs); /* Grab reference */ + if (obss != NULL) { + ieee80211_copy_bss(selbs, obss); + ieee80211_free_node(obss); + } + ic->ic_curmode = ieee80211_chan2mode(ic, selbs->in_chan); + ic->ic_curchan = selbs->in_chan; + /* + * Set the erp state (mostly the slot time) to deal with + * the auto-select case; this should be redundant if the + * mode is locked. + */ + ieee80211_reset_erp(ic); + + IEEE80211_UNLOCK(ic); + if (ic->ic_opmode == IEEE80211_M_STA) + ieee80211_new_state(ic, IEEE80211_S_AUTH, -1); + else + ieee80211_new_state(ic, IEEE80211_S_RUN, -1); +} + +/* + * Leave the specified IBSS/BSS network. The node is assumed to + * be passed in with a held reference. + */ +void +ieee80211_sta_leave(ieee80211com_t *ic, ieee80211_node_t *in) +{ + IEEE80211_LOCK(ic); + ic->ic_node_cleanup(in); + ieee80211_notify_node_leave(ic, in); + IEEE80211_UNLOCK(ic); +} + +/* + * Allocate a node. This is the default callback function for + * ic_node_alloc. This function may be overridden by the driver + * to allocate device specific node structure. + */ +/* ARGSUSED */ +static ieee80211_node_t * +ieee80211_node_alloc(ieee80211com_t *ic) +{ + return (kmem_zalloc(sizeof (ieee80211_node_t), KM_SLEEP)); +} + +/* + * Cleanup a node, free any memory associated with the node. + * This is the default callback function for ic_node_cleanup + * and may be overridden by the driver. + */ +static void +ieee80211_node_cleanup(ieee80211_node_t *in) +{ + in->in_associd = 0; + in->in_rssi = 0; + in->in_rstamp = 0; + if (in->in_challenge != NULL) { + kmem_free(in->in_challenge, IEEE80211_CHALLENGE_LEN); + in->in_challenge = NULL; + } + if (in->in_rxfrag != NULL) { + freemsg(in->in_rxfrag); + in->in_rxfrag = NULL; + } +} + +/* + * Free a node. This is the default callback function for ic_node_free + * and may be overridden by the driver to free memory used by device + * specific node structure + */ +static void +ieee80211_node_free(ieee80211_node_t *in) +{ + ieee80211com_t *ic = in->in_ic; + + ic->ic_node_cleanup(in); + kmem_free(in, sizeof (ieee80211_node_t)); +} + +/* + * Get a node current RSSI value. This is the default callback function + * for ic_node_getrssi and may be overridden by the driver to provide + * device specific RSSI calculation algorithm. + */ +static uint8_t +ieee80211_node_getrssi(const ieee80211_node_t *in) +{ + return (in->in_rssi); +} + +/* Free fragment if not needed anymore */ +static void +node_cleanfrag(ieee80211_node_t *in) +{ + clock_t ticks; + + ticks = ddi_get_lbolt(); + if (in->in_rxfrag != NULL && ticks > (in->in_rxfragstamp + hz)) { + freemsg(in->in_rxfrag); + in->in_rxfrag = NULL; + } +} + +/* + * Setup a node. Initialize the node with specified macaddr. Associate + * with the interface softc, ic, and add it to the specified node + * database. + */ +static void +ieee80211_setup_node(ieee80211com_t *ic, ieee80211_node_table_t *nt, + ieee80211_node_t *in, const uint8_t *macaddr) +{ + int32_t hash; + + ieee80211_dbg(IEEE80211_MSG_NODE, "ieee80211_setup_node(): " + "%p<%s> in %s table\n", in, + ieee80211_macaddr_sprintf(macaddr), + (nt != NULL) ? nt->nt_name : "NULL"); + + in->in_ic = ic; + IEEE80211_ADDR_COPY(in->in_macaddr, macaddr); + hash = ieee80211_node_hash(macaddr); + ieee80211_node_initref(in); /* mark referenced */ + in->in_authmode = IEEE80211_AUTH_OPEN; + in->in_txpower = ic->ic_txpowlimit; /* max power */ + in->in_chan = IEEE80211_CHAN_ANYC; + in->in_inact_reload = IEEE80211_INACT_INIT; + in->in_inact = in->in_inact_reload; + ieee80211_crypto_resetkey(ic, &in->in_ucastkey, IEEE80211_KEYIX_NONE); + + if (nt != NULL) { + IEEE80211_NODE_LOCK(nt); + list_insert_tail(&nt->nt_node, in); + list_insert_tail(&nt->nt_hash[hash], in); + in->in_table = nt; + in->in_inact_reload = nt->nt_inact_init; + IEEE80211_NODE_UNLOCK(nt); + } +} + +/* + * Allocates and initialize a node with specified MAC address. + * Associate the node with the interface ic. If the allocation + * is successful, the node structure is initialized by + * ieee80211_setup_node(); otherwise, NULL is returned + */ +ieee80211_node_t * +ieee80211_alloc_node(ieee80211com_t *ic, ieee80211_node_table_t *nt, + const uint8_t *macaddr) +{ + ieee80211_node_t *in; + + in = ic->ic_node_alloc(ic); + if (in != NULL) + ieee80211_setup_node(ic, nt, in, macaddr); + return (in); +} + +/* + * Craft a temporary node suitable for sending a management frame + * to the specified station. We craft only as much state as we + * need to do the work since the node will be immediately reclaimed + * once the send completes. + */ +ieee80211_node_t * +ieee80211_tmp_node(ieee80211com_t *ic, const uint8_t *macaddr) +{ + ieee80211_node_t *in; + + in = ic->ic_node_alloc(ic); + if (in != NULL) { + ieee80211_dbg(IEEE80211_MSG_NODE, "ieee80211_tmp_node: " + "%p<%s>\n", in, ieee80211_macaddr_sprintf(macaddr)); + + IEEE80211_ADDR_COPY(in->in_macaddr, macaddr); + IEEE80211_ADDR_COPY(in->in_bssid, ic->ic_bss->in_bssid); + ieee80211_node_initref(in); /* mark referenced */ + in->in_txpower = ic->ic_bss->in_txpower; + /* NB: required by ieee80211_fix_rate */ + ieee80211_node_setchan(ic, in, ic->ic_bss->in_chan); + ieee80211_crypto_resetkey(ic, &in->in_ucastkey, + IEEE80211_KEYIX_NONE); + + in->in_table = NULL; /* NB: pedantic */ + in->in_ic = ic; + } + + return (in); +} + +/* + * ieee80211_dup_bss() is similar to ieee80211_alloc_node(), + * but is instead used to create a node database entry for + * the specified BSSID. If the allocation is successful, the + * node is initialized, otherwise, NULL is returned. + */ +ieee80211_node_t * +ieee80211_dup_bss(ieee80211_node_table_t *nt, const uint8_t *macaddr) +{ + ieee80211com_t *ic = nt->nt_ic; + ieee80211_node_t *in; + + in = ieee80211_alloc_node(ic, nt, macaddr); + if (in != NULL) { + /* + * Inherit from ic_bss. + */ + ieee80211_copy_bss(in, ic->ic_bss); + IEEE80211_ADDR_COPY(in->in_bssid, ic->ic_bss->in_bssid); + ieee80211_node_setchan(ic, in, ic->ic_bss->in_chan); + } + + return (in); +} + +/* + * Iterate through the node table, searching for a node entry which + * matches macaddr. If the entry is found, its reference count is + * incremented, and a pointer to the node is returned; otherwise, + * NULL will be returned. + * The node table lock is acquired by the caller. + */ +static ieee80211_node_t * +ieee80211_find_node_locked(ieee80211_node_table_t *nt, const uint8_t *macaddr) +{ + ieee80211_node_t *in; + int hash; + + ASSERT(IEEE80211_NODE_IS_LOCKED(nt)); + + hash = ieee80211_node_hash(macaddr); + in = list_head(&nt->nt_hash[hash]); + while (in != NULL) { + if (IEEE80211_ADDR_EQ(in->in_macaddr, macaddr)) + return (ieee80211_ref_node(in)); /* mark referenced */ + in = list_next(&nt->nt_hash[hash], in); + } + return (NULL); +} + +/* + * Iterate through the node table, searching for a node entry + * which match specified mac address. + * Return NULL if no matching node found. + */ +ieee80211_node_t * +ieee80211_find_node(ieee80211_node_table_t *nt, const uint8_t *macaddr) +{ + ieee80211_node_t *in; + + IEEE80211_NODE_LOCK(nt); + in = ieee80211_find_node_locked(nt, macaddr); + IEEE80211_NODE_UNLOCK(nt); + return (in); +} + +/* + * Fake up a node; this handles node discovery in adhoc mode. + * Note that for the driver's benefit we treat this like an + * association so the driver has an opportunity to setup it's + * private state. + */ +ieee80211_node_t * +ieee80211_fakeup_adhoc_node(ieee80211_node_table_t *nt, const uint8_t *macaddr) +{ + ieee80211com_t *ic = nt->nt_ic; + ieee80211_node_t *in; + + ieee80211_dbg(IEEE80211_MSG_NODE, "ieee80211_fakeup_adhoc_node: " + "mac<%s>\n", ieee80211_macaddr_sprintf(macaddr)); + in = ieee80211_dup_bss(nt, macaddr); + if (in != NULL) { + /* no rate negotiation; just dup */ + in->in_rates = ic->ic_bss->in_rates; + if (ic->ic_node_newassoc != NULL) + ic->ic_node_newassoc(in, 1); + ieee80211_node_authorize(in); + } + return (in); +} + +/* + * Process a beacon or probe response frame. + */ +void +ieee80211_add_scan(ieee80211com_t *ic, const struct ieee80211_scanparams *sp, + const struct ieee80211_frame *wh, int subtype, int rssi, int rstamp) +{ + ieee80211_node_table_t *nt = &ic->ic_scan; + ieee80211_node_t *in; + boolean_t newnode = B_FALSE; + + in = ieee80211_find_node(nt, wh->i_addr2); + if (in == NULL) { + /* + * Create a new entry. + */ + in = ieee80211_alloc_node(ic, nt, wh->i_addr2); + if (in == NULL) { + ieee80211_dbg(IEEE80211_MSG_ANY, "ieee80211_add_scan: " + "alloc node failed\n"); + return; + } + /* + * inherit from ic_bss. + */ + ieee80211_copy_bss(in, ic->ic_bss); + ieee80211_node_setchan(ic, in, ic->ic_curchan); + newnode = B_TRUE; + } + + /* ap beaconing multiple ssid w/ same bssid */ + + /* + * sp->ssid[0] - element ID + * sp->ssid[1] - length + * sp->ssid[2]... - ssid + */ + if (sp->ssid[1] != 0 && + subtype == IEEE80211_FC0_SUBTYPE_PROBE_RESP || + in->in_esslen == 0) { + in->in_esslen = sp->ssid[1]; + bzero(in->in_essid, sizeof (in->in_essid)); + bcopy(sp->ssid + 2, in->in_essid, sp->ssid[1]); + } + IEEE80211_ADDR_COPY(in->in_bssid, wh->i_addr3); + in->in_rssi = (uint8_t)rssi; + in->in_rstamp = rstamp; + bcopy(sp->tstamp, in->in_tstamp.data, sizeof (in->in_tstamp)); + in->in_intval = sp->bintval; + in->in_capinfo = sp->capinfo; + in->in_chan = &ic->ic_sup_channels[sp->chan]; + in->in_phytype = sp->phytype; + in->in_fhdwell = sp->fhdwell; + in->in_fhindex = sp->fhindex; + in->in_erp = sp->erp; + if (sp->tim != NULL) { + struct ieee80211_tim_ie *ie; + + ie = (struct ieee80211_tim_ie *)sp->tim; + in->in_dtim_count = ie->tim_count; + in->in_dtim_period = ie->tim_period; + } + /* + * Record the byte offset from the mac header to + * the start of the TIM information element for + * use by hardware and/or to speedup software + * processing of beacon frames. + */ + in->in_tim_off = sp->timoff; + + /* NB: must be after in_chan is setup */ + (void) ieee80211_setup_rates(in, sp->rates, sp->xrates, + IEEE80211_F_DOSORT); + + if (!newnode) + ieee80211_free_node(in); +} + +/* + * Initialize/update an ad-hoc node with contents from a received + * beacon frame. + */ +void +ieee80211_init_neighbor(ieee80211_node_t *in, const struct ieee80211_frame *wh, + const struct ieee80211_scanparams *sp) +{ + in->in_esslen = sp->ssid[1]; + (void) memcpy(in->in_essid, sp->ssid + 2, sp->ssid[1]); + IEEE80211_ADDR_COPY(in->in_bssid, wh->i_addr3); + (void) memcpy(in->in_tstamp.data, sp->tstamp, sizeof (in->in_tstamp)); + in->in_intval = sp->bintval; + in->in_capinfo = sp->capinfo; + in->in_chan = in->in_ic->ic_curchan; + in->in_fhdwell = sp->fhdwell; + in->in_fhindex = sp->fhindex; + in->in_erp = sp->erp; + in->in_tim_off = sp->timoff; + + /* NB: must be after in_chan is setup */ + (void) ieee80211_setup_rates(in, sp->rates, sp->xrates, + IEEE80211_F_DOSORT); +} + +/* + * Do node discovery in adhoc mode on receipt of a beacon + * or probe response frame. Note that for the driver's + * benefit we we treat this like an association so the + * driver has an opportuinty to setup it's private state. + */ +ieee80211_node_t * +ieee80211_add_neighbor(ieee80211com_t *ic, const struct ieee80211_frame *wh, + const struct ieee80211_scanparams *sp) +{ + ieee80211_node_t *in; + + in = ieee80211_dup_bss(&ic->ic_sta, wh->i_addr2); + if (in != NULL) { + ieee80211_init_neighbor(in, wh, sp); + if (ic->ic_node_newassoc != NULL) + ic->ic_node_newassoc(in, 1); + } + return (in); +} + +#define IEEE80211_IS_CTL(wh) \ + ((wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK) == IEEE80211_FC0_TYPE_CTL) + +/* + * Locate the node for sender, track state, and then pass the + * (referenced) node up to the 802.11 layer for its use. We + * are required to pass some node so we fall back to ic_bss + * when this frame is from an unknown sender. The 802.11 layer + * knows this means the sender wasn't in the node table and + * acts accordingly. + */ +ieee80211_node_t * +ieee80211_find_rxnode(ieee80211com_t *ic, const struct ieee80211_frame *wh) +{ + ieee80211_node_table_t *nt; + ieee80211_node_t *in; + + /* may want scanned nodes in the neighbor table for adhoc */ + if (ic->ic_opmode == IEEE80211_M_STA || + (ic->ic_flags & IEEE80211_F_SCAN)) { + nt = &ic->ic_scan; + } else { + nt = &ic->ic_sta; + } + + IEEE80211_NODE_LOCK(nt); + if (IEEE80211_IS_CTL(wh)) + in = ieee80211_find_node_locked(nt, wh->i_addr1); + else + in = ieee80211_find_node_locked(nt, wh->i_addr2); + IEEE80211_NODE_UNLOCK(nt); + + if (in == NULL) + in = ieee80211_ref_node(ic->ic_bss); + + return (in); +} + +/* + * Return a reference to the appropriate node for sending + * a data frame. This handles node discovery in adhoc networks. + */ +ieee80211_node_t * +ieee80211_find_txnode(ieee80211com_t *ic, const uint8_t *daddr) +{ + ieee80211_node_table_t *nt = &ic->ic_sta; + ieee80211_node_t *in; + + /* + * The destination address should be in the node table + * unless this is a multicast/broadcast frame. We can + * also optimize station mode operation, all frames go + * to the bss node. + */ + IEEE80211_NODE_LOCK(nt); + if (ic->ic_opmode == IEEE80211_M_STA || IEEE80211_IS_MULTICAST(daddr)) + in = ieee80211_ref_node(ic->ic_bss); + else + in = ieee80211_find_node_locked(nt, daddr); + IEEE80211_NODE_UNLOCK(nt); + + if (in == NULL) { + if (ic->ic_opmode == IEEE80211_M_IBSS) { + /* + * In adhoc mode cons up a node for the destination. + * Note that we need an additional reference for the + * caller to be consistent with + * ieee80211_find_node_locked + * can't hold lock across ieee80211_dup_bss 'cuz of + * recursive locking + */ + in = ieee80211_fakeup_adhoc_node(nt, daddr); + if (in != NULL) + (void) ieee80211_ref_node(in); + } else { + ieee80211_dbg(IEEE80211_MSG_OUTPUT, + "ieee80211_find_txnode: " + "[%s] no node, discard frame\n", + ieee80211_macaddr_sprintf(daddr)); + } + } + return (in); +} + +/* + * Remove a node from the node database entries and free memory + * associated with the node. The node table lock is acquired by + * the caller. + */ +static void +ieee80211_free_node_locked(ieee80211_node_t *in) +{ + ieee80211com_t *ic = in->in_ic; + ieee80211_node_table_t *nt = in->in_table; + int32_t hash; + + if (nt != NULL) { + hash = ieee80211_node_hash(in->in_macaddr); + list_remove(&nt->nt_hash[hash], in); + list_remove(&nt->nt_node, in); + } + ic->ic_node_free(in); +} + +/* + * Remove a node from the node database entries and free any + * memory associated with the node. + * This method can be overridden in ieee80211_attach() + */ +void +ieee80211_free_node(ieee80211_node_t *in) +{ + ieee80211_node_table_t *nt = in->in_table; + + if (nt != NULL) + IEEE80211_NODE_LOCK(nt); + if (ieee80211_node_decref_nv(in) == 0) + ieee80211_free_node_locked(in); + if (nt != NULL) + IEEE80211_NODE_UNLOCK(nt); +} + +/* + * Reclaim a node. If this is the last reference count then + * do the normal free work. Otherwise remove it from the node + * table and mark it gone by clearing the back-reference. + */ +static void +ieee80211_node_reclaim(ieee80211_node_table_t *nt, ieee80211_node_t *in) +{ + int32_t hash; + + IEEE80211_NODE_LOCK_ASSERT(nt); + ieee80211_dbg(IEEE80211_MSG_NODE, "node_reclaim: " + " remove %p<%s> from %s table, refcnt %d\n", + in, ieee80211_macaddr_sprintf(in->in_macaddr), nt->nt_name, + ieee80211_node_refcnt(in)); + + if (ieee80211_node_decref_nv(in) != 0) { + /* + * Clear any entry in the unicast key mapping table. + * We need to do it here so rx lookups don't find it + * in the mapping table even if it's not in the hash + * table. We cannot depend on the mapping table entry + * being cleared because the node may not be free'd. + */ + hash = ieee80211_node_hash(in->in_macaddr); + list_remove(&nt->nt_hash[hash], in); + list_remove(&nt->nt_node, in); + in->in_table = NULL; + } else { + ieee80211_free_node_locked(in); + } +} + +/* + * Iterate through the node list and reclaim all node in the node table. + * The node table lock is acquired by the caller + */ +static void +ieee80211_free_allnodes_locked(ieee80211_node_table_t *nt) +{ + ieee80211_node_t *in; + + ieee80211_dbg(IEEE80211_MSG_NODE, "ieee80211_free_allnodes_locked(): " + "free all nodes in %s table\n", nt->nt_name); + + in = list_head(&nt->nt_node); + while (in != NULL) { + ieee80211_node_reclaim(nt, in); + in = list_head(&nt->nt_node); + } + ieee80211_reset_erp(nt->nt_ic); +} + +/* + * Iterate through the node list, calling ieee80211_node_reclaim() for + * all nodes associated with the interface. + */ +static void +ieee80211_free_allnodes(ieee80211_node_table_t *nt) +{ + IEEE80211_NODE_LOCK(nt); + ieee80211_free_allnodes_locked(nt); + IEEE80211_NODE_UNLOCK(nt); +} + +/* + * Timeout entries in the scan cache. This is the timeout callback + * function of node table ic_scan which is called when the inactivity + * timer expires. + */ +static void +ieee80211_timeout_scan_candidates(ieee80211_node_table_t *nt) +{ + ieee80211com_t *ic = nt->nt_ic; + ieee80211_node_t *in; + + IEEE80211_NODE_LOCK(nt); + in = ic->ic_bss; + node_cleanfrag(in); /* Free fragment if not needed */ + nt->nt_inact_timer = IEEE80211_INACT_WAIT; + IEEE80211_NODE_UNLOCK(nt); +} + +/* + * Timeout inactive stations and do related housekeeping. + * Note that we cannot hold the node lock while sending a + * frame as this would lead to a LOR. Instead we use a + * generation number to mark nodes that we've scanned and + * drop the lock and restart a scan if we have to time out + * a node. Since we are single-threaded by virtue of + * controlling the inactivity timer we can be sure this will + * process each node only once. + */ +static void +ieee80211_timeout_stations(ieee80211_node_table_t *nt) +{ + ieee80211com_t *ic = nt->nt_ic; + ieee80211_impl_t *im = ic->ic_private; + ieee80211_node_t *in = NULL; + uint32_t gen; + boolean_t isadhoc; + + IEEE80211_LOCK_ASSERT(ic); + isadhoc = (ic->ic_opmode == IEEE80211_M_IBSS || + ic->ic_opmode == IEEE80211_M_AHDEMO); + IEEE80211_SCAN_LOCK(nt); + gen = ++nt->nt_scangen; +restart: + IEEE80211_NODE_LOCK(nt); + for (in = list_head(&nt->nt_node); in != NULL; + in = list_next(&nt->nt_node, in)) { + if (in->in_scangen == gen) /* previously handled */ + continue; + in->in_scangen = gen; + node_cleanfrag(in); /* free fragment if not needed */ + + /* + * Special case ourself; we may be idle for extended periods + * of time and regardless reclaiming our state is wrong. + */ + if (in == ic->ic_bss) + continue; + in->in_inact--; + if (in->in_associd != 0 || isadhoc) { + /* + * Probe the station before time it out. We + * send a null data frame which may not be + * uinversally supported by drivers (need it + * for ps-poll support so it should be...). + */ + if (0 < in->in_inact && + in->in_inact <= im->im_inact_probe) { + ieee80211_dbg(IEEE80211_MSG_NODE, "net80211: " + "probe station due to inactivity\n"); + IEEE80211_NODE_UNLOCK(nt); + IEEE80211_UNLOCK(ic); + (void) ieee80211_send_nulldata(in); + IEEE80211_LOCK(ic); + goto restart; + } + } + if (in->in_inact <= 0) { + ieee80211_dbg(IEEE80211_MSG_NODE, "net80211: " + "station timed out due to inact (refcnt %u)\n", + ieee80211_node_refcnt(in)); + /* + * Send a deauthenticate frame and drop the station. + * This is somewhat complicated due to reference counts + * and locking. At this point a station will typically + * have a reference count of 1. ieee80211_node_leave + * will do a "free" of the node which will drop the + * reference count. But in the meantime a reference + * wil be held by the deauth frame. The actual reclaim + * of the node will happen either after the tx is + * completed or by ieee80211_node_leave. + * + * Separately we must drop the node lock before sending + * in case the driver takes a lock, as this will result + * in LOR between the node lock and the driver lock. + */ + IEEE80211_NODE_UNLOCK(nt); + if (in->in_associd != 0) { + IEEE80211_UNLOCK(ic); + IEEE80211_SEND_MGMT(ic, in, + IEEE80211_FC0_SUBTYPE_DEAUTH, + IEEE80211_REASON_AUTH_EXPIRE); + IEEE80211_LOCK(ic); + } + ieee80211_node_leave(ic, in); + goto restart; + } + } + IEEE80211_NODE_UNLOCK(nt); + + IEEE80211_SCAN_UNLOCK(nt); + + nt->nt_inact_timer = IEEE80211_INACT_WAIT; +} + +/* + * Call the user-defined call back function for all nodes in + * the node cache. The callback is invoked with the user-supplied + * value and a pointer to the current node. + */ +void +ieee80211_iterate_nodes(ieee80211_node_table_t *nt, ieee80211_iter_func *f, + void *arg) +{ + ieee80211_node_t *in; + + IEEE80211_NODE_LOCK(nt); + in = list_head(&nt->nt_node); + while (in != NULL) { + (void) ieee80211_ref_node(in); + IEEE80211_NODE_UNLOCK(nt); + (*f)(arg, in); + ieee80211_free_node(in); + IEEE80211_NODE_LOCK(nt); + in = list_next(&nt->nt_node, in); + } + IEEE80211_NODE_UNLOCK(nt); +} + +/* + * Handle bookkeeping for station deauthentication/disassociation + * when operating as an ap. + */ +static void +ieee80211_node_leave(ieee80211com_t *ic, ieee80211_node_t *in) +{ + ieee80211_node_table_t *nt = in->in_table; + + ASSERT(ic->ic_opmode == IEEE80211_M_IBSS); + + /* + * Remove the node from any table it's recorded in and + * drop the caller's reference. Removal from the table + * is important to insure the node is not reprocessed + * for inactivity. + */ + if (nt != NULL) { + IEEE80211_NODE_LOCK(nt); + ieee80211_node_reclaim(nt, in); + IEEE80211_NODE_UNLOCK(nt); + } else { + ieee80211_free_node(in); + } +} + +/* + * Initialize a node table with specified name, inactivity timer value + * and callback inactivity timeout function. Associate the node table + * with interface softc, ic. + */ +static void +ieee80211_node_table_init(ieee80211com_t *ic, ieee80211_node_table_t *nt, + const char *name, int inact, int keyixmax, + void (*timeout)(ieee80211_node_table_t *)) +{ + int i; + + ieee80211_dbg(IEEE80211_MSG_NODE, "ieee80211_node_table_init():" + "%s table, inact %d\n", name, inact); + + nt->nt_ic = ic; + nt->nt_name = name; + nt->nt_inact_timer = 0; + nt->nt_inact_init = inact; + nt->nt_timeout = timeout; + nt->nt_keyixmax = keyixmax; + nt->nt_scangen = 1; + mutex_init(&nt->nt_scanlock, NULL, MUTEX_DRIVER, NULL); + mutex_init(&nt->nt_nodelock, NULL, MUTEX_DRIVER, NULL); + + list_create(&nt->nt_node, sizeof (ieee80211_node_t), + offsetof(ieee80211_node_t, in_node)); + for (i = 0; i < IEEE80211_NODE_HASHSIZE; i++) { + list_create(&nt->nt_hash[i], sizeof (ieee80211_node_t), + offsetof(ieee80211_node_t, in_hash)); + } +} + +/* + * Reset a node table. Clean its inactivity timer and call + * ieee80211_free_allnodes_locked() to free all nodes in the + * node table. + */ +void +ieee80211_node_table_reset(ieee80211_node_table_t *nt) +{ + ieee80211_dbg(IEEE80211_MSG_NODE, "ieee80211_node_table_reset(): " + "%s table\n", nt->nt_name); + + IEEE80211_NODE_LOCK(nt); + nt->nt_inact_timer = 0; + ieee80211_free_allnodes_locked(nt); + IEEE80211_NODE_UNLOCK(nt); +} + +/* + * Destroy a node table. Free all nodes in the node table. + * This function is usually called by node detach function. + */ +static void +ieee80211_node_table_cleanup(ieee80211_node_table_t *nt) +{ + ieee80211_dbg(IEEE80211_MSG_NODE, "ieee80211_node_table_cleanup(): " + "%s table\n", nt->nt_name); + + IEEE80211_NODE_LOCK(nt); + ieee80211_free_allnodes_locked(nt); + IEEE80211_NODE_UNLOCK(nt); + mutex_destroy(&nt->nt_nodelock); + mutex_destroy(&nt->nt_scanlock); +} diff --git a/usr/src/uts/common/io/net80211/net80211_output.c b/usr/src/uts/common/io/net80211/net80211_output.c new file mode 100644 index 0000000000..ca04fb0b4e --- /dev/null +++ b/usr/src/uts/common/io/net80211/net80211_output.c @@ -0,0 +1,723 @@ +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +/* + * Copyright (c) 2001 Atsushi Onoe + * Copyright (c) 2002-2005 Sam Leffler, Errno Consulting + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * Alternatively, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2 as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + + +/* + * Send out 802.11 frames + */ + +#include <sys/byteorder.h> +#include <sys/strsun.h> +#include "net80211_impl.h" + +/* + * Set the direction field and address fields of an outgoing + * non-QoS frame. Note this should be called early on in + * constructing a frame as it sets i_fc[1]; other bits can + * then be or'd in. + */ +static void +ieee80211_send_setup(ieee80211com_t *ic, ieee80211_node_t *in, + struct ieee80211_frame *wh, int type, const uint8_t *sa, const uint8_t *da, + const uint8_t *bssid) +{ + wh->i_fc[0] = (uint8_t)(IEEE80211_FC0_VERSION_0 | type); + if ((type & IEEE80211_FC0_TYPE_MASK) == IEEE80211_FC0_TYPE_DATA) { + switch (ic->ic_opmode) { + case IEEE80211_M_STA: + wh->i_fc[1] = IEEE80211_FC1_DIR_TODS; + IEEE80211_ADDR_COPY(wh->i_addr1, bssid); + IEEE80211_ADDR_COPY(wh->i_addr2, sa); + IEEE80211_ADDR_COPY(wh->i_addr3, da); + break; + case IEEE80211_M_IBSS: + case IEEE80211_M_AHDEMO: + wh->i_fc[1] = IEEE80211_FC1_DIR_NODS; + IEEE80211_ADDR_COPY(wh->i_addr1, da); + IEEE80211_ADDR_COPY(wh->i_addr2, sa); + IEEE80211_ADDR_COPY(wh->i_addr3, bssid); + break; + default: + ieee80211_err("ieee80211_send_setup: " + "Invalid mode %u\n", ic->ic_opmode); + return; + } + } else { + wh->i_fc[1] = IEEE80211_FC1_DIR_NODS; + IEEE80211_ADDR_COPY(wh->i_addr1, da); + IEEE80211_ADDR_COPY(wh->i_addr2, sa); + IEEE80211_ADDR_COPY(wh->i_addr3, bssid); + } + *(uint16_t *)&wh->i_dur[0] = 0; /* set duration */ + *(uint16_t *)&wh->i_seq[0] = /* set sequence number */ + LE_16(in->in_txseqs[0] << IEEE80211_SEQ_SEQ_SHIFT); + in->in_txseqs[0]++; /* increase sequence number by 1 */ +} + +/* + * Send a management frame to the specified node. The node pointer + * must have a reference as the pointer will be passed to the driver + * and potentially held for a long time. If the frame is successfully + * dispatched to the driver, then it is responsible for freeing the + * reference (and potentially free'ing up any associated storage). + * + * Return 0 on success + */ +static int +ieee80211_mgmt_output(ieee80211com_t *ic, ieee80211_node_t *in, mblk_t *mp, + int type, int timer) +{ + ieee80211_impl_t *im = ic->ic_private; + struct ieee80211_frame *wh; + + ASSERT(in != NULL); + + wh = (struct ieee80211_frame *)mp->b_rptr; + ieee80211_send_setup(ic, in, wh, IEEE80211_FC0_TYPE_MGT | type, + ic->ic_macaddr, in->in_macaddr, in->in_bssid); + if (in->in_challenge != NULL) + wh->i_fc[1] |= IEEE80211_FC1_WEP; + + if (timer > 0) { + /* + * Set the mgt frame timeout. + */ + im->im_mgt_timer = timer; + ieee80211_start_watchdog(ic, 1); + } + return ((*ic->ic_xmit)(ic, mp, IEEE80211_FC0_TYPE_MGT)); +} + +/* + * Send a null data frame to the specified node. + * + * NB: the caller is assumed to have setup a node reference + * for use; this is necessary to deal with a race condition + * when probing for inactive stations. + */ +int +ieee80211_send_nulldata(ieee80211_node_t *in) +{ + ieee80211com_t *ic = in->in_ic; + mblk_t *m; + struct ieee80211_frame *wh; + uint8_t *frm; + + m = ieee80211_getmgtframe(&frm, 0); + if (m == NULL) { + ic->ic_stats.is_tx_nobuf++; + return (ENOMEM); + } + + wh = (struct ieee80211_frame *)m->b_rptr; + ieee80211_send_setup(ic, in, wh, + IEEE80211_FC0_TYPE_DATA | IEEE80211_FC0_SUBTYPE_NODATA, + ic->ic_macaddr, in->in_macaddr, in->in_bssid); + /* NB: power management bit is never sent by an AP */ + if ((in->in_flags & IEEE80211_NODE_PWR_MGT) && + ic->ic_opmode != IEEE80211_M_HOSTAP) + wh->i_fc[1] |= IEEE80211_FC1_PWR_MGT; + m->b_wptr = m->b_rptr + sizeof (struct ieee80211_frame); + + ieee80211_dbg(IEEE80211_MSG_DEBUG | IEEE80211_MSG_DUMPPKTS, "net80211: " + "send null data frame on channel %u, pwr mgt %s\n", + ieee80211_macaddr_sprintf(in->in_macaddr), + ieee80211_chan2ieee(ic, ic->ic_curchan), + wh->i_fc[1] & IEEE80211_FC1_PWR_MGT ? "ena" : "dis"); + + (void) (*ic->ic_xmit)(ic, m, IEEE80211_FC0_TYPE_MGT); + + return (0); +} + +/* + * Encapsulate an outbound data frame for GLDv3 based driver. + * Fill in the variable part of the 80211 frame + */ +/* ARGSUSED */ +mblk_t * +ieee80211_encap(ieee80211com_t *ic, mblk_t *mp, ieee80211_node_t *in) +{ + struct ieee80211_frame *wh; + + ASSERT(mp != NULL && MBLKL(mp) >= sizeof (struct ieee80211_frame)); + wh = (struct ieee80211_frame *)mp->b_rptr; + *(uint16_t *)wh->i_dur = 0; + *(uint16_t *)wh->i_seq = + LE_16(in->in_txseqs[0] << IEEE80211_SEQ_SEQ_SHIFT); + in->in_txseqs[0]++; + + return (mp); +} + +/* + * Add supported rates information element to a frame. + */ +static uint8_t * +ieee80211_add_rates(uint8_t *frm, const struct ieee80211_rateset *rs) +{ + uint8_t nrates; + + *frm++ = IEEE80211_ELEMID_RATES; + nrates = rs->ir_nrates; + if (nrates > IEEE80211_RATE_SIZE) + nrates = IEEE80211_RATE_SIZE; + *frm++ = nrates; + bcopy(rs->ir_rates, frm, nrates); + return (frm + nrates); +} + +/* + * Add extended supported rates element to a frame, usually for 11g mode + */ +static uint8_t * +ieee80211_add_xrates(uint8_t *frm, const struct ieee80211_rateset *rs) +{ + if (rs->ir_nrates > IEEE80211_RATE_SIZE) { + uint8_t nrates = rs->ir_nrates - IEEE80211_RATE_SIZE; + + *frm++ = IEEE80211_ELEMID_XRATES; + *frm++ = nrates; + bcopy(rs->ir_rates + IEEE80211_RATE_SIZE, frm, nrates); + frm += nrates; + } + return (frm); +} + +/* + * Add SSID element to a frame + */ +static uint8_t * +ieee80211_add_ssid(uint8_t *frm, const uint8_t *ssid, uint32_t len) +{ + *frm++ = IEEE80211_ELEMID_SSID; + *frm++ = (uint8_t)len; + bcopy(ssid, frm, len); + return (frm + len); +} + +/* + * Add an erp element to a frame. + */ +static uint8_t * +ieee80211_add_erp(uint8_t *frm, ieee80211com_t *ic) +{ + uint8_t erp; + + *frm++ = IEEE80211_ELEMID_ERP; + *frm++ = 1; + erp = 0; + if (ic->ic_flags & IEEE80211_F_USEPROT) + erp |= IEEE80211_ERP_USE_PROTECTION; + if (ic->ic_flags & IEEE80211_F_USEBARKER) + erp |= IEEE80211_ERP_LONG_PREAMBLE; + *frm++ = erp; + return (frm); +} + +/* + * Get capability information from the interface softc, ic. + */ +static uint16_t +ieee80211_get_capinfo(ieee80211com_t *ic) +{ + uint16_t capinfo; + + if (ic->ic_opmode == IEEE80211_M_IBSS) + capinfo = IEEE80211_CAPINFO_IBSS; + else + capinfo = IEEE80211_CAPINFO_ESS; + if (ic->ic_flags & IEEE80211_F_PRIVACY) + capinfo |= IEEE80211_CAPINFO_PRIVACY; + if ((ic->ic_flags & IEEE80211_F_SHPREAMBLE) && + IEEE80211_IS_CHAN_2GHZ(ic->ic_curchan)) { + capinfo |= IEEE80211_CAPINFO_SHORT_PREAMBLE; + } + if (ic->ic_flags & IEEE80211_F_SHSLOT) + capinfo |= IEEE80211_CAPINFO_SHORT_SLOTTIME; + + return (capinfo); +} + +/* + * Send a probe request frame with the specified ssid + * and any optional information element data. + */ +int +ieee80211_send_probereq(ieee80211_node_t *in, + const uint8_t *sa, const uint8_t *da, const uint8_t *bssid, + const uint8_t *ssid, size_t ssidlen, const void *optie, size_t optielen) +{ + mblk_t *mp; + ieee80211com_t *ic = in->in_ic; + enum ieee80211_phymode mode; + struct ieee80211_frame *wh; + uint8_t *frm; + + /* + * prreq frame format ([tlv] - 1 byte element ID + 1 byte length) + * [tlv] ssid + * [tlv] supported rates + * [tlv] extended supported rates + * [tlv] user-specified ie's + */ + mp = ieee80211_getmgtframe(&frm, + 2 + IEEE80211_NWID_LEN + + 2 + IEEE80211_RATE_SIZE + + + 2 + IEEE80211_XRATE_SIZE + + optielen); + if (mp == NULL) + return (ENOMEM); + + frm = ieee80211_add_ssid(frm, ssid, ssidlen); + mode = ieee80211_chan2mode(ic, ic->ic_curchan); + frm = ieee80211_add_rates(frm, &ic->ic_sup_rates[mode]); + frm = ieee80211_add_xrates(frm, &ic->ic_sup_rates[mode]); + if (optie != NULL) { + (void) memcpy(frm, optie, optielen); + frm += optielen; + } + mp->b_wptr = frm; + + wh = (struct ieee80211_frame *)mp->b_rptr; + ieee80211_send_setup(ic, in, wh, + IEEE80211_FC0_TYPE_MGT | IEEE80211_FC0_SUBTYPE_PROBE_REQ, + sa, da, bssid); + + ieee80211_dbg(IEEE80211_MSG_DEBUG | IEEE80211_MSG_DUMPPKTS, + "[%s] send probe req on channel %u\n", + ieee80211_macaddr_sprintf(wh->i_addr1), + ieee80211_chan2ieee(ic, ic->ic_curchan)); + + (void) (*ic->ic_xmit)(ic, mp, IEEE80211_FC0_TYPE_MGT); + return (0); +} + +/* + * Send a management frame. The node is for the destination (or ic_bss + * when in station mode). Nodes other than ic_bss have their reference + * count bumped to reflect our use for an indeterminant time. + */ +int +ieee80211_send_mgmt(ieee80211com_t *ic, ieee80211_node_t *in, int type, int arg) +{ + mblk_t *mp; + uint8_t *frm; + uint16_t capinfo; + struct ieee80211_key *key; + boolean_t has_challenge; + boolean_t is_shared_key; + int ret; + int timer; + int status; + + ASSERT(in != NULL); + + timer = 0; + switch (type) { + case IEEE80211_FC0_SUBTYPE_PROBE_RESP: + /* + * probe response frame format + * [8] time stamp + * [2] beacon interval + * [2] capability information + * [tlv] ssid + * [tlv] supported rates + * [tlv] parameter set (FH/DS) + * [tlv] parameter set (IBSS) + * [tlv] extended rate phy (ERP) + * [tlv] extended supported rates + * [tlv] WPA + * [tlv] WME (optional) + */ + mp = ieee80211_getmgtframe(&frm, + 8 /* time stamp */ + + sizeof (uint16_t) /* beacon interval */ + + sizeof (uint16_t) /* capability */ + + 2 + IEEE80211_NWID_LEN + + 2 + IEEE80211_RATE_SIZE + + 2 + IEEE80211_FH_LEN + + 2 + IEEE80211_IBSS_LEN + + 2 + IEEE80211_ERP_LEN + + 2 + IEEE80211_XRATE_SIZE + + (ic->ic_flags & IEEE80211_F_WPA ? + 2 * sizeof (struct ieee80211_ie_wpa) : 0) + /* [tlv] WPA */ + + (ic->ic_flags & IEEE80211_F_WME ? + sizeof (struct ieee80211_wme_param) : 0)); + /* [tlv] WME */ + if (mp == NULL) + return (ENOMEM); + + bzero(frm, 8); /* timestamp is set by hardware/driver */ + frm += 8; + *(uint16_t *)frm = LE_16(in->in_intval); + frm += 2; + capinfo = ieee80211_get_capinfo(ic); + *(uint16_t *)frm = LE_16(capinfo); + frm += 2; + + frm = ieee80211_add_ssid(frm, in->in_essid, in->in_esslen); + frm = ieee80211_add_rates(frm, &in->in_rates); + + if (ic->ic_phytype == IEEE80211_T_FH) { + *frm++ = IEEE80211_ELEMID_FHPARMS; + *frm++ = IEEE80211_FH_LEN; + *frm++ = in->in_fhdwell & 0x00ff; + *frm++ = (in->in_fhdwell >> 8) & 0x00ff; + *frm++ = IEEE80211_FH_CHANSET( + ieee80211_chan2ieee(ic, ic->ic_curchan)); + *frm++ = IEEE80211_FH_CHANPAT( + ieee80211_chan2ieee(ic, ic->ic_curchan)); + *frm++ = in->in_fhindex; + } else { + *frm++ = IEEE80211_ELEMID_DSPARMS; + *frm++ = IEEE80211_DS_LEN; + *frm++ = ieee80211_chan2ieee(ic, ic->ic_curchan); + } + + if (ic->ic_opmode == IEEE80211_M_IBSS) { + *frm++ = IEEE80211_ELEMID_IBSSPARMS; + *frm++ = IEEE80211_IBSS_LEN; + *frm++ = 0; *frm++ = 0; /* ATIM window */ + } + frm = ieee80211_add_xrates(frm, &in->in_rates); + break; + + case IEEE80211_FC0_SUBTYPE_AUTH: + status = arg >> 16; + arg &= 0xffff; + has_challenge = ((arg == IEEE80211_AUTH_SHARED_CHALLENGE || + arg == IEEE80211_AUTH_SHARED_RESPONSE) && + in->in_challenge != NULL); + + /* + * Deduce whether we're doing open authentication or + * shared key authentication. We do the latter if + * we're in the middle of a shared key authentication + * handshake or if we're initiating an authentication + * request and configured to use shared key. + */ + is_shared_key = has_challenge || + arg >= IEEE80211_AUTH_SHARED_RESPONSE || + (arg == IEEE80211_AUTH_SHARED_REQUEST && + ic->ic_bss->in_authmode == IEEE80211_AUTH_SHARED); + + if (has_challenge && status == IEEE80211_STATUS_SUCCESS) + key = ieee80211_crypto_getkey(ic); + else + key = NULL; + + mp = ieee80211_getmgtframe(&frm, + 3 * sizeof (uint16_t) + + (has_challenge && status == IEEE80211_STATUS_SUCCESS ? + sizeof (uint16_t) + IEEE80211_CHALLENGE_LEN : 0) + + (key != NULL ? key->wk_cipher->ic_header : 0)); + if (mp == NULL) + return (ENOMEM); + + if (key != NULL) + frm += key->wk_cipher->ic_header; + + ((uint16_t *)frm)[0] = + (is_shared_key) ? LE_16(IEEE80211_AUTH_ALG_SHARED) + : LE_16(IEEE80211_AUTH_ALG_OPEN); + ((uint16_t *)frm)[1] = LE_16(arg); /* sequence number */ + ((uint16_t *)frm)[2] = LE_16(status); /* status */ + + if (has_challenge && status == IEEE80211_STATUS_SUCCESS) { + frm += IEEE80211_AUTH_ELEM_MIN; + *frm = IEEE80211_ELEMID_CHALLENGE; + frm++; + *frm = IEEE80211_CHALLENGE_LEN; + frm++; + bcopy(in->in_challenge, frm, IEEE80211_CHALLENGE_LEN); + } + + if (ic->ic_opmode == IEEE80211_M_STA) + timer = IEEE80211_TRANS_WAIT; + break; + + case IEEE80211_FC0_SUBTYPE_DEAUTH: + mp = ieee80211_getmgtframe(&frm, sizeof (uint16_t)); + if (mp == NULL) + return (ENOMEM); + + *(uint16_t *)frm = LE_16(arg); /* reason */ + + ieee80211_node_unauthorize(in); /* port closed */ + break; + + case IEEE80211_FC0_SUBTYPE_ASSOC_REQ: + case IEEE80211_FC0_SUBTYPE_REASSOC_REQ: + /* + * asreq frame format + * [2] capability information + * [2] listen interval + * [6*] current AP address (reassoc only) + * [tlv] ssid + * [tlv] supported rates + * [tlv] extended supported rates + * [tlv] WME + * [tlv] user-specified ie's + */ + mp = ieee80211_getmgtframe(&frm, + sizeof (uint16_t) + + sizeof (uint16_t) + IEEE80211_ADDR_LEN + + 2 + IEEE80211_NWID_LEN + + 2 + IEEE80211_RATE_SIZE + + 2 + IEEE80211_XRATE_SIZE + + ic->ic_opt_ie_len); + if (mp == NULL) + return (ENOMEM); + + capinfo = ieee80211_get_capinfo(ic); + if (!(in->in_capinfo & IEEE80211_CAPINFO_SHORT_SLOTTIME) || + !(ic->ic_caps & IEEE80211_C_SHSLOT)) { + capinfo &= ~IEEE80211_CAPINFO_SHORT_SLOTTIME; + } + *(uint16_t *)frm = LE_16(capinfo); + frm += 2; + + *(uint16_t *)frm = LE_16(ic->ic_lintval); + frm += 2; + + if (type == IEEE80211_FC0_SUBTYPE_REASSOC_REQ) { + IEEE80211_ADDR_COPY(frm, ic->ic_bss->in_bssid); + frm += IEEE80211_ADDR_LEN; + } + + frm = ieee80211_add_ssid(frm, in->in_essid, in->in_esslen); + frm = ieee80211_add_rates(frm, &in->in_rates); + frm = ieee80211_add_xrates(frm, &in->in_rates); + if (ic->ic_opt_ie != NULL) { + bcopy(ic->ic_opt_ie, frm, ic->ic_opt_ie_len); + frm += ic->ic_opt_ie_len; + } + mp->b_wptr = frm; /* allocated is greater than used */ + + timer = IEEE80211_TRANS_WAIT; + break; + + case IEEE80211_FC0_SUBTYPE_ASSOC_RESP: + case IEEE80211_FC0_SUBTYPE_REASSOC_RESP: + /* + * asreq frame format + * [2] capability information + * [2] status + * [2] association ID + * [tlv] supported rates + * [tlv] extended supported rates + * [tlv] WME (if enabled and STA enabled) + */ + mp = ieee80211_getmgtframe(&frm, + 3 * sizeof (uint16_t) + + 2 + IEEE80211_RATE_SIZE + + 2 + IEEE80211_XRATE_SIZE); + if (mp == NULL) + return (ENOMEM); + + capinfo = ieee80211_get_capinfo(ic); + *(uint16_t *)frm = LE_16(capinfo); + frm += 2; + + *(uint16_t *)frm = LE_16(arg); /* status */ + frm += 2; + + if (arg == IEEE80211_STATUS_SUCCESS) + *(uint16_t *)frm = LE_16(in->in_associd); + else + *(uint16_t *)frm = LE_16(0); + frm += 2; + + frm = ieee80211_add_rates(frm, &in->in_rates); + frm = ieee80211_add_xrates(frm, &in->in_rates); + break; + + case IEEE80211_FC0_SUBTYPE_DISASSOC: + mp = ieee80211_getmgtframe(&frm, sizeof (uint16_t)); + if (mp == NULL) + return (ENOMEM); + *(uint16_t *)frm = LE_16(arg); /* reason */ + break; + + default: + ieee80211_dbg(IEEE80211_MSG_ANY, + "[%s] invalid mgmt frame type %u\n", + ieee80211_macaddr_sprintf(in->in_macaddr), type); + return (EINVAL); + } /* type */ + ret = ieee80211_mgmt_output(ic, in, mp, type, timer); + return (ret); +} + +/* + * Allocate a beacon frame and fillin the appropriate bits. + */ +mblk_t * +ieee80211_beacon_alloc(ieee80211com_t *ic, ieee80211_node_t *in, + struct ieee80211_beacon_offsets *bo) +{ + struct ieee80211_frame *wh; + struct ieee80211_rateset *rs; + mblk_t *m; + uint8_t *frm; + uint8_t *efrm; + int pktlen; + uint16_t capinfo; + + IEEE80211_LOCK(ic); + /* + * beacon frame format + * [8] time stamp + * [2] beacon interval + * [2] cabability information + * [tlv] ssid + * [tlv] supported rates + * [3] parameter set (DS) + * [tlv] parameter set (IBSS/TIM) + * [tlv] extended rate phy (ERP) + * [tlv] extended supported rates + * [tlv] WME parameters + * [tlv] WPA/RSN parameters + * Vendor-specific OIDs (e.g. Atheros) + * NB: we allocate the max space required for the TIM bitmap. + */ + rs = &in->in_rates; + pktlen = 8 /* time stamp */ + + sizeof (uint16_t) /* beacon interval */ + + sizeof (uint16_t) /* capabilities */ + + 2 + in->in_esslen /* ssid */ + + 2 + IEEE80211_RATE_SIZE /* supported rates */ + + 2 + 1 /* DS parameters */ + + 2 + 4 + ic->ic_tim_len /* DTIM/IBSSPARMS */ + + 2 + 1 /* ERP */ + + 2 + IEEE80211_XRATE_SIZE; + m = ieee80211_getmgtframe(&frm, pktlen); + if (m == NULL) { + ieee80211_dbg(IEEE80211_MSG_ANY, "ieee80211_beacon_alloc: " + "cannot get buf; size %u\n", pktlen); + IEEE80211_UNLOCK(ic); + return (NULL); + } + + /* timestamp is set by hardware/driver */ + (void) memset(frm, 0, 8); + frm += 8; + *(uint16_t *)frm = LE_16(in->in_intval); + frm += 2; + capinfo = ieee80211_get_capinfo(ic); + bo->bo_caps = (uint16_t *)frm; + *(uint16_t *)frm = LE_16(capinfo); + frm += 2; + *frm++ = IEEE80211_ELEMID_SSID; + if (!(ic->ic_flags & IEEE80211_F_HIDESSID)) { + *frm++ = in->in_esslen; + bcopy(in->in_essid, frm, in->in_esslen); + frm += in->in_esslen; + } else { + *frm++ = 0; + } + frm = ieee80211_add_rates(frm, rs); + if (ic->ic_curmode != IEEE80211_MODE_FH) { + *frm++ = IEEE80211_ELEMID_DSPARMS; + *frm++ = 1; + *frm++ = ieee80211_chan2ieee(ic, in->in_chan); + } + bo->bo_tim = frm; + if (ic->ic_opmode == IEEE80211_M_IBSS) { + *frm++ = IEEE80211_ELEMID_IBSSPARMS; + *frm++ = 2; + *frm++ = 0; *frm++ = 0; /* TODO: ATIM window */ + bo->bo_tim_len = 0; + } else { + struct ieee80211_tim_ie *tie = + (struct ieee80211_tim_ie *)frm; + + tie->tim_ie = IEEE80211_ELEMID_TIM; + tie->tim_len = 4; /* length */ + tie->tim_count = 0; /* DTIM count */ + tie->tim_period = IEEE80211_DTIM_DEFAULT; + tie->tim_bitctl = 0; /* bitmap control */ + tie->tim_bitmap[0] = 0; /* Partial Virtual Bitmap */ + frm += sizeof (struct ieee80211_tim_ie); + bo->bo_tim_len = 1; + } + bo->bo_trailer = frm; + + if (ic->ic_curmode == IEEE80211_MODE_11G) { + bo->bo_erp = frm; + frm = ieee80211_add_erp(frm, ic); + } + efrm = ieee80211_add_xrates(frm, rs); + bo->bo_trailer_len = efrm - bo->bo_trailer; + m->b_wptr = efrm; + + wh = (struct ieee80211_frame *)m->b_rptr; + wh->i_fc[0] = IEEE80211_FC0_VERSION_0 | IEEE80211_FC0_TYPE_MGT | + IEEE80211_FC0_SUBTYPE_BEACON; + wh->i_fc[1] = IEEE80211_FC1_DIR_NODS; + *(uint16_t *)wh->i_dur = 0; + IEEE80211_ADDR_COPY(wh->i_addr1, wifi_bcastaddr); + IEEE80211_ADDR_COPY(wh->i_addr2, ic->ic_macaddr); + IEEE80211_ADDR_COPY(wh->i_addr3, in->in_bssid); + *(uint16_t *)wh->i_seq = 0; + + IEEE80211_UNLOCK(ic); + return (m); +} + +/* + * Update the dynamic parts of a beacon frame based on the current state. + */ +/* ARGSUSED */ +int +ieee80211_beacon_update(ieee80211com_t *ic, ieee80211_node_t *in, + struct ieee80211_beacon_offsets *bo, mblk_t *mp, int mcast) +{ + uint16_t capinfo; + + IEEE80211_LOCK(ic); + + capinfo = ieee80211_get_capinfo(ic); + *bo->bo_caps = LE_16(capinfo); + + IEEE80211_UNLOCK(ic); + return (0); +} diff --git a/usr/src/uts/common/io/net80211/net80211_proto.c b/usr/src/uts/common/io/net80211/net80211_proto.c new file mode 100644 index 0000000000..0f92262d5c --- /dev/null +++ b/usr/src/uts/common/io/net80211/net80211_proto.c @@ -0,0 +1,669 @@ +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +/* + * Copyright (c) 2001 Atsushi Onoe + * Copyright (c) 2002-2005 Sam Leffler, Errno Consulting + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * Alternatively, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2 as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +/* + * IEEE 802.11 protocol support + */ + +#include "net80211_impl.h" + +const char *ieee80211_mgt_subtype_name[] = { + "assoc_req", "assoc_resp", "reassoc_req", "reassoc_resp", + "probe_req", "probe_resp", "reserved#6", "reserved#7", + "beacon", "atim", "disassoc", "auth", + "deauth", "reserved#13", "reserved#14", "reserved#15" +}; +const char *ieee80211_ctl_subtype_name[] = { + "reserved#0", "reserved#1", "reserved#2", "reserved#3", + "reserved#3", "reserved#5", "reserved#6", "reserved#7", + "reserved#8", "reserved#9", "ps_poll", "rts", + "cts", "ack", "cf_end", "cf_end_ack" +}; +const char *ieee80211_state_name[IEEE80211_S_MAX] = { + "INIT", /* IEEE80211_S_INIT */ + "SCAN", /* IEEE80211_S_SCAN */ + "AUTH", /* IEEE80211_S_AUTH */ + "ASSOC", /* IEEE80211_S_ASSOC */ + "RUN" /* IEEE80211_S_RUN */ +}; + +static int ieee80211_newstate(ieee80211com_t *, enum ieee80211_state, int); + +/* + * Initialize the interface softc, ic, with protocol management + * related data structures and functions. + */ +void +ieee80211_proto_attach(ieee80211com_t *ic) +{ + struct ieee80211_impl *im = ic->ic_private; + + ic->ic_rtsthreshold = IEEE80211_RTS_DEFAULT; + ic->ic_fragthreshold = IEEE80211_FRAG_DEFAULT; + ic->ic_fixed_rate = IEEE80211_FIXED_RATE_NONE; + ic->ic_mcast_rate = IEEE80211_MCAST_RATE_DEFAULT; + ic->ic_protmode = IEEE80211_PROT_CTSONLY; + im->im_bmiss_max = IEEE80211_BMISS_MAX; + + /* protocol state change handler */ + ic->ic_newstate = ieee80211_newstate; + + /* initialize management frame handlers */ + ic->ic_recv_mgmt = ieee80211_recv_mgmt; + ic->ic_send_mgmt = ieee80211_send_mgmt; +} + +/* + * Print a 802.11 frame header + */ +void +ieee80211_dump_pkt(const uint8_t *buf, int32_t len, int32_t rate, int32_t rssi) +{ + struct ieee80211_frame *wh; + int8_t buf1[100]; + int8_t buf2[25]; + int i; + + bzero(buf1, sizeof (buf1)); + bzero(buf2, sizeof (buf2)); + wh = (struct ieee80211_frame *)buf; + switch (wh->i_fc[1] & IEEE80211_FC1_DIR_MASK) { + case IEEE80211_FC1_DIR_NODS: + (void) snprintf(buf2, sizeof (buf2), "NODS %s", + ieee80211_macaddr_sprintf(wh->i_addr2)); + (void) strncat(buf1, buf2, sizeof (buf2)); + (void) snprintf(buf2, sizeof (buf2), "->%s", + ieee80211_macaddr_sprintf(wh->i_addr1)); + (void) strncat(buf1, buf2, sizeof (buf2)); + (void) snprintf(buf2, sizeof (buf2), "(%s)", + ieee80211_macaddr_sprintf(wh->i_addr3)); + (void) strncat(buf1, buf2, sizeof (buf2)); + break; + case IEEE80211_FC1_DIR_TODS: + (void) snprintf(buf2, sizeof (buf2), "TODS %s", + ieee80211_macaddr_sprintf(wh->i_addr2)); + (void) strncat(buf1, buf2, sizeof (buf2)); + (void) snprintf(buf2, sizeof (buf2), "->%s", + ieee80211_macaddr_sprintf(wh->i_addr3)); + (void) strncat(buf1, buf2, sizeof (buf2)); + (void) snprintf(buf2, sizeof (buf2), "(%s)", + ieee80211_macaddr_sprintf(wh->i_addr1)); + (void) strncat(buf1, buf2, sizeof (buf2)); + break; + case IEEE80211_FC1_DIR_FROMDS: + (void) snprintf(buf2, sizeof (buf2), "FRDS %s", + ieee80211_macaddr_sprintf(wh->i_addr3)); + (void) strncat(buf1, buf2, sizeof (buf2)); + (void) snprintf(buf2, sizeof (buf2), "->%s", + ieee80211_macaddr_sprintf(wh->i_addr1)); + (void) strncat(buf1, buf2, sizeof (buf2)); + (void) snprintf(buf2, sizeof (buf2), "(%s)", + ieee80211_macaddr_sprintf(wh->i_addr2)); + (void) strncat(buf1, buf2, sizeof (buf2)); + break; + case IEEE80211_FC1_DIR_DSTODS: + (void) snprintf(buf2, sizeof (buf2), "DSDS %s", + ieee80211_macaddr_sprintf((uint8_t *)&wh[1])); + (void) strncat(buf1, buf2, sizeof (buf2)); + (void) snprintf(buf2, sizeof (buf2), "->%s ", + ieee80211_macaddr_sprintf(wh->i_addr3)); + (void) strncat(buf1, buf2, sizeof (buf2)); + (void) snprintf(buf2, sizeof (buf2), "%s", + ieee80211_macaddr_sprintf(wh->i_addr2)); + (void) strncat(buf1, buf2, sizeof (buf2)); + (void) snprintf(buf2, sizeof (buf2), "->%s", + ieee80211_macaddr_sprintf(wh->i_addr1)); + (void) strncat(buf1, buf2, sizeof (buf2)); + break; + } + ieee80211_dbg(IEEE80211_MSG_ANY, "ieee80211_dump_pkt(): %s", buf1); + bzero(buf1, sizeof (buf1)); + + switch (wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK) { + case IEEE80211_FC0_TYPE_DATA: + (void) sprintf(buf2, "data"); + break; + case IEEE80211_FC0_TYPE_MGT: + (void) snprintf(buf2, sizeof (buf2), "%s", + ieee80211_mgt_subtype_name[ + (wh->i_fc[0] & IEEE80211_FC0_SUBTYPE_MASK) + >> IEEE80211_FC0_SUBTYPE_SHIFT]); + break; + default: + (void) snprintf(buf2, sizeof (buf2), "type#%d", + wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK); + break; + } + (void) strncat(buf1, buf2, sizeof (buf2)); + if (wh->i_fc[1] & IEEE80211_FC1_WEP) { + (void) sprintf(buf2, " WEP"); + (void) strcat(buf1, buf2); + } + if (rate >= 0) { + (void) snprintf(buf2, sizeof (buf2), " %dM", rate / 2); + (void) strncat(buf1, buf2, sizeof (buf2)); + } + if (rssi >= 0) { + (void) snprintf(buf2, sizeof (buf2), " +%d", rssi); + (void) strncat(buf1, buf2, sizeof (buf2)); + } + ieee80211_dbg(IEEE80211_MSG_ANY, "ieee80211_dump_pkt(): %s", buf1); + bzero(buf1, sizeof (buf1)); + + if (len > 0) { + for (i = 0; i < (len > 40 ? 40 : len); i++) { + if ((i & 0x03) == 0) + (void) strcat(buf1, " "); + (void) snprintf(buf2, 3, "%02x", buf[i]); + (void) strncat(buf1, buf2, 3); + } + ieee80211_dbg(IEEE80211_MSG_ANY, "ieee80211_dump_pkt(): %s", + buf1); + } +} + +/* + * Adjust/Fix the specified node's rate table + * + * in node + * flag IEEE80211_F_DOSORT : sort the node's rate table + * IEEE80211_F_DONEGO : mark a rate as basic rate if it is + * a device's basic rate + * IEEE80211_F_DODEL : delete rates not supported by the device + * IEEE80211_F_DOFRATE: check if the fixed rate is supported by + * the device + * + * The highest bit of returned rate value is set to 1 on failure. + */ +int +ieee80211_fix_rate(ieee80211_node_t *in, int flags) +{ + ieee80211com_t *ic = in->in_ic; + struct ieee80211_rateset *srs; + struct ieee80211_rateset *nrs; + boolean_t ignore; + int i; + int okrate; + int badrate; + int fixedrate; + uint8_t r; + + /* + * If the fixed rate check was requested but no + * fixed has been defined then just remove it. + */ + if ((flags & IEEE80211_F_DOFRATE) && + (ic->ic_fixed_rate == IEEE80211_FIXED_RATE_NONE)) { + flags &= ~IEEE80211_F_DOFRATE; + } + okrate = badrate = fixedrate = 0; + srs = &ic->ic_sup_rates[ieee80211_chan2mode(ic, in->in_chan)]; + nrs = &in->in_rates; + for (i = 0; i < nrs->ir_nrates; ) { + int j; + + ignore = B_FALSE; + if (flags & IEEE80211_F_DOSORT) { + /* + * Sort rates. + */ + for (j = i + 1; j < nrs->ir_nrates; j++) { + if (IEEE80211_RV(nrs->ir_rates[i]) > + IEEE80211_RV(nrs->ir_rates[j])) { + r = nrs->ir_rates[i]; + nrs->ir_rates[i] = nrs->ir_rates[j]; + nrs->ir_rates[j] = r; + } + } + } + r = IEEE80211_RV(nrs->ir_rates[i]); + badrate = r; + + /* + * Check against supported rates. + */ + for (j = 0; j < srs->ir_nrates; j++) { + if (r == IEEE80211_RV(srs->ir_rates[j])) { + /* + * Overwrite with the supported rate + * value so any basic rate bit is set. + * This insures that response we send + * to stations have the necessary basic + * rate bit set. + */ + if (flags & IEEE80211_F_DONEGO) + nrs->ir_rates[i] = srs->ir_rates[j]; + break; + } + } + if (j == srs->ir_nrates) { + /* + * A rate in the node's rate set is not + * supported. We just discard/ignore the rate. + * Note that this is important for 11b stations + * when they want to associate with an 11g AP. + */ + ignore = B_TRUE; + } + + if (flags & IEEE80211_F_DODEL) { + /* + * Delete unacceptable rates. + */ + if (ignore) { + nrs->ir_nrates--; + for (j = i; j < nrs->ir_nrates; j++) + nrs->ir_rates[j] = nrs->ir_rates[j + 1]; + nrs->ir_rates[j] = 0; + continue; + } + } + if (flags & IEEE80211_F_DOFRATE) { + /* + * Check any fixed rate is included. + */ + if (r == ic->ic_fixed_rate) + fixedrate = r; + } + if (!ignore) + okrate = nrs->ir_rates[i]; + i++; + } + if (okrate == 0 || ((flags & IEEE80211_F_DOFRATE) && fixedrate == 0)) + return (badrate | IEEE80211_RATE_BASIC); + else + return (IEEE80211_RV(okrate)); +} + +/* + * Reset 11g-related state. + */ +void +ieee80211_reset_erp(ieee80211com_t *ic) +{ + ic->ic_flags &= ~IEEE80211_F_USEPROT; + /* + * Short slot time is enabled only when operating in 11g + * and not in an IBSS. We must also honor whether or not + * the driver is capable of doing it. + */ + ieee80211_set_shortslottime(ic, + ic->ic_curmode == IEEE80211_MODE_11A); + /* + * Set short preamble and ERP barker-preamble flags. + */ + if (ic->ic_curmode == IEEE80211_MODE_11A || + (ic->ic_caps & IEEE80211_C_SHPREAMBLE)) { + ic->ic_flags |= IEEE80211_F_SHPREAMBLE; + ic->ic_flags &= ~IEEE80211_F_USEBARKER; + } else { + ic->ic_flags &= ~IEEE80211_F_SHPREAMBLE; + ic->ic_flags |= IEEE80211_F_USEBARKER; + } +} + +/* + * Change current channel to be the next available channel + */ +void +ieee80211_reset_chan(ieee80211com_t *ic) +{ + struct ieee80211_channel *ch = ic->ic_curchan; + + IEEE80211_LOCK(ic); + do { + if (++ch > &ic->ic_sup_channels[IEEE80211_CHAN_MAX]) + ch = &ic->ic_sup_channels[0]; + if (ieee80211_isset(ic->ic_chan_active, + ieee80211_chan2ieee(ic, ch))) { + break; + } + } while (ch != ic->ic_curchan); + ic->ic_curchan = ch; + IEEE80211_UNLOCK(ic); +} + +/* + * Set the short slot time state and notify the driver. + */ +void +ieee80211_set_shortslottime(ieee80211com_t *ic, boolean_t on) +{ + if (on) + ic->ic_flags |= IEEE80211_F_SHSLOT; + else + ic->ic_flags &= ~IEEE80211_F_SHSLOT; + /* notify driver */ + if (ic->ic_set_shortslot != NULL) + ic->ic_set_shortslot(ic, on); +} + +/* + * Mark the basic rates for the 11g rate table based on the + * operating mode. For real 11g we mark all the 11b rates + * and 6, 12, and 24 OFDM. For 11b compatibility we mark only + * 11b rates. There's also a pseudo 11a-mode used to mark only + * the basic OFDM rates. + */ +void +ieee80211_setbasicrates(struct ieee80211_rateset *rs, + enum ieee80211_phymode mode) +{ + static const struct ieee80211_rateset basic[] = { + { 0 }, /* IEEE80211_MODE_AUTO */ + { 3, { 12, 24, 48 } }, /* IEEE80211_MODE_11A */ + { 2, { 2, 4} }, /* IEEE80211_MODE_11B */ + { 4, { 2, 4, 11, 22 } }, /* IEEE80211_MODE_11G mixed b/g */ + { 0 }, /* IEEE80211_MODE_FH */ + { 3, { 12, 24, 48 } }, /* IEEE80211_MODE_TURBO_A */ + { 4, { 2, 4, 11, 22 } } /* IEEE80211_MODE_TURBO_G (mixed b/g) */ + }; + int i, j; + + ASSERT(mode < IEEE80211_MODE_MAX); + for (i = 0; i < rs->ir_nrates; i++) { + rs->ir_rates[i] &= IEEE80211_RATE_VAL; + for (j = 0; j < basic[mode].ir_nrates; j++) { + if (basic[mode].ir_rates[j] == rs->ir_rates[i]) { + rs->ir_rates[i] |= IEEE80211_RATE_BASIC; + break; + } + } + } +} + +/* + * Process STA mode beacon miss events. Send a direct probe request + * frame to the current ap bmiss_max times (w/o answer) before + * scanning for a new ap. + */ +void +ieee80211_beacon_miss(ieee80211com_t *ic) +{ + ieee80211_impl_t *im = ic->ic_private; + + if (ic->ic_flags & IEEE80211_F_SCAN) + return; + ieee80211_dbg(IEEE80211_MSG_STATE | IEEE80211_MSG_DEBUG, + "%s\n", "beacon miss"); + + /* + * Our handling is only meaningful for stations that are + * associated; any other conditions else will be handled + * through different means (e.g. the tx timeout on mgt frames). + */ + if (ic->ic_opmode != IEEE80211_M_STA || + ic->ic_state != IEEE80211_S_RUN) { + return; + } + + IEEE80211_LOCK(ic); + if (++im->im_bmiss_count < im->im_bmiss_max) { + /* + * Send a directed probe req before falling back to a scan; + * if we receive a response ic_bmiss_count will be reset. + * Some cards mistakenly report beacon miss so this avoids + * the expensive scan if the ap is still there. + */ + IEEE80211_UNLOCK(ic); + (void) ieee80211_send_probereq(ic->ic_bss, ic->ic_macaddr, + ic->ic_bss->in_bssid, ic->ic_bss->in_bssid, + ic->ic_bss->in_essid, ic->ic_bss->in_esslen, + ic->ic_opt_ie, ic->ic_opt_ie_len); + return; + } + im->im_bmiss_count = 0; + IEEE80211_UNLOCK(ic); + ieee80211_new_state(ic, IEEE80211_S_SCAN, 0); +} + +/* + * Manage state transition between INIT | AUTH | ASSOC | RUN. + */ +static int +ieee80211_newstate(ieee80211com_t *ic, enum ieee80211_state nstate, int arg) +{ + struct ieee80211_impl *im = ic->ic_private; + ieee80211_node_t *in; + enum ieee80211_state ostate; + wifi_data_t wd = { 0 }; + + IEEE80211_LOCK(ic); + ostate = ic->ic_state; + ieee80211_dbg(IEEE80211_MSG_STATE, "ieee80211_newstate(): " + "%s -> %s\n", + ieee80211_state_name[ostate], ieee80211_state_name[nstate]); + ic->ic_state = nstate; + in = ic->ic_bss; + im->im_swbmiss_period = 0; /* Reset software beacon miss period */ + + switch (nstate) { + case IEEE80211_S_INIT: + IEEE80211_UNLOCK(ic); + switch (ostate) { + case IEEE80211_S_INIT: + return (0); + case IEEE80211_S_SCAN: + ieee80211_cancel_scan(ic); + break; + case IEEE80211_S_AUTH: + break; + case IEEE80211_S_ASSOC: + if (ic->ic_opmode == IEEE80211_M_STA) { + IEEE80211_SEND_MGMT(ic, in, + IEEE80211_FC0_SUBTYPE_DEAUTH, + IEEE80211_REASON_AUTH_LEAVE); + } + break; + case IEEE80211_S_RUN: + if (ic->ic_opmode == IEEE80211_M_STA) { + IEEE80211_SEND_MGMT(ic, in, + IEEE80211_FC0_SUBTYPE_DISASSOC, + IEEE80211_REASON_ASSOC_LEAVE); + ieee80211_sta_leave(ic, in); + } + break; + } + IEEE80211_LOCK(ic); + im->im_mgt_timer = 0; + ieee80211_reset_bss(ic); + break; + case IEEE80211_S_SCAN: + switch (ostate) { + case IEEE80211_S_INIT: + if (ic->ic_opmode == IEEE80211_M_IBSS && + ic->ic_des_chan != IEEE80211_CHAN_ANYC) { + /* + * AP operation and we already have a channel; + * bypass the scan and startup immediately. + */ + ieee80211_create_ibss(ic, ic->ic_des_chan); + } else { + IEEE80211_UNLOCK(ic); + ieee80211_begin_scan(ic, + (arg == 0) ? B_FALSE : B_TRUE); + return (0); + } + break; + case IEEE80211_S_SCAN: + /* + * Scan next. If doing an active scan and the + * channel is not marked passive-only then send + * a probe request. Otherwise just listen for + * beacons on the channel. + */ + if ((ic->ic_flags & IEEE80211_F_ASCAN) && + !IEEE80211_IS_CHAN_PASSIVE(ic->ic_curchan)) { + IEEE80211_UNLOCK(ic); + (void) ieee80211_send_probereq(in, + ic->ic_macaddr, wifi_bcastaddr, + wifi_bcastaddr, + ic->ic_des_essid, ic->ic_des_esslen, + ic->ic_opt_ie, ic->ic_opt_ie_len); + return (0); + } + break; + case IEEE80211_S_RUN: + /* beacon miss */ + ieee80211_dbg(IEEE80211_MSG_STATE, + "no recent beacons from %s, rescanning\n", + ieee80211_macaddr_sprintf(in->in_macaddr)); + IEEE80211_UNLOCK(ic); + ieee80211_sta_leave(ic, in); + IEEE80211_LOCK(ic); + ic->ic_flags &= ~IEEE80211_F_SIBSS; + /* FALLTHRU */ + case IEEE80211_S_AUTH: + case IEEE80211_S_ASSOC: + /* timeout restart scan */ + in = ieee80211_find_node(&ic->ic_scan, + ic->ic_bss->in_macaddr); + if (in != NULL) { + in->in_fails++; + ieee80211_unref_node(&in); + } + break; + } + break; + case IEEE80211_S_AUTH: + switch (ostate) { + case IEEE80211_S_INIT: + case IEEE80211_S_SCAN: + IEEE80211_UNLOCK(ic); + IEEE80211_SEND_MGMT(ic, in, IEEE80211_FC0_SUBTYPE_AUTH, + 1); + return (0); + case IEEE80211_S_AUTH: + case IEEE80211_S_ASSOC: + switch (arg) { + case IEEE80211_FC0_SUBTYPE_AUTH: + IEEE80211_UNLOCK(ic); + IEEE80211_SEND_MGMT(ic, in, + IEEE80211_FC0_SUBTYPE_AUTH, 2); + return (0); + case IEEE80211_FC0_SUBTYPE_DEAUTH: + /* ignore and retry scan on timeout */ + break; + } + break; + case IEEE80211_S_RUN: + switch (arg) { + case IEEE80211_FC0_SUBTYPE_AUTH: + ic->ic_state = ostate; /* stay RUN */ + IEEE80211_UNLOCK(ic); + IEEE80211_SEND_MGMT(ic, in, + IEEE80211_FC0_SUBTYPE_AUTH, 2); + return (0); + case IEEE80211_FC0_SUBTYPE_DEAUTH: + IEEE80211_UNLOCK(ic); + ieee80211_sta_leave(ic, in); + /* try to re-auth */ + IEEE80211_SEND_MGMT(ic, in, + IEEE80211_FC0_SUBTYPE_AUTH, 1); + return (0); + } + break; + } + break; + case IEEE80211_S_ASSOC: + switch (ostate) { + case IEEE80211_S_INIT: + case IEEE80211_S_SCAN: + case IEEE80211_S_ASSOC: + ieee80211_dbg(IEEE80211_MSG_ANY, "ieee80211_newstate: " + "invalid transition\n"); + break; + case IEEE80211_S_AUTH: + IEEE80211_UNLOCK(ic); + IEEE80211_SEND_MGMT(ic, in, + IEEE80211_FC0_SUBTYPE_ASSOC_REQ, 0); + return (0); + case IEEE80211_S_RUN: + IEEE80211_UNLOCK(ic); + ieee80211_sta_leave(ic, in); + IEEE80211_SEND_MGMT(ic, in, + IEEE80211_FC0_SUBTYPE_ASSOC_REQ, 1); + return (0); + } + break; + case IEEE80211_S_RUN: + switch (ostate) { + case IEEE80211_S_INIT: + ieee80211_err("ieee80211_newstate: " + "invalid transition\n"); + break; + case IEEE80211_S_AUTH: + ieee80211_err("ieee80211_newstate: " + "invalid transition\n"); + break; + case IEEE80211_S_SCAN: /* adhoc/hostap mode */ + case IEEE80211_S_ASSOC: /* infra mode */ + ASSERT(in->in_txrate < in->in_rates.ir_nrates); + im->im_mgt_timer = 0; + if (ic->ic_opmode == IEEE80211_M_STA) + ieee80211_notify_node_join(ic, in); + + /* + * We can send data now; update the fastpath with our + * current associated BSSID and other relevant settings. + */ + wd.wd_secalloc = ieee80211_crypto_getciphertype(ic); + wd.wd_opmode = ic->ic_opmode; + IEEE80211_ADDR_COPY(wd.wd_bssid, in->in_bssid); + (void) mac_pdata_update(ic->ic_mach, &wd, sizeof (wd)); + break; + } + + /* + * When 802.1x is not in use mark the port authorized + * at this point so traffic can flow. + */ + if (in->in_authmode != IEEE80211_AUTH_8021X) + ieee80211_node_authorize(in); + /* + * Enable inactivity processing. + */ + ic->ic_scan.nt_inact_timer = IEEE80211_INACT_WAIT; + ic->ic_sta.nt_inact_timer = IEEE80211_INACT_WAIT; + break; /* IEEE80211_S_RUN */ + } /* switch nstate */ + IEEE80211_UNLOCK(ic); + + return (0); +} diff --git a/usr/src/uts/common/sys/dld.h b/usr/src/uts/common/sys/dld.h index 4e32398c21..783f581e68 100644 --- a/usr/src/uts/common/sys/dld.h +++ b/usr/src/uts/common/sys/dld.h @@ -108,6 +108,40 @@ typedef struct dld_vlan_info { char dvi_name[IFNAMSIZ]; } dld_vlan_info_t; +/* + * Secure objects ioctls + */ +typedef enum { + DLD_SECOBJ_CLASS_WEP = 1 +} dld_secobj_class_t; + +#define DLD_SECOBJ_OPT_CREATE 0x00000001 +#define DLD_SECOBJ_NAME_MAX 32 +#define DLD_SECOBJ_VAL_MAX 256 +typedef struct dld_secobj { + char so_name[DLD_SECOBJ_NAME_MAX]; + dld_secobj_class_t so_class; + uint8_t so_val[DLD_SECOBJ_VAL_MAX]; + uint_t so_len; +} dld_secobj_t; + +#define DLDIOCSECOBJSET (DLDIOC | 0x05) +typedef struct dld_ioc_secobj_set { + dld_secobj_t ss_obj; + uint_t ss_flags; +} dld_ioc_secobj_set_t; + +#define DLDIOCSECOBJGET (DLDIOC | 0x06) +typedef struct dld_ioc_secobj_get { + dld_secobj_t sg_obj; + uint_t sg_count; +} dld_ioc_secobj_get_t; + +#define DLDIOCSECOBJUNSET (DLDIOC | 0x07) +typedef struct dld_ioc_secobj_unset { + char su_name[DLD_SECOBJ_NAME_MAX]; +} dld_ioc_secobj_unset_t; + #ifdef _KERNEL int dld_getinfo(dev_info_t *, ddi_info_cmd_t, void *, void **); int dld_open(queue_t *, dev_t *, int, int, cred_t *); diff --git a/usr/src/uts/common/sys/dld_impl.h b/usr/src/uts/common/sys/dld_impl.h index bd61db8dc4..356bd4dd1b 100644 --- a/usr/src/uts/common/sys/dld_impl.h +++ b/usr/src/uts/common/sys/dld_impl.h @@ -164,6 +164,11 @@ struct dld_str { dld_str_mode_t ds_mode; /* + * Native mode state. + */ + boolean_t ds_native; + + /* * IP polling is operational if this flag is set. */ boolean_t ds_polling; diff --git a/usr/src/uts/common/sys/dlpi.h b/usr/src/uts/common/sys/dlpi.h index 3ffb8b5762..b8ff186a95 100644 --- a/usr/src/uts/common/sys/dlpi.h +++ b/usr/src/uts/common/sys/dlpi.h @@ -49,6 +49,7 @@ extern "C" { */ #define DLIOC ('D' << 8) #define DLIOCRAW (DLIOC|1) /* M_DATA "raw" mode */ +#define DLIOCNATIVE (DLIOC|2) /* Native traffic mode */ #define DLIOCHDRINFO (DLIOC|10) /* IP fast-path */ #define DL_IOC_HDR_INFO DLIOCHDRINFO @@ -261,6 +262,7 @@ extern "C" { #define DL_IPV4 0x80000001ul /* IPv4 Tunnel Link */ #define DL_IPV6 0x80000002ul /* IPv6 Tunnel Link */ #define SUNW_DL_VNI 0x80000003ul /* Virtual network interface */ +#define DL_WIFI 0x80000004ul /* IEEE 802.11 */ /* * DLPI provider service supported. diff --git a/usr/src/uts/common/sys/mac.h b/usr/src/uts/common/sys/mac.h index ed11df7e4a..fd4c89150c 100644 --- a/usr/src/uts/common/sys/mac.h +++ b/usr/src/uts/common/sys/mac.h @@ -154,6 +154,7 @@ enum mac_driver_stat { */ typedef struct mac_info_s { uint_t mi_media; + uint_t mi_nativemedia; uint_t mi_sdu_min; uint_t mi_sdu_max; uint_t mi_addr_length; @@ -462,6 +463,7 @@ typedef struct mactype_register_s { const char *mtr_ident; mactype_ops_t *mtr_ops; uint_t mtr_mactype; + uint_t mtr_nativetype; uint_t mtr_addrlen; uint8_t *mtr_brdcst_addr; mac_stat_info_t *mtr_stats; diff --git a/usr/src/uts/common/sys/mac_impl.h b/usr/src/uts/common/sys/mac_impl.h index bc4bea80de..06e6b8244c 100644 --- a/usr/src/uts/common/sys/mac_impl.h +++ b/usr/src/uts/common/sys/mac_impl.h @@ -80,6 +80,7 @@ typedef struct mactype_s { const char *mt_ident; uint32_t mt_ref; uint_t mt_type; + uint_t mt_nativetype; size_t mt_addr_length; uint8_t *mt_brdcst_addr; mactype_ops_t mt_ops; diff --git a/usr/src/uts/common/sys/mac_wifi.h b/usr/src/uts/common/sys/mac_wifi.h new file mode 100644 index 0000000000..7ed4a9c0a1 --- /dev/null +++ b/usr/src/uts/common/sys/mac_wifi.h @@ -0,0 +1,116 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#ifndef _SYS_MAC_WIFI_H +#define _SYS_MAC_WIFI_H + +#pragma ident "%Z%%M% %I% %E% SMI" + +/* + * WiFi MAC-Type Plugin + */ + +#ifdef __cplusplus +extern "C" { +#endif + +#include <sys/types.h> +#include <sys/net80211_proto.h> + +#ifdef _KERNEL + +#define MAC_PLUGIN_IDENT_WIFI "mac_wifi" + +/* + * Maximum size of a WiFi header based on current implementation. + * May change in the future as new features are added. + */ +#define WIFI_HDRSIZE (sizeof (struct ieee80211_frame) + \ + IEEE80211_WEP_IVLEN + IEEE80211_WEP_KIDLEN + sizeof (struct ieee80211_llc)) + +enum wifi_stat { + /* statistics described in ieee802.11(5) */ + WIFI_STAT_TX_FRAGS = MACTYPE_STAT_MIN, + WIFI_STAT_MCAST_TX, + WIFI_STAT_TX_FAILED, + WIFI_STAT_TX_RETRANS, + WIFI_STAT_TX_RERETRANS, + WIFI_STAT_RTS_SUCCESS, + WIFI_STAT_RTS_FAILURE, + WIFI_STAT_ACK_FAILURE, + WIFI_STAT_RX_FRAGS, + WIFI_STAT_MCAST_RX, + WIFI_STAT_FCS_ERRORS, + WIFI_STAT_WEP_ERRORS, + WIFI_STAT_RX_DUPS +}; + +/* + * WiFi security modes recognized by the plugin. + */ +enum wifi_secmode { + WIFI_SEC_NONE, + WIFI_SEC_WEP +}; + +/* + * WiFi data passed between the drivers and the plugin. + * + * Field definitions: + * + * wd_opts Currently set to 0. If new features require the + * introduction of new wifi_data_t fields, then the + * presence of those fields must be indicated to the + * plugin via wd_opts flags. This allows the drivers + * and the plugin to evolve independently. + * + * wd_bssid Current associated BSSID (or IBSSID), used when + * generating data packet headers for transmission. + * + * wd_opmode Current operation mode; any ieee80211_opmode is + * supported. + * + * wd_secalloc Current allocation policy for security-related + * WiFi headers, used when generating packets for + * transmission. The plugin will allocate header + * space for the security portion, and fill in any + * fixed-contents fields. + */ +typedef struct wifi_data { + uint_t wd_opts; + uint8_t wd_bssid[IEEE80211_ADDR_LEN]; + enum ieee80211_opmode wd_opmode; + enum wifi_secmode wd_secalloc; +} wifi_data_t; + +extern uint8_t wifi_bcastaddr[]; + +#endif /* _KERNEL */ + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_MAC_WIFI_H */ diff --git a/usr/src/uts/common/sys/net80211.h b/usr/src/uts/common/sys/net80211.h new file mode 100644 index 0000000000..539e0a3e10 --- /dev/null +++ b/usr/src/uts/common/sys/net80211.h @@ -0,0 +1,528 @@ +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +/* + * Copyright (c) 2001 Atsushi Onoe + * Copyright (c) 2002-2005 Sam Leffler, Errno Consulting + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * Alternatively, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2 as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +#ifndef _SYS_NET80211_H +#define _SYS_NET80211_H + +#include <sys/mac.h> +#include <sys/ethernet.h> +#include <sys/net80211_proto.h> +#include <sys/net80211_crypto.h> + +/* + * IEEE802.11 kernel support module + */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* ic_caps */ +#define IEEE80211_C_WEP 0x00000001 /* CAPABILITY: WEP available */ +#define IEEE80211_C_TKIP 0x00000002 /* CAPABILITY: TKIP available */ +#define IEEE80211_C_AES 0x00000004 /* CAPABILITY: AES OCB avail */ +#define IEEE80211_C_AES_CCM 0x00000008 /* CAPABILITY: AES CCM avail */ +#define IEEE80211_C_CKIP 0x00000010 /* CAPABILITY: CKIP available */ +#define IEEE80211_C_FF 0x00000040 /* CAPABILITY: ATH FF avail */ +#define IEEE80211_C_TURBOP 0x00000080 + /* CAPABILITY: ATH Turbo available */ +#define IEEE80211_C_IBSS 0x00000100 /* CAPABILITY: IBSS available */ +#define IEEE80211_C_PMGT 0x00000200 /* CAPABILITY: Power mgmt */ +#define IEEE80211_C_HOSTAP 0x00000400 /* CAPABILITY: HOSTAP avail */ +#define IEEE80211_C_AHDEMO 0x00000800 /* CAPABILITY: Old Adhoc Demo */ +#define IEEE80211_C_SWRETRY 0x00001000 /* CAPABILITY: sw tx retry */ +#define IEEE80211_C_TXPMGT 0x00002000 /* CAPABILITY: tx power mgmt */ +#define IEEE80211_C_SHSLOT 0x00004000 /* CAPABILITY: short slottime */ +#define IEEE80211_C_SHPREAMBLE 0x00008000 /* CAPABILITY: short preamble */ +#define IEEE80211_C_MONITOR 0x00010000 /* CAPABILITY: monitor mode */ +#define IEEE80211_C_TKIPMIC 0x00020000 /* CAPABILITY: TKIP MIC avail */ +#define IEEE80211_C_WPA1 0x00800000 /* CAPABILITY: WPA1 avail */ +#define IEEE80211_C_WPA2 0x01000000 /* CAPABILITY: WPA2 avail */ +#define IEEE80211_C_WPA 0x01800000 + /* CAPABILITY: WPA1+WPA2 avail */ +#define IEEE80211_C_BURST 0x02000000 /* CAPABILITY: frame bursting */ +#define IEEE80211_C_WME 0x04000000 /* CAPABILITY: WME avail */ +#define IEEE80211_C_WDS 0x08000000 /* CAPABILITY: 4-addr support */ +/* 0x10000000 reserved */ +#define IEEE80211_C_BGSCAN 0x20000000 /* CAPABILITY: bg scanning */ +#define IEEE80211_C_TXFRAG 0x40000000 /* CAPABILITY: tx fragments */ +/* XXX protection/barker? */ + +#define IEEE80211_C_CRYPTO 0x0000001f /* CAPABILITY: crypto alg's */ + +/* ic_flags */ +/* NB: bits 0x4c available */ +#define IEEE80211_F_FF 0x00000001 /* CONF: ATH FF enabled */ +#define IEEE80211_F_TURBOP 0x00000002 /* CONF: ATH Turbo enabled */ +#define IEEE80211_F_BURST 0x00000004 /* CONF: bursting enabled */ +/* NB: this is intentionally setup to be IEEE80211_CAPINFO_PRIVACY */ +#define IEEE80211_F_PRIVACY 0x00000010 /* CONF: privacy enabled */ +#define IEEE80211_F_PUREG 0x00000020 /* CONF: 11g w/o 11b sta's */ +#define IEEE80211_F_SCANONLY 0x00000040 /* CONF: scan only */ +#define IEEE80211_F_SCAN 0x00000080 /* STATUS: scanning */ +#define IEEE80211_F_ASCAN 0x00000100 /* STATUS: active scan */ +#define IEEE80211_F_SIBSS 0x00000200 /* STATUS: start IBSS */ +/* NB: this is intentionally setup to be IEEE80211_CAPINFO_SHORT_SLOTTIME */ +#define IEEE80211_F_SHSLOT 0x00000400 + /* STATUS: use short slot time */ +#define IEEE80211_F_PMGTON 0x00000800 /* CONF: Power mgmt enable */ +#define IEEE80211_F_DESBSSID 0x00001000 /* CONF: des_bssid is set */ +#define IEEE80211_F_WME 0x00002000 /* CONF: enable WME use */ +#define IEEE80211_F_BGSCAN 0x00004000 + /* CONF: bg scan enabled (???) */ +#define IEEE80211_F_SWRETRY 0x00008000 /* CONF: sw tx retry enabled */ +#define IEEE80211_F_TXPOW_FIXED 0x00010000 /* TX Power: fixed rate */ +#define IEEE80211_F_IBSSON 0x00020000 /* CONF: IBSS creation enable */ +#define IEEE80211_F_SHPREAMBLE 0x00040000 /* STATUS: use short preamble */ +#define IEEE80211_F_DATAPAD 0x00080000 /* CONF: do alignment pad */ +#define IEEE80211_F_USEPROT 0x00100000 /* STATUS: protection enabled */ +#define IEEE80211_F_USEBARKER 0x00200000 + /* STATUS: use barker preamble */ +#define IEEE80211_F_TIMUPDATE 0x00400000 /* STATUS: update beacon tim */ +#define IEEE80211_F_WPA1 0x00800000 /* CONF: WPA enabled */ +#define IEEE80211_F_WPA2 0x01000000 /* CONF: WPA2 enabled */ +#define IEEE80211_F_WPA 0x01800000 /* CONF: WPA/WPA2 enabled */ +#define IEEE80211_F_DROPUNENC 0x02000000 /* CONF: drop unencrypted */ +#define IEEE80211_F_COUNTERM 0x04000000 /* CONF: TKIP countermeasures */ +#define IEEE80211_F_HIDESSID 0x08000000 /* CONF: hide SSID in beacon */ +#define IEEE80211_F_NOBRIDGE 0x10000000 /* CONF: dis. internal bridge */ +#define IEEE80211_F_WMEUPDATE 0x20000000 /* STATUS: update beacon wme */ + +/* ic_flags_ext */ +#define IEEE80211_FEXT_WDS 0x00000001 /* CONF: 4 addr allowed */ +/* 0x00000006 reserved */ +#define IEEE80211_FEXT_BGSCAN 0x00000008 + /* STATUS: enable full bgscan completion */ +#define IEEE80211_FEXT_ERPUPDATE 0x00000200 /* STATUS: update ERP element */ +#define IEEE80211_FEXT_SWBMISS 0x00000400 /* CONF: do bmiss in s/w */ + +/* + * Channel attributes (ich_flags) + * bits 0-3 are for private use by drivers + */ +#define IEEE80211_CHAN_TURBO 0x0010 /* Turbo channel */ +#define IEEE80211_CHAN_CCK 0x0020 /* CCK channel */ +#define IEEE80211_CHAN_OFDM 0x0040 /* OFDM channel */ +#define IEEE80211_CHAN_2GHZ 0x0080 /* 2 GHz spectrum channel. */ +#define IEEE80211_CHAN_5GHZ 0x0100 /* 5 GHz spectrum channel */ +#define IEEE80211_CHAN_PASSIVE 0x0200 /* Only passive scan allowed */ +#define IEEE80211_CHAN_DYN 0x0400 /* Dynamic CCK-OFDM channel */ +#define IEEE80211_CHAN_GFSK 0x0800 /* GFSK channel (FHSS PHY) */ + +#define IEEE80211_CHAN_MAX 255 +#define IEEE80211_CHAN_BYTES 32 /* howmany(IEEE80211_CHAN_MAX, NBBY) */ +#define IEEE80211_CHAN_ANY 0xffff /* token for ``any channel'' */ +#define IEEE80211_CHAN_ANYC \ + ((struct ieee80211_channel *)IEEE80211_CHAN_ANY) + +#define IEEE80211_IS_CHAN_2GHZ(_c) \ + (((_c)->ich_flags & IEEE80211_CHAN_2GHZ) != 0) +#define IEEE80211_IS_CHAN_5GHZ(_c) \ + (((_c)->ich_flags & IEEE80211_CHAN_5GHZ) != 0) + +#define IEEE80211_NODE_HASHSIZE 32 + +#define IEEE80211_FIXED_RATE_NONE 0 +#define IEEE80211_MCAST_RATE_DEFAULT (2*1) /* default mcast rate (1M) */ + +/* WME stream classes */ +#define WME_AC_BE 0 /* best effort */ +#define WME_AC_BK 1 /* background */ +#define WME_AC_VI 2 /* video */ +#define WME_AC_VO 3 /* voice */ + +/* + * Authentication mode. + */ +enum ieee80211_authmode { + IEEE80211_AUTH_NONE = 0, + IEEE80211_AUTH_OPEN = 1, /* open */ + IEEE80211_AUTH_SHARED = 2, /* shared-key */ + IEEE80211_AUTH_8021X = 3, /* 802.1x */ + IEEE80211_AUTH_AUTO = 4, /* auto-select/accept */ + /* NB: these are used only for ioctls */ + IEEE80211_AUTH_WPA = 5 /* WPA/RSN w/ 802.1x/PSK */ +}; + +enum ieee80211_state { + IEEE80211_S_INIT = 0, /* default state */ + IEEE80211_S_SCAN = 1, /* scanning */ + IEEE80211_S_AUTH = 2, /* try to authenticate */ + IEEE80211_S_ASSOC = 3, /* try to assoc */ + IEEE80211_S_RUN = 4 /* associated */ +}; +#define IEEE80211_S_MAX (IEEE80211_S_RUN+1) + +/* + * 802.11 rate set. + */ +#define IEEE80211_RATE_MAXSIZE 15 /* max rates we'll handle */ +#define IEEE80211_RATE_SIZE 8 /* 802.11 standard */ +#define IEEE80211_XRATE_SIZE (IEEE80211_RATE_MAXSIZE - IEEE80211_RATE_SIZE) + /* size of extended supported rates */ +struct ieee80211_rateset { + uint8_t ir_nrates; + uint8_t ir_rates[IEEE80211_RATE_MAXSIZE]; +}; + +/* + * Channels are specified by frequency and attributes. + */ +struct ieee80211_channel { + uint16_t ich_freq; /* setting in Mhz */ + uint16_t ich_flags; /* see below */ +}; + +struct ieee80211_device_stats { + uint32_t is_tx_frags; + uint32_t is_tx_bytes; + uint32_t is_tx_mcast; + uint32_t is_tx_failed; + uint32_t is_tx_retries; + uint32_t is_rts_success; + uint32_t is_rts_failure; + uint32_t is_ack_failure; + uint32_t is_rx_frags; + uint32_t is_rx_bytes; + uint32_t is_rx_mcast; + uint32_t is_rx_dups; + uint32_t is_fcs_errors; + uint32_t is_wep_errors; + uint32_t is_tx_nobuf; + uint32_t is_tx_unknownmgt; +}; + +struct ieee80211_crypto_state; +typedef struct ieee80211_node_table ieee80211_node_table_t; +typedef struct ieee80211_node ieee80211_node_t; +typedef struct ieee80211com ieee80211com_t; + +struct ieee80211_node_table { + struct ieee80211com *nt_ic; /* back reference */ + + const char *nt_name; /* for debugging */ + /* For node inactivity processing */ + int nt_inact_timer; /* inactivity timer */ + int nt_inact_init; /* initial node inact setting */ + void (*nt_timeout)(struct ieee80211_node_table *); + uint32_t nt_scangen; /* gen# for timeout scan */ + kmutex_t nt_scanlock; /* on nt_scangen */ + kmutex_t nt_nodelock; /* on node table */ + + int nt_keyixmax; /* keyixmap size */ + struct ieee80211_node **nt_keyixmap; /* key ix -> node map */ + + list_t nt_node; /* information of all nodes */ + list_t nt_hash[IEEE80211_NODE_HASHSIZE]; +}; + +/* + * Node specific information. Note that drivers are expected + * to derive from this structure to add device-specific per-node + * state. This is done by overriding the ic_node_* methods in + * the ieee80211com structure. + */ +struct ieee80211_node { + struct ieee80211com *in_ic; + struct ieee80211_node_table *in_table; + + uint8_t in_authmode; /* authentication algorithm */ + uint16_t in_flags; /* special purpose state */ + uint16_t in_associd; /* assoc response */ + uint16_t in_txpower; /* current transmit power */ + uint16_t in_vlan; /* vlan tag */ + /* + * Tx/Rx sequence number. + * index 0 is used when QoS is not enabled. index 1-16 is used + * when QoS is enabled. 1-16 corresponds to TID 0-15. + */ + uint16_t in_txseqs[17]; /* tx seq per-tid */ + uint16_t in_rxseqs[17]; /* rx seq previous per-tid */ + clock_t in_rxfragstamp; /* time stamp of last rx frag */ + mblk_t *in_rxfrag; /* rx frag reassembly */ + uint32_t in_scangen; /* gen# for timeout scan */ + uint32_t in_refcnt; + + /* hardware */ + uint32_t in_rstamp; /* recv timestamp */ + uint8_t in_rssi; /* recv ssi */ + + /* header */ + uint8_t in_macaddr[IEEE80211_ADDR_LEN]; + uint8_t in_bssid[IEEE80211_ADDR_LEN]; + + /* beacon, probe response */ + union { + uint8_t data[8]; + uint64_t tsf; + } in_tstamp; /* from last rcv'd beacon */ + uint16_t in_intval; /* beacon interval */ + uint16_t in_capinfo; /* capabilities */ + uint8_t in_esslen; + uint8_t in_essid[IEEE80211_NWID_LEN]; + struct ieee80211_rateset in_rates; /* negotiated rate set */ + struct ieee80211_channel *in_chan; /* XXX multiple uses */ + enum ieee80211_phytype in_phytype; + uint16_t in_fhdwell; /* FH only */ + uint8_t in_fhindex; /* FH only */ + uint8_t in_erp; /* ERP from beacon/probe resp */ + uint16_t in_tim_off; /* byte offset to TIM ie */ + uint8_t in_dtim_period; /* DTIM period */ + uint8_t in_dtim_count; /* DTIM count for last bcn */ + + uint32_t *in_challenge; /* shared-key challenge */ + struct ieee80211_key in_ucastkey; /* unicast key */ + + /* others */ + int32_t in_fails; /* failure count to associate */ + int16_t in_inact; /* inactivity mark count */ + int16_t in_inact_reload; /* inactivity reload value */ + int32_t in_txrate; /* index to ni_rates[] */ + + list_node_t in_node; /* element of nt->nt_node */ + list_node_t in_hash; /* element of nt->nt_hash */ +}; + +struct ieee80211com { + mac_handle_t ic_mach; + + /* Initialized by driver */ + uint8_t ic_macaddr[IEEE80211_ADDR_LEN]; + uint32_t ic_caps; /* capabilities */ + enum ieee80211_phytype ic_phytype; /* XXX wrong for multi-mode */ + enum ieee80211_opmode ic_opmode; /* current operation mode */ + enum ieee80211_state ic_state; /* current 802.11 state */ + struct ieee80211_channel ic_sup_channels[IEEE80211_CHAN_MAX+1]; + struct ieee80211_rateset ic_sup_rates[IEEE80211_MODE_MAX]; + enum ieee80211_phymode ic_curmode; /* OPT current mode */ + struct ieee80211_channel *ic_curchan; /* OPT current channel */ + struct ieee80211_channel *ic_ibss_chan; /* OPT bss channel */ + uint8_t ic_maxrssi; /* maximum hardware RSSI */ + + /* INITIALIZED by IEEE80211, used/overridden by driver */ + uint16_t ic_modecaps; /* set of mode capabilities */ + uint8_t ic_chan_active[IEEE80211_CHAN_BYTES]; + enum ieee80211_protmode ic_protmode; /* 802.11g protection mode */ + uint16_t ic_bintval; /* beacon interval */ + uint16_t ic_lintval; /* listen interval */ + uint16_t ic_txpowlimit; /* global tx power limit */ + uint8_t ic_bmissthreshold; + uint16_t ic_rtsthreshold; + uint16_t ic_fragthreshold; + int32_t ic_mcast_rate; /* rate for mcast frames */ + uint8_t ic_fixed_rate; /* value of fixed rate */ + int32_t ic_des_esslen; /* length of desired essid */ + uint8_t ic_des_essid[IEEE80211_NWID_LEN]; + uint8_t ic_des_bssid[IEEE80211_ADDR_LEN]; + struct ieee80211_channel *ic_des_chan; /* desired channel */ + void *ic_opt_ie; /* user-specified IE's */ + uint16_t ic_opt_ie_len; /* length of ic_opt_ie */ + uint8_t ic_nickname[IEEE80211_NWID_LEN]; + uint16_t ic_tim_len; /* ic_tim_bitmap size (bytes) */ + uint8_t *ic_tim_bitmap; /* powersave stations w/ data */ + timeout_id_t ic_watchdog_timer; /* watchdog timer */ + /* Cipher state/configuration. */ + struct ieee80211_crypto_state ic_crypto; + + /* Runtime states */ + uint32_t ic_flags; /* state/conf flags */ + uint32_t ic_flags_ext; /* extended state flags */ + struct ieee80211_node *ic_bss; /* information for this node */ + struct ieee80211_device_stats ic_stats; + struct ieee80211_node_table ic_scan; /* STA: scan candidates */ + struct ieee80211_node_table ic_sta; /* AP:stations/IBSS:neighbors */ + + /* callback functions */ + /* + * Functions initialized by driver before calling ieee80211_attach() + * Those must be initialized are marked with M(andatory) + * + * ic_xmit - [M] transmit a management or null data frame + * return 0 on success, non-zero on error + * ic_watchdog - [O] periodic run function, enabled by + * ieee80211_start_watchdog() + * ic_set_tim - [O] set/clear traffic indication map + * ic_set_shortslot - [O] enable/disable short slot timing + * ic_node_newassoc - [O] driver specific operation on a newly + * associated or re-assoced node + */ + int (*ic_xmit)(ieee80211com_t *, mblk_t *, uint8_t); + void (*ic_watchdog)(void *); + void (*ic_set_tim)(ieee80211com_t *, + ieee80211_node_t *, int); + void (*ic_set_shortslot)(ieee80211com_t *, int); + void (*ic_node_newassoc)(ieee80211_node_t *, int); + /* + * Functions initialized by ieee80211_attach(), driver could + * override these functions after calling ieee80211_attach() + * + * ic_reset - reset + * ic_recv_mgmt - handle received management frames + * ic_send_mgmt - construct and transmit management frames + * ic_newstate - handle state transition + * ic_node_alloc - allocate a new BSS info node + * ic_node_cleanup - cleanup or free memory spaces of a node + * ic_node_free - free a node + * ic_node_getrssi - get node's rssi + */ + int (*ic_reset)(ieee80211com_t *); + void (*ic_recv_mgmt)(ieee80211com_t *, + mblk_t *, ieee80211_node_t *, + int, int, uint32_t); + int (*ic_send_mgmt)(ieee80211com_t *, + ieee80211_node_t *, int, int); + int (*ic_newstate)(ieee80211com_t *, + enum ieee80211_state, int); + struct ieee80211_node *(*ic_node_alloc)(ieee80211com_t *); + void (*ic_node_cleanup)(ieee80211_node_t *); + void (*ic_node_free)(ieee80211_node_t *); + uint8_t (*ic_node_getrssi)(const ieee80211_node_t *); + + kmutex_t ic_genlock; + void *ic_private; /* ieee80211 private data */ +}; +#define ic_nw_keys ic_crypto.cs_nw_keys +#define ic_def_txkey ic_crypto.cs_def_txkey + +extern const char *ieee80211_state_name[IEEE80211_S_MAX]; + +#define IEEE80211_RATE(_ix) \ + (in->in_rates.ir_rates[(_ix)] & IEEE80211_RATE_VAL) + +#define ieee80211_new_state(_ic, _nstate, _arg) \ + (((_ic)->ic_newstate)((_ic), (_nstate), (_arg))) + +#define ieee80211_macaddr_sprintf(_addr) \ + ether_sprintf((struct ether_addr *)(_addr)) + +/* + * Node reference counting definitions. + * + * ieee80211_node_initref initialize the reference count to 1 + * ieee80211_node_incref add a reference + * ieee80211_node_decref remove a reference + * ieee80211_node_decref_nv remove a reference and return new value + * ieee80211_node_refcnt reference count for printing (only) + */ +#include <sys/atomic.h> +#define ieee80211_node_initref(_in) \ + ((_in)->in_refcnt = 1) +#define ieee80211_node_incref(_in) \ + atomic_inc_uint(&(_in)->in_refcnt) +#define ieee80211_node_decref(_in) \ + atomic_dec_uint(&(_in)->in_refcnt) +#define ieee80211_node_decref_nv(_in) \ + atomic_dec_uint_nv(&(_in)->in_refcnt) +#define ieee80211_node_refcnt(_in) \ + (_in)->in_refcnt + +typedef void ieee80211_iter_func(void *, ieee80211_node_t *); + +/* Initialization */ +void ieee80211_attach(ieee80211com_t *); +void ieee80211_detach(ieee80211com_t *); +void ieee80211_media_init(ieee80211com_t *); +int ieee80211_ioctl(ieee80211com_t *, queue_t *, mblk_t *); + +/* Protocol Processing */ +int ieee80211_input(ieee80211com_t *, mblk_t *, ieee80211_node_t *, + int32_t, uint32_t); +mblk_t *ieee80211_encap(ieee80211com_t *, mblk_t *, ieee80211_node_t *); + +mblk_t *ieee80211_beacon_alloc(ieee80211com_t *, ieee80211_node_t *, + struct ieee80211_beacon_offsets *); +int ieee80211_beacon_update(ieee80211com_t *, ieee80211_node_t *, + struct ieee80211_beacon_offsets *, mblk_t *, int); +void ieee80211_beacon_miss(ieee80211com_t *); + +void ieee80211_begin_scan(ieee80211com_t *, boolean_t); +void ieee80211_next_scan(ieee80211com_t *); +void ieee80211_end_scan(ieee80211com_t *); +void ieee80211_cancel_scan(ieee80211com_t *); + +void ieee80211_sta_join(ieee80211com_t *, ieee80211_node_t *); +void ieee80211_sta_leave(ieee80211com_t *, ieee80211_node_t *); +boolean_t ieee80211_ibss_merge(ieee80211_node_t *); + +/* Node Operation */ +ieee80211_node_t *ieee80211_ref_node(ieee80211_node_t *); +void ieee80211_unref_node(ieee80211_node_t **); +void ieee80211_node_authorize(ieee80211_node_t *); +void ieee80211_node_unauthorize(ieee80211_node_t *); +ieee80211_node_t *ieee80211_alloc_node(ieee80211com_t *, + ieee80211_node_table_t *, const uint8_t *); +void ieee80211_free_node(ieee80211_node_t *); +void ieee80211_node_table_reset(ieee80211_node_table_t *); +void ieee80211_iterate_nodes(ieee80211_node_table_t *, ieee80211_iter_func *, + void *); +ieee80211_node_t *ieee80211_find_node(ieee80211_node_table_t *, + const uint8_t *); +ieee80211_node_t *ieee80211_find_txnode(ieee80211com_t *, + const uint8_t daddr[IEEE80211_ADDR_LEN]); +ieee80211_node_t *ieee80211_find_rxnode(ieee80211com_t *, + const struct ieee80211_frame *); + + +/* Crypto */ +extern struct ieee80211_key *ieee80211_crypto_encap(ieee80211com_t *, mblk_t *); +extern struct ieee80211_key *ieee80211_crypto_decap(ieee80211com_t *, mblk_t *, + int); +extern int ieee80211_crypto_newkey(ieee80211com_t *, int, int, + struct ieee80211_key *); +extern int ieee80211_crypto_delkey(ieee80211com_t *, struct ieee80211_key *); +extern int ieee80211_crypto_setkey(ieee80211com_t *, struct ieee80211_key *, + const uint8_t macaddr[IEEE80211_ADDR_LEN]); + +/* Helper Functions */ +int ieee80211_stat(ieee80211com_t *ic, uint_t stat, uint64_t *val); +uint32_t ieee80211_chan2ieee(ieee80211com_t *, struct ieee80211_channel *); +enum ieee80211_phymode ieee80211_chan2mode(ieee80211com_t *, + struct ieee80211_channel *); +uint32_t ieee80211_ieee2mhz(uint32_t, uint32_t); +void ieee80211_reset_chan(ieee80211com_t *); +void ieee80211_dump_pkt(const uint8_t *, int32_t, int32_t, int32_t); +void ieee80211_watchdog(void *); +void ieee80211_start_watchdog(ieee80211com_t *, uint32_t); +void ieee80211_stop_watchdog(ieee80211com_t *); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_NET80211_H */ diff --git a/usr/src/uts/common/sys/net80211_crypto.h b/usr/src/uts/common/sys/net80211_crypto.h new file mode 100644 index 0000000000..89cd81095b --- /dev/null +++ b/usr/src/uts/common/sys/net80211_crypto.h @@ -0,0 +1,218 @@ +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +/* + * Copyright (c) 2001 Atsushi Onoe + * Copyright (c) 2002-2005 Sam Leffler, Errno Consulting + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * Alternatively, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2 as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +#ifndef _SYS_NET80211_CRYPTO_H +#define _SYS_NET80211_CRYPTO_H + +#include <sys/types.h> +#include <sys/mac.h> +#include <sys/net80211_proto.h> + +/* + * 802.11 protocol crypto-related definitions. + */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * NB: these values are ordered carefully; there are lots of + * of implications in any reordering. + */ +#define IEEE80211_CIPHER_WEP 0 +#define IEEE80211_CIPHER_TKIP 1 +#define IEEE80211_CIPHER_AES_OCB 2 +#define IEEE80211_CIPHER_AES_CCM 3 +#define IEEE80211_CIPHER_CKIP 4 +#define IEEE80211_CIPHER_NONE 5 /* pseudo value */ + +#define IEEE80211_CIPHER_MAX (IEEE80211_CIPHER_NONE+1) + +/* + * Maxmium length of key in bytes + * WEP key length present in the 802.11 standard is 40-bit. + * Many implementations also support 104-bit WEP keys. + * 802.11i standardize TKIP/CCMP use 128-bit key + */ +#define IEEE80211_KEYBUF_SIZE 16 +#define IEEE80211_MICBUF_SIZE (8+8) /* space for both tx+rx keys */ + +/* Key Flags */ +#define IEEE80211_KEY_XMIT 0x01 /* key used for xmit */ +#define IEEE80211_KEY_RECV 0x02 /* key used for recv */ +#define IEEE80211_KEY_GROUP /* key used for WPA group operation */ \ + 0x04 +#define IEEE80211_KEY_SWCRYPT 0x10 /* host-based encrypt/decrypt */ +#define IEEE80211_KEY_SWMIC 0x20 /* host-based enmic/demic */ +#define IEEE80211_KEY_COMMON /* common flags passed in by apps */ \ + (IEEE80211_KEY_XMIT | IEEE80211_KEY_RECV | IEEE80211_KEY_GROUP) + +/* WEP */ +#define IEEE80211_WEP_KEYLEN 5 /* 40bit */ +#define IEEE80211_WEP_IVLEN 3 /* 24bit */ +#define IEEE80211_WEP_KIDLEN 1 /* 1 octet */ +#define IEEE80211_WEP_CRCLEN 4 /* CRC-32 */ +#define IEEE80211_WEP_NKID 4 /* number of key ids */ + +#define IEEE80211_WEP_HDRLEN \ + (IEEE80211_WEP_IVLEN + IEEE80211_WEP_KIDLEN) +#define IEEE80211_WEP_MINLEN \ + (sizeof (struct ieee80211_frame) + \ + IEEE80211_WEP_HDRLEN + IEEE80211_WEP_CRCLEN) + +/* Maximum number of keys */ +#define IEEE80211_KEY_MAX IEEE80211_WEP_NKID + +struct ieee80211com; +struct ieee80211_node; +struct ieee80211_key; +typedef uint16_t ieee80211_keyix; /* h/w key index */ + +#define IEEE80211_KEYIX_NONE ((ieee80211_keyix) -1) + +/* + * Template for a supported cipher. Ciphers register with the + * crypto code. + * + * ic_attach - Initialize cipher. The return value is set to wk_private + * ic_detach - Destruct a cipher. + * ic_setkey - Validate key contents + * ic_encap - Encrypt the 802.11 MAC payload + * ic_decap - Decrypt the 802.11 MAC payload + * ic_enmic - Add MIC + * ic_demic - Check and remove MIC + */ +struct ieee80211_cipher { + const char *ic_name; /* printable name */ + uint32_t ic_cipher; /* IEEE80211_CIPHER_* */ + uint32_t ic_header; /* size of privacy header (bytes) */ + uint32_t ic_trailer; /* size of privacy trailer (bytes) */ + uint32_t ic_miclen; /* size of mic trailer (bytes) */ + void *(*ic_attach)(struct ieee80211com *, + struct ieee80211_key *); + void (*ic_detach)(struct ieee80211_key *); + int32_t (*ic_setkey)(struct ieee80211_key *); + int32_t (*ic_encap)(struct ieee80211_key *, mblk_t *, + uint8_t keyid); + int32_t (*ic_decap)(struct ieee80211_key *, mblk_t *, int); + int32_t (*ic_enmic)(struct ieee80211_key *, mblk_t *, int); + int32_t (*ic_demic)(struct ieee80211_key *, mblk_t *, int); +}; +extern const struct ieee80211_cipher ieee80211_cipher_none; + +struct ieee80211_key { + uint8_t wk_keylen; /* key length in bytes */ + uint8_t wk_pad; + uint16_t wk_flags; + uint8_t wk_key[IEEE80211_KEYBUF_SIZE+IEEE80211_MICBUF_SIZE]; + ieee80211_keyix wk_keyix; /* h/w key index */ + ieee80211_keyix wk_rxkeyix; /* optional h/w rx key index */ + uint64_t wk_keyrsc; /* key receive sequence counter */ + uint64_t wk_keytsc; /* key transmit sequence counter */ + const struct ieee80211_cipher *wk_cipher; + void *wk_private; /* private cipher state */ +}; +#define wk_txmic wk_key+IEEE80211_KEYBUF_SIZE+0 +#define wk_rxmic wk_key+IEEE80211_KEYBUF_SIZE+8 + +/* + * Crypto state kept in each ieee80211com. + */ +struct ieee80211_crypto_state { + struct ieee80211_key cs_nw_keys[IEEE80211_KEY_MAX]; + ieee80211_keyix cs_def_txkey; /* default/group tx key index */ + uint16_t cs_max_keyix; /* max h/w key index */ + + int (*cs_key_alloc)(struct ieee80211com *, + const struct ieee80211_key *, + ieee80211_keyix *, ieee80211_keyix *); + int (*cs_key_delete)(struct ieee80211com *, + const struct ieee80211_key *); + int (*cs_key_set)(struct ieee80211com *, + const struct ieee80211_key *, + const uint8_t mac[IEEE80211_ADDR_LEN]); + void (*cs_key_update_begin)(struct ieee80211com *); + void (*cs_key_update_end)(struct ieee80211com *); +}; + +/* + * Key update synchronization methods. + */ +#define KEY_UPDATE_BEGIN(ic) \ + (ic)->ic_crypto.cs_key_update_begin(ic) +#define KEY_UPDATE_END(ic) \ + (ic)->ic_crypto.cs_key_update_end(ic) +#define KEY_UNDEFINED(k) \ + ((k).wk_cipher == &ieee80211_cipher_none) + +#define DEV_KEY_ALLOC(ic, k, kix, rkix) \ + (ic)->ic_crypto.cs_key_alloc(ic, k, kix, rkix) +#define DEV_KEY_DELETE(ic, k) \ + (ic)->ic_crypto.cs_key_delete(ic, k) +#define DEV_KEY_SET(ic, k, m) \ + (ic)->ic_crypto.cs_key_set(ic, k, m) + +#define CIPHER_DETACH(k) \ + (k)->wk_cipher->ic_detach(k) +#define CIPHER_ATTACH(k) \ + (k)->wk_cipher->ic_attach(k) + +#define ieee80211_crypto_demic(ic, k, m, force) \ + (((k)->wk_cipher->ic_miclen > 0) ? \ + (k)->wk_cipher->ic_demic(k, m, force) : \ + 1) + +#define ieee80211_crypto_enmic(ic, k, m, force) \ + ((k)->wk_cipher->ic_miclen > 0 ? \ + (k)->wk_cipher->ic_enmic(k, m, force) : \ + 1) + +void ieee80211_crypto_attach(struct ieee80211com *ic); +void ieee80211_crypto_detach(struct ieee80211com *ic); +void ieee80211_crypto_register(const struct ieee80211_cipher *); +void ieee80211_crypto_unregister(const struct ieee80211_cipher *); +void ieee80211_crypto_resetkey(struct ieee80211com *, struct ieee80211_key *, + ieee80211_keyix); + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_NET80211_CRYPTO_H */ diff --git a/usr/src/uts/common/sys/net80211_proto.h b/usr/src/uts/common/sys/net80211_proto.h new file mode 100644 index 0000000000..6842798445 --- /dev/null +++ b/usr/src/uts/common/sys/net80211_proto.h @@ -0,0 +1,541 @@ +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +/* + * Copyright (c) 2001 Atsushi Onoe + * Copyright (c) 2002-2005 Sam Leffler, Errno Consulting + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * Alternatively, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2 as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +#ifndef _SYS_NET80211_PROTO_H +#define _SYS_NET80211_PROTO_H + +/* + * 802.11 protocol definitions + */ + +#ifdef __cplusplus +extern "C" { +#endif + +#define IEEE80211_ADDR_LEN 6 /* size of 802.11 address */ +#define IEEE80211_ADDR_COPY(dst, src) \ + ((void) bcopy(src, dst, IEEE80211_ADDR_LEN)) +#define IEEE80211_ADDR_EQ(a1, a2) \ + (bcmp(a1, a2, IEEE80211_ADDR_LEN) == 0) +/* is 802.11 address multicast/broadcast? */ +#define IEEE80211_IS_MULTICAST(addr) \ + ((((uint8_t *)addr)[0]) & 0x01) + +/* + * Size of an ACK control frame in bytes. + */ +#define IEEE80211_ACK_SIZE (2 + 2 + IEEE80211_ADDR_LEN + 4) + +#define WME_NUM_AC 4 /* 4 AC categories */ + +/* + * Protocol Physical Layer + */ + +/* XXX not really a mode; there are really multiple PHY's */ +enum ieee80211_phymode { + IEEE80211_MODE_AUTO = 0, /* autoselect */ + IEEE80211_MODE_11A = 1, /* 5GHz, OFDM */ + IEEE80211_MODE_11B = 2, /* 2GHz, CCK */ + IEEE80211_MODE_11G = 3, /* 2GHz, OFDM */ + IEEE80211_MODE_FH = 4, /* 2GHz, GFSK */ + IEEE80211_MODE_TURBO_A = 5, /* 5GHz, OFDM, 2x clock */ + IEEE80211_MODE_TURBO_G = 6 /* 2GHz, OFDM, 2x clock */ +}; +#define IEEE80211_MODE_MAX (IEEE80211_MODE_TURBO_G+1) + +enum ieee80211_phytype { + IEEE80211_T_DS, /* direct sequence spread spectrum */ + IEEE80211_T_FH, /* frequency hopping */ + IEEE80211_T_OFDM, /* frequency division multiplexing */ + IEEE80211_T_TURBO /* high rate OFDM, aka turbo mode */ +}; +#define IEEE80211_T_CCK IEEE80211_T_DS /* more common nomenclature */ + +enum ieee80211_opmode { + IEEE80211_M_STA = 1, /* infrastructure station */ + IEEE80211_M_IBSS = 0, /* IBSS (adhoc) station */ + IEEE80211_M_AHDEMO = 3, /* Old lucent compatible adhoc demo */ + IEEE80211_M_HOSTAP = 6, /* Software Access Point */ + IEEE80211_M_MONITOR = 8 /* Monitor mode */ +}; + +/* + * 802.11g protection mode. + */ +enum ieee80211_protmode { + IEEE80211_PROT_NONE = 0, /* no protection */ + IEEE80211_PROT_CTSONLY = 1, /* CTS to self */ + IEEE80211_PROT_RTSCTS = 2 /* RTS-CTS */ +}; + +/* + * generic definitions for IEEE 802.11 frames + */ +#pragma pack(1) +struct ieee80211_frame { + uint8_t i_fc[2]; /* [0]-protocol version, [1]-type & subtype */ + uint8_t i_dur[2]; + uint8_t i_addr1[IEEE80211_ADDR_LEN]; + uint8_t i_addr2[IEEE80211_ADDR_LEN]; + uint8_t i_addr3[IEEE80211_ADDR_LEN]; + uint8_t i_seq[2]; + /* possibly followed by addr4[IEEE80211_ADDR_LEN]; */ + /* see below */ +}; + +struct ieee80211_frame_addr4 { + uint8_t i_fc[2]; + uint8_t i_dur[2]; + uint8_t i_addr1[IEEE80211_ADDR_LEN]; + uint8_t i_addr2[IEEE80211_ADDR_LEN]; + uint8_t i_addr3[IEEE80211_ADDR_LEN]; + uint8_t i_seq[2]; + uint8_t i_addr4[IEEE80211_ADDR_LEN]; +}; + +/* Start part(LLC and SNAP) of payload of IEEE80211 frame */ +struct ieee80211_llc { + /* LLC */ + uint8_t illc_dsap; + uint8_t illc_ssap; + uint8_t illc_control; + /* SNAP */ + uint8_t illc_oc[3]; /* protocol ID or organization code */ + uint16_t illc_ether_type; /* ethernet type */ +}; + +/* + * Management Notification Frame + */ +struct ieee80211_mnf { + uint8_t mnf_category; + uint8_t mnf_action; + uint8_t mnf_dialog; + uint8_t mnf_status; +}; +#define IEEE80211_MNF_SETUP_REQ 0 +#define IEEE80211_MNF_SETUP_RESP 1 +#define IEEE80211_MNF_TEARDOWN 2 + +/* + * Control frames. + */ +struct ieee80211_frame_min { + uint8_t i_fc[2]; + uint8_t i_dur[2]; + uint8_t i_addr1[IEEE80211_ADDR_LEN]; + uint8_t i_addr2[IEEE80211_ADDR_LEN]; + /* FCS */ +}; + +struct ieee80211_frame_rts { + uint8_t i_fc[2]; + uint8_t i_dur[2]; + uint8_t i_ra[IEEE80211_ADDR_LEN]; + uint8_t i_ta[IEEE80211_ADDR_LEN]; + /* FCS */ +}; + +struct ieee80211_frame_cts { + uint8_t i_fc[2]; + uint8_t i_dur[2]; + uint8_t i_ra[IEEE80211_ADDR_LEN]; + /* FCS */ +}; + +struct ieee80211_frame_ack { + uint8_t i_fc[2]; + uint8_t i_dur[2]; + uint8_t i_ra[IEEE80211_ADDR_LEN]; + /* FCS */ +}; + +struct ieee80211_frame_pspoll { + uint8_t i_fc[2]; + uint8_t i_aid[2]; + uint8_t i_bssid[IEEE80211_ADDR_LEN]; + uint8_t i_ta[IEEE80211_ADDR_LEN]; + /* FCS */ +}; + +struct ieee80211_frame_cfend { /* NB: also CF-End+CF-Ack */ + uint8_t i_fc[2]; + uint8_t i_dur[2]; /* should be zero */ + uint8_t i_ra[IEEE80211_ADDR_LEN]; + uint8_t i_bssid[IEEE80211_ADDR_LEN]; + /* FCS */ +}; + +struct ieee80211_tim_ie { + uint8_t tim_ie; /* IEEE80211_ELEMID_TIM */ + uint8_t tim_len; + uint8_t tim_count; /* DTIM count */ + uint8_t tim_period; /* DTIM period */ + uint8_t tim_bitctl; /* bitmap control */ + uint8_t tim_bitmap[1]; /* variable-length bitmap */ +}; + +/* + * 802.11i/WPA information element (maximally sized). + */ +struct ieee80211_ie_wpa { + uint8_t wpa_id; /* IEEE80211_ELEMID_VENDOR */ + uint8_t wpa_len; /* length in bytes */ + uint8_t wpa_oui[3]; /* 0x00, 0x50, 0xf2 */ + uint8_t wpa_type; /* OUI type */ + uint16_t wpa_version; /* spec revision */ + uint32_t wpa_mcipher[1]; /* multicast/group key cipher */ + uint16_t wpa_uciphercnt; /* # pairwise key ciphers */ + uint32_t wpa_uciphers[8]; /* ciphers */ + uint16_t wpa_authselcnt; /* authentication selector cnt */ + uint32_t wpa_authsels[8]; /* selectors */ + uint16_t wpa_caps; /* 802.11i capabilities */ + uint16_t wpa_pmkidcnt; /* 802.11i pmkid count */ + uint16_t wpa_pmkids[8]; /* 802.11i pmkids */ +}; + +/* + * WME AC parameter field + */ +struct ieee80211_wme_acparams { + uint8_t acp_aci_aifsn; + uint8_t acp_logcwminmax; + uint16_t acp_txop; +}; + +/* + * WME Parameter Element + */ +struct ieee80211_wme_param { + uint8_t wme_id; + uint8_t wme_len; + uint8_t wme_oui[3]; + uint8_t wme_oui_type; + uint8_t wme_oui_sybtype; + uint8_t wme_version; + uint8_t wme_qosInfo; + uint8_t wme_reserved; + struct ieee80211_wme_acparams wme_acParams[WME_NUM_AC]; +}; +#pragma pack() + +#define IEEE80211_FC0_VERSION_MASK 0x03 +#define IEEE80211_FC0_VERSION_SHIFT 0 +#define IEEE80211_FC0_VERSION_0 0x00 +#define IEEE80211_FC0_TYPE_MASK 0x0c +#define IEEE80211_FC0_TYPE_SHIFT 2 +#define IEEE80211_FC0_TYPE_MGT 0x00 +#define IEEE80211_FC0_TYPE_CTL 0x04 +#define IEEE80211_FC0_TYPE_DATA 0x08 +#define IEEE80211_FC0_SUBTYPE_MASK 0xf0 +#define IEEE80211_FC0_SUBTYPE_SHIFT 4 +/* for TYPE_MGT */ +#define IEEE80211_FC0_SUBTYPE_ASSOC_REQ 0x00 +#define IEEE80211_FC0_SUBTYPE_ASSOC_RESP 0x10 +#define IEEE80211_FC0_SUBTYPE_REASSOC_REQ 0x20 +#define IEEE80211_FC0_SUBTYPE_REASSOC_RESP 0x30 +#define IEEE80211_FC0_SUBTYPE_PROBE_REQ 0x40 +#define IEEE80211_FC0_SUBTYPE_PROBE_RESP 0x50 +#define IEEE80211_FC0_SUBTYPE_BEACON 0x80 +#define IEEE80211_FC0_SUBTYPE_ATIM 0x90 +#define IEEE80211_FC0_SUBTYPE_DISASSOC 0xa0 +#define IEEE80211_FC0_SUBTYPE_AUTH 0xb0 +#define IEEE80211_FC0_SUBTYPE_DEAUTH 0xc0 +/* for TYPE_CTL */ +#define IEEE80211_FC0_SUBTYPE_PS_POLL 0xa0 +#define IEEE80211_FC0_SUBTYPE_RTS 0xb0 +#define IEEE80211_FC0_SUBTYPE_CTS 0xc0 +#define IEEE80211_FC0_SUBTYPE_ACK 0xd0 +#define IEEE80211_FC0_SUBTYPE_CF_END 0xe0 +#define IEEE80211_FC0_SUBTYPE_CF_END_ACK 0xf0 +/* for TYPE_DATA (bit combination) */ +#define IEEE80211_FC0_SUBTYPE_DATA 0x00 +#define IEEE80211_FC0_SUBTYPE_CF_ACK 0x10 +#define IEEE80211_FC0_SUBTYPE_CF_POLL 0x20 +#define IEEE80211_FC0_SUBTYPE_CF_ACPL 0x30 +#define IEEE80211_FC0_SUBTYPE_NODATA 0x40 +#define IEEE80211_FC0_SUBTYPE_CFACK 0x50 +#define IEEE80211_FC0_SUBTYPE_CFPOLL 0x60 +#define IEEE80211_FC0_SUBTYPE_CF_ACK_CF_ACK 0x70 +#define IEEE80211_FC0_SUBTYPE_QOS 0x80 +#define IEEE80211_FC0_SUBTYPE_QOS_NULL 0xc0 + +#define IEEE80211_FC1_DIR_MASK 0x03 +#define IEEE80211_FC1_DIR_NODS 0x00 /* STA->STA */ +#define IEEE80211_FC1_DIR_TODS 0x01 /* STA->AP */ +#define IEEE80211_FC1_DIR_FROMDS 0x02 /* AP ->STA */ +#define IEEE80211_FC1_DIR_DSTODS 0x03 /* AP ->AP */ +#define IEEE80211_FC1_MORE_FRAG 0x04 +#define IEEE80211_FC1_RETRY 0x08 +#define IEEE80211_FC1_PWR_MGT 0x10 +#define IEEE80211_FC1_MORE_DATA 0x20 +#define IEEE80211_FC1_WEP 0x40 +#define IEEE80211_FC1_ORDER 0x80 + +#define IEEE80211_SEQ_FRAG_MASK 0x000f +#define IEEE80211_SEQ_FRAG_SHIFT 0 +#define IEEE80211_SEQ_SEQ_MASK 0xfff0 +#define IEEE80211_SEQ_SEQ_SHIFT 4 /* 4bit frag number */ + +/* Length of management frame variable-length components in bytes */ +#define IEEE80211_NWID_LEN 32 /* SSID */ +#define IEEE80211_FH_LEN 5 /* FH parameters */ +#define IEEE80211_DS_LEN 1 /* DS parameters */ +#define IEEE80211_IBSS_LEN 4 /* IBSS parameters */ +#define IEEE80211_ERP_LEN 1 /* ERP information */ + +/* + * Length of management frame information elements containing + * a variable-length component is: + * element_id(1 byte) + length(1 byte) + component(variable bytes) + */ +#define IEEE80211_ELEM_LEN(complen) (2 + (complen)) + +/* + * minimal length of beacon/probe response frame elements + * time stamp[8] + beacon interval[2] + capability[2] + */ +#define IEEE80211_BEACON_ELEM_MIN 12 +/* + * Minimal length of authentication frame elements + * algorithm[2] + sequence[2] + status[2] + */ +#define IEEE80211_AUTH_ELEM_MIN 6 +/* + * Minimal length of association response frame elements + * capability[2] + status[2] + association ID[2] + */ +#define IEEE80211_ASSOC_RESP_ELEM_MIN 6 + +#define IEEE80211_CAPINFO_ESS 0x0001 +#define IEEE80211_CAPINFO_IBSS 0x0002 +#define IEEE80211_CAPINFO_CF_POLLABLE 0x0004 +#define IEEE80211_CAPINFO_CF_POLLREQ 0x0008 +#define IEEE80211_CAPINFO_PRIVACY 0x0010 +#define IEEE80211_CAPINFO_SHORT_PREAMBLE 0x0020 +#define IEEE80211_CAPINFO_PBCC 0x0040 +#define IEEE80211_CAPINFO_CHNL_AGILITY 0x0080 +/* bits 8-9 are reserved */ +#define IEEE80211_CAPINFO_SHORT_SLOTTIME 0x0400 +#define IEEE80211_CAPINFO_RSN 0x0800 +/* bit 12 is reserved */ +#define IEEE80211_CAPINFO_DSSSOFDM 0x2000 +/* bits 14-15 are reserved */ + +/* + * Management information element payloads. + */ + +enum { + IEEE80211_ELEMID_SSID = 0, + IEEE80211_ELEMID_RATES = 1, + IEEE80211_ELEMID_FHPARMS = 2, + IEEE80211_ELEMID_DSPARMS = 3, + IEEE80211_ELEMID_CFPARMS = 4, + IEEE80211_ELEMID_TIM = 5, + IEEE80211_ELEMID_IBSSPARMS = 6, + IEEE80211_ELEMID_COUNTRY = 7, + IEEE80211_ELEMID_CHALLENGE = 16, + /* 17-31 reserved for challenge text extension */ + IEEE80211_ELEMID_ERP = 42, + IEEE80211_ELEMID_RSN = 48, + IEEE80211_ELEMID_XRATES = 50, + /* 128-129 proprietary elements used by Agere chipsets */ + IEEE80211_ELEMID_AGERE1 = 128, + IEEE80211_ELEMID_AGERE2 = 129, + IEEE80211_ELEMID_TPC = 150, + IEEE80211_ELEMID_CCKM = 156, + IEEE80211_ELEMID_VENDOR = 221 /* vendor private */ +}; + +#define IEEE80211_CHALLENGE_LEN 128 + +#define IEEE80211_RATE_BASIC 0x80 +#define IEEE80211_RATE_VAL 0x7f + +/* EPR information element flags */ +#define IEEE80211_ERP_NON_ERP_PRESENT 0x01 +#define IEEE80211_ERP_USE_PROTECTION 0x02 +#define IEEE80211_ERP_LONG_PREAMBLE 0x04 + +#define IEEE80211_AUTH_ALG_OPEN 0x0000 +#define IEEE80211_AUTH_ALG_SHARED 0x0001 +#define IEEE80211_AUTH_ALG_LEAP 0x0080 + + +enum { + IEEE80211_AUTH_OPEN_REQUEST = 1, + IEEE80211_AUTH_OPEN_RESPONSE = 2 +}; + +enum { + IEEE80211_AUTH_SHARED_REQUEST = 1, + IEEE80211_AUTH_SHARED_CHALLENGE = 2, + IEEE80211_AUTH_SHARED_RESPONSE = 3, + IEEE80211_AUTH_SHARED_PASS = 4 +}; + +/* + * Reason codes + * + * Unlisted codes are reserved + */ +enum { + IEEE80211_REASON_UNSPECIFIED = 1, + IEEE80211_REASON_AUTH_EXPIRE = 2, + IEEE80211_REASON_AUTH_LEAVE = 3, + IEEE80211_REASON_ASSOC_EXPIRE = 4, + IEEE80211_REASON_ASSOC_TOOMANY = 5, + IEEE80211_REASON_NOT_AUTHED = 6, + IEEE80211_REASON_NOT_ASSOCED = 7, + IEEE80211_REASON_ASSOC_LEAVE = 8, + IEEE80211_REASON_ASSOC_NOT_AUTHED = 9, + IEEE80211_REASON_INVALID_POWER = 10, + IEEE80211_REASON_RSN_REQUIRED = 11, + IEEE80211_REASON_RSN_INCONSISTENT = 12, + IEEE80211_REASON_IE_INVALID = 13, + IEEE80211_REASON_MIC_FAILURE = 14 +}; + +/* + * Status codes + * + * Unlisted codes are reserved and unused + */ +enum { + IEEE80211_STATUS_SUCCESS = 0, + IEEE80211_STATUS_UNSPECIFIED = 1, + IEEE80211_STATUS_CAPINFO = 10, + IEEE80211_STATUS_NOT_ASSOCED = 11, + IEEE80211_STATUS_OTHER = 12, + IEEE80211_STATUS_ALG = 13, + IEEE80211_STATUS_SEQUENCE = 14, + IEEE80211_STATUS_CHALLENGE = 15, + IEEE80211_STATUS_TIMEOUT = 16, + IEEE80211_STATUS_TOOMANY = 17, + IEEE80211_STATUS_BASIC_RATE = 18, + IEEE80211_STATUS_SP_REQUIRED = 19, + IEEE80211_STATUS_PBCC_REQUIRED = 20, + IEEE80211_STATUS_CA_REQUIRED = 21, + IEEE80211_STATUS_TOO_MANY_STATIONS = 22, + IEEE80211_STATUS_RATES = 23, + IEEE80211_STATUS_SHORTSLOT_REQUIRED = 25, + IEEE80211_STATUS_DSSSOFDM_REQUIRED = 26 +}; + +#define IEEE80211_WEP_KEYLEN 5 /* 40bit */ +#define IEEE80211_WEP_IVLEN 3 /* 24bit */ +#define IEEE80211_WEP_KIDLEN 1 /* 1 octet */ +#define IEEE80211_WEP_CRCLEN 4 /* CRC-32 */ +#define IEEE80211_WEP_NKID 4 /* number of key ids */ + +#define IEEE80211_CRC_LEN 4 + +/* + * Maximum acceptable MTU is defined by 802.11 + * Min is arbitrarily chosen > IEEE80211_MIN_LEN. + */ +#define IEEE80211_MTU_MAX 2304 +#define IEEE80211_MTU_MIN 32 +#define IEEE80211_MTU 1500 + +#define IEEE80211_MAX_LEN \ + (sizeof (struct ieee80211_frame_addr4) + \ + (IEEE80211_WEP_IVLEN + IEEE80211_WEP_KIDLEN + IEEE80211_WEP_CRCLEN) + \ + IEEE80211_MTU_MAX + IEEE80211_CRC_LEN) +#define IEEE80211_ACK_LEN \ + (sizeof (struct ieee80211_frame_ack) + IEEE80211_CRC_LEN) +#define IEEE80211_MIN_LEN \ + (sizeof (struct ieee80211_frame_min) + IEEE80211_CRC_LEN) + +/* + * The 802.11 spec says at most 2007 stations may be + * associated at once. For most AP's this is way more + * than is feasible so we use a default of 128. This + * number may be overridden by the driver and/or by + * user configuration. + */ +#define IEEE80211_AID_MAX 2007 +#define IEEE80211_AID_DEF 128 + +#define IEEE80211_AID(b) ((b) &~ 0xc000) + +/* + * RTS frame length parameters. The default is specified in + * the 802.11 spec as 512; we treat it as implementation-dependent + * so it's defined in ieee80211_var.h. The max may be wrong + * for jumbo frames. + */ +#define IEEE80211_RTS_MIN 1 +#define IEEE80211_RTS_MAX 2346 + +/* + * TX fragmentation parameters. As above for RTS, we treat + * default as implementation-dependent so define it elsewhere. + */ +#define IEEE80211_FRAG_MIN 256 +#define IEEE80211_FRAG_MAX 2346 + +/* flags for ieee80211_fix_rate() */ +#define IEEE80211_F_DOSORT 0x00000001 /* sort rate list */ +#define IEEE80211_F_DOFRATE 0x00000002 /* use fixed rate */ +#define IEEE80211_F_DONEGO 0x00000004 /* calc negotiated rate */ +#define IEEE80211_F_DODEL 0x00000008 /* delete ignore rate */ + +/* + * Beacon frames constructed by ieee80211_beacon_alloc + * have the following structure filled in so drivers + * can update the frame later w/ minimal overhead. + */ +struct ieee80211_beacon_offsets { + uint16_t *bo_caps; /* capabilities */ + uint8_t *bo_tim; /* start of atim/dtim */ + uint8_t *bo_wme; /* start of WME parameters */ + uint8_t *bo_trailer; /* start of fixed-size trailer */ + uint16_t bo_tim_len; /* atim/dtim length in bytes */ + uint16_t bo_trailer_len; /* trailer length in bytes */ + uint8_t *bo_erp; /* start of ERP element */ +}; + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_NET80211_PROTO_H */ diff --git a/usr/src/uts/intel/Makefile.intel.shared b/usr/src/uts/intel/Makefile.intel.shared index 2c3f70e909..9804adb9a9 100644 --- a/usr/src/uts/intel/Makefile.intel.shared +++ b/usr/src/uts/intel/Makefile.intel.shared @@ -493,6 +493,7 @@ MISC_KMODS += kmech_krb5 MISC_KMODS += krtld MISC_KMODS += mac MISC_KMODS += mixer +MISC_KMODS += net80211 MISC_KMODS += nfs_dlboot MISC_KMODS += nfssrv MISC_KMODS += neti @@ -589,6 +590,7 @@ PCBE_KMODS += p123_pcbe p4_pcbe opteron_pcbe # MAC-Type Plugin Modules (/kernel/mac) # MAC_KMODS += mac_ether +MAC_KMODS += mac_wifi # # 'Devname' Modules (kernel/devname) diff --git a/usr/src/uts/intel/ath/Makefile b/usr/src/uts/intel/ath/Makefile index d2b6f4e1d8..39e1bc3f79 100644 --- a/usr/src/uts/intel/ath/Makefile +++ b/usr/src/uts/intel/ath/Makefile @@ -41,11 +41,9 @@ UTSBASE = ../.. MODULE = ath OBJECTS = $(ATH_OBJS:%=$(OBJS_DIR)/%) $(OBJS_DIR)/hal.o LINTS = $(LINTS_DIR)/ath_aux.ln \ - $(LINTS_DIR)/ath_ieee80211.ln \ $(LINTS_DIR)/ath_main.ln \ $(LINTS_DIR)/ath_osdep.ln \ - $(LINTS_DIR)/ath_rate.ln \ - $(LINTS_DIR)/ath_wificonfig.ln + $(LINTS_DIR)/ath_rate.ln ROOTMODULE = $(ROOT_DRV_DIR)/$(MODULE) @@ -62,9 +60,9 @@ LINT_TARGET = $(MODULE).lint INSTALL_TARGET = $(BINARY) $(ROOTMODULE) # -# Driver depends on GLD & IP. +# Driver depends on GLDv3 & wifi kernel support module. # -LDFLAGS += -dy -Nmisc/gld -Ndrv/ip +LDFLAGS += -dy -Nmisc/mac -Nmisc/net80211 # # For now, disable these lint checks; maintainers should endeavor diff --git a/usr/src/uts/intel/mac_wifi/Makefile b/usr/src/uts/intel/mac_wifi/Makefile new file mode 100644 index 0000000000..b9880691dd --- /dev/null +++ b/usr/src/uts/intel/mac_wifi/Makefile @@ -0,0 +1,92 @@ +# +# CDDL HEADER START +# +# The contents of this file are subject to the terms of the +# Common Development and Distribution License (the "License"). +# You may not use this file except in compliance with the License. +# +# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE +# or http://www.opensolaris.org/os/licensing. +# See the License for the specific language governing permissions +# and limitations under the License. +# +# When distributing Covered Code, include this CDDL HEADER in each +# file and include the License file at usr/src/OPENSOLARIS.LICENSE. +# If applicable, add the following below this CDDL HEADER, with the +# fields enclosed by brackets "[]" replaced with your own identifying +# information: Portions Copyright [yyyy] [name of copyright owner] +# +# CDDL HEADER END +# +# +# Copyright 2006 Sun Microsystems, Inc. All rights reserved. +# Use is subject to license terms. +# +# ident "%Z%%M% %I% %E% SMI" +# +# +# This makefile drives the production of the mac_wifi plugin +# kernel module. +# + +# +# Path to the base of the uts directory tree (usually /usr/src/uts). +# +UTSBASE = ../.. + +# +# Define the module and object file sets. +# +MODULE = mac_wifi +OBJECTS = $(MAC_WIFI_OBJS:%=$(OBJS_DIR)/%) +LINTS = $(MAC_WIFI_OBJS:%.o=$(LINTS_DIR)/%.ln) +ROOTMODULE = $(ROOT_MAC_DIR)/$(MODULE) + +# +# Include common rules. +# +include $(UTSBASE)/intel/Makefile.intel + +# +# Define targets +# +ALL_TARGET = $(BINARY) +LINT_TARGET = $(MODULE).lint +INSTALL_TARGET = $(BINARY) $(ROOTMODULE) + +# +# Overrides. +# +CFLAGS += $(CCVERBOSE) +LDFLAGS += -dy -Nmisc/mac +# +# STREAMS API limitations force us to turn off these lint checks. +# +LINTTAGS += -erroff=E_BAD_PTR_CAST_ALIGN +LINTTAGS += -erroff=E_PTRDIFF_OVERFLOW + +# +# Default build targets. +# +.KEEP_STATE: + +def: $(DEF_DEPS) + +all: $(ALL_DEPS) + +clean: $(CLEAN_DEPS) + +clobber: $(CLOBBER_DEPS) + +lint: $(LINT_DEPS) + +modlintlib: $(MODLINTLIB_DEPS) + +clean.lint: $(CLEAN_LINT_DEPS) + +install: $(INSTALL_DEPS) + +# +# Include common targets. +# +include $(UTSBASE)/intel/Makefile.targ diff --git a/usr/src/uts/intel/net80211/Makefile b/usr/src/uts/intel/net80211/Makefile new file mode 100644 index 0000000000..3365320fe7 --- /dev/null +++ b/usr/src/uts/intel/net80211/Makefile @@ -0,0 +1,95 @@ +# +# CDDL HEADER START +# +# The contents of this file are subject to the terms of the +# Common Development and Distribution License (the "License"). +# You may not use this file except in compliance with the License. +# +# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE +# or http://www.opensolaris.org/os/licensing. +# See the License for the specific language governing permissions +# and limitations under the License. +# +# When distributing Covered Code, include this CDDL HEADER in each +# file and include the License file at usr/src/OPENSOLARIS.LICENSE. +# If applicable, add the following below this CDDL HEADER, with the +# fields enclosed by brackets "[]" replaced with your own identifying +# information: Portions Copyright [yyyy] [name of copyright owner] +# +# CDDL HEADER END +# + +# +# Copyright 2006 Sun Microsystems, Inc. All rights reserved. +# Use is subject to license terms. +# + +# ident "%Z%%M% %I% %E% SMI" + +# +# This file makes the atheros driver for an intel system +# +# intel architecture dependent +# + +# +# Path to the base of the uts directory tree (usually /usr/src/uts). +# +UTSBASE = ../.. +# +# Define the module and object file sets. +# +MODULE = net80211 +OBJECTS = $(NET80211_OBJS:%=$(OBJS_DIR)/%) +LINTS = $(NET80211_OBJS:%.o=$(LINTS_DIR)/%.ln) +ROOTMODULE = $(ROOT_MISC_DIR)/$(MODULE) + +# +# Include common rules. +# +include $(UTSBASE)/intel/Makefile.intel + +# +# Define targets +# +ALL_TARGET = $(BINARY) +LINT_TARGET = $(MODULE).lint +INSTALL_TARGET = $(BINARY) $(ROOTMODULE) + +# +# Overrides +# +CFLAGS += $(CCVERBOSE) +LDFLAGS += -dy -Nmisc/mac -Nmac/mac_wifi -Ndrv/ip + +# +# STREAMS API limitations force us to turn off these lint checks. +# +LINTTAGS += -erroff=E_BAD_PTR_CAST_ALIGN +LINTTAGS += -erroff=E_PTRDIFF_OVERFLOW + +# +# Default build targets. +# +.KEEP_STATE: + +def: $(DEF_DEPS) + +all: $(ALL_DEPS) + +clean: $(CLEAN_DEPS) + +clobber: $(CLOBBER_DEPS) + +lint: $(LINT_DEPS) + +modlintlib: $(MODLINTLIB_DEPS) + +clean.lint: $(CLEAN_LINT_DEPS) + +install: $(INSTALL_DEPS) + +# +# Include common targets. +# +include $(UTSBASE)/intel/Makefile.targ diff --git a/usr/src/uts/intel/os/minor_perm b/usr/src/uts/intel/os/minor_perm index 582bdecb60..70bee731e6 100644 --- a/usr/src/uts/intel/os/minor_perm +++ b/usr/src/uts/intel/os/minor_perm @@ -11,7 +11,6 @@ clone:pcelx 0666 root sys pcelx:* 0666 root sys clone:spwr 0666 root sys spwr:* 0666 root sys -clone:e1000g 0666 root sys icmp:icmp 0666 root sys icmp6:icmp6 0666 root sys ip:ip 0666 root sys @@ -122,3 +121,21 @@ scsi_vhci:* 0666 root sys kssl:* 0666 root sys lx_ptm:lx_ptmajor 0666 root sys lx_systrace:* 0644 root sys +clone:bge 0666 root sys +clone:rge 0666 root sys +clone:xge 0666 root sys +clone:nge 0666 root sys +clone:e1000g 0666 root sys +clone:chxge 0666 root sys +clone:pcn 0666 root sys +clone:rtls 0666 root sys +clone:ath 0666 root sys +bge:* 0666 root sys +rge:* 0666 root sys +xge:* 0666 root sys +nge:* 0666 root sys +e1000g:* 0666 root sys +chxge:* 0666 root sys +pcn:* 0666 root sys +rtls:* 0666 root sys +ath:* 0666 root sys diff --git a/usr/src/uts/sparc/os/minor_perm b/usr/src/uts/sparc/os/minor_perm index bd165cbef9..3a944da560 100644 --- a/usr/src/uts/sparc/os/minor_perm +++ b/usr/src/uts/sparc/os/minor_perm @@ -149,3 +149,20 @@ zfs:* 0600 root sys zfs:zfs 0666 root sys scsi_vhci:* 0666 root sys kssl:* 0666 root sys +clone:bge 0666 root sys +clone:rge 0666 root sys +clone:xge 0666 root sys +clone:nge 0666 root sys +clone:e1000g 0666 root sys +clone:chxge 0666 root sys +clone:ath 0666 root sys +clone:vsw 0666 root sys +clone:vnet 0666 root sys +bge:* 0666 root sys +rge:* 0666 root sys +xge:* 0666 root sys +nge:* 0666 root sys +e1000g:* 0666 root sys +chxge:* 0666 root sys +vsw:* 0666 root sys +vnet:* 0666 root sys |