From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Michael Welsh Duggan Newsgroups: gmane.emacs.bugs Subject: bug#9560: An exact recipe Date: Wed, 12 Oct 2011 22:33:22 -0400 Message-ID: <87zkh54o3x.fsf@maru.md5i.com> References: NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Trace: dough.gmane.org 1318473231 24932 80.91.229.12 (13 Oct 2011 02:33:51 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Thu, 13 Oct 2011 02:33:51 +0000 (UTC) To: 9560@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Thu Oct 13 04:33:47 2011 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([140.186.70.17]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1REB7C-00008f-OW for geb-bug-gnu-emacs@m.gmane.org; Thu, 13 Oct 2011 04:33:47 +0200 Original-Received: from localhost ([::1]:50925 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1REB7B-0005CW-TH for geb-bug-gnu-emacs@m.gmane.org; Wed, 12 Oct 2011 22:33:45 -0400 Original-Received: from eggs.gnu.org ([140.186.70.92]:38769) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1REB77-0005CG-9g for bug-gnu-emacs@gnu.org; Wed, 12 Oct 2011 22:33:43 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1REB75-0002I1-G1 for bug-gnu-emacs@gnu.org; Wed, 12 Oct 2011 22:33:41 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:33069) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1REB72-0002Hn-Q3; Wed, 12 Oct 2011 22:33:36 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.69) (envelope-from ) id 1REB7S-0007xd-Bo; Wed, 12 Oct 2011 22:34:02 -0400 X-Loop: help-debbugs@gnu.org In-Reply-To: Resent-From: Michael Welsh Duggan Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org, bug-cc-mode@gnu.org Resent-Date: Thu, 13 Oct 2011 02:34:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 9560 X-GNU-PR-Package: emacs,cc-mode X-GNU-PR-Keywords: Original-Received: via spool by 9560-submit@debbugs.gnu.org id=B9560.131847323730591 (code B ref 9560); Thu, 13 Oct 2011 02:34:02 +0000 Original-Received: (at 9560) by debbugs.gnu.org; 13 Oct 2011 02:33:57 +0000 Original-Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1REB7N-0007xL-6h for submit@debbugs.gnu.org; Wed, 12 Oct 2011 22:33:57 -0400 Original-Received: from md5i.com ([75.151.244.229] helo=maru.md5i.com) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1REB7K-0007x8-0r for 9560@debbugs.gnu.org; Wed, 12 Oct 2011 22:33:55 -0400 Original-Received: from md5i by maru.md5i.com with local (Exim 4.76) (envelope-from ) id 1REB6o-0005Dm-Oq for 9560@debbugs.gnu.org; Wed, 12 Oct 2011 22:33:22 -0400 User-Agent: Gnus/5.110018 (No Gnus v0.18) Emacs/24.0.50 (gnu/linux) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list Resent-Date: Wed, 12 Oct 2011 22:34:02 -0400 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:52621 Archived-At: --=-=-= Content-Type: text/plain >From emacs -Q: Do NOT resize the frame. The recipe includes C-v, which depends on the window (and hence frame) size. Load the following file: --=-=-= Content-Type: text/x-csrc Content-Disposition: attachment; filename=rwsiteinfo-backup.c /* ** Copyright (C) 2011 by Carnegie Mellon University. ** ** @OPENSOURCE_HEADER_START@ ** ** Use of the SILK system and related source code is subject to the terms ** of the following licenses: ** ** GNU Public License (GPL) Rights pursuant to Version 2, June 1991 ** Government Purpose License Rights (GPLR) pursuant to DFARS 252.227.7013 ** ** NO WARRANTY ** ** ANY INFORMATION, MATERIALS, SERVICES, INTELLECTUAL PROPERTY OR OTHER ** PROPERTY OR RIGHTS GRANTED OR PROVIDED BY CARNEGIE MELLON UNIVERSITY ** PURSUANT TO THIS LICENSE (HEREINAFTER THE "DELIVERABLES") ARE ON AN ** "AS-IS" BASIS. CARNEGIE MELLON UNIVERSITY MAKES NO WARRANTIES OF ANY ** KIND, EITHER EXPRESS OR IMPLIED AS TO ANY MATTER INCLUDING, BUT NOT ** LIMITED TO, WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE, ** MERCHANTABILITY, INFORMATIONAL CONTENT, NONINFRINGEMENT, OR ERROR-FREE ** OPERATION. CARNEGIE MELLON UNIVERSITY SHALL NOT BE LIABLE FOR INDIRECT, ** SPECIAL OR CONSEQUENTIAL DAMAGES, SUCH AS LOSS OF PROFITS OR INABILITY ** TO USE SAID INTELLECTUAL PROPERTY, UNDER THIS LICENSE, REGARDLESS OF ** WHETHER SUCH PARTY WAS AWARE OF THE POSSIBILITY OF SUCH DAMAGES. ** LICENSEE AGREES THAT IT WILL NOT MAKE ANY WARRANTY ON BEHALF OF ** CARNEGIE MELLON UNIVERSITY, EXPRESS OR IMPLIED, TO ANY PERSON ** CONCERNING THE APPLICATION OF OR THE RESULTS TO BE OBTAINED WITH THE ** DELIVERABLES UNDER THIS LICENSE. ** ** Licensee hereby agrees to defend, indemnify, and hold harmless Carnegie ** Mellon University, its trustees, officers, employees, and agents from ** all claims or demands made against them (and any related losses, ** expenses, or attorney's fees) arising out of, or relating to Licensee's ** and/or its sub licensees' negligent use or willful misuse of or ** negligent conduct or willful misconduct regarding the Software, ** facilities, or other rights or assistance granted by Carnegie Mellon ** University under this License, including, but not limited to, any ** claims of product liability, personal injury, death, damage to ** property, or violation of any laws or regulations. ** ** Carnegie Mellon University Software Engineering Institute authored ** documents are sponsored by the U.S. Department of Defense under ** Contract FA8721-05-C-0003. Carnegie Mellon University retains ** copyrights in all material produced under this contract. The U.S. ** Government retains a non-exclusive, royalty-free license to publish or ** reproduce these documents, or allow others to do so, for U.S. ** Government purposes only pursuant to the copyright license under the ** contract clause at 252.227.7013. ** ** @OPENSOURCE_HEADER_END@ */ /* ** Prints information about SiLK site configurations ** ** Michael Duggan ** September 2011 */ #include RCSIDENT("$Id$"); #include #include #include #include /* LOCAL DEFINES AND TYPEDEFS */ /* where to write --help output */ #define USAGE_FH stdout /* LOCAL VARIABLE DEFINITIONS */ typedef enum { RWST_CLASS, RWST_TYPE, RWST_FLOWTYPE, RWST_FLOWTYPE_ID, RWST_SENSOR, RWST_SENSOR_ID, RWST_SENSOR_DESC, RWST_DEFAULT_CLASS, RWST_DEFAULT_TYPE, RWST_MARK_DEFAULTS, RWST_CLASS_LIST, RWST_TYPE_LIST, RWST_FLOWTYPE_LIST, RWST_FLOWTYPE_ID_LIST, RWST_SENSOR_LIST, RWST_SENSOR_ID_LIST, RWST_DEFAULT_CLASS_LIST, RWST_DEFAULT_TYPE_LIST } rws_type_t; static const sk_stringmap_entry_t field_map_entries[] = { {"class", RWST_CLASS, "class name", NULL}, {"type", RWST_TYPE, "type name", NULL}, {"flowtype", RWST_FLOWTYPE, "flowtype name", NULL}, {"id-flowtype", RWST_FLOWTYPE_ID, "flowtype integer identifier", NULL}, {"sensor", RWST_SENSOR, "sensor name", NULL}, {"id-sensor", RWST_SENSOR_ID, "sensor integer identifier", NULL}, {"describe-sensor", RWST_SENSOR_DESC, "sensor description", NULL}, {"default-class", RWST_DEFAULT_CLASS, "default class name", NULL}, {"default-type", RWST_DEFAULT_TYPE, "default type name", NULL}, {"mark-defaults", RWST_MARK_DEFAULTS, "'+' for default classes, '*' for types", NULL}, }; /* OPTIONS SETUP */ typedef enum { OPT_NO_TITLES, OPT_NO_COLUMNS, OPT_COLUMN_SEPARATOR, OPT_NO_FINAL_DELIMITER, OPT_DELIMITED, OPT_OUTPUT_PATH, OPT_PAGER } appOptionsEnum; static struct option appOptions[] = { {"no-titles", NO_ARG, 0, OPT_NO_TITLES}, {"no-columns", NO_ARG, 0, OPT_NO_COLUMNS}, {"column-separator", REQUIRED_ARG, 0, OPT_COLUMN_SEPARATOR}, {"no-final-delimiter", NO_ARG, 0, OPT_NO_FINAL_DELIMITER}, {"delimited", OPTIONAL_ARG, 0, OPT_DELIMITED}, {"output-path", REQUIRED_ARG, 0, OPT_OUTPUT_PATH}, {"pager", REQUIRED_ARG, 0, OPT_PAGER}, {0,0,0,0} /* sentinel entry */ {0,0,0,0} /* sentinel entry */ }; static const char *appHelp[] = { "Do not print column headers. Def. Print titles.", "Disable fixed-width columnar output. Def. Columnar", "Use specified character between columns. Def. '|'", "Suppress column delimiter at end of line. Def. No", "Shortcut for --no-columns --no-final-del --column-sep=CHAR", "Send output to given file path. Def. stdout", "Program to invoke to page output. Def. $SILK_PAGER or $PAGER", (char *)NULL }; /* LOCAL FUNCTION PROTOTYPES */ static void appUsageLong(void); static void appTeardown(void); static void appSetup(int argc, char **argv); static int appOptionsHandler(clientData cData, int opt_index, char *opt_arg); /* FUNCTION DEFINITIONS */ /* * appUsageLong(); * * Print complete usage information to USAGE_FH. Pass this * function to skOptionsSetUsageCallback(); skOptionsParse() will * call this funciton and then exit the program when the --help * option is given. */ static void appUsageLong(void) { #define USAGE_MSG \ ("\n" \ "\tOutputs information about a SiLK site configuration.\n") FILE *fh = USAGE_FH; int i; fprintf(fh, "%s %s", skAppName(), USAGE_MSG); fprintf(fh, "\nSWITCHES:\n"); skOptionsDefaultUsage(fh); for (i = 0; appOptions[i].name; i++ ) { fprintf(fh, "--%s %s. ", appOptions[i].name, SK_OPTION_HAS_ARG(appOptions[i])); switch (appOptions[i].val) { case OPT_FIELDS: /* Dynamically build the help */ usageFields(fh); break; default: /* Simple static help text from the appHelp array */ fprintf(fh, "%s\n", appHelp[i]); break; } } skOptionsCtxOptionsUsage(optctx, fh); } /* * appTeardown() * * Teardown all modules, close all files, and tidy up all * application state. * * This function is idempotent. */ static void appTeardown(void) { static int teardownFlag = 0; if (teardownFlag) { return; } teardownFlag = 1; #error "Anything you put in setup should now be torn down" /* for example, close sample output file */ skStreamDestroy(&out_ios); skAppUnregister(); } /* * appSetup(argc, argv); * * Perform all the setup for this application include setting up * required modules, parsing options, etc. This function should be * passed the same arguments that were passed into main(). * * Returns to the caller if all setup succeeds. If anything fails, * this function will cause the application to exit with a FAILURE * exit status. */ static void appSetup(int argc, char **argv) { SILK_FEATURES_DEFINE_STRUCT(features); int rv; /* verify same number of options and help strings */ assert((sizeof(appHelp)/sizeof(char *)) == (sizeof(appOptions)/sizeof(struct option))); /* register the application */ skAppRegister(argv[0]); skAppVerifyFeatures(&features, NULL); skOptionsSetUsageCallback(&appUsageLong); /* initialize globals */ #error "Initialize any global variables here" /* for example: set global output to NULL */ out_ios = NULL; /* register the options */ if (skOptionsRegister(appOptions, &appOptionsHandler, NULL) || sksiteOptionsRegister(SK_SITE_FLAG_CONFIG_FILE)) { skAppPrintErr("Unable to register options"); exit(EXIT_FAILURE); } #error "Do any other module setup here" /* parse the options */ arg_index = skOptionsParse(argc, argv); if (arg_index < 0) { /* options parsing should print error */ skAppUsage(); /* never returns */ } /* try to load site config file; if it fails, we will not be able * to resolve flowtype and sensor from input file names */ sksiteConfigure(0); #error "Do any options validation here" #error "If you expect filenames on command line keep this:" /* arg_index is looking at first file name to process */ if (arg_index == argc) { if (FILEIsATty(stdin)) { skAppPrintErr("No input files on command line and" " stdin is connected to a terminal"); skAppUsage(); /* never returns */ } } #error "If you do NOT expect filenames on command line, keep this:" /* check for extraneous arguments */ if (arg_index != argc) { skAppPrintErr("Too many arguments or unrecognized switch '%s'", argv[arg_index]); skAppUsage(); /* never returns */ } #error "Once all options are set, open input and output" /* for example, open a SiLK flow file as an output file */ rv = skStreamOpenSilkFlow(&out_ios, output_path, SK_IO_WRITE); if (rv) { skStreamPrintLastErr(out_ios, rv, &skAppPrintErr); skAppPrintErr("Unable to open output file. Exiting"); skStreamDestroy(&out_ios); exit(EXIT_FAILURE); } if (atexit(appTeardown) < 0) { skAppPrintErr("Unable to register appTeardown() with atexit()"); appTeardown(); exit(EXIT_FAILURE); } return; /* OK */ } /* * status = appOptionsHandler(cData, opt_index, opt_arg); * * This function is passed to skOptionsRegister(); it will be called * by skOptionsParse() for each user-specified switch that the * application has registered; it should handle the switch as * required---typically by setting global variables---and return 1 * if the switch processing failed or 0 if it succeeded. Returning * a non-zero from from the handler causes skOptionsParse() to return * a negative value. * * The clientData in 'cData' is typically ignored; 'opt_index' is * the index number that was specified as the last value for each * struct option in appOptions[]; 'opt_arg' is the user's argument * to the switch for options that have a REQUIRED_ARG or an * OPTIONAL_ARG. */ static int appOptionsHandler( clientData UNUSED(cData), int opt_index, char *opt_arg) { int rv; switch ((appOptionsEnum)opt_index) { #error "Add options handling here. Return 1 on failure." case OPT_FIRST: /* remove when real options added */ /* do something with the argument to the switch; for example, * parse as an integer */ rv = skStringParseUint32(&value, opt_arg, 0, 0); if (rv) { skAppPrintErr("Invalid %s '%s': %s", appOptions[opt_index].name, opt_arg, skStringParseStrerror(rv)); return 1; } break; case OPT_SECOND: /* remove when real options added */ /* set a flag based on this option */ flag = 1; break; } return 0; /* OK */ } /* * rwios = appNextInput(argc, argv); * * Open and return the next input file from the command line or the * standard input if no files were given on the command line. */ static skstream_t *appNextInput(int argc, char **argv) { static int initialized = 0; skstream_t *rwios = NULL; const char *fname = NULL; int rv; if (arg_index < argc) { /* get current file and prepare to get next */ fname = argv[arg_index]; ++arg_index; } else { if (initialized) { /* no more input */ return NULL; } /* input is from stdin */ fname = "stdin"; } initialized = 1; /* create rwios and open file */ rv = skStreamOpenSilkFlow(&rwios, fname, SK_IO_READ); if (rv) { skStreamPrintLastErr(rwios, rv, NULL); skStreamDestroy(&rwios); } return rwios; } int main(int argc, char **argv) { skstream_t *in_ios; int in_rv = SKSTREAM_OK; int rv = SKSTREAM_OK; appSetup(argc, argv); /* never returns on error */ #error "Loop over files on command line or read from stdin." #error "Process each file, preferably in a separate function." /* For each input, process each record */ while (NULL != (in_ios = appNextInput(argc, argv))) { while ((in_rv = skStreamReadRecord(in_ios, &rwrec)) == SKSTREAM_OK) { /* process record */ rv = skStreamWriteRecord(out_ios, &rwrec); if (SKSTREAM_OK != rv) { skStreamPrintLastErr(out_ios, rv, &skAppPrintErr); skStreamDestroy(&in_ios); goto END; } } if (SKSTREAM_ERR_EOF != in_rv) { skStreamPrintLastErr(in_ios, in_rv, &skAppPrintErr); } skStreamDestroy(&in_ios); } rv = skStreamClose(out_ios); if (SKSTREAM_OK != rv) { skStreamPrintLastErr(out_ios, rv, &skAppPrintErr); } END: return ((SKSTREAM_OK == rv) ? EXIT_SUCCESS : EXIT_FAILURE); } /* ** Local Variables: ** mode:c ** indent-tabs-mode:nil ** c-basic-offset:4 ** End: */ --=-=-= Content-Type: text/plain Type: M-x edit-kbd-macro RET y C-x e C-x h C-w C-x i When prompted, insert the following keyboard macro file: --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=c-mode.macro Content-Transfer-Encoding: base64 OzsgS2V5Ym9hcmQgTWFjcm8gRWRpdG9yLiAgUHJlc3MgQy1jIEMtYyB0byBmaW5pc2g7IHByZXNz IEMteCBrIFJFVCB0byBjYW5jZWwuCjs7IE9yaWdpbmFsIGtleXM6IDMqQy12IDcqQy1uIDIxKkMt ayBUQUIgeyAiY2xhc3MiICwgU1BDIFJXU1RfQyBNLS8gTS1ERUwgREVMICwgU1BDICJjbGFzcyBT UEMgbmFtZSIgLCBTUEMgTlVMTCB9ICwgUkVUIFRBQiB7ICJ0eXBlIiAsIFNQQyBSV1NUX1QgTS0v IE0tREVMIERFTCAsIFNQQyAidHlwZSBTUEMgbmFtZSIgLCBTUEMgTlVMTCB9ICwgUkVUIFRBQiB7 ICJmbG93dHlwZSAsIFNQQyAiUldTVF9GTE8gTS0vIDIqTS1ERUwgREVMICwgU1BDICJmbG93dHlw ZSBTUEMgbmFtZSIgLCBTUEMgTlVMTCB9ICwgUkVUIFRBQiB7ICJzZW5zb3IiICwgU1BDIEMtcCAy KkMtZiAsIDQqREVMICIgLCAuIERFTCBTUEMgQy1uIFJXU1RfU0UgTS0vIDIqTS1ERUwgREVMICwg LiBERUwgU1BDICJzZW5zb3IgU1BDIG5hbWUiICwgU1BDIE5VTEwgfSBDLXAgQy1lIFJFVCBUQUIg eyAiaWQtZmxvd3R5cGUiICwgU1BDIFJXU1RfRkwgTS0vIF8gTS0vIE0tREVMIERFTCAsIFNQQyAi Zmxvd3R5cGUgU1BDIGludGVnZXIgU1BDIGlkZSBNLS8gTS1ERUwgaWRlbnRpZmllciIgLCBTUEMg TlVMTCB9ICwgQy1uICwgUkVUIFRBQiB7ICJpZC1zZW5zb3IiICwgU1BDIFJTVF9TRSA1KkRFTCBX U1RfU0UgTS0vIF8gTS0vIE0tREVMIERFTCAsIFNQQyAic2Vuc29yIFNQQyBpbnRlZ2VyIFNQQyBp ZGVudCBNLS8gIiAsIC4gREVMIFNQQyBOVUxMIH0gLCBSRVQgVEFCIHsgImRleGZyaWIgNSpERUwg c2NyaWJlLXNlbnJvIDIqREVMIG9yIiAsIFNQQyBSV1NUX1NFIE0tLyBNLURFTCBEIE0tLyAsIFNQ QyAic2Vuc29yIFNQQyBkZXNjIE0tLyAzKkRFTCBpcHRpb24iICwgU1BDIE5VTEwgfSAsIFJFVCBU QUIgeyAiZGVmYXVsdC1jbGFzcyIgLCBTUEMgUldTVF9EUkYgMipERUwgRURGIDIqREVMIEYgTS0v IDIqTS1ERUwgQyBNLS8gTS1ERUwgREVMICwgU1BDICJkZWZhdWx0IFNQQyBjbGFzcyBTUEMgbmFt ZSIgLCBTUEMgTlVMTCB9ICwgUkVUIFRBQiB7ICJkZWZhdWx0LXR5cGUiICwgU1BDIFJXU1RfREUg MipNLS8gTS1ERUwgREVMICwgU1BDICJkZWZhdWx0IFNQQyB0eXBlIFNQQyBuYW1lIiAsIFNQQyBO VUxMIH0gLCBSRVQgVEFCIHsgIm1hcmstZGVmYXVsdHMiICwgU1BDIFJXU18gREVMIFRfTUEgTS0v ICwgU1BDIERFTCBSRVQgVEFCICInKycgU1BDIGZvciBTUEMgZGVmYXVsdCBTUEMgY2xhc3NlcyAs IFNQQyAnICogJyBTUEMgZm9yIFNQQyB0eXBlcyIgLCBTUEMgTiBVIEwgOiBERUwgTCB9ICwgUkVU IFRBQiB7ICJjbGFzcyA6IGxpc3QiICwgU1BDIFJTVCBERUwgPFMtYmFja3NwYWNlPiBXU1RfQ0xB IDIqTS0vICwgU1BDICJsaXN0IFNQQyBvZiBTUEMgY2xhc3MgU1BDIG5hbWVzIiAsIFNQQyBOVUxM IH0gLCBSRVQgVEFCIHsgInR5cGUgOiBsaXN0IiAsIFNQQyBSV1NUX1RZIE0tLyBfTCBNLS8gLCBT UEMgImxpc3QgU1BDIG9mIFNQQyB0eXBlIFNQQyBuYW1lcyIgLCBTUEMgTlVMTCB9ICwgUkVUIFRB QiB7ICJmbG93dHlwZSA6IGxpc3QiICwgU1BDIFJFU1RfRkwgREVMIDIqTS1ERUwgUldTVF9GTCBN LS8gTS1ERUwgTS1sIDQqQy1wIEMtZSBMIE0tLyAsIFNQQyAibGlzdCBTUEMgb2YgU1BDIGZsb3d0 eXBlIFNQQyBuYW1lcyIgLCBTUEMgTlVMTCB9ICwgUkVUIDIqVEFCCgpDb21tYW5kOiBsYXN0LWti ZC1tYWNybwpLZXk6IG5vbmUKCk1hY3JvOgoKMypDLXYJCQk7OyBzY3JvbGwtdXAtY29tbWFuZAo3 KkMtbgkJCTs7IG5leHQtbGluZQoyMSpDLWsJCQk7OyBraWxsLWxpbmUKVEFCCQkJOzsgYy1pbmRl bnQtbGluZS1vci1yZWdpb24KewkJCTs7IGMtZWxlY3RyaWMtYnJhY2UKImNsYXNzIgkJCTs7IHNl bGYtaW5zZXJ0LWNvbW1hbmQgKiA3CiwJCQk7OyBjLWVsZWN0cmljLXNlbWkmY29tbWEKU1BDCQkJ Ozsgc2VsZi1pbnNlcnQtY29tbWFuZApSV1NUX0MJCQk7OyBzZWxmLWluc2VydC1jb21tYW5kICog NgpNLS8JCQk7OyBkYWJicmV2LWV4cGFuZApNLURFTAkJCTs7IGJhY2t3YXJkLWtpbGwtd29yZApE RUwJCQk7OyBjLWVsZWN0cmljLWJhY2tzcGFjZQosCQkJOzsgYy1lbGVjdHJpYy1zZW1pJmNvbW1h ClNQQwkJCTs7IHNlbGYtaW5zZXJ0LWNvbW1hbmQKImNsYXNzCQkJOzsgc2VsZi1pbnNlcnQtY29t bWFuZCAqIDYKU1BDCQkJOzsgc2VsZi1pbnNlcnQtY29tbWFuZApuYW1lIgkJCTs7IHNlbGYtaW5z ZXJ0LWNvbW1hbmQgKiA1CiwJCQk7OyBjLWVsZWN0cmljLXNlbWkmY29tbWEKU1BDCQkJOzsgc2Vs Zi1pbnNlcnQtY29tbWFuZApOVUxMCQkJOzsgc2VsZi1pbnNlcnQtY29tbWFuZCAqIDQKfQkJCTs7 IGMtZWxlY3RyaWMtYnJhY2UKLAkJCTs7IGMtZWxlY3RyaWMtc2VtaSZjb21tYQpSRVQJCQk7OyBu ZXdsaW5lClRBQgkJCTs7IGMtaW5kZW50LWxpbmUtb3ItcmVnaW9uCnsJCQk7OyBjLWVsZWN0cmlj LWJyYWNlCiJ0eXBlIgkJCTs7IHNlbGYtaW5zZXJ0LWNvbW1hbmQgKiA2CiwJCQk7OyBjLWVsZWN0 cmljLXNlbWkmY29tbWEKU1BDCQkJOzsgc2VsZi1pbnNlcnQtY29tbWFuZApSV1NUX1QJCQk7OyBz ZWxmLWluc2VydC1jb21tYW5kICogNgpNLS8JCQk7OyBkYWJicmV2LWV4cGFuZApNLURFTAkJCTs7 IGJhY2t3YXJkLWtpbGwtd29yZApERUwJCQk7OyBjLWVsZWN0cmljLWJhY2tzcGFjZQosCQkJOzsg Yy1lbGVjdHJpYy1zZW1pJmNvbW1hClNQQwkJCTs7IHNlbGYtaW5zZXJ0LWNvbW1hbmQKInR5cGUJ CQk7OyBzZWxmLWluc2VydC1jb21tYW5kICogNQpTUEMJCQk7OyBzZWxmLWluc2VydC1jb21tYW5k Cm5hbWUiCQkJOzsgc2VsZi1pbnNlcnQtY29tbWFuZCAqIDUKLAkJCTs7IGMtZWxlY3RyaWMtc2Vt aSZjb21tYQpTUEMJCQk7OyBzZWxmLWluc2VydC1jb21tYW5kCk5VTEwJCQk7OyBzZWxmLWluc2Vy dC1jb21tYW5kICogNAp9CQkJOzsgYy1lbGVjdHJpYy1icmFjZQosCQkJOzsgYy1lbGVjdHJpYy1z ZW1pJmNvbW1hClJFVAkJCTs7IG5ld2xpbmUKVEFCCQkJOzsgYy1pbmRlbnQtbGluZS1vci1yZWdp b24KewkJCTs7IGMtZWxlY3RyaWMtYnJhY2UKImZsb3d0eXBlCQk7OyBzZWxmLWluc2VydC1jb21t YW5kICogOQosCQkJOzsgYy1lbGVjdHJpYy1zZW1pJmNvbW1hClNQQwkJCTs7IHNlbGYtaW5zZXJ0 LWNvbW1hbmQKIlJXU1RfRkxPCQk7OyBzZWxmLWluc2VydC1jb21tYW5kICogOQpNLS8JCQk7OyBk YWJicmV2LWV4cGFuZAoyKk0tREVMCQkJOzsgYmFja3dhcmQta2lsbC13b3JkCkRFTAkJCTs7IGMt ZWxlY3RyaWMtYmFja3NwYWNlCiwJCQk7OyBjLWVsZWN0cmljLXNlbWkmY29tbWEKU1BDCQkJOzsg c2VsZi1pbnNlcnQtY29tbWFuZAoiZmxvd3R5cGUJCTs7IHNlbGYtaW5zZXJ0LWNvbW1hbmQgKiA5 ClNQQwkJCTs7IHNlbGYtaW5zZXJ0LWNvbW1hbmQKbmFtZSIJCQk7OyBzZWxmLWluc2VydC1jb21t YW5kICogNQosCQkJOzsgYy1lbGVjdHJpYy1zZW1pJmNvbW1hClNQQwkJCTs7IHNlbGYtaW5zZXJ0 LWNvbW1hbmQKTlVMTAkJCTs7IHNlbGYtaW5zZXJ0LWNvbW1hbmQgKiA0Cn0JCQk7OyBjLWVsZWN0 cmljLWJyYWNlCiwJCQk7OyBjLWVsZWN0cmljLXNlbWkmY29tbWEKUkVUCQkJOzsgbmV3bGluZQpU QUIJCQk7OyBjLWluZGVudC1saW5lLW9yLXJlZ2lvbgp7CQkJOzsgYy1lbGVjdHJpYy1icmFjZQoi c2Vuc29yIgkJOzsgc2VsZi1pbnNlcnQtY29tbWFuZCAqIDgKLAkJCTs7IGMtZWxlY3RyaWMtc2Vt aSZjb21tYQpTUEMJCQk7OyBzZWxmLWluc2VydC1jb21tYW5kCkMtcAkJCTs7IHByZXZpb3VzLWxp bmUKMipDLWYJCQk7OyBmb3J3YXJkLWNoYXIKLAkJCTs7IGMtZWxlY3RyaWMtc2VtaSZjb21tYQo0 KkRFTAkJCTs7IGMtZWxlY3RyaWMtYmFja3NwYWNlCiIJCQk7OyBzZWxmLWluc2VydC1jb21tYW5k CiwJCQk7OyBjLWVsZWN0cmljLXNlbWkmY29tbWEKLgkJCTs7IHNlbGYtaW5zZXJ0LWNvbW1hbmQK REVMCQkJOzsgYy1lbGVjdHJpYy1iYWNrc3BhY2UKU1BDCQkJOzsgc2VsZi1pbnNlcnQtY29tbWFu ZApDLW4JCQk7OyBuZXh0LWxpbmUKUldTVF9TRQkJCTs7IHNlbGYtaW5zZXJ0LWNvbW1hbmQgKiA3 Ck0tLwkJCTs7IGRhYmJyZXYtZXhwYW5kCjIqTS1ERUwJCQk7OyBiYWNrd2FyZC1raWxsLXdvcmQK REVMCQkJOzsgYy1lbGVjdHJpYy1iYWNrc3BhY2UKLAkJCTs7IGMtZWxlY3RyaWMtc2VtaSZjb21t YQouCQkJOzsgc2VsZi1pbnNlcnQtY29tbWFuZApERUwJCQk7OyBjLWVsZWN0cmljLWJhY2tzcGFj ZQpTUEMJCQk7OyBzZWxmLWluc2VydC1jb21tYW5kCiJzZW5zb3IJCQk7OyBzZWxmLWluc2VydC1j b21tYW5kICogNwpTUEMJCQk7OyBzZWxmLWluc2VydC1jb21tYW5kCm5hbWUiCQkJOzsgc2VsZi1p bnNlcnQtY29tbWFuZCAqIDUKLAkJCTs7IGMtZWxlY3RyaWMtc2VtaSZjb21tYQpTUEMJCQk7OyBz ZWxmLWluc2VydC1jb21tYW5kCk5VTEwJCQk7OyBzZWxmLWluc2VydC1jb21tYW5kICogNAp9CQkJ OzsgYy1lbGVjdHJpYy1icmFjZQpDLXAJCQk7OyBwcmV2aW91cy1saW5lCkMtZQkJCTs7IG1vdmUt ZW5kLW9mLWxpbmUKUkVUCQkJOzsgbmV3bGluZQpUQUIJCQk7OyBjLWluZGVudC1saW5lLW9yLXJl Z2lvbgp7CQkJOzsgYy1lbGVjdHJpYy1icmFjZQoiaWQtZmxvd3R5cGUiCQk7OyBzZWxmLWluc2Vy dC1jb21tYW5kICogMTMKLAkJCTs7IGMtZWxlY3RyaWMtc2VtaSZjb21tYQpTUEMJCQk7OyBzZWxm LWluc2VydC1jb21tYW5kClJXU1RfRkwJCQk7OyBzZWxmLWluc2VydC1jb21tYW5kICogNwpNLS8J CQk7OyBkYWJicmV2LWV4cGFuZApfCQkJOzsgc2VsZi1pbnNlcnQtY29tbWFuZApNLS8JCQk7OyBk YWJicmV2LWV4cGFuZApNLURFTAkJCTs7IGJhY2t3YXJkLWtpbGwtd29yZApERUwJCQk7OyBjLWVs ZWN0cmljLWJhY2tzcGFjZQosCQkJOzsgYy1lbGVjdHJpYy1zZW1pJmNvbW1hClNQQwkJCTs7IHNl bGYtaW5zZXJ0LWNvbW1hbmQKImZsb3d0eXBlCQk7OyBzZWxmLWluc2VydC1jb21tYW5kICogOQpT UEMJCQk7OyBzZWxmLWluc2VydC1jb21tYW5kCmludGVnZXIJCQk7OyBzZWxmLWluc2VydC1jb21t YW5kICogNwpTUEMJCQk7OyBzZWxmLWluc2VydC1jb21tYW5kCmlkZQkJCTs7IHNlbGYtaW5zZXJ0 LWNvbW1hbmQgKiAzCk0tLwkJCTs7IGRhYmJyZXYtZXhwYW5kCk0tREVMCQkJOzsgYmFja3dhcmQt a2lsbC13b3JkCmlkZW50aWZpZXIiCQk7OyBzZWxmLWluc2VydC1jb21tYW5kICogMTEKLAkJCTs7 IGMtZWxlY3RyaWMtc2VtaSZjb21tYQpTUEMJCQk7OyBzZWxmLWluc2VydC1jb21tYW5kCk5VTEwJ CQk7OyBzZWxmLWluc2VydC1jb21tYW5kICogNAp9CQkJOzsgYy1lbGVjdHJpYy1icmFjZQosCQkJ OzsgYy1lbGVjdHJpYy1zZW1pJmNvbW1hCkMtbgkJCTs7IG5leHQtbGluZQosCQkJOzsgYy1lbGVj dHJpYy1zZW1pJmNvbW1hClJFVAkJCTs7IG5ld2xpbmUKVEFCCQkJOzsgYy1pbmRlbnQtbGluZS1v ci1yZWdpb24KewkJCTs7IGMtZWxlY3RyaWMtYnJhY2UKImlkLXNlbnNvciIJCTs7IHNlbGYtaW5z ZXJ0LWNvbW1hbmQgKiAxMQosCQkJOzsgYy1lbGVjdHJpYy1zZW1pJmNvbW1hClNQQwkJCTs7IHNl bGYtaW5zZXJ0LWNvbW1hbmQKUlNUX1NFCQkJOzsgc2VsZi1pbnNlcnQtY29tbWFuZCAqIDYKNSpE RUwJCQk7OyBjLWVsZWN0cmljLWJhY2tzcGFjZQpXU1RfU0UJCQk7OyBzZWxmLWluc2VydC1jb21t YW5kICogNgpNLS8JCQk7OyBkYWJicmV2LWV4cGFuZApfCQkJOzsgc2VsZi1pbnNlcnQtY29tbWFu ZApNLS8JCQk7OyBkYWJicmV2LWV4cGFuZApNLURFTAkJCTs7IGJhY2t3YXJkLWtpbGwtd29yZApE RUwJCQk7OyBjLWVsZWN0cmljLWJhY2tzcGFjZQosCQkJOzsgYy1lbGVjdHJpYy1zZW1pJmNvbW1h ClNQQwkJCTs7IHNlbGYtaW5zZXJ0LWNvbW1hbmQKInNlbnNvcgkJCTs7IHNlbGYtaW5zZXJ0LWNv bW1hbmQgKiA3ClNQQwkJCTs7IHNlbGYtaW5zZXJ0LWNvbW1hbmQKaW50ZWdlcgkJCTs7IHNlbGYt aW5zZXJ0LWNvbW1hbmQgKiA3ClNQQwkJCTs7IHNlbGYtaW5zZXJ0LWNvbW1hbmQKaWRlbnQJCQk7 OyBzZWxmLWluc2VydC1jb21tYW5kICogNQpNLS8JCQk7OyBkYWJicmV2LWV4cGFuZAoiCQkJOzsg c2VsZi1pbnNlcnQtY29tbWFuZAosCQkJOzsgYy1lbGVjdHJpYy1zZW1pJmNvbW1hCi4JCQk7OyBz ZWxmLWluc2VydC1jb21tYW5kCkRFTAkJCTs7IGMtZWxlY3RyaWMtYmFja3NwYWNlClNQQwkJCTs7 IHNlbGYtaW5zZXJ0LWNvbW1hbmQKTlVMTAkJCTs7IHNlbGYtaW5zZXJ0LWNvbW1hbmQgKiA0Cn0J CQk7OyBjLWVsZWN0cmljLWJyYWNlCiwJCQk7OyBjLWVsZWN0cmljLXNlbWkmY29tbWEKUkVUCQkJ OzsgbmV3bGluZQpUQUIJCQk7OyBjLWluZGVudC1saW5lLW9yLXJlZ2lvbgp7CQkJOzsgYy1lbGVj dHJpYy1icmFjZQoiZGV4ZnJpYgkJOzsgc2VsZi1pbnNlcnQtY29tbWFuZCAqIDgKNSpERUwJCQk7 OyBjLWVsZWN0cmljLWJhY2tzcGFjZQpzY3JpYmUtc2Vucm8JCTs7IHNlbGYtaW5zZXJ0LWNvbW1h bmQgKiAxMgoyKkRFTAkJCTs7IGMtZWxlY3RyaWMtYmFja3NwYWNlCm9yIgkJCTs7IHNlbGYtaW5z ZXJ0LWNvbW1hbmQgKiAzCiwJCQk7OyBjLWVsZWN0cmljLXNlbWkmY29tbWEKU1BDCQkJOzsgc2Vs Zi1pbnNlcnQtY29tbWFuZApSV1NUX1NFCQkJOzsgc2VsZi1pbnNlcnQtY29tbWFuZCAqIDcKTS0v CQkJOzsgZGFiYnJldi1leHBhbmQKTS1ERUwJCQk7OyBiYWNrd2FyZC1raWxsLXdvcmQKRAkJCTs7 IHNlbGYtaW5zZXJ0LWNvbW1hbmQKTS0vCQkJOzsgZGFiYnJldi1leHBhbmQKLAkJCTs7IGMtZWxl Y3RyaWMtc2VtaSZjb21tYQpTUEMJCQk7OyBzZWxmLWluc2VydC1jb21tYW5kCiJzZW5zb3IJCQk7 OyBzZWxmLWluc2VydC1jb21tYW5kICogNwpTUEMJCQk7OyBzZWxmLWluc2VydC1jb21tYW5kCmRl c2MJCQk7OyBzZWxmLWluc2VydC1jb21tYW5kICogNApNLS8JCQk7OyBkYWJicmV2LWV4cGFuZAoz KkRFTAkJCTs7IGMtZWxlY3RyaWMtYmFja3NwYWNlCmlwdGlvbiIJCQk7OyBzZWxmLWluc2VydC1j b21tYW5kICogNwosCQkJOzsgYy1lbGVjdHJpYy1zZW1pJmNvbW1hClNQQwkJCTs7IHNlbGYtaW5z ZXJ0LWNvbW1hbmQKTlVMTAkJCTs7IHNlbGYtaW5zZXJ0LWNvbW1hbmQgKiA0Cn0JCQk7OyBjLWVs ZWN0cmljLWJyYWNlCiwJCQk7OyBjLWVsZWN0cmljLXNlbWkmY29tbWEKUkVUCQkJOzsgbmV3bGlu ZQpUQUIJCQk7OyBjLWluZGVudC1saW5lLW9yLXJlZ2lvbgp7CQkJOzsgYy1lbGVjdHJpYy1icmFj ZQoiZGVmYXVsdC1jbGFzcyIJCTs7IHNlbGYtaW5zZXJ0LWNvbW1hbmQgKiAxNQosCQkJOzsgYy1l bGVjdHJpYy1zZW1pJmNvbW1hClNQQwkJCTs7IHNlbGYtaW5zZXJ0LWNvbW1hbmQKUldTVF9EUkYJ CTs7IHNlbGYtaW5zZXJ0LWNvbW1hbmQgKiA4CjIqREVMCQkJOzsgYy1lbGVjdHJpYy1iYWNrc3Bh Y2UKRURGCQkJOzsgc2VsZi1pbnNlcnQtY29tbWFuZCAqIDMKMipERUwJCQk7OyBjLWVsZWN0cmlj LWJhY2tzcGFjZQpGCQkJOzsgc2VsZi1pbnNlcnQtY29tbWFuZApNLS8JCQk7OyBkYWJicmV2LWV4 cGFuZAoyKk0tREVMCQkJOzsgYmFja3dhcmQta2lsbC13b3JkCkMJCQk7OyBzZWxmLWluc2VydC1j b21tYW5kCk0tLwkJCTs7IGRhYmJyZXYtZXhwYW5kCk0tREVMCQkJOzsgYmFja3dhcmQta2lsbC13 b3JkCkRFTAkJCTs7IGMtZWxlY3RyaWMtYmFja3NwYWNlCiwJCQk7OyBjLWVsZWN0cmljLXNlbWkm Y29tbWEKU1BDCQkJOzsgc2VsZi1pbnNlcnQtY29tbWFuZAoiZGVmYXVsdAkJOzsgc2VsZi1pbnNl cnQtY29tbWFuZCAqIDgKU1BDCQkJOzsgc2VsZi1pbnNlcnQtY29tbWFuZApjbGFzcwkJCTs7IHNl bGYtaW5zZXJ0LWNvbW1hbmQgKiA1ClNQQwkJCTs7IHNlbGYtaW5zZXJ0LWNvbW1hbmQKbmFtZSIJ CQk7OyBzZWxmLWluc2VydC1jb21tYW5kICogNQosCQkJOzsgYy1lbGVjdHJpYy1zZW1pJmNvbW1h ClNQQwkJCTs7IHNlbGYtaW5zZXJ0LWNvbW1hbmQKTlVMTAkJCTs7IHNlbGYtaW5zZXJ0LWNvbW1h bmQgKiA0Cn0JCQk7OyBjLWVsZWN0cmljLWJyYWNlCiwJCQk7OyBjLWVsZWN0cmljLXNlbWkmY29t bWEKUkVUCQkJOzsgbmV3bGluZQpUQUIJCQk7OyBjLWluZGVudC1saW5lLW9yLXJlZ2lvbgp7CQkJ OzsgYy1lbGVjdHJpYy1icmFjZQoiZGVmYXVsdC10eXBlIgkJOzsgc2VsZi1pbnNlcnQtY29tbWFu ZCAqIDE0CiwJCQk7OyBjLWVsZWN0cmljLXNlbWkmY29tbWEKU1BDCQkJOzsgc2VsZi1pbnNlcnQt Y29tbWFuZApSV1NUX0RFCQkJOzsgc2VsZi1pbnNlcnQtY29tbWFuZCAqIDcKMipNLS8JCQk7OyBk YWJicmV2LWV4cGFuZApNLURFTAkJCTs7IGJhY2t3YXJkLWtpbGwtd29yZApERUwJCQk7OyBjLWVs ZWN0cmljLWJhY2tzcGFjZQosCQkJOzsgYy1lbGVjdHJpYy1zZW1pJmNvbW1hClNQQwkJCTs7IHNl bGYtaW5zZXJ0LWNvbW1hbmQKImRlZmF1bHQJCTs7IHNlbGYtaW5zZXJ0LWNvbW1hbmQgKiA4ClNQ QwkJCTs7IHNlbGYtaW5zZXJ0LWNvbW1hbmQKdHlwZQkJCTs7IHNlbGYtaW5zZXJ0LWNvbW1hbmQg KiA0ClNQQwkJCTs7IHNlbGYtaW5zZXJ0LWNvbW1hbmQKbmFtZSIJCQk7OyBzZWxmLWluc2VydC1j b21tYW5kICogNQosCQkJOzsgYy1lbGVjdHJpYy1zZW1pJmNvbW1hClNQQwkJCTs7IHNlbGYtaW5z ZXJ0LWNvbW1hbmQKTlVMTAkJCTs7IHNlbGYtaW5zZXJ0LWNvbW1hbmQgKiA0Cn0JCQk7OyBjLWVs ZWN0cmljLWJyYWNlCiwJCQk7OyBjLWVsZWN0cmljLXNlbWkmY29tbWEKUkVUCQkJOzsgbmV3bGlu ZQpUQUIJCQk7OyBjLWluZGVudC1saW5lLW9yLXJlZ2lvbgp7CQkJOzsgYy1lbGVjdHJpYy1icmFj ZQoibWFyay1kZWZhdWx0cyIJCTs7IHNlbGYtaW5zZXJ0LWNvbW1hbmQgKiAxNQosCQkJOzsgYy1l bGVjdHJpYy1zZW1pJmNvbW1hClNQQwkJCTs7IHNlbGYtaW5zZXJ0LWNvbW1hbmQKUldTXwkJCTs7 IHNlbGYtaW5zZXJ0LWNvbW1hbmQgKiA0CkRFTAkJCTs7IGMtZWxlY3RyaWMtYmFja3NwYWNlClRf TUEJCQk7OyBzZWxmLWluc2VydC1jb21tYW5kICogNApNLS8JCQk7OyBkYWJicmV2LWV4cGFuZAos CQkJOzsgYy1lbGVjdHJpYy1zZW1pJmNvbW1hClNQQwkJCTs7IHNlbGYtaW5zZXJ0LWNvbW1hbmQK REVMCQkJOzsgYy1lbGVjdHJpYy1iYWNrc3BhY2UKUkVUCQkJOzsgbmV3bGluZQpUQUIJCQk7OyBj LWluZGVudC1saW5lLW9yLXJlZ2lvbgoiJysnCQkJOzsgc2VsZi1pbnNlcnQtY29tbWFuZCAqIDQK U1BDCQkJOzsgc2VsZi1pbnNlcnQtY29tbWFuZApmb3IJCQk7OyBzZWxmLWluc2VydC1jb21tYW5k ICogMwpTUEMJCQk7OyBzZWxmLWluc2VydC1jb21tYW5kCmRlZmF1bHQJCQk7OyBzZWxmLWluc2Vy dC1jb21tYW5kICogNwpTUEMJCQk7OyBzZWxmLWluc2VydC1jb21tYW5kCmNsYXNzZXMJCQk7OyBz ZWxmLWluc2VydC1jb21tYW5kICogNwosCQkJOzsgYy1lbGVjdHJpYy1zZW1pJmNvbW1hClNQQwkJ CTs7IHNlbGYtaW5zZXJ0LWNvbW1hbmQKJwkJCTs7IHNlbGYtaW5zZXJ0LWNvbW1hbmQKKgkJCTs7 IGMtZWxlY3RyaWMtc3RhcgonCQkJOzsgc2VsZi1pbnNlcnQtY29tbWFuZApTUEMJCQk7OyBzZWxm LWluc2VydC1jb21tYW5kCmZvcgkJCTs7IHNlbGYtaW5zZXJ0LWNvbW1hbmQgKiAzClNQQwkJCTs7 IHNlbGYtaW5zZXJ0LWNvbW1hbmQKdHlwZXMiCQkJOzsgc2VsZi1pbnNlcnQtY29tbWFuZCAqIDYK LAkJCTs7IGMtZWxlY3RyaWMtc2VtaSZjb21tYQpTUEMJCQk7OyBzZWxmLWluc2VydC1jb21tYW5k Ck4gVSBMCQkJOzsgc2VsZi1pbnNlcnQtY29tbWFuZCAqIDMKOgkJCTs7IGMtZWxlY3RyaWMtY29s b24KREVMCQkJOzsgYy1lbGVjdHJpYy1iYWNrc3BhY2UKTAkJCTs7IHNlbGYtaW5zZXJ0LWNvbW1h bmQKfQkJCTs7IGMtZWxlY3RyaWMtYnJhY2UKLAkJCTs7IGMtZWxlY3RyaWMtc2VtaSZjb21tYQpS RVQJCQk7OyBuZXdsaW5lClRBQgkJCTs7IGMtaW5kZW50LWxpbmUtb3ItcmVnaW9uCnsJCQk7OyBj LWVsZWN0cmljLWJyYWNlCiJjbGFzcwkJCTs7IHNlbGYtaW5zZXJ0LWNvbW1hbmQgKiA2CjoJCQk7 OyBjLWVsZWN0cmljLWNvbG9uCmxpc3QiCQkJOzsgc2VsZi1pbnNlcnQtY29tbWFuZCAqIDUKLAkJ CTs7IGMtZWxlY3RyaWMtc2VtaSZjb21tYQpTUEMJCQk7OyBzZWxmLWluc2VydC1jb21tYW5kClJT VAkJCTs7IHNlbGYtaW5zZXJ0LWNvbW1hbmQgKiAzCkRFTAkJCTs7IGMtZWxlY3RyaWMtYmFja3Nw YWNlCjxTLWJhY2tzcGFjZT4KV1NUX0NMQQkJCTs7IHNlbGYtaW5zZXJ0LWNvbW1hbmQgKiA3CjIq TS0vCQkJOzsgZGFiYnJldi1leHBhbmQKLAkJCTs7IGMtZWxlY3RyaWMtc2VtaSZjb21tYQpTUEMJ CQk7OyBzZWxmLWluc2VydC1jb21tYW5kCiJsaXN0CQkJOzsgc2VsZi1pbnNlcnQtY29tbWFuZCAq IDUKU1BDCQkJOzsgc2VsZi1pbnNlcnQtY29tbWFuZApvZgkJCTs7IHNlbGYtaW5zZXJ0LWNvbW1h bmQgKiAyClNQQwkJCTs7IHNlbGYtaW5zZXJ0LWNvbW1hbmQKY2xhc3MJCQk7OyBzZWxmLWluc2Vy dC1jb21tYW5kICogNQpTUEMJCQk7OyBzZWxmLWluc2VydC1jb21tYW5kCm5hbWVzIgkJCTs7IHNl bGYtaW5zZXJ0LWNvbW1hbmQgKiA2CiwJCQk7OyBjLWVsZWN0cmljLXNlbWkmY29tbWEKU1BDCQkJ Ozsgc2VsZi1pbnNlcnQtY29tbWFuZApOVUxMCQkJOzsgc2VsZi1pbnNlcnQtY29tbWFuZCAqIDQK fQkJCTs7IGMtZWxlY3RyaWMtYnJhY2UKLAkJCTs7IGMtZWxlY3RyaWMtc2VtaSZjb21tYQpSRVQJ CQk7OyBuZXdsaW5lClRBQgkJCTs7IGMtaW5kZW50LWxpbmUtb3ItcmVnaW9uCnsJCQk7OyBjLWVs ZWN0cmljLWJyYWNlCiJ0eXBlCQkJOzsgc2VsZi1pbnNlcnQtY29tbWFuZCAqIDUKOgkJCTs7IGMt ZWxlY3RyaWMtY29sb24KbGlzdCIJCQk7OyBzZWxmLWluc2VydC1jb21tYW5kICogNQosCQkJOzsg Yy1lbGVjdHJpYy1zZW1pJmNvbW1hClNQQwkJCTs7IHNlbGYtaW5zZXJ0LWNvbW1hbmQKUldTVF9U WQkJCTs7IHNlbGYtaW5zZXJ0LWNvbW1hbmQgKiA3Ck0tLwkJCTs7IGRhYmJyZXYtZXhwYW5kCl9M CQkJOzsgc2VsZi1pbnNlcnQtY29tbWFuZCAqIDIKTS0vCQkJOzsgZGFiYnJldi1leHBhbmQKLAkJ CTs7IGMtZWxlY3RyaWMtc2VtaSZjb21tYQpTUEMJCQk7OyBzZWxmLWluc2VydC1jb21tYW5kCiJs aXN0CQkJOzsgc2VsZi1pbnNlcnQtY29tbWFuZCAqIDUKU1BDCQkJOzsgc2VsZi1pbnNlcnQtY29t bWFuZApvZgkJCTs7IHNlbGYtaW5zZXJ0LWNvbW1hbmQgKiAyClNQQwkJCTs7IHNlbGYtaW5zZXJ0 LWNvbW1hbmQKdHlwZQkJCTs7IHNlbGYtaW5zZXJ0LWNvbW1hbmQgKiA0ClNQQwkJCTs7IHNlbGYt aW5zZXJ0LWNvbW1hbmQKbmFtZXMiCQkJOzsgc2VsZi1pbnNlcnQtY29tbWFuZCAqIDYKLAkJCTs7 IGMtZWxlY3RyaWMtc2VtaSZjb21tYQpTUEMJCQk7OyBzZWxmLWluc2VydC1jb21tYW5kCk5VTEwJ CQk7OyBzZWxmLWluc2VydC1jb21tYW5kICogNAp9CQkJOzsgYy1lbGVjdHJpYy1icmFjZQosCQkJ OzsgYy1lbGVjdHJpYy1zZW1pJmNvbW1hClJFVAkJCTs7IG5ld2xpbmUKVEFCCQkJOzsgYy1pbmRl bnQtbGluZS1vci1yZWdpb24KewkJCTs7IGMtZWxlY3RyaWMtYnJhY2UKImZsb3d0eXBlCQk7OyBz ZWxmLWluc2VydC1jb21tYW5kICogOQo6CQkJOzsgYy1lbGVjdHJpYy1jb2xvbgpsaXN0IgkJCTs7 IHNlbGYtaW5zZXJ0LWNvbW1hbmQgKiA1CiwJCQk7OyBjLWVsZWN0cmljLXNlbWkmY29tbWEKU1BD CQkJOzsgc2VsZi1pbnNlcnQtY29tbWFuZApSRVNUX0ZMCQkJOzsgc2VsZi1pbnNlcnQtY29tbWFu ZCAqIDcKREVMCQkJOzsgYy1lbGVjdHJpYy1iYWNrc3BhY2UKMipNLURFTAkJCTs7IGJhY2t3YXJk LWtpbGwtd29yZApSV1NUX0ZMCQkJOzsgc2VsZi1pbnNlcnQtY29tbWFuZCAqIDcKTS0vCQkJOzsg ZGFiYnJldi1leHBhbmQKTS1ERUwJCQk7OyBiYWNrd2FyZC1raWxsLXdvcmQKTS1sCQkJOzsgZG93 bmNhc2Utd29yZAo0KkMtcAkJCTs7IHByZXZpb3VzLWxpbmUKQy1lCQkJOzsgbW92ZS1lbmQtb2Yt bGluZQpMCQkJOzsgc2VsZi1pbnNlcnQtY29tbWFuZApNLS8JCQk7OyBkYWJicmV2LWV4cGFuZAos CQkJOzsgYy1lbGVjdHJpYy1zZW1pJmNvbW1hClNQQwkJCTs7IHNlbGYtaW5zZXJ0LWNvbW1hbmQK Imxpc3QJCQk7OyBzZWxmLWluc2VydC1jb21tYW5kICogNQpTUEMJCQk7OyBzZWxmLWluc2VydC1j b21tYW5kCm9mCQkJOzsgc2VsZi1pbnNlcnQtY29tbWFuZCAqIDIKU1BDCQkJOzsgc2VsZi1pbnNl cnQtY29tbWFuZApmbG93dHlwZQkJOzsgc2VsZi1pbnNlcnQtY29tbWFuZCAqIDgKU1BDCQkJOzsg c2VsZi1pbnNlcnQtY29tbWFuZApuYW1lcyIJCQk7OyBzZWxmLWluc2VydC1jb21tYW5kICogNgos CQkJOzsgYy1lbGVjdHJpYy1zZW1pJmNvbW1hClNQQwkJCTs7IHNlbGYtaW5zZXJ0LWNvbW1hbmQK TlVMTAkJCTs7IHNlbGYtaW5zZXJ0LWNvbW1hbmQgKiA0Cn0JCQk7OyBjLWVsZWN0cmljLWJyYWNl CiwJCQk7OyBjLWVsZWN0cmljLXNlbWkmY29tbWEKUkVUCQkJOzsgbmV3bGluZQoyKlRBQgkJCTs7 IGMtaW5kZW50LWxpbmUtb3ItcmVnaW9uCg== --=-=-= Content-Type: text/plain Type: C-c C-c You should be back at rwsiteinfo-backup.c. Execute the macro using: C-x e Then type: TAB At this point, you should see the indentation move to just under the `o' in "flowtype:list". This location is incorrect. If you then do the following: M-x set-variable RET c-echo-syntactic-information-p RET t RET TAB you will see that c-mode believes the syntax at that point to be topmost-intro-cont instead of the proper brace-list-entry. When you have solved this bug, please let me know if the solution has a reasonable chance of having solved the other problem that I have not been able to recreate reliably, which is getting "topmost-intro indent 0" instead of "statement indent 4" when in the middle of editing a function. If these have little chance of being connected, I'll do my best to try to create that scenario again (no promises). -- Michael Welsh Duggan (md5i@md5i.com) --=-=-=--