From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Alessio Giovanni Baroni Newsgroups: gmane.emacs.help Subject: Re: C++ access label indentation. Date: Sat, 23 Mar 2013 20:03:12 +0100 Message-ID: References: <87k3p0pia0.fsf@kuiper.lan.informatimago.com> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/alternative; boundary=089e013d15d830d83a04d89c393a X-Trace: ger.gmane.org 1364067239 14520 80.91.229.3 (23 Mar 2013 19:33:59 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sat, 23 Mar 2013 19:33:59 +0000 (UTC) Cc: help-gnu-emacs@gnu.org To: "Pascal J. Bourguignon" Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Sat Mar 23 20:34:23 2013 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1UJUCs-0001ny-6o for geh-help-gnu-emacs@m.gmane.org; Sat, 23 Mar 2013 20:34:22 +0100 Original-Received: from localhost ([::1]:46257 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UJUCU-0008EX-Ii for geh-help-gnu-emacs@m.gmane.org; Sat, 23 Mar 2013 15:33:58 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:36576) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UJUCA-0008EB-7w for help-gnu-emacs@gnu.org; Sat, 23 Mar 2013 15:33:43 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UJUC4-0002qA-RU for help-gnu-emacs@gnu.org; Sat, 23 Mar 2013 15:33:38 -0400 Original-Received: from mail-wg0-f47.google.com ([74.125.82.47]:34169) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UJTik-0008H4-Mv for help-gnu-emacs@gnu.org; Sat, 23 Mar 2013 15:03:15 -0400 Original-Received: by mail-wg0-f47.google.com with SMTP id dt14so2207485wgb.26 for ; Sat, 23 Mar 2013 12:03:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:x-received:in-reply-to:references:date:message-id :subject:from:to:cc:content-type; bh=Fs7G0ZGTjCNvtboqeo7wyjHNHWVWreqsr97EWmmLq58=; b=lcP6ca7ndnXD+eEUv1fpqu1UyULKPrubKUICkMLgpRYSMR/rc0eLbBtiQvFzhnI+n4 sXdbKBSYHTIO1fO7iyQRB6O6Vq6juGsGWFwB/bVsVZUOjobE2Xihi27/8c/lXJzcnhuR KyMDBa4e8oqA03KaD+tOEytLHoF211G3fULi0HrX3OlH88sxcoT55e1km9LK1GNhR+NE qKupzbpdHj+NGMFS/5ycywmhleGmlgq6B3+SpCoOi3K+++tczeMLPHoIXBtqNTI0An4C sT3cm6s4Y+0rqPH4JN5+3Yd2oHRGVCv+6UU8ViD0fM76zhFg9b5ZT3+1goOwHO2agqs3 Z6Vw== X-Received: by 10.194.176.165 with SMTP id cj5mr9716116wjc.37.1364065392840; Sat, 23 Mar 2013 12:03:12 -0700 (PDT) Original-Received: by 10.216.102.5 with HTTP; Sat, 23 Mar 2013 12:03:12 -0700 (PDT) In-Reply-To: <87k3p0pia0.fsf@kuiper.lan.informatimago.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 74.125.82.47 X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.help:89696 Archived-At: --089e013d15d830d83a04d89c393a Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable If I set 'access-label to whatever, I indent only access labels. the 'topmost-intro remains indented as before (it's correct). If I indent 'inclass, the indentation is what I want in the classes, but in the structures I obtain double of indentation (I wrote (c-set-offset 'inclass '++)). I need only one thing: a way to express "set indentation of access-label/topmost-intro if I am within an inclass". Thanks to all! 2013/3/21 Pascal J. Bourguignon > Alessio Giovanni Baroni writes: > > > Hi to all, > > > > I'm writing you because I don't know how to indenting the C++ code in > > the following mode: > > > > class foo > > { > > private: > > int n; > > public: > > void bar (); > > }; > > > > I did many searches, and the two principal messages (http:// > > lists.gnu.org/archive/html/help-gnu-emacs/2009-09/msg00593.html and > > http://lists.gnu.org/archive/html/help-gnu-emacs/2012-10/ > > msg00332.html) doesn't resolve my problem. > > > > Any help? > > M-x set-variable RET c-echo-syntactic-information-p RET t RET > C-x C-f /tmp/test.c++ RET > and paste the code there, then: > C-x h C-M-\ > > now you get the "default" indentation. > > Go at the beginning of the line that's not indented as you want, and > type TAB. You should see in the minibuffer the syntactic information > echoed. > For example, for "private:", I get: > > syntax: ((inclass 11) (access-label 11)), indent: 0 > > It means that you can set the indentation by configuring the inclass > and/or the access-label offset in c-offsets-alist > > (inclass . +) > (access-label . 0) > > Then do the same for the member lines: > > syntax: ((inclass 11) (topmost-intro 11)), indent: 8 > > so combining inclass and topmost-intro: > > (topmost-intro . +) > > you should get the indentation you want. > > You can configure it in two ways: > > - with a c-style, in which case the custom variables must be set to > 'set-from-style to defer to the c-style, and you will configure > c-offsets-alist in your c-style, > > (custom-set-variables > =E2=80=A6 > '(c-basic-offset (quote set-from-style)) > =E2=80=A6) > > > (c-add-style "Your style" > '( > =E2=80=A6 > (c-offsets-alist > . ( > =E2=80=A6 > (inclass . +) > (access-label . 0) > (topmost-intro . +) > =E2=80=A6 > )) > =E2=80=A6 > ))) > > - or directly setting the custom variable c-offsets-alist. > > (customize-variables > =E2=80=A6 > '(c-offsets-alist > '( > (inclass . +) > (access-label . 0) > (topmost-intro . +) > =E2=80=A6)) > =E2=80=A6) > > > Of course, in either case, you will want to configure a lot more to get > indenting of the rest to your taste. Following the fold are my own > settings. > > > > (custom-set-variables > '(c-argdecl-indent 4 t) > '(c-auto-newline nil t) > '(c-backslash-column (quote set-from-style)) > '(c-backslash-max-column (quote set-from-style)) > '(c-basic-offset (quote set-from-style)) > '(c-block-comment-prefix (quote set-from-style)) > '(c-brace-imaginary-offset 0 t) > '(c-brace-offset 0 t) > '(c-cleanup-list (quote set-from-style)) > '(c-comment-continuation-stars "" t) > '(c-comment-only-line-offset (quote set-from-style)) > '(c-comment-prefix-regexp (quote set-from-style)) > '(c-continued-brace-offset 0 t) > '(c-continued-statement-offset 4 t) > '(c-default-style "pjb") > '(c-doc-comment-style (quote set-from-style)) > '(c-echo-syntactic-information-p t) > '(c-hanging-braces-alist (quote set-from-style)) > '(c-hanging-colons-alist (quote set-from-style)) > '(c-hanging-comment-ender-p nil t) > '(c-hanging-comment-starter-p nil t) > '(c-hanging-semi&comma-criteria (quote set-from-style)) > '(c-indent-comment-alist (quote set-from-style)) > '(c-indent-comments-syntactically-p (quote set-from-style)) > '(c-indent-level 4 t) > '(c-label-minimum-indentation 2) > '(c-label-offset -4 t) > '(c-macro-shrink-window-flag t) > '(c-offsets-alist nil) > '(c-special-indent-hook nil) > '(c-tab-always-indent t)) > > > (c-add-style "pjb" > '((c-backslash-column . 72) > > (c-backslash-max-column . 128) > > (c-basic-offset . 4) ; Amount of basic offset used by > `+' and > ; `-' symbols in `c-offsets-alist= '. > > (c-block-comment-prefix . "") > > (c-cleanup-list . (brace-else-brace > brace-elseif-brace > brace-catch-brace > list-close-comma > scope-operator)) > > (c-comment-only-line-offset . (0 . 0)) > > ;; (c-comment-prefix-regexp) > > (c-doc-comment-style . javadoc) > > (c-hanging-braces-alist > . ( > ;; (statement-cont) > ;; (brace-list-intro) > (inexpr-class-open . (after)) > (inexpr-class-close . (before)) > > (defun-open . (after)) ; Brace that opens a > function definition. > (defun-close . (before)) ; Brace that closes a > function definition. > (class-open . (before after)) ; Brace that opens a clas= s > definition. > (class-close . ()) ; Brace that closes a > class definition. > (inline-open . (before after)) ; Brace that opens an > in-class inline method. > (inline-close . (before)) ; Brace that closes an > in-class inline method. > (block-open . ()) ; Statement block open > brace. > (block-close . c-snug-do-while) ; Statement block close > brace. > (brace-list-open . (after)) ; Open brace of an enum o= r > static array list. > (brace-list-close . (before after)) ; Close brace of an enum > or static array list. > (brace-entry-open . (before after)) ; Subsequent lines in an > enum or static array > (statement-case-open . (after)) ; The first line in a cas= e > block starting with brace. > (substatement-open . (after)) ; The brace that opens a > substatement block. > (extern-lang-open . (after)) ; Brace that opens an > "extern" block. > (extern-lang-close . (before after)) ; Brace that closes an > "extern" block. > (namespace-open . (after)) > (namespace-close . ()) > (module-open . (after)) > (module-close . ()) > (composition-open . (after)) > (composition-close) . ())) > > (c-hanging-colons-alist . ((case-label . (after)) > (label . (after)) > (access-label . (after)) > (member-init-intro . ()) > (inher-intro . ()))) > > (c-hanging-semi&comma-criteria . ()) > > ;; (c-indent-comment-alist) > > (c-indent-comments-syntactically-p . nil) > > (c-label-minimum-indentation . 2) > > (c-offsets-alist > . ( > > (string . 0) > ;; Inside multi-line string. > > (c . 0) > ;; Inside a multi-line C style block comment. > > (defun-open . 0) > ;; Brace that opens a function definition. > > (defun-close . 0) > ;; Brace that closes a function definition. > > (defun-block-intro . +) > ;; The first line in a top-level defun. > > (class-open . 0) > ;; Brace that opens a class definition. > > (class-close . 0) > ;; Brace that closes a class definition. > > (inline-open . 0) > ;; Brace that opens an in-class inline method. > > (inline-close . 0) > ;; Brace that closes an in-class inline method. > > (func-decl-cont . +) > ;; The region between a function definition's > ;; argument list and the function opening brace > ;; (excluding K&R argument declarations). In C, you > ;; cannot put anything but whitespace and comments > ;; between them; in C++ and Java, throws declarations > ;; and other things can appear in this context. > > (knr-argdecl-intro . +) > ;; First line of a K&R C argument declaration. > > (knr-argdecl . +) > ;; Subsequent lines in a K&R C argument declaration. > > (topmost-intro . +) > ;; The first line in a topmost construct definition. > > (topmost-intro-cont . (c-lineup-string-cont > 0)) > ;; Topmost definition continuation lines. > > (member-init-intro . +) > ;; First line in a member initialization list. > > (member-init-cont . ++) > ;; Subsequent member initialization list lines. > > (inher-intro . +) > ;; First line of a multiple inheritance list. > > (inher-cont . ++) > ;; Subsequent multiple inheritance lines. > > (block-open . 0) > ;; Statement block open brace. > > (block-close . 0) > ;; Statement block close brace. > > (brace-list-open . 0) > ;; Open brace of an enum or static array list. > > (brace-list-close . 0) > ;; Close brace of an enum or static array list. > > (brace-list-intro . +) > ;; First line in an enum or static array list. > > (brace-list-entry . 0) > ;; Subsequent lines in an enum or static array list. > > (brace-entry-open . +) > ;; Subsequent lines in an enum or static array > ;; list that start with an open brace. > > (statement . (c-lineup-runin-statements > 0)) > ;; A C (or like) statement. > > (statement-cont . (c-lineup-string-cont > ++)) > ;; A continuation of a C (or like) statement. > > (statement-block-intro . +) > ;; The first line in a new statement block. > > (statement-case-intro . +) > ;; The first line in a case "block". > > (statement-case-open . +) > ;; The first line in a case block starting with brace. > > (substatement . +) > ;; The first line after an if/while/for/do/else. > > (substatement-open . 0) > ;; The brace that opens a substatement block. > > (substatement-label . /) > ;; Labelled line after an if/while/for/do/else. > > (case-label . *) > ;; A "case" or "default" label. > > (access-label . -) > ;; C++ private/protected/public access label. > > (label . /) > ;; Any ordinary label. > > (do-while-closure . 0) > ;; The "while" that ends a do/while construct. > > (else-clause . 0) > ;; The "else" of an if/else construct. > > (catch-clause . 0) > ;; The "catch" or "finally" of a try/catch construct. > > (comment-intro . 0) > ;; A line containing only a comment introduction. > > (arglist-intro . (c-lineup-arglist-intro-after-paren > +)) > ;; The first line in an argument list. > > (arglist-cont . (c-lineup-string-cont > c-lineup-arglist-intro-after-paren > c-lineup-argcont > +)) > ;; Subsequent argument list lines when no > ;; arguments follow on the same line as the > ;; arglist opening paren. > > (arglist-cont-nonempty . (c-lineup-string-cont > c-lineup-arglist-intro-after-paren > c-lineup-argcont > +)) > ;; Subsequent argument list lines when at > ;; least one argument follows on the same > ;; line as the arglist opening paren. > > (arglist-close . (c-lineup-argcont > c-lineup-arglist-intro-after-paren > -)) > ;; The solo close paren of an argument list. > > (stream-op . (c-lineup-streamop +)) > ;; Lines continuing a stream operator construct. > > (inclass . +) > ;; The construct is nested inside a class definition. > ;; Used together with e.g. `topmost-intro'. > > (cpp-macro . [0]) > ;; The start of a C preprocessor macro definition. > > (cpp-macro-cont . [8]) > ;; Inside a multi-line C preprocessor macro definition. > > (friend . 0) > ;; A C++ friend declaration. > > (objc-method-intro . 0) > ;; The first line of an Objective-C method definition. > > (objc-method-args-cont . (c-lineup-ObjC-method-args-2 > +)) > ;; Lines continuing an Objective-C method definition. > > (objc-method-call-cont . (c-lineup-ObjC-method-call-colons > c-lineup-ObjC-method-call > +)) > ;; Lines continuing an Objective-C method call. > > (extern-lang-open . 0) > ;; Brace that opens an "extern" block. > > (extern-lang-close . 0) > ;; Brace that closes an "extern" block. > > (inextern-lang . +) > ;; Analogous to the `inclass' syntactic symbol, > ;; but used inside "extern" blocks. > > (namespace-open . 0) > > (namespace-close . 0) > > (innamespace . +) > ;; Similar to the three `extern-lang' symbols, but for > ;; C++ "namespace" blocks. > > (module-open . 0) > > (module-close . 0) > > (inmodule . +) > ;; Similar to the three `extern-lang' symbols, but for > ;; CORBA IDL "module" blocks. > > (composition-open . 0) > > (composition-close . 0) > > (incomposition . +) > ;; Similar to the three `extern-lang' symbols, but for > ;; CORBA CIDL "composition" blocks. > > (template-args-cont . (c-lineup-template-args +)) > ;; C++ template argument list continuations. > > (inlambda . +) > ;; In the header or body of a lambda function. > > (lambda-intro-cont . ++) > ;; Continuation of the header of a lambda function. > > (inexpr-statement . +) > ;; The statement is inside an expression. > > (inexpr-class . +) > ;; The class is inside an expression. Used e.g. for > ;; Java anonymous classes. > )) > > ;; Only called when c-syntactic-indentation is non nil. > ;; (c-special-indent-hook . user-fun) > (c-label-minimum-indentation . 2) > > ;; other emacs variables: > ;; (c-comment-continuation-stars "" t) > ;; (c-echo-syntactic-information-p t) > ;; (c-hanging-comment-ender-p nil t) > ;; (c-hanging-comment-starter-p nil t) > ;; (c-macro-shrink-window-flag . t) > > > (tab-width . 4) ; the true one! > > (c-indent-level . 4) ; Indentation of C statements wi= th > ; respect to containing block. > > (c-brace-imaginary-offset . 0) ; Imagined indentation of a C > open brace > ; that actually follows a > statement. > > (c-brace-offset . 0) ; Extra indentation for braces, > compared > ; with other text in same context= . > > (c-argdecl-indent . 4) ; Indentation level of > declarations of > ; C function arguments. > > (c-label-offset . -) ; Offset of C label lines and ca= se > ; statements relative to usual > ; indentation. > > (c-continued-statement-offset . 4) ; Extra indent for lines not > starting > ; new statements. > > (c-continued-brace-offset . 0) ; Extra indent for substatements > that > ; start with open-braces. > > > (c-auto-newline . nil) ; Non-nil means automatically > newline > ; before and after braces, and > after > ; colons and semicolons, inserted > in C > ; code. If you do not want a > leading > ; newline before braces then use: > ; (define-key c-mode-map \"{\" > ; 'electric-c-semi)" > > (c-tab-always-indent . nil) ; Non-nil means TAB in C mode > should > ; always reindent the current lin= e, > ; regardless of where in the line > point > ; is when the TAB command is used= . > ))) > > -- > __Pascal Bourguignon__ http://www.informatimago.com/ > A bad day in () is better than a good day in {}. > > > --089e013d15d830d83a04d89c393a Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: base64 PGRpdiBkaXI9Imx0ciI+PGRpdj48ZGl2PjxkaXY+PGRpdj5JZiBJIHNldCAmIzM5O2FjY2Vzcy1s YWJlbCB0byB3aGF0ZXZlciwgSSBpbmRlbnQgb25seSBhY2Nlc3MgbGFiZWxzLiB0aGUgJiMzOTt0 b3Btb3N0LWludHJvIHJlbWFpbnMgaW5kZW50ZWQgYXMgYmVmb3JlPGJyPjwvZGl2PihpdCYjMzk7 cyBjb3JyZWN0KS4gSWYgSSBpbmRlbnQgJiMzOTtpbmNsYXNzLCB0aGUgaW5kZW50YXRpb24gaXMg d2hhdCBJIHdhbnQgaW4gdGhlIGNsYXNzZXMsIGJ1dCBpbiB0aGUgc3RydWN0dXJlcyBJIG9idGFp bjxicj4NCjwvZGl2PmRvdWJsZSBvZiBpbmRlbnRhdGlvbiAoSSB3cm90ZSAoYy1zZXQtb2Zmc2V0 ICYjMzk7aW5jbGFzcyAmIzM5OysrKSkuPGJyPjxicj48L2Rpdj5JIG5lZWQgb25seSBvbmUgdGhp bmc6IGEgd2F5IHRvIGV4cHJlc3MgJnF1b3Q7c2V0IGluZGVudGF0aW9uIG9mIGFjY2Vzcy1sYWJl bC90b3Btb3N0LWludHJvIGlmIEkgYW0gd2l0aGluIGFuIGluY2xhc3MmcXVvdDsuPGJyPjxicj48 L2Rpdj4NCjxkaXY+VGhhbmtzIHRvIGFsbCE8YnI+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0iZ21h aWxfZXh0cmEiPjxicj48YnI+PGRpdiBjbGFzcz0iZ21haWxfcXVvdGUiPjIwMTMvMy8yMSBQYXNj YWwgSi4gQm91cmd1aWdub24gPHNwYW4gZGlyPSJsdHIiPiZsdDs8YSBocmVmPSJtYWlsdG86cGpi QGluZm9ybWF0aW1hZ28uY29tIiB0YXJnZXQ9Il9ibGFuayI+cGpiQGluZm9ybWF0aW1hZ28uY29t PC9hPiZndDs8L3NwYW4+PGJyPg0KPGJsb2NrcXVvdGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHls ZT0ibWFyZ2luOjAgMCAwIC44ZXg7Ym9yZGVyLWxlZnQ6MXB4ICNjY2Mgc29saWQ7cGFkZGluZy1s ZWZ0OjFleCI+PGRpdiBjbGFzcz0iSE9FblpiIj48ZGl2IGNsYXNzPSJoNSI+QWxlc3NpbyBHaW92 YW5uaSBCYXJvbmkgJmx0OzxhIGhyZWY9Im1haWx0bzphbGVzc2lvZ2lvdmFubmkuYmFyb25pQGdt YWlsLmNvbSI+YWxlc3Npb2dpb3Zhbm5pLmJhcm9uaUBnbWFpbC5jb208L2E+Jmd0OyB3cml0ZXM6 PGJyPg0KDQo8YnI+DQomZ3Q7IEhpIHRvIGFsbCw8YnI+DQomZ3Q7PGJyPg0KJmd0OyBJJiMzOTtt IHdyaXRpbmcgeW91IGJlY2F1c2UgSSBkb24mIzM5O3Qga25vdyBob3cgdG8gaW5kZW50aW5nIHRo ZSBDKysgY29kZSBpbjxicj4NCiZndDsgdGhlIGZvbGxvd2luZyBtb2RlOjxicj4NCiZndDs8YnI+ DQomZ3Q7IGNsYXNzIGZvbzxicj4NCiZndDsgezxicj4NCiZndDsgwqDCoMKgIHByaXZhdGU6PGJy Pg0KJmd0OyDCoMKgwqDCoMKgwqDCoMKgIGludCBuOzxicj4NCiZndDsgwqDCoMKgIHB1YmxpYzo8 YnI+DQomZ3Q7IMKgwqDCoMKgwqDCoMKgIHZvaWQgYmFyICgpOzxicj4NCiZndDsgfTs8YnI+DQom Z3Q7PGJyPg0KJmd0OyBJIGRpZCBtYW55IHNlYXJjaGVzLCBhbmQgdGhlIHR3byBwcmluY2lwYWwg bWVzc2FnZXMgKGh0dHA6Ly88YnI+DQomZ3Q7IDxhIGhyZWY9Imh0dHA6Ly9saXN0cy5nbnUub3Jn L2FyY2hpdmUvaHRtbC9oZWxwLWdudS1lbWFjcy8yMDA5LTA5L21zZzAwNTkzLmh0bWwiIHRhcmdl dD0iX2JsYW5rIj5saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9oZWxwLWdudS1lbWFjcy8yMDA5 LTA5L21zZzAwNTkzLmh0bWw8L2E+IGFuZDxicj4NCiZndDsgPGEgaHJlZj0iaHR0cDovL2xpc3Rz LmdudS5vcmcvYXJjaGl2ZS9odG1sL2hlbHAtZ251LWVtYWNzLzIwMTItMTAvIiB0YXJnZXQ9Il9i bGFuayI+aHR0cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2hlbHAtZ251LWVtYWNzLzIw MTItMTAvPC9hPjxicj4NCiZndDsgbXNnMDAzMzIuaHRtbCkgZG9lc24mIzM5O3QgcmVzb2x2ZSBt eSBwcm9ibGVtLjxicj4NCiZndDs8YnI+DQomZ3Q7IEFueSBoZWxwPzxicj4NCjxicj4NCjwvZGl2 PjwvZGl2Pk0teCBzZXQtdmFyaWFibGUgUkVUIGMtZWNoby1zeW50YWN0aWMtaW5mb3JtYXRpb24t cCBSRVQgdCBSRVQ8YnI+DQpDLXggQy1mIC90bXAvdGVzdC5jKysgUkVUPGJyPg0KYW5kIHBhc3Rl IHRoZSBjb2RlIHRoZXJlLCB0aGVuOjxicj4NCkMteCBoIEMtTS1cPGJyPg0KPGJyPg0Kbm93IHlv dSBnZXQgdGhlICZxdW90O2RlZmF1bHQmcXVvdDsgaW5kZW50YXRpb24uPGJyPg0KPGJyPg0KR28g YXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGluZSB0aGF0JiMzOTtzIG5vdCBpbmRlbnRlZCBhcyB5 b3Ugd2FudCwgYW5kPGJyPg0KdHlwZSBUQUIuIMKgWW91IHNob3VsZCBzZWUgaW4gdGhlIG1pbmli dWZmZXIgdGhlIHN5bnRhY3RpYyBpbmZvcm1hdGlvbjxicj4NCmVjaG9lZC48YnI+DQpGb3IgZXhh bXBsZSwgZm9yICZxdW90O3ByaXZhdGU6JnF1b3Q7LCBJIGdldDo8YnI+DQo8YnI+DQrCoCDCoCBz eW50YXg6ICgoaW5jbGFzcyAxMSkgKGFjY2Vzcy1sYWJlbCAxMSkpLCBpbmRlbnQ6IDA8YnI+DQo8 YnI+DQpJdCBtZWFucyB0aGF0IHlvdSBjYW4gc2V0IHRoZSBpbmRlbnRhdGlvbiBieSBjb25maWd1 cmluZyB0aGUgaW5jbGFzczxicj4NCmFuZC9vciB0aGUgYWNjZXNzLWxhYmVsIG9mZnNldCBpbiBj LW9mZnNldHMtYWxpc3Q8YnI+DQo8YnI+DQrCoCDCoCDCoCDCoChpbmNsYXNzIMKgIMKgIMKgIMKg IMKgIMKgIMKgIC4gKyk8YnI+DQrCoCDCoCDCoCDCoChhY2Nlc3MtbGFiZWwgwqAgwqAgwqAgwqAg wqAuIDApPGJyPg0KPGJyPg0KVGhlbiBkbyB0aGUgc2FtZSBmb3IgdGhlIG1lbWJlciBsaW5lczo8 YnI+DQo8YnI+DQrCoCDCoCBzeW50YXg6ICgoaW5jbGFzcyAxMSkgKHRvcG1vc3QtaW50cm8gMTEp KSwgaW5kZW50OiA4PGJyPg0KPGJyPg0Kc28gY29tYmluaW5nIGluY2xhc3MgYW5kIHRvcG1vc3Qt aW50cm86PGJyPg0KPGJyPg0KwqAgwqAgwqAgwqAodG9wbW9zdC1pbnRybyDCoCDCoCDCoCDCoCAu ICspPGJyPg0KPGJyPg0KeW91IHNob3VsZCBnZXQgdGhlIGluZGVudGF0aW9uIHlvdSB3YW50Ljxi cj4NCjxicj4NCllvdSBjYW4gY29uZmlndXJlIGl0IGluIHR3byB3YXlzOjxicj4NCjxicj4NCi0g d2l0aCBhIGMtc3R5bGUsIGluIHdoaWNoIGNhc2UgdGhlIGN1c3RvbSB2YXJpYWJsZXMgbXVzdCBi ZSBzZXQgdG88YnI+DQrCoCAmIzM5O3NldC1mcm9tLXN0eWxlIHRvIGRlZmVyIHRvIHRoZSBjLXN0 eWxlLCBhbmQgeW91IHdpbGwgY29uZmlndXJlPGJyPg0KwqAgYy1vZmZzZXRzLWFsaXN0IGluIHlv dXIgYy1zdHlsZSw8YnI+DQo8YnI+DQrCoCDCoCAoY3VzdG9tLXNldC12YXJpYWJsZXM8YnI+DQrC oCDCoCDCoCDigKY8YnI+DQrCoCDCoCDCoCYjMzk7KGMtYmFzaWMtb2Zmc2V0IChxdW90ZSBzZXQt ZnJvbS1zdHlsZSkpPGJyPg0KwqAgwqAgwqAg4oCmKTxicj4NCjxicj4NCjxicj4NCsKgIMKgIChj LWFkZC1zdHlsZSAmcXVvdDtZb3VyIHN0eWxlJnF1b3Q7PGJyPg0KwqAgwqAgwqAmIzM5Oyg8YnI+ DQrCoCDCoCDCoCDCoOKApjxicj4NCsKgIMKgIMKgIMKgKGMtb2Zmc2V0cy1hbGlzdDxicj4NCsKg IMKgIMKgIMKgIC4gKDxicj4NCsKgIMKgIMKgIMKgIMKgIMKg4oCmPGJyPg0KwqAgwqAgwqAgwqAg wqAgwqAoaW5jbGFzcyDCoCDCoCDCoCDCoCDCoCDCoCDCoCAuICspPGJyPg0KwqAgwqAgwqAgwqAg wqAgwqAoYWNjZXNzLWxhYmVsIMKgIMKgIMKgIMKgIMKgLiAwKTxicj4NCsKgIMKgIMKgIMKgIMKg IMKgKHRvcG1vc3QtaW50cm8gwqAgwqAgwqAgwqAgLiArKTxicj4NCsKgIMKgIMKgIMKgIMKgIMKg 4oCmPGJyPg0KwqAgwqAgwqAgwqAgwqAgwqApKTxicj4NCsKgIMKgIMKgIMKg4oCmPGJyPg0KwqAg wqAgwqAgwqApKSk8YnI+DQo8YnI+DQotIG9yIGRpcmVjdGx5IHNldHRpbmcgdGhlIGN1c3RvbSB2 YXJpYWJsZSBjLW9mZnNldHMtYWxpc3QuPGJyPg0KPGJyPg0KwqAgwqAgKGN1c3RvbWl6ZS12YXJp YWJsZXM8YnI+DQrCoCDCoCDCoCDigKY8YnI+DQrCoCDCoCDCoCDCoCYjMzk7KGMtb2Zmc2V0cy1h bGlzdDxicj4NCsKgIMKgIMKgIMKgIMKgJiMzOTsoPGJyPg0KwqAgwqAgwqAgwqAgwqAgwqAoaW5j bGFzcyDCoCDCoCDCoCDCoCDCoCDCoCDCoCAuICspPGJyPg0KwqAgwqAgwqAgwqAgwqAgwqAoYWNj ZXNzLWxhYmVsIMKgIMKgIMKgIMKgIMKgLiAwKTxicj4NCsKgIMKgIMKgIMKgIMKgIMKgKHRvcG1v c3QtaW50cm8gwqAgwqAgwqAgwqAgLiArKTxicj4NCsKgIMKgIMKgIMKgIMKgIMKg4oCmKSk8YnI+ DQrCoCDCoCDCoOKApik8YnI+DQo8YnI+DQo8YnI+DQpPZiBjb3Vyc2UsIGluIGVpdGhlciBjYXNl LCB5b3Ugd2lsbCB3YW50IHRvIGNvbmZpZ3VyZSBhIGxvdCBtb3JlIHRvIGdldDxicj4NCmluZGVu dGluZyBvZiB0aGUgcmVzdCB0byB5b3VyIHRhc3RlLiDCoEZvbGxvd2luZyB0aGUgZm9sZCBhcmUg bXkgb3duPGJyPg0Kc2V0dGluZ3MuPGJyPg0KPGJyPg0KPGJyPg0KPGJyPg0KKGN1c3RvbS1zZXQt dmFyaWFibGVzPGJyPg0KwqAmIzM5OyhjLWFyZ2RlY2wtaW5kZW50IDQgdCk8YnI+DQrCoCYjMzk7 KGMtYXV0by1uZXdsaW5lIG5pbCB0KTxicj4NCsKgJiMzOTsoYy1iYWNrc2xhc2gtY29sdW1uIChx dW90ZSBzZXQtZnJvbS1zdHlsZSkpPGJyPg0KwqAmIzM5OyhjLWJhY2tzbGFzaC1tYXgtY29sdW1u IChxdW90ZSBzZXQtZnJvbS1zdHlsZSkpPGJyPg0KwqAmIzM5OyhjLWJhc2ljLW9mZnNldCAocXVv dGUgc2V0LWZyb20tc3R5bGUpKTxicj4NCsKgJiMzOTsoYy1ibG9jay1jb21tZW50LXByZWZpeCAo cXVvdGUgc2V0LWZyb20tc3R5bGUpKTxicj4NCsKgJiMzOTsoYy1icmFjZS1pbWFnaW5hcnktb2Zm c2V0IDAgdCk8YnI+DQrCoCYjMzk7KGMtYnJhY2Utb2Zmc2V0IDAgdCk8YnI+DQrCoCYjMzk7KGMt Y2xlYW51cC1saXN0IChxdW90ZSBzZXQtZnJvbS1zdHlsZSkpPGJyPg0KwqAmIzM5OyhjLWNvbW1l bnQtY29udGludWF0aW9uLXN0YXJzICZxdW90OyZxdW90OyB0KTxicj4NCsKgJiMzOTsoYy1jb21t ZW50LW9ubHktbGluZS1vZmZzZXQgKHF1b3RlIHNldC1mcm9tLXN0eWxlKSk8YnI+DQrCoCYjMzk7 KGMtY29tbWVudC1wcmVmaXgtcmVnZXhwIChxdW90ZSBzZXQtZnJvbS1zdHlsZSkpPGJyPg0KwqAm IzM5OyhjLWNvbnRpbnVlZC1icmFjZS1vZmZzZXQgMCB0KTxicj4NCsKgJiMzOTsoYy1jb250aW51 ZWQtc3RhdGVtZW50LW9mZnNldCA0IHQpPGJyPg0KwqAmIzM5OyhjLWRlZmF1bHQtc3R5bGUgJnF1 b3Q7cGpiJnF1b3Q7KTxicj4NCsKgJiMzOTsoYy1kb2MtY29tbWVudC1zdHlsZSAocXVvdGUgc2V0 LWZyb20tc3R5bGUpKTxicj4NCsKgJiMzOTsoYy1lY2hvLXN5bnRhY3RpYy1pbmZvcm1hdGlvbi1w IHQpPGJyPg0KwqAmIzM5OyhjLWhhbmdpbmctYnJhY2VzLWFsaXN0IChxdW90ZSBzZXQtZnJvbS1z dHlsZSkpPGJyPg0KwqAmIzM5OyhjLWhhbmdpbmctY29sb25zLWFsaXN0IChxdW90ZSBzZXQtZnJv bS1zdHlsZSkpPGJyPg0KwqAmIzM5OyhjLWhhbmdpbmctY29tbWVudC1lbmRlci1wIG5pbCB0KTxi cj4NCsKgJiMzOTsoYy1oYW5naW5nLWNvbW1lbnQtc3RhcnRlci1wIG5pbCB0KTxicj4NCsKgJiMz OTsoYy1oYW5naW5nLXNlbWkmYW1wO2NvbW1hLWNyaXRlcmlhIChxdW90ZSBzZXQtZnJvbS1zdHls ZSkpPGJyPg0KwqAmIzM5OyhjLWluZGVudC1jb21tZW50LWFsaXN0IChxdW90ZSBzZXQtZnJvbS1z dHlsZSkpPGJyPg0KwqAmIzM5OyhjLWluZGVudC1jb21tZW50cy1zeW50YWN0aWNhbGx5LXAgKHF1 b3RlIHNldC1mcm9tLXN0eWxlKSk8YnI+DQrCoCYjMzk7KGMtaW5kZW50LWxldmVsIDQgdCk8YnI+ DQrCoCYjMzk7KGMtbGFiZWwtbWluaW11bS1pbmRlbnRhdGlvbiAyKTxicj4NCsKgJiMzOTsoYy1s YWJlbC1vZmZzZXQgLTQgdCk8YnI+DQrCoCYjMzk7KGMtbWFjcm8tc2hyaW5rLXdpbmRvdy1mbGFn IHQpPGJyPg0KwqAmIzM5OyhjLW9mZnNldHMtYWxpc3QgbmlsKTxicj4NCsKgJiMzOTsoYy1zcGVj aWFsLWluZGVudC1ob29rIG5pbCk8YnI+DQrCoCYjMzk7KGMtdGFiLWFsd2F5cy1pbmRlbnQgdCkp PGJyPg0KPGJyPg0KPGJyPg0KKGMtYWRkLXN0eWxlICZxdW90O3BqYiZxdW90Ozxicj4NCsKgJiMz OTsoKGMtYmFja3NsYXNoLWNvbHVtbiDCoCDCoCDCoCDCoCDCoCDCoCAuIMKgNzIpPGJyPg0KPGJy Pg0KwqAgwqAoYy1iYWNrc2xhc2gtbWF4LWNvbHVtbiDCoCDCoCDCoCDCoCAuIDEyOCk8YnI+DQo8 YnI+DQrCoCDCoChjLWJhc2ljLW9mZnNldCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAuIDQpIMKg OyBBbW91bnQgb2YgYmFzaWMgb2Zmc2V0IHVzZWQgYnkgYCsmIzM5OyBhbmQ8YnI+DQrCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCA7IGAt JiMzOTsgc3ltYm9scyBpbiBgYy1vZmZzZXRzLWFsaXN0JiMzOTsuPGJyPg0KPGJyPg0KwqAgwqAo Yy1ibG9jay1jb21tZW50LXByZWZpeCDCoCDCoCDCoCDCoCAuIMKgJnF1b3Q7JnF1b3Q7KTxicj4N Cjxicj4NCsKgIMKgKGMtY2xlYW51cC1saXN0IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIC4gKGJy YWNlLWVsc2UtYnJhY2U8YnI+DQrCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCBicmFjZS1lbHNlaWYtYnJhY2U8YnI+DQrCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBicmFjZS1jYXRjaC1i cmFjZTxicj4NCsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIGxpc3QtY2xvc2UtY29tbWE8YnI+DQrCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzY29wZS1vcGVyYXRvcikpPGJyPg0KPGJy Pg0KwqAgwqAoYy1jb21tZW50LW9ubHktbGluZS1vZmZzZXQgwqAgwqAgLiAoMCAuIDApKTxicj4N Cjxicj4NCsKgIMKgOzsgKGMtY29tbWVudC1wcmVmaXgtcmVnZXhwKTxicj4NCjxicj4NCsKgIMKg KGMtZG9jLWNvbW1lbnQtc3R5bGUgwqAgwqAgwqAgwqAgwqAgwqAuIGphdmFkb2MpPGJyPg0KPGJy Pg0KwqAgwqAoYy1oYW5naW5nLWJyYWNlcy1hbGlzdDxicj4NCsKgIMKgIC4gKDxicj4NCsKgIMKg IMKgIMKgOzsgKHN0YXRlbWVudC1jb250KTxicj4NCsKgIMKgIMKgIMKgOzsgKGJyYWNlLWxpc3Qt aW50cm8pPGJyPg0KwqAgwqAgwqAgwqAoaW5leHByLWNsYXNzLW9wZW4gwqAgwqAuIChhZnRlcikp PGJyPg0KwqAgwqAgwqAgwqAoaW5leHByLWNsYXNzLWNsb3NlIMKgIC4gKGJlZm9yZSkpPGJyPg0K PGJyPg0KwqAgwqAgwqAgwqAoZGVmdW4tb3BlbiDCoCDCoCDCoCDCoCDCoCAuIChhZnRlcikpIMKg IMKgIMKgIMKgIDsgQnJhY2UgdGhhdCBvcGVucyBhIGZ1bmN0aW9uIGRlZmluaXRpb24uPGJyPg0K wqAgwqAgwqAgwqAoZGVmdW4tY2xvc2UgwqAgwqAgwqAgwqAgwqAuIChiZWZvcmUpKSDCoCDCoCDC oCDCoDsgQnJhY2UgdGhhdCBjbG9zZXMgYSBmdW5jdGlvbiBkZWZpbml0aW9uLjxicj4NCsKgIMKg IMKgIMKgKGNsYXNzLW9wZW4gwqAgwqAgwqAgwqAgwqAgLiAoYmVmb3JlIGFmdGVyKSkgwqA7IEJy YWNlIHRoYXQgb3BlbnMgYSBjbGFzcyBkZWZpbml0aW9uLjxicj4NCsKgIMKgIMKgIMKgKGNsYXNz LWNsb3NlIMKgIMKgIMKgIMKgIMKgLiAoKSkgwqAgwqAgwqAgwqAgwqAgwqAgwqA7IEJyYWNlIHRo YXQgY2xvc2VzIGEgY2xhc3MgZGVmaW5pdGlvbi48YnI+DQrCoCDCoCDCoCDCoChpbmxpbmUtb3Bl biDCoCDCoCDCoCDCoCDCoC4gKGJlZm9yZSBhZnRlcikpIMKgOyBCcmFjZSB0aGF0IG9wZW5zIGFu IGluLWNsYXNzIGlubGluZSBtZXRob2QuPGJyPg0KwqAgwqAgwqAgwqAoaW5saW5lLWNsb3NlIMKg IMKgIMKgIMKgIC4gKGJlZm9yZSkpIMKgIMKgIMKgIMKgOyBCcmFjZSB0aGF0IGNsb3NlcyBhbiBp bi1jbGFzcyBpbmxpbmUgbWV0aG9kLjxicj4NCsKgIMKgIMKgIMKgKGJsb2NrLW9wZW4gwqAgwqAg wqAgwqAgwqAgLiAoKSkgwqAgwqAgwqAgwqAgwqAgwqAgwqA7IFN0YXRlbWVudCBibG9jayBvcGVu IGJyYWNlLjxicj4NCsKgIMKgIMKgIMKgKGJsb2NrLWNsb3NlIMKgIMKgIMKgIMKgIMKgLiBjLXNu dWctZG8td2hpbGUpIDsgU3RhdGVtZW50IGJsb2NrIGNsb3NlIGJyYWNlLjxicj4NCsKgIMKgIMKg IMKgKGJyYWNlLWxpc3Qtb3BlbiDCoCDCoCDCoC4gKGFmdGVyKSkgwqAgwqAgwqAgwqAgOyBPcGVu IGJyYWNlIG9mIGFuIGVudW0gb3Igc3RhdGljIGFycmF5IGxpc3QuPGJyPg0KwqAgwqAgwqAgwqAo YnJhY2UtbGlzdC1jbG9zZSDCoCDCoCAuIChiZWZvcmUgYWZ0ZXIpKSDCoDsgQ2xvc2UgYnJhY2Ug b2YgYW4gZW51bSBvciBzdGF0aWMgYXJyYXkgbGlzdC48YnI+DQrCoCDCoCDCoCDCoChicmFjZS1l bnRyeS1vcGVuIMKgIMKgIC4gKGJlZm9yZSBhZnRlcikpIMKgOyBTdWJzZXF1ZW50IGxpbmVzIGlu IGFuIGVudW0gb3Igc3RhdGljIGFycmF5PGJyPg0KwqAgwqAgwqAgwqAoc3RhdGVtZW50LWNhc2Ut b3BlbiDCoC4gKGFmdGVyKSkgwqAgwqAgwqAgwqAgOyBUaGUgZmlyc3QgbGluZSBpbiBhIGNhc2Ug YmxvY2sgc3RhcnRpbmcgd2l0aCBicmFjZS48YnI+DQrCoCDCoCDCoCDCoChzdWJzdGF0ZW1lbnQt b3BlbiDCoCDCoC4gKGFmdGVyKSkgwqAgwqAgwqAgwqAgOyBUaGUgYnJhY2UgdGhhdCBvcGVucyBh IHN1YnN0YXRlbWVudCBibG9jay48YnI+DQrCoCDCoCDCoCDCoChleHRlcm4tbGFuZy1vcGVuIMKg IMKgIC4gKGFmdGVyKSkgwqAgwqAgwqAgwqAgOyBCcmFjZSB0aGF0IG9wZW5zIGFuICZxdW90O2V4 dGVybiZxdW90OyBibG9jay48YnI+DQrCoCDCoCDCoCDCoChleHRlcm4tbGFuZy1jbG9zZSDCoCDC oC4gKGJlZm9yZSBhZnRlcikpIMKgOyBCcmFjZSB0aGF0IGNsb3NlcyBhbiAmcXVvdDtleHRlcm4m cXVvdDsgYmxvY2suPGJyPg0KwqAgwqAgwqAgwqAobmFtZXNwYWNlLW9wZW4gwqAgwqAgwqAgLiAo YWZ0ZXIpKTxicj4NCsKgIMKgIMKgIMKgKG5hbWVzcGFjZS1jbG9zZSDCoCDCoCDCoC4gKCkpPGJy Pg0KwqAgwqAgwqAgwqAobW9kdWxlLW9wZW4gwqAgwqAgwqAgwqAgwqAuIChhZnRlcikpPGJyPg0K wqAgwqAgwqAgwqAobW9kdWxlLWNsb3NlIMKgIMKgIMKgIMKgIC4gKCkpPGJyPg0KwqAgwqAgwqAg wqAoY29tcG9zaXRpb24tb3BlbiDCoCDCoCAuIChhZnRlcikpPGJyPg0KwqAgwqAgwqAgwqAoY29t cG9zaXRpb24tY2xvc2UpIMKgIC4gKCkpKTxicj4NCjxicj4NCsKgIMKgKGMtaGFuZ2luZy1jb2xv bnMtYWxpc3QgwqAgwqAgwqAgwqAgLiAoKGNhc2UtbGFiZWwgwqAgwqAgwqAgwqAgwqAgLiAoYWZ0 ZXIpKTxicj4NCsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIChsYWJlbCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoC4gKGFmdGVyKSk8YnI+DQrC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAo YWNjZXNzLWxhYmVsIMKgIMKgIMKgIMKgIC4gKGFmdGVyKSk8YnI+DQrCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAobWVtYmVyLWluaXQtaW50 cm8gwqAgwqAuICgpKTxicj4NCsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIChpbmhlci1pbnRybyDCoCDCoCDCoCDCoCDCoC4gKCkpKSk8YnI+ DQo8YnI+DQrCoCDCoChjLWhhbmdpbmctc2VtaSZhbXA7Y29tbWEtY3JpdGVyaWEgwqAuICgpKTxi cj4NCjxicj4NCsKgIMKgOzsgKGMtaW5kZW50LWNvbW1lbnQtYWxpc3QpPGJyPg0KPGJyPg0KwqAg wqAoYy1pbmRlbnQtY29tbWVudHMtc3ludGFjdGljYWxseS1wIC4gbmlsKTxicj4NCjxicj4NCsKg IMKgKGMtbGFiZWwtbWluaW11bS1pbmRlbnRhdGlvbiDCoCDCoCDCoCAuIDIpPGJyPg0KPGJyPg0K wqAgwqAoYy1vZmZzZXRzLWFsaXN0PGJyPg0KwqAgwqAgLiAoPGJyPg0KPGJyPg0KwqAgwqAgwqAg wqAoc3RyaW5nIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgLiAwKTxicj4NCsKgIMKgIMKgIMKgOzsg SW5zaWRlIG11bHRpLWxpbmUgc3RyaW5nLjxicj4NCjxicj4NCsKgIMKgIMKgIMKgKGMgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgLiAwKTxicj4NCsKgIMKgIMKgIMKgOzsgSW5zaWRlIGEg bXVsdGktbGluZSBDIHN0eWxlIGJsb2NrIGNvbW1lbnQuPGJyPg0KPGJyPg0KwqAgwqAgwqAgwqAo ZGVmdW4tb3BlbiDCoCDCoCDCoCDCoCDCoCDCoC4gMCk8YnI+DQrCoCDCoCDCoCDCoDs7IEJyYWNl IHRoYXQgb3BlbnMgYSBmdW5jdGlvbiBkZWZpbml0aW9uLjxicj4NCjxicj4NCsKgIMKgIMKgIMKg KGRlZnVuLWNsb3NlIMKgIMKgIMKgIMKgIMKgIC4gMCk8YnI+DQrCoCDCoCDCoCDCoDs7IEJyYWNl IHRoYXQgY2xvc2VzIGEgZnVuY3Rpb24gZGVmaW5pdGlvbi48YnI+DQo8YnI+DQrCoCDCoCDCoCDC oChkZWZ1bi1ibG9jay1pbnRybyDCoCDCoCAuICspPGJyPg0KwqAgwqAgwqAgwqA7OyBUaGUgZmly c3QgbGluZSBpbiBhIHRvcC1sZXZlbCBkZWZ1bi48YnI+DQo8YnI+DQrCoCDCoCDCoCDCoChjbGFz cy1vcGVuIMKgIMKgIMKgIMKgIMKgIMKgLiAwKTxicj4NCsKgIMKgIMKgIMKgOzsgQnJhY2UgdGhh dCBvcGVucyBhIGNsYXNzIGRlZmluaXRpb24uPGJyPg0KPGJyPg0KwqAgwqAgwqAgwqAoY2xhc3Mt Y2xvc2UgwqAgwqAgwqAgwqAgwqAgLiAwKTxicj4NCsKgIMKgIMKgIMKgOzsgQnJhY2UgdGhhdCBj bG9zZXMgYSBjbGFzcyBkZWZpbml0aW9uLjxicj4NCjxicj4NCsKgIMKgIMKgIMKgKGlubGluZS1v cGVuIMKgIMKgIMKgIMKgIMKgIC4gMCk8YnI+DQrCoCDCoCDCoCDCoDs7IEJyYWNlIHRoYXQgb3Bl bnMgYW4gaW4tY2xhc3MgaW5saW5lIG1ldGhvZC48YnI+DQo8YnI+DQrCoCDCoCDCoCDCoChpbmxp bmUtY2xvc2UgwqAgwqAgwqAgwqAgwqAuIDApPGJyPg0KwqAgwqAgwqAgwqA7OyBCcmFjZSB0aGF0 IGNsb3NlcyBhbiBpbi1jbGFzcyBpbmxpbmUgbWV0aG9kLjxicj4NCjxicj4NCsKgIMKgIMKgIMKg KGZ1bmMtZGVjbC1jb250IMKgIMKgIMKgIMKgLiArKTxicj4NCsKgIMKgIMKgIMKgOzsgVGhlIHJl Z2lvbiBiZXR3ZWVuIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiYjMzk7czxicj4NCsKgIMKgIMKgIMKg OzsgYXJndW1lbnQgbGlzdCBhbmQgdGhlIGZ1bmN0aW9uIG9wZW5pbmcgYnJhY2U8YnI+DQrCoCDC oCDCoCDCoDs7IChleGNsdWRpbmcgSyZhbXA7UiBhcmd1bWVudCBkZWNsYXJhdGlvbnMpLiDCoElu IEMsIHlvdTxicj4NCsKgIMKgIMKgIMKgOzsgY2Fubm90IHB1dCBhbnl0aGluZyBidXQgd2hpdGVz cGFjZSBhbmQgY29tbWVudHM8YnI+DQrCoCDCoCDCoCDCoDs7IGJldHdlZW4gdGhlbTsgaW4gQysr IGFuZCBKYXZhLCB0aHJvd3MgZGVjbGFyYXRpb25zPGJyPg0KwqAgwqAgwqAgwqA7OyBhbmQgb3Ro ZXIgdGhpbmdzIGNhbiBhcHBlYXIgaW4gdGhpcyBjb250ZXh0Ljxicj4NCjxicj4NCsKgIMKgIMKg IMKgKGtuci1hcmdkZWNsLWludHJvIMKgIMKgIC4gKyk8YnI+DQrCoCDCoCDCoCDCoDs7IEZpcnN0 IGxpbmUgb2YgYSBLJmFtcDtSIEMgYXJndW1lbnQgZGVjbGFyYXRpb24uPGJyPg0KPGJyPg0KwqAg wqAgwqAgwqAoa25yLWFyZ2RlY2wgwqAgwqAgwqAgwqAgwqAgLiArKTxicj4NCsKgIMKgIMKgIMKg OzsgU3Vic2VxdWVudCBsaW5lcyBpbiBhIEsmYW1wO1IgQyBhcmd1bWVudCBkZWNsYXJhdGlvbi48 YnI+DQo8YnI+DQrCoCDCoCDCoCDCoCh0b3Btb3N0LWludHJvIMKgIMKgIMKgIMKgIC4gKyk8YnI+ DQrCoCDCoCDCoCDCoDs7IFRoZSBmaXJzdCBsaW5lIGluIGEgdG9wbW9zdCBjb25zdHJ1Y3QgZGVm aW5pdGlvbi48YnI+DQo8YnI+DQrCoCDCoCDCoCDCoCh0b3Btb3N0LWludHJvLWNvbnQgwqAgwqAu IChjLWxpbmV1cC1zdHJpbmctY29udDxicj4NCsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgMCkpPGJyPg0KwqAgwqAgwqAgwqA7OyBUb3Btb3N0IGRlZmlu aXRpb24gY29udGludWF0aW9uIGxpbmVzLjxicj4NCjxicj4NCsKgIMKgIMKgIMKgKG1lbWJlci1p bml0LWludHJvIMKgIMKgIC4gKyk8YnI+DQrCoCDCoCDCoCDCoDs7IEZpcnN0IGxpbmUgaW4gYSBt ZW1iZXIgaW5pdGlhbGl6YXRpb24gbGlzdC48YnI+DQo8YnI+DQrCoCDCoCDCoCDCoChtZW1iZXIt aW5pdC1jb250IMKgIMKgIMKgLiArKyk8YnI+DQrCoCDCoCDCoCDCoDs7IFN1YnNlcXVlbnQgbWVt YmVyIGluaXRpYWxpemF0aW9uIGxpc3QgbGluZXMuPGJyPg0KPGJyPg0KwqAgwqAgwqAgwqAoaW5o ZXItaW50cm8gwqAgwqAgwqAgwqAgwqAgLiArKTxicj4NCsKgIMKgIMKgIMKgOzsgRmlyc3QgbGlu ZSBvZiBhIG11bHRpcGxlIGluaGVyaXRhbmNlIGxpc3QuPGJyPg0KPGJyPg0KwqAgwqAgwqAgwqAo aW5oZXItY29udCDCoCDCoCDCoCDCoCDCoCDCoC4gKyspPGJyPg0KwqAgwqAgwqAgwqA7OyBTdWJz ZXF1ZW50IG11bHRpcGxlIGluaGVyaXRhbmNlIGxpbmVzLjxicj4NCjxicj4NCsKgIMKgIMKgIMKg KGJsb2NrLW9wZW4gwqAgwqAgwqAgwqAgwqAgwqAuIDApPGJyPg0KwqAgwqAgwqAgwqA7OyBTdGF0 ZW1lbnQgYmxvY2sgb3BlbiBicmFjZS48YnI+DQo8YnI+DQrCoCDCoCDCoCDCoChibG9jay1jbG9z ZSDCoCDCoCDCoCDCoCDCoCAuIDApPGJyPg0KwqAgwqAgwqAgwqA7OyBTdGF0ZW1lbnQgYmxvY2sg Y2xvc2UgYnJhY2UuPGJyPg0KPGJyPg0KwqAgwqAgwqAgwqAoYnJhY2UtbGlzdC1vcGVuIMKgIMKg IMKgIC4gMCk8YnI+DQrCoCDCoCDCoCDCoDs7IE9wZW4gYnJhY2Ugb2YgYW4gZW51bSBvciBzdGF0 aWMgYXJyYXkgbGlzdC48YnI+DQo8YnI+DQrCoCDCoCDCoCDCoChicmFjZS1saXN0LWNsb3NlIMKg IMKgIMKgLiAwKTxicj4NCsKgIMKgIMKgIMKgOzsgQ2xvc2UgYnJhY2Ugb2YgYW4gZW51bSBvciBz dGF0aWMgYXJyYXkgbGlzdC48YnI+DQo8YnI+DQrCoCDCoCDCoCDCoChicmFjZS1saXN0LWludHJv IMKgIMKgIMKgLiArKTxicj4NCsKgIMKgIMKgIMKgOzsgRmlyc3QgbGluZSBpbiBhbiBlbnVtIG9y IHN0YXRpYyBhcnJheSBsaXN0Ljxicj4NCjxicj4NCsKgIMKgIMKgIMKgKGJyYWNlLWxpc3QtZW50 cnkgwqAgwqAgwqAuIDApPGJyPg0KwqAgwqAgwqAgwqA7OyBTdWJzZXF1ZW50IGxpbmVzIGluIGFu IGVudW0gb3Igc3RhdGljIGFycmF5IGxpc3QuPGJyPg0KPGJyPg0KwqAgwqAgwqAgwqAoYnJhY2Ut ZW50cnktb3BlbiDCoCDCoCDCoC4gKyk8YnI+DQrCoCDCoCDCoCDCoDs7IFN1YnNlcXVlbnQgbGlu ZXMgaW4gYW4gZW51bSBvciBzdGF0aWMgYXJyYXk8YnI+DQrCoCDCoCDCoCDCoDs7IGxpc3QgdGhh dCBzdGFydCB3aXRoIGFuIG9wZW4gYnJhY2UuPGJyPg0KPGJyPg0KwqAgwqAgwqAgwqAoc3RhdGVt ZW50IMKgIMKgIMKgIMKgIMKgIMKgIC4gKGMtbGluZXVwLXJ1bmluLXN0YXRlbWVudHM8YnI+DQrC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDApKTxicj4N CsKgIMKgIMKgIMKgOzsgQSBDIChvciBsaWtlKSBzdGF0ZW1lbnQuPGJyPg0KPGJyPg0KwqAgwqAg wqAgwqAoc3RhdGVtZW50LWNvbnQgwqAgwqAgwqAgwqAuIChjLWxpbmV1cC1zdHJpbmctY29udDxi cj4NCsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgKysp KTxicj4NCsKgIMKgIMKgIMKgOzsgQSBjb250aW51YXRpb24gb2YgYSBDIChvciBsaWtlKSBzdGF0 ZW1lbnQuPGJyPg0KPGJyPg0KwqAgwqAgwqAgwqAoc3RhdGVtZW50LWJsb2NrLWludHJvIC4gKyk8 YnI+DQrCoCDCoCDCoCDCoDs7IFRoZSBmaXJzdCBsaW5lIGluIGEgbmV3IHN0YXRlbWVudCBibG9j ay48YnI+DQo8YnI+DQrCoCDCoCDCoCDCoChzdGF0ZW1lbnQtY2FzZS1pbnRybyDCoC4gKyk8YnI+ DQrCoCDCoCDCoCDCoDs7IFRoZSBmaXJzdCBsaW5lIGluIGEgY2FzZSAmcXVvdDtibG9jayZxdW90 Oy48YnI+DQo8YnI+DQrCoCDCoCDCoCDCoChzdGF0ZW1lbnQtY2FzZS1vcGVuIMKgIC4gKyk8YnI+ DQrCoCDCoCDCoCDCoDs7IFRoZSBmaXJzdCBsaW5lIGluIGEgY2FzZSBibG9jayBzdGFydGluZyB3 aXRoIGJyYWNlLjxicj4NCjxicj4NCsKgIMKgIMKgIMKgKHN1YnN0YXRlbWVudCDCoCDCoCDCoCDC oCDCoC4gKyk8YnI+DQrCoCDCoCDCoCDCoDs7IFRoZSBmaXJzdCBsaW5lIGFmdGVyIGFuIGlmL3do aWxlL2Zvci9kby9lbHNlLjxicj4NCjxicj4NCsKgIMKgIMKgIMKgKHN1YnN0YXRlbWVudC1vcGVu IMKgIMKgIC4gMCk8YnI+DQrCoCDCoCDCoCDCoDs7IFRoZSBicmFjZSB0aGF0IG9wZW5zIGEgc3Vi c3RhdGVtZW50IGJsb2NrLjxicj4NCjxicj4NCsKgIMKgIMKgIMKgKHN1YnN0YXRlbWVudC1sYWJl bCDCoCDCoC4gLyk8YnI+DQrCoCDCoCDCoCDCoDs7IExhYmVsbGVkIGxpbmUgYWZ0ZXIgYW4gaWYv d2hpbGUvZm9yL2RvL2Vsc2UuPGJyPg0KPGJyPg0KwqAgwqAgwqAgwqAoY2FzZS1sYWJlbCDCoCDC oCDCoCDCoCDCoCDCoC4gKik8YnI+DQrCoCDCoCDCoCDCoDs7IEEgJnF1b3Q7Y2FzZSZxdW90OyBv ciAmcXVvdDtkZWZhdWx0JnF1b3Q7IGxhYmVsLjxicj4NCjxicj4NCsKgIMKgIMKgIMKgKGFjY2Vz cy1sYWJlbCDCoCDCoCDCoCDCoCDCoC4gLSk8YnI+DQrCoCDCoCDCoCDCoDs7IEMrKyBwcml2YXRl L3Byb3RlY3RlZC9wdWJsaWMgYWNjZXNzIGxhYmVsLjxicj4NCjxicj4NCsKgIMKgIMKgIMKgKGxh YmVsIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIC4gLyk8YnI+DQrCoCDCoCDCoCDCoDs7IEFueSBv cmRpbmFyeSBsYWJlbC48YnI+DQo8YnI+DQrCoCDCoCDCoCDCoChkby13aGlsZS1jbG9zdXJlIMKg IMKgIMKgLiAwKTxicj4NCsKgIMKgIMKgIMKgOzsgVGhlICZxdW90O3doaWxlJnF1b3Q7IHRoYXQg ZW5kcyBhIGRvL3doaWxlIGNvbnN0cnVjdC48YnI+DQo8YnI+DQrCoCDCoCDCoCDCoChlbHNlLWNs YXVzZSDCoCDCoCDCoCDCoCDCoCAuIDApPGJyPg0KwqAgwqAgwqAgwqA7OyBUaGUgJnF1b3Q7ZWxz ZSZxdW90OyBvZiBhbiBpZi9lbHNlIGNvbnN0cnVjdC48YnI+DQo8YnI+DQrCoCDCoCDCoCDCoChj YXRjaC1jbGF1c2UgwqAgwqAgwqAgwqAgwqAuIDApPGJyPg0KwqAgwqAgwqAgwqA7OyBUaGUgJnF1 b3Q7Y2F0Y2gmcXVvdDsgb3IgJnF1b3Q7ZmluYWxseSZxdW90OyBvZiBhIHRyeS9jYXRjaCBjb25z dHJ1Y3QuPGJyPg0KPGJyPg0KwqAgwqAgwqAgwqAoY29tbWVudC1pbnRybyDCoCDCoCDCoCDCoCAu IDApPGJyPg0KwqAgwqAgwqAgwqA7OyBBIGxpbmUgY29udGFpbmluZyBvbmx5IGEgY29tbWVudCBp bnRyb2R1Y3Rpb24uPGJyPg0KPGJyPg0KwqAgwqAgwqAgwqAoYXJnbGlzdC1pbnRybyDCoCDCoCDC oCDCoCAuIChjLWxpbmV1cC1hcmdsaXN0LWludHJvLWFmdGVyLXBhcmVuPGJyPg0KwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqArKSk8YnI+DQrCoCDCoCDC oCDCoDs7IFRoZSBmaXJzdCBsaW5lIGluIGFuIGFyZ3VtZW50IGxpc3QuPGJyPg0KPGJyPg0KwqAg wqAgwqAgwqAoYXJnbGlzdC1jb250IMKgIMKgIMKgIMKgIMKgLiAoYy1saW5ldXAtc3RyaW5nLWNv bnQ8YnI+DQrCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oGMtbGluZXVwLWFyZ2xpc3QtaW50cm8tYWZ0ZXItcGFyZW48YnI+DQrCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGMtbGluZXVwLWFyZ2NvbnQ8YnI+DQrC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCspKTxicj4N CsKgIMKgIMKgIMKgOzsgU3Vic2VxdWVudCBhcmd1bWVudCBsaXN0IGxpbmVzIHdoZW4gbm88YnI+ DQrCoCDCoCDCoCDCoDs7IGFyZ3VtZW50cyBmb2xsb3cgb24gdGhlIHNhbWUgbGluZSBhcyB0aGU8 YnI+DQrCoCDCoCDCoCDCoDs7IGFyZ2xpc3Qgb3BlbmluZyBwYXJlbi48YnI+DQo8YnI+DQrCoCDC oCDCoCDCoChhcmdsaXN0LWNvbnQtbm9uZW1wdHkgLiAoYy1saW5ldXAtc3RyaW5nLWNvbnQ8YnI+ DQrCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGMtbGlu ZXVwLWFyZ2xpc3QtaW50cm8tYWZ0ZXItcGFyZW48YnI+DQrCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGMtbGluZXVwLWFyZ2NvbnQ8YnI+DQrCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCspKTxicj4NCsKgIMKg IMKgIMKgOzsgU3Vic2VxdWVudCBhcmd1bWVudCBsaXN0IGxpbmVzIHdoZW4gYXQ8YnI+DQrCoCDC oCDCoCDCoDs7IGxlYXN0IG9uZSBhcmd1bWVudCBmb2xsb3dzIG9uIHRoZSBzYW1lPGJyPg0KwqAg wqAgwqAgwqA7OyBsaW5lIGFzIHRoZSBhcmdsaXN0IG9wZW5pbmcgcGFyZW4uPGJyPg0KPGJyPg0K wqAgwqAgwqAgwqAoYXJnbGlzdC1jbG9zZSDCoCDCoCDCoCDCoCAuIChjLWxpbmV1cC1hcmdjb250 PGJyPg0KwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBj LWxpbmV1cC1hcmdsaXN0LWludHJvLWFmdGVyLXBhcmVuPGJyPg0KwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAtKSk8YnI+DQrCoCDCoCDCoCDCoDs7IFRo ZSBzb2xvIGNsb3NlIHBhcmVuIG9mIGFuIGFyZ3VtZW50IGxpc3QuPGJyPg0KPGJyPg0KwqAgwqAg wqAgwqAoc3RyZWFtLW9wIMKgIMKgIMKgIMKgIMKgIMKgIC4gKGMtbGluZXVwLXN0cmVhbW9wICsp KTxicj4NCsKgIMKgIMKgIMKgOzsgTGluZXMgY29udGludWluZyBhIHN0cmVhbSBvcGVyYXRvciBj b25zdHJ1Y3QuPGJyPg0KPGJyPg0KwqAgwqAgwqAgwqAoaW5jbGFzcyDCoCDCoCDCoCDCoCDCoCDC oCDCoCAuICspPGJyPg0KwqAgwqAgwqAgwqA7OyBUaGUgY29uc3RydWN0IGlzIG5lc3RlZCBpbnNp ZGUgYSBjbGFzcyBkZWZpbml0aW9uLjxicj4NCsKgIMKgIMKgIMKgOzsgVXNlZCB0b2dldGhlciB3 aXRoIGUuZy4gYHRvcG1vc3QtaW50cm8mIzM5Oy48YnI+DQo8YnI+DQrCoCDCoCDCoCDCoChjcHAt bWFjcm8gwqAgwqAgwqAgwqAgwqAgwqAgLiBbMF0pPGJyPg0KwqAgwqAgwqAgwqA7OyBUaGUgc3Rh cnQgb2YgYSBDIHByZXByb2Nlc3NvciBtYWNybyBkZWZpbml0aW9uLjxicj4NCjxicj4NCsKgIMKg IMKgIMKgKGNwcC1tYWNyby1jb250IMKgIMKgIMKgIMKgLiBbOF0pPGJyPg0KwqAgwqAgwqAgwqA7 OyBJbnNpZGUgYSBtdWx0aS1saW5lIEMgcHJlcHJvY2Vzc29yIG1hY3JvIGRlZmluaXRpb24uPGJy Pg0KPGJyPg0KwqAgwqAgwqAgwqAoZnJpZW5kIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgLiAwKTxi cj4NCsKgIMKgIMKgIMKgOzsgQSBDKysgZnJpZW5kIGRlY2xhcmF0aW9uLjxicj4NCjxicj4NCsKg IMKgIMKgIMKgKG9iamMtbWV0aG9kLWludHJvIMKgIMKgIC4gMCk8YnI+DQrCoCDCoCDCoCDCoDs7 IFRoZSBmaXJzdCBsaW5lIG9mIGFuIE9iamVjdGl2ZS1DIG1ldGhvZCBkZWZpbml0aW9uLjxicj4N Cjxicj4NCsKgIMKgIMKgIMKgKG9iamMtbWV0aG9kLWFyZ3MtY29udCAuIChjLWxpbmV1cC1PYmpD LW1ldGhvZC1hcmdzLTI8YnI+DQrCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCspKTxicj4NCsKgIMKgIMKgIMKgOzsgTGluZXMgY29udGludWluZyBhbiBP YmplY3RpdmUtQyBtZXRob2QgZGVmaW5pdGlvbi48YnI+DQo8YnI+DQrCoCDCoCDCoCDCoChvYmpj LW1ldGhvZC1jYWxsLWNvbnQgLiAoYy1saW5ldXAtT2JqQy1tZXRob2QtY2FsbC1jb2xvbnM8YnI+ DQrCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGMtbGlu ZXVwLU9iakMtbWV0aG9kLWNhbGw8YnI+DQrCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCspKTxicj4NCsKgIMKgIMKgIMKgOzsgTGluZXMgY29udGludWlu ZyBhbiBPYmplY3RpdmUtQyBtZXRob2QgY2FsbC48YnI+DQo8YnI+DQrCoCDCoCDCoCDCoChleHRl cm4tbGFuZy1vcGVuIMKgIMKgIMKgLiAwKTxicj4NCsKgIMKgIMKgIMKgOzsgQnJhY2UgdGhhdCBv cGVucyBhbiAmcXVvdDtleHRlcm4mcXVvdDsgYmxvY2suPGJyPg0KPGJyPg0KwqAgwqAgwqAgwqAo ZXh0ZXJuLWxhbmctY2xvc2UgwqAgwqAgLiAwKTxicj4NCsKgIMKgIMKgIMKgOzsgQnJhY2UgdGhh dCBjbG9zZXMgYW4gJnF1b3Q7ZXh0ZXJuJnF1b3Q7IGJsb2NrLjxicj4NCjxicj4NCsKgIMKgIMKg IMKgKGluZXh0ZXJuLWxhbmcgwqAgwqAgwqAgwqAgLiArKTxicj4NCsKgIMKgIMKgIMKgOzsgQW5h bG9nb3VzIHRvIHRoZSBgaW5jbGFzcyYjMzk7IHN5bnRhY3RpYyBzeW1ib2wsPGJyPg0KwqAgwqAg wqAgwqA7OyBidXQgdXNlZCBpbnNpZGUgJnF1b3Q7ZXh0ZXJuJnF1b3Q7IGJsb2Nrcy48YnI+DQo8 YnI+DQrCoCDCoCDCoCDCoChuYW1lc3BhY2Utb3BlbiDCoCDCoCDCoCDCoC4gMCk8YnI+DQo8YnI+ DQrCoCDCoCDCoCDCoChuYW1lc3BhY2UtY2xvc2UgwqAgwqAgwqAgLiAwKTxicj4NCjxicj4NCsKg IMKgIMKgIMKgKGlubmFtZXNwYWNlIMKgIMKgIMKgIMKgIMKgIC4gKyk8YnI+DQrCoCDCoCDCoCDC oDs7IFNpbWlsYXIgdG8gdGhlIHRocmVlIGBleHRlcm4tbGFuZyYjMzk7IHN5bWJvbHMsIGJ1dCBm b3I8YnI+DQrCoCDCoCDCoCDCoDs7IEMrKyAmcXVvdDtuYW1lc3BhY2UmcXVvdDsgYmxvY2tzLjxi cj4NCjxicj4NCsKgIMKgIMKgIMKgKG1vZHVsZS1vcGVuIMKgIMKgIMKgIMKgIMKgIC4gMCk8YnI+ DQo8YnI+DQrCoCDCoCDCoCDCoChtb2R1bGUtY2xvc2UgwqAgwqAgwqAgwqAgwqAuIDApPGJyPg0K PGJyPg0KwqAgwqAgwqAgwqAoaW5tb2R1bGUgwqAgwqAgwqAgwqAgwqAgwqAgwqAuICspPGJyPg0K wqAgwqAgwqAgwqA7OyBTaW1pbGFyIHRvIHRoZSB0aHJlZSBgZXh0ZXJuLWxhbmcmIzM5OyBzeW1i b2xzLCBidXQgZm9yPGJyPg0KwqAgwqAgwqAgwqA7OyBDT1JCQSBJREwgJnF1b3Q7bW9kdWxlJnF1 b3Q7IGJsb2Nrcy48YnI+DQo8YnI+DQrCoCDCoCDCoCDCoChjb21wb3NpdGlvbi1vcGVuIMKgIMKg IMKgLiAwKTxicj4NCjxicj4NCsKgIMKgIMKgIMKgKGNvbXBvc2l0aW9uLWNsb3NlIMKgIMKgIC4g MCk8YnI+DQo8YnI+DQrCoCDCoCDCoCDCoChpbmNvbXBvc2l0aW9uIMKgIMKgIMKgIMKgIC4gKyk8 YnI+DQrCoCDCoCDCoCDCoDs7IFNpbWlsYXIgdG8gdGhlIHRocmVlIGBleHRlcm4tbGFuZyYjMzk7 IHN5bWJvbHMsIGJ1dCBmb3I8YnI+DQrCoCDCoCDCoCDCoDs7IENPUkJBIENJREwgJnF1b3Q7Y29t cG9zaXRpb24mcXVvdDsgYmxvY2tzLjxicj4NCjxicj4NCsKgIMKgIMKgIMKgKHRlbXBsYXRlLWFy Z3MtY29udCDCoCDCoC4gKGMtbGluZXVwLXRlbXBsYXRlLWFyZ3MgKykpPGJyPg0KwqAgwqAgwqAg wqA7OyBDKysgdGVtcGxhdGUgYXJndW1lbnQgbGlzdCBjb250aW51YXRpb25zLjxicj4NCjxicj4N CsKgIMKgIMKgIMKgKGlubGFtYmRhIMKgIMKgIMKgIMKgIMKgIMKgIMKgLiArKTxicj4NCsKgIMKg IMKgIMKgOzsgSW4gdGhlIGhlYWRlciBvciBib2R5IG9mIGEgbGFtYmRhIGZ1bmN0aW9uLjxicj4N Cjxicj4NCsKgIMKgIMKgIMKgKGxhbWJkYS1pbnRyby1jb250IMKgIMKgIC4gKyspPGJyPg0KwqAg wqAgwqAgwqA7OyBDb250aW51YXRpb24gb2YgdGhlIGhlYWRlciBvZiBhIGxhbWJkYSBmdW5jdGlv bi48YnI+DQo8YnI+DQrCoCDCoCDCoCDCoChpbmV4cHItc3RhdGVtZW50IMKgIMKgIMKgLiArKTxi cj4NCsKgIMKgIMKgIMKgOzsgVGhlIHN0YXRlbWVudCBpcyBpbnNpZGUgYW4gZXhwcmVzc2lvbi48 YnI+DQo8YnI+DQrCoCDCoCDCoCDCoChpbmV4cHItY2xhc3MgwqAgwqAgwqAgwqAgwqAuICspPGJy Pg0KwqAgwqAgwqAgwqA7OyBUaGUgY2xhc3MgaXMgaW5zaWRlIGFuIGV4cHJlc3Npb24uIMKgVXNl ZCBlLmcuIGZvcjxicj4NCsKgIMKgIMKgIMKgOzsgSmF2YSBhbm9ueW1vdXMgY2xhc3Nlcy48YnI+ DQrCoCDCoCDCoCDCoCkpPGJyPg0KPGJyPg0KwqAgwqA7OyBPbmx5IGNhbGxlZCB3aGVuIGMtc3lu dGFjdGljLWluZGVudGF0aW9uIGlzIG5vbiBuaWwuPGJyPg0KwqAgwqA7OyAoYy1zcGVjaWFsLWlu ZGVudC1ob29rIC4gdXNlci1mdW4pPGJyPg0KwqAgwqAoYy1sYWJlbC1taW5pbXVtLWluZGVudGF0 aW9uIMKgIMKgLiAyKTxicj4NCjxicj4NCsKgIMKgOzsgb3RoZXIgZW1hY3MgdmFyaWFibGVzOjxi cj4NCsKgIMKgOzsgKGMtY29tbWVudC1jb250aW51YXRpb24tc3RhcnMgJnF1b3Q7JnF1b3Q7IHQp PGJyPg0KwqAgwqA7OyAoYy1lY2hvLXN5bnRhY3RpYy1pbmZvcm1hdGlvbi1wIHQpPGJyPg0KwqAg wqA7OyAoYy1oYW5naW5nLWNvbW1lbnQtZW5kZXItcCBuaWwgdCk8YnI+DQrCoCDCoDs7IChjLWhh bmdpbmctY29tbWVudC1zdGFydGVyLXAgbmlsIHQpPGJyPg0KwqAgwqA7OyAoYy1tYWNyby1zaHJp bmstd2luZG93LWZsYWcgwqAgwqAgwqAgwqAgwqAuIHQpPGJyPg0KPGJyPg0KPGJyPg0KwqAgwqAo dGFiLXdpZHRoIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgLiA0KSDCoDsgdGhlIHRy dWUgb25lITxicj4NCjxicj4NCsKgIMKgKGMtaW5kZW50LWxldmVsIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIC4gNCkgwqA7IEluZGVudGF0aW9uIG9mIEMgc3RhdGVtZW50cyB3aXRoPGJyPg0KwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg OyByZXNwZWN0IHRvIGNvbnRhaW5pbmcgYmxvY2suPGJyPg0KPGJyPg0KwqAgwqAoYy1icmFjZS1p bWFnaW5hcnktb2Zmc2V0IMKgIMKgIMKgIC4gMCkgwqA7IEltYWdpbmVkIGluZGVudGF0aW9uIG9m IGEgQyBvcGVuIGJyYWNlPGJyPg0KwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgOyB0aGF0IGFjdHVhbGx5IGZvbGxvd3MgYSBzdGF0ZW1l bnQuPGJyPg0KPGJyPg0KwqAgwqAoYy1icmFjZS1vZmZzZXQgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgLiAwKSDCoDsgRXh0cmEgaW5kZW50YXRpb24gZm9yIGJyYWNlcywgY29tcGFyZWQ8YnI+DQrC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCA7IHdpdGggb3RoZXIgdGV4dCBpbiBzYW1lIGNvbnRleHQuPGJyPg0KPGJyPg0KwqAgwqAoYy1h cmdkZWNsLWluZGVudCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAuIDQpIMKgOyBJbmRlbnRhdGlvbiBs ZXZlbCBvZiBkZWNsYXJhdGlvbnMgb2Y8YnI+DQrCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCA7IEMgZnVuY3Rpb24gYXJndW1lbnRzLjxi cj4NCjxicj4NCsKgIMKgKGMtbGFiZWwtb2Zmc2V0IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIC4g LSkgwqA7IE9mZnNldCBvZiBDIGxhYmVsIGxpbmVzIGFuZCBjYXNlPGJyPg0KwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgOyBzdGF0ZW1l bnRzIHJlbGF0aXZlIHRvIHVzdWFsPGJyPg0KwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgOyBpbmRlbnRhdGlvbi48YnI+DQo8YnI+DQrC oCDCoChjLWNvbnRpbnVlZC1zdGF0ZW1lbnQtb2Zmc2V0IMKgIC4gNCkgwqA7IEV4dHJhIGluZGVu dCBmb3IgbGluZXMgbm90IHN0YXJ0aW5nPGJyPg0KwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgOyBuZXcgc3RhdGVtZW50cy48YnI+DQo8 YnI+DQrCoCDCoChjLWNvbnRpbnVlZC1icmFjZS1vZmZzZXQgwqAgwqAgwqAgLiAwKSDCoDsgRXh0 cmEgaW5kZW50IGZvciBzdWJzdGF0ZW1lbnRzIHRoYXQ8YnI+DQrCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCA7IHN0YXJ0IHdpdGggb3Bl bi1icmFjZXMuPGJyPg0KPGJyPg0KPGJyPg0KwqAgwqAoYy1hdXRvLW5ld2xpbmUgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAuIG5pbCkgOyBOb24tbmlsIG1lYW5zIGF1dG9tYXRpY2FsbHkgbmV3bGlu ZTxicj4NCsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIDsgYmVmb3JlIGFuZCBhZnRlciBicmFjZXMsIGFuZCBhZnRlcjxicj4NCsKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIDsg Y29sb25zIGFuZCBzZW1pY29sb25zLCBpbnNlcnRlZCBpbiBDPGJyPg0KwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgOyBjb2RlLiBJZiB5 b3UgZG8gbm90IHdhbnQgYSBsZWFkaW5nPGJyPg0KwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgOyBuZXdsaW5lIGJlZm9yZSBicmFjZXMg dGhlbiB1c2U6PGJyPg0KwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgOyAoZGVmaW5lLWtleSBjLW1vZGUtbWFwIFwmcXVvdDt7XCZxdW90 Ozxicj4NCsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIDsgwqAgwqAgwqAgwqAgwqAmIzM5O2VsZWN0cmljLWMtc2VtaSkmcXVvdDs8YnI+ DQo8YnI+DQrCoCDCoChjLXRhYi1hbHdheXMtaW5kZW50IMKgIMKgIMKgIMKgIMKgIC4gbmlsKSA7 IE5vbi1uaWwgbWVhbnMgVEFCIGluIEMgbW9kZSBzaG91bGQ8YnI+DQrCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCA7IGFsd2F5cyByZWlu ZGVudCB0aGUgY3VycmVudCBsaW5lLDxicj4NCsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIDsgcmVnYXJkbGVzcyBvZiB3aGVyZSBpbiB0 aGUgbGluZSBwb2ludDxicj4NCsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIDsgaXMgd2hlbiB0aGUgVEFCIGNvbW1hbmQgaXMgdXNlZC48 YnI+DQrCoCDCoCkpKTxicj4NCjxzcGFuIGNsYXNzPSJIT0VuWmIiPjxmb250IGNvbG9yPSIjODg4 ODg4Ij48YnI+DQotLTxicj4NCl9fUGFzY2FsIEJvdXJndWlnbm9uX18gwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgPGEgaHJlZj0iaHR0cDovL3d3dy5pbmZvcm1hdGltYWdvLmNvbS8iIHRh cmdldD0iX2JsYW5rIj5odHRwOi8vd3d3LmluZm9ybWF0aW1hZ28uY29tLzwvYT48YnI+DQpBIGJh ZCBkYXkgaW4gKCkgaXMgYmV0dGVyIHRoYW4gYSBnb29kIGRheSBpbiB7fS48YnI+DQo8YnI+DQo8 YnI+DQo8L2ZvbnQ+PC9zcGFuPjwvYmxvY2txdW90ZT48L2Rpdj48YnI+PC9kaXY+DQo= --089e013d15d830d83a04d89c393a--