<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>97301</bug_id>
          
          <creation_ts>2012-09-20 23:53:12 -0700</creation_ts>
          <short_desc>AX: Layout tests would be easier to write if AccessibilityController could find an element by id</short_desc>
          <delta_ts>2012-09-22 09:17:43 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dominic Mazzoni">dmazzoni</reporter>
          <assigned_to name="Dominic Mazzoni">dmazzoni</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>cfleizach</cc>
    
    <cc>dglazkov</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>725205</commentid>
    <comment_count>0</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-09-20 23:53:12 -0700</bug_when>
    <thetext>The idea would be to eliminate code like this (that&apos;s brittle and often fails on a different platform):

       var root = accessibilityController.rootElement;
       var table = root.childAtIndex(0).childAtIndex(0);

...and replace it with:

       var root = accessibilityController.accessibleElementById(&apos;table_0&apos;);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725228</commentid>
    <comment_count>1</comment_count>
      <attachid>165068</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-09-21 00:32:32 -0700</bug_when>
    <thetext>Created attachment 165068
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725234</commentid>
    <comment_count>2</comment_count>
      <attachid>165068</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-21 00:45:19 -0700</bug_when>
    <thetext>Comment on attachment 165068
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=165068&amp;action=review

it seems like the overall approach could find the elementById and get a Node back, then return the ax object for that one, so that we don&apos;t have to iterate all the children to find the object

&gt; Tools/DumpRenderTree/chromium/TestRunner/AccessibilityControllerChromium.cpp:106
&gt; +    for (unsigned i = 0; i &lt; obj.childCount(); i++) {

obj.childCount() should be in a variable so you don&apos;t have to call a method each time through the loop

&gt; Tools/DumpRenderTree/chromium/TestRunner/AccessibilityControllerChromium.cpp:187
&gt; +        result-&gt;setNull();

can you set result-&gt;setNull() at the top of the method and then just return right away on the error conditions?
that will make it a tad cleaner and remove the need for brackets

&gt; Tools/DumpRenderTree/mac/AccessibilityControllerMac.mm:43
&gt; +#define END_AX_OBJC_EXCEPTIONS } @catch(NSException *e) { if (![[e name] isEqualToString:NSAccessibilityException]) @throw; }

we should find a way to only define this once since it&apos;s also defined in AXUIElement

&gt; Tools/DumpRenderTree/mac/AccessibilityControllerMac.mm:52
&gt; +{

I believe this method already exists in AccessibilityUIElement... we should probably have it in just one location

&gt; Tools/DumpRenderTree/mac/AccessibilityControllerMac.mm:54
&gt; +        return NULL;

we should return nil for ObjC objects

&gt; Tools/DumpRenderTree/mac/AccessibilityControllerMac.mm:103
&gt; +    NSArray* children = [obj accessibilityAttributeValue:NSAccessibilityChildrenAttribute];

since this is an ObjC object the * should be next to the &quot;children&quot;
http://www.webkit.org/coding/coding-style.html#pointers-non-cpp

same goes for NSString* idAttribute

&gt; Tools/DumpRenderTree/mac/AccessibilityControllerMac.mm:104
&gt; +    for (NSUInteger i = 0; i &lt; [children count]; ++i) {

[children count] should be in a variable so we don&apos;t have to call the method each time through the loop

&gt; Tools/DumpRenderTree/mac/AccessibilityControllerMac.mm:120
&gt; +    else

no need for else here

&gt; Tools/WebKitTestRunner/InjectedBundle/AccessibilityController.h:51
&gt; +    PassRefPtr&lt;AccessibilityUIElement&gt; accessibleElementById(JSStringRef attribute);

attribute should probably be &quot;id&quot;

&gt; Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityControllerMac.mm:61
&gt; +    return [(NSString *)cfString autorelease];

same comments as DRT

&gt; Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityControllerMac.mm:108
&gt; +    return 0;

same comments as DRT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725540</commentid>
    <comment_count>3</comment_count>
      <attachid>165138</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-09-21 08:46:52 -0700</bug_when>
    <thetext>Created attachment 165138
Rebase only, still needs work</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725551</commentid>
    <comment_count>4</comment_count>
      <attachid>165138</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-21 09:03:29 -0700</bug_when>
    <thetext>Comment on attachment 165138
Rebase only, still needs work

Attachment 165138 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13957690</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725600</commentid>
    <comment_count>5</comment_count>
      <attachid>165148</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-09-21 10:05:42 -0700</bug_when>
    <thetext>Created attachment 165148
Feedback addressed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725603</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-21 10:08:19 -0700</bug_when>
    <thetext>Attachment 165148 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/acce...&quot; exit_code: 1
Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityCommonMac.h:43:  Extra space before ( in function call  [whitespace/parens] [4]
Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityCommonMac.h:48:  Extra space before ( in function call  [whitespace/parens] [4]
Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityCommonMac.h:51:  This { should be at the end of the previous line  [whitespace/braces] [4]
Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityCommonMac.h:56:  Extra space before [  [whitespace/braces] [5]
Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityCommonMac.h:60:  This { should be at the end of the previous line  [whitespace/braces] [4]
Tools/DumpRenderTree/mac/AccessibilityCommonMac.h:43:  Extra space before ( in function call  [whitespace/parens] [4]
Tools/DumpRenderTree/mac/AccessibilityCommonMac.h:48:  Extra space before ( in function call  [whitespace/parens] [4]
Tools/DumpRenderTree/mac/AccessibilityCommonMac.h:51:  This { should be at the end of the previous line  [whitespace/braces] [4]
Tools/DumpRenderTree/mac/AccessibilityCommonMac.h:56:  Extra space before [  [whitespace/braces] [5]
Tools/DumpRenderTree/mac/AccessibilityCommonMac.h:60:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 10 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725609</commentid>
    <comment_count>7</comment_count>
      <attachid>165068</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-09-21 10:12:57 -0700</bug_when>
    <thetext>Comment on attachment 165068
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=165068&amp;action=review

&gt; it seems like the overall approach could find the elementById and get a Node back,
&gt; then return the ax object for that one, so that we don&apos;t have to iterate all the
&gt; children to find the object

I thought about that, but I think this approach is better for tests:
* It tests the actual interface for walking the accessibility tree, rather than using a fake shortcut created just for testing
* It ensures anything found is actually reachable from the accessibility root
* Calling accessibleElementById with a nonexistent id is a handy way to touch every element in the accessibility tree once, which would be sufficient to repro a lot of crash bugs. (A few layout tests used to repro crash bugs walk every element in the tree using JS now, this would be far easier.)
* Finally, I don&apos;t think that speed is as important for code that&apos;s only used for testing; the accessibility layout tests are all pretty fast now and exploring the whole tree doesn&apos;t affect their runtime

&gt;&gt; Tools/DumpRenderTree/chromium/TestRunner/AccessibilityControllerChromium.cpp:106
&gt;&gt; +    for (unsigned i = 0; i &lt; obj.childCount(); i++) {
&gt; 
&gt; obj.childCount() should be in a variable so you don&apos;t have to call a method each time through the loop

Done

&gt;&gt; Tools/DumpRenderTree/chromium/TestRunner/AccessibilityControllerChromium.cpp:187
&gt;&gt; +        result-&gt;setNull();
&gt; 
&gt; can you set result-&gt;setNull() at the top of the method and then just return right away on the error conditions?
&gt; that will make it a tad cleaner and remove the need for brackets

Sure, that&apos;s cleaner.

&gt;&gt; Tools/DumpRenderTree/mac/AccessibilityControllerMac.mm:43
&gt;&gt; +#define END_AX_OBJC_EXCEPTIONS } @catch(NSException *e) { if (![[e name] isEqualToString:NSAccessibilityException]) @throw; }
&gt; 
&gt; we should find a way to only define this once since it&apos;s also defined in AXUIElement

Moved to a common header file.

&gt;&gt; Tools/DumpRenderTree/mac/AccessibilityControllerMac.mm:54
&gt;&gt; +        return NULL;
&gt; 
&gt; we should return nil for ObjC objects

Done

&gt;&gt; Tools/DumpRenderTree/mac/AccessibilityControllerMac.mm:103
&gt;&gt; +    NSArray* children = [obj accessibilityAttributeValue:NSAccessibilityChildrenAttribute];
&gt; 
&gt; since this is an ObjC object the * should be next to the &quot;children&quot;
&gt; http://www.webkit.org/coding/coding-style.html#pointers-non-cpp
&gt; 
&gt; same goes for NSString* idAttribute

Done

&gt;&gt; Tools/DumpRenderTree/mac/AccessibilityControllerMac.mm:104
&gt;&gt; +    for (NSUInteger i = 0; i &lt; [children count]; ++i) {
&gt; 
&gt; [children count] should be in a variable so we don&apos;t have to call the method each time through the loop

Done

&gt;&gt; Tools/DumpRenderTree/mac/AccessibilityControllerMac.mm:120
&gt;&gt; +    else
&gt; 
&gt; no need for else here

Done

&gt;&gt; Tools/WebKitTestRunner/InjectedBundle/AccessibilityController.h:51
&gt;&gt; +    PassRefPtr&lt;AccessibilityUIElement&gt; accessibleElementById(JSStringRef attribute);
&gt; 
&gt; attribute should probably be &quot;id&quot;

Named it idAttribute to not conflict with the obj-C type &quot;id&quot;.

&gt;&gt; Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityControllerMac.mm:61
&gt;&gt; +    return [(NSString *)cfString autorelease];
&gt; 
&gt; same comments as DRT

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725610</commentid>
    <comment_count>8</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-09-21 10:13:59 -0700</bug_when>
    <thetext>The style checker doesn&apos;t seem to realize that AccessibilityCommonMac.h is an objective-C file.

Should I name it .hh?

Why don&apos;t other obj-C header files ending in .h have the same problem? Or is there something else I&apos;m missing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725625</commentid>
    <comment_count>9</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-21 10:39:48 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; The style checker doesn&apos;t seem to realize that AccessibilityCommonMac.h is an objective-C file.
&gt; 
&gt; Should I name it .hh?
&gt; 
&gt; Why don&apos;t other obj-C header files ending in .h have the same problem? Or is there something else I&apos;m missing?

Maybe a bug in the style checker? ObjC headers are always .h in all code I&apos;ve ever seen</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725697</commentid>
    <comment_count>10</comment_count>
      <attachid>165148</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-21 12:19:50 -0700</bug_when>
    <thetext>Comment on attachment 165148
Feedback addressed

Attachment 165148 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13951791

New failing tests:
accessibility/aria-hidden-with-elements.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725735</commentid>
    <comment_count>11</comment_count>
      <attachid>165148</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2012-09-21 13:03:38 -0700</bug_when>
    <thetext>Comment on attachment 165148
Feedback addressed

View in context: https://bugs.webkit.org/attachment.cgi?id=165148&amp;action=review

&gt;&gt; Tools/DumpRenderTree/mac/AccessibilityCommonMac.h:43
&gt;&gt; +@interface NSString (JSStringRefAdditions)
&gt; 
&gt; Extra space before ( in function call  [whitespace/parens] [4]

This does seem bogus. Just ignore it — StyleQueue isn&apos;t the final say.

&gt; Tools/DumpRenderTree/mac/AccessibilityCommonMac.h:64
&gt; +@implementation NSString (JSStringRefAdditions)
&gt; +
&gt; ++ (NSString *)stringWithJSStringRef:(JSStringRef)jsStringRef
&gt; +{
&gt; +    if (!jsStringRef)
&gt; +        return nil;
&gt; +
&gt; +    CFStringRef cfString = JSStringCopyCFString(kCFAllocatorDefault, jsStringRef);
&gt; +    return [(NSString *)cfString autorelease];
&gt; +}
&gt; +
&gt; +- (JSStringRef)createJSStringRef
&gt; +{
&gt; +    return JSStringCreateWithCFString((CFStringRef)self);
&gt; +}
&gt; +
&gt; +@end

The @implementation should not be in a .h file. If it was in a .m file it would be fine. I&apos;m surprised this builds.

&gt; Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityCommonMac.h:64
&gt; +@implementation NSString (JSStringRefAdditions)
&gt; +
&gt; ++ (NSString *)stringWithJSStringRef:(JSStringRef)jsStringRef
&gt; +{
&gt; +    if (!jsStringRef)
&gt; +        return nil;
&gt; +
&gt; +    CFStringRef cfString = JSStringCopyCFString(kCFAllocatorDefault, jsStringRef);
&gt; +    return [(NSString *)cfString autorelease];
&gt; +}
&gt; +
&gt; +- (JSStringRef)createJSStringRef
&gt; +{
&gt; +    return JSStringCreateWithCFString((CFStringRef)self);
&gt; +}
&gt; +
&gt; +@end

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725867</commentid>
    <comment_count>12</comment_count>
      <attachid>165205</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-09-21 15:10:17 -0700</bug_when>
    <thetext>Created attachment 165205
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725868</commentid>
    <comment_count>13</comment_count>
      <attachid>165148</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-09-21 15:11:37 -0700</bug_when>
    <thetext>Comment on attachment 165148
Feedback addressed

View in context: https://bugs.webkit.org/attachment.cgi?id=165148&amp;action=review

&gt;&gt;&gt; Tools/DumpRenderTree/mac/AccessibilityCommonMac.h:43
&gt;&gt;&gt; +@interface NSString (JSStringRefAdditions)
&gt;&gt; 
&gt;&gt; Extra space before ( in function call  [whitespace/parens] [4]
&gt; 
&gt; This does seem bogus. Just ignore it — StyleQueue isn&apos;t the final say.

Thanks for taking a look! I&apos;ll ignore it, and now that the impl is in a .mm file, there are no other warnings.

&gt;&gt; Tools/DumpRenderTree/mac/AccessibilityCommonMac.h:64
&gt;&gt; +@end
&gt; 
&gt; The @implementation should not be in a .h file. If it was in a .m file it would be fine. I&apos;m surprised this builds.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725872</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-21 15:14:09 -0700</bug_when>
    <thetext>Attachment 165205 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/acce...&quot; exit_code: 1
Tools/DumpRenderTree/mac/AccessibilityCommonMac.h:42:  Extra space before ( in function call  [whitespace/parens] [4]
Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityCommonMac.h:42:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 24 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725875</commentid>
    <comment_count>15</comment_count>
      <attachid>165205</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-21 15:17:47 -0700</bug_when>
    <thetext>Comment on attachment 165205
Patch

looks good</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725933</commentid>
    <comment_count>16</comment_count>
      <attachid>165205</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-21 16:12:56 -0700</bug_when>
    <thetext>Comment on attachment 165205
Patch

Attachment 165205 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13950806

New failing tests:
WebFilterOperationsTest.saveAndRestore
accessibility/aria-hidden-with-elements.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726062</commentid>
    <comment_count>17</comment_count>
      <attachid>165248</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-09-21 23:41:41 -0700</bug_when>
    <thetext>Created attachment 165248
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726082</commentid>
    <comment_count>18</comment_count>
      <attachid>165248</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-22 00:40:55 -0700</bug_when>
    <thetext>Comment on attachment 165248
Patch for landing

Rejecting attachment 165248 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
rce/patched-yasm --revision 154708 --non-interactive --force --accept theirs-conflict --ignore-externals&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
51&gt;At revision 154708.

________ running &apos;/usr/bin/python tools/clang/scripts/update.py --mac-only&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;

________ running &apos;/usr/bin/python gyp_webkit&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
Updating webkit projects from gyp files...
Total errors found: 0 in 0 files

Full output: http://queues.webkit.org/results/13981413</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726144</commentid>
    <comment_count>19</comment_count>
      <attachid>165263</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-09-22 08:41:28 -0700</bug_when>
    <thetext>Created attachment 165263
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726149</commentid>
    <comment_count>20</comment_count>
      <attachid>165265</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-09-22 08:55:47 -0700</bug_when>
    <thetext>Created attachment 165265
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726152</commentid>
    <comment_count>21</comment_count>
      <attachid>165265</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-22 09:17:39 -0700</bug_when>
    <thetext>Comment on attachment 165265
Patch for landing

Clearing flags on attachment: 165265

Committed r129308: &lt;http://trac.webkit.org/changeset/129308&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726153</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-22 09:17:43 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165068</attachid>
            <date>2012-09-21 00:32:32 -0700</date>
            <delta_ts>2012-09-21 10:12:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97301-20120921003252.patch</filename>
            <type>text/plain</type>
            <size>23564</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4OTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjFmMjJmYjE3ODY2ZDEw
Nzg5MWI2Yzk4MDJjM2U5NGU2N2MyNGJlYS4uYWQwMTM4N2Y5YWUzMWNkMTQ4N2Y2NWMxMmY2ZjUx
N2ZiYjI1MGJiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA5LTIwICBEb21p
bmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFYOiBMYXlvdXQg
dGVzdHMgd291bGQgYmUgZWFzaWVyIHRvIHdyaXRlIGlmIEFjY2Vzc2liaWxpdHlDb250cm9sbGVy
IGNvdWxkIGZpbmQgYW4gZWxlbWVudCBieSBpZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTczMDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgYSBtZXRob2QgdG8gZ2V0IHRoZSBET00gImlkIiBhdHRy
aWJ1dGUgZnJvbSBhbiBhY2Nlc3NpYmxlIG9iamVjdCwgb25seSBmb3IgbGF5b3V0IHRlc3RzLgor
CisgICAgICAgIE1ha2VzIGV4aXN0aW5nIHRlc3QgbW9yZSBjcm9zcy1wbGF0Zm9ybToKKyAgICAg
ICAgVGVzdHM6IGFjY2Vzc2liaWxpdHkvYXJpYS1oaWRkZW4td2l0aC1lbGVtZW50cy5odG1sCisK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ci5tbToKKwogMjAxMi0wOS0xOCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNv
bT4KIAogICAgICAgICBDaGVjayBzZXR0aW5ncyBiZWZvcmUgcmVnaXN0ZXJpbmcgQVZGb3VuZGF0
aW9uIG1lZGlhIGVuZ2luZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0KaW5kZXgg
MjZjN2FhZTI3YWJiZmVkZTcwMGZjZjE2M2I0OWFhY2U2YjZiNGRhYy4uYTQzOTRiYTIwNjA1Nzg0
MjU2YzU2ZDg3MDBkZjI4MzYzY2QwMGMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXIubW0KQEAgLTI0MzAsNiArMjQzMCwxMCBAQCBzdGF0aWMgTlNTdHJpbmcqIHJvbGVWYWx1ZVRv
TlNTdHJpbmcoQWNjZXNzaWJpbGl0eVJvbGUgdmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gQCJu
b3JtYWwiOwogICAgICAgICB9CiAgICAgfQorCisgICAgLy8gVXNlZCBieSBEUlQgdG8gZmluZCBh
biBhY2Nlc3NpYmxlIG5vZGUgYnkgaXRzIGVsZW1lbnQgaWQuCisgICAgaWYgKFthdHRyaWJ1dGVO
YW1lIGlzRXF1YWxUb1N0cmluZzpAIkFYRFJURWxlbWVudElkQXR0cmlidXRlIl0pCisgICAgICAg
IHJldHVybiBtX29iamVjdC0+Z2V0QXR0cmlidXRlKGlkQXR0cik7CiAgICAgCiAgICAgcmV0dXJu
IG5pbDsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCBkNjMxZTQxMDA5ZGFiOGU0ZWFhMzg1MDRlZTk5NmQyYmMzYzE0OTYwLi4xMzVjNDAzNWJm
NmMxMDJjYzdjMDMwNzViNjA5NDc0ZGJmMmYyNGY0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTItMDktMjAgIERv
bWluaWMgTWF6em9uaSAgPGRtYXp6b25pQGdvb2dsZS5jb20+CisKKyAgICAgICAgQVg6IExheW91
dCB0ZXN0cyB3b3VsZCBiZSBlYXNpZXIgdG8gd3JpdGUgaWYgQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIgY291bGQgZmluZCBhbiBlbGVtZW50IGJ5IGlkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzMwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgYSBuZXcgYWNjZXNzaWJsZUVsZW1lbnRCeUlkIG1l
dGhvZCB0byBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlciwgdG8gbWFrZSBpdAorICAgICAgICBlYXNp
ZXIgdG8gd3JpdGUgY3Jvc3MtcGxhdGZvcm0gbGF5b3V0IHRlc3RzLgorCisgICAgICAgIEltcGxl
bWVudGVkIGZvciBDaHJvbWl1bSBhbmQgZm9yIE1hYyAoRFJUIGFuZCBXS1RSKS4KKworICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJD
aHJvbWl1bS5jcHA6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckNocm9taXVtLmg6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvZ3RrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJNYWMubW06CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyV2luLmNwcDoKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5pZGw6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXJNYWMubW06CisKIDIwMTItMDktMTggIEJ5dW5nd29vIExlZSAgPGJ3ODAubGVlQHNhbXN1bmcu
Y29tPgogCiAgICAgICAgIFRpdGxlIHN0cmluZyBzaG91bGQgYmUgY2hhbmdlZCB3aGVuIGRvY3Vt
ZW50LnRpdGxlIGlzIHNldCB0byAnJy4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmNwcAppbmRleCBiMzY3ZDVjNDY5ZDliYTk4ZDI1NWM4ZWRmZWU2
Zjk1ODkzNWMzYjVmLi40OWQ0NTNhODRjZGViY2RiOGEzMjI2YmZkOTJjYzgxMTgyNGE2NTczIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5j
cHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3Bw
CkBAIC05Nyw2ICs5NywxOCBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBnZXRFbGVtZW50QXRQb2ludENh
bGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdQogICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYWtlSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KGNvbnRl
eHQsIGNvbnRyb2xsZXItPmVsZW1lbnRBdFBvaW50KHgsIHkpKTsKIH0KIAorc3RhdGljIEpTVmFs
dWVSZWYgZ2V0QWNjZXNzaWJsZUVsZW1lbnRCeUlkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3Qg
YXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiog
ZXhjZXB0aW9uKQoreworICAgIEpTU3RyaW5nUmVmIGlkQXR0cmlidXRlID0gMDsKKyAgICBpZiAo
YXJndW1lbnRDb3VudCA9PSAxKQorICAgICAgICBpZEF0dHJpYnV0ZSA9IEpTVmFsdWVUb1N0cmlu
Z0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pOyAgICAKKyAgICBBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlD
b250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBKU1ZhbHVl
UmVmIHJlc3VsdCA9IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1ha2VKU0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnQoY29udGV4dCwgY29udHJvbGxlci0+YWNjZXNzaWJsZUVsZW1lbnRCeUlkKGlkQXR0
cmlidXRlKSk7CisgICAgaWYgKGlkQXR0cmlidXRlKQorICAgICAgICBKU1N0cmluZ1JlbGVhc2Uo
aWRBdHRyaWJ1dGUpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVm
IGFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1l
bnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKQogewogICAgIGlmIChhcmd1bWVudENvdW50ICE9IDEpCkBAIC0xMjMsNiArMTM1LDcgQEAg
SlNDbGFzc1JlZiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6Z2V0SlNDbGFzcygpCiAgICAgICAg
IHsgImxvZ1Njcm9sbGluZ1N0YXJ0RXZlbnRzIiwgbG9nU2Nyb2xsaW5nU3RhcnRFdmVudHNDYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LAogICAgICAgICB7ICJsb2dBY2Nlc3NpYmlsaXR5RXZlbnRzIiwgbG9nQWNj
ZXNzaWJpbGl0eUV2ZW50c0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwg
a0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImVsZW1lbnRBdFBv
aW50IiwgZ2V0RWxlbWVudEF0UG9pbnRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJhY2Nl
c3NpYmxlRWxlbWVudEJ5SWQiLCBnZXRBY2Nlc3NpYmxlRWxlbWVudEJ5SWRDYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAogICAgICAgICB7ICJhZGROb3RpZmljYXRpb25MaXN0ZW5lciIsIGFkZE5vdGlmaWNhdGlv
bkxpc3RlbmVyQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAicmVtb3ZlTm90aWZpY2F0aW9u
TGlzdGVuZXIiLCByZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lckNhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAg
ICAgICAgIHsgMCwgMCwgMCB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuaAppbmRleCAxZDUyMzUzY2Q2Y2E3NzQwMTdiYTA0YTVmNzBhYWZjMmY1MzYy
NDNjLi5hNmNkYzQ2ODZjMTMyZmY1ODZkNTgyZmU1MWEwNzY4ZWU3MmMwMTAwIDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgKQEAgLTQ2LDYgKzQ2
LDcgQEAgcHVibGljOgogICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgcm9vdEVsZW1lbnQoKTsK
ICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IGZvY3VzZWRFbGVtZW50KCk7CiAgICAgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudCBlbGVtZW50QXRQb2ludChpbnQgeCwgaW50IHkpOworICAgIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKEpTU3RyaW5nUmVmIGlkKTsK
IAogICAgIHZvaWQgc2V0TG9nRm9jdXNFdmVudHMoYm9vbCk7CiAgICAgdm9pZCBzZXRMb2dWYWx1
ZUNoYW5nZUV2ZW50cyhib29sKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJDaHJvbWl1bS5jcHAgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL0FjY2Vzc2liaWxpdHlDb250
cm9sbGVyQ2hyb21pdW0uY3BwCmluZGV4IGIxZDI5NDhhZWJhYjMyOTgyNDkyNzU0NTgyNDU4MzA3
MzE0YmNkZWQuLjYxODczYjZhMzI3MGE4M2M3YTA2MmE0NDZiMWE3NGY1MmIwZmFmN2YgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXJDaHJvbWl1bS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckNocm9taXVtLmNwcApAQCAt
MzIsOSArMzIsMTEgQEAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5Q29udHJvbGxlckNocm9taXVt
LmgiCiAKICNpbmNsdWRlICJXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCisjaW5jbHVkZSAiV2Vi
RWxlbWVudC5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCisjaW5jbHVkZSAiV2ViTm9kZS5oIgog
I2luY2x1ZGUgIldlYlZpZXcuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKKyNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJDU3RyaW5nLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7
CiAKQEAgLTQ5LDYgKzUxLDggQEAgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OkFjY2Vzc2liaWxp
dHlDb250cm9sbGVyKCkKICAgICBiaW5kUHJvcGVydHkoImZvY3VzZWRFbGVtZW50IiwgJkFjY2Vz
c2liaWxpdHlDb250cm9sbGVyOjpmb2N1c2VkRWxlbWVudEdldHRlckNhbGxiYWNrKTsKICAgICBi
aW5kUHJvcGVydHkoInJvb3RFbGVtZW50IiwgJkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpyb290
RWxlbWVudEdldHRlckNhbGxiYWNrKTsKIAorICAgIGJpbmRNZXRob2QoImFjY2Vzc2libGVFbGVt
ZW50QnlJZCIsICZBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6YWNjZXNzaWJsZUVsZW1lbnRCeUlk
R2V0dGVyQ2FsbGJhY2spOworCiAgICAgYmluZEZhbGxiYWNrTWV0aG9kKCZBY2Nlc3NpYmlsaXR5
Q29udHJvbGxlcjo6ZmFsbGJhY2tDYWxsYmFjayk7CiB9CiAKQEAgLTg2LDYgKzkwLDM1IEBAIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQqIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpnZXRSb290RWxl
bWVudCgpCiAgICAgcmV0dXJuIG1fZWxlbWVudHMuY3JlYXRlUm9vdChtX3Jvb3RFbGVtZW50KTsK
IH0KIAorQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmZp
bmRBY2Nlc3NpYmxlRWxlbWVudEJ5SWRSZWN1cnNpdmUoY29uc3QgV2ViQWNjZXNzaWJpbGl0eU9i
amVjdCYgb2JqLCBjb25zdCBXZWJTdHJpbmcmIGlkKQoreworICAgIGlmIChvYmouaXNOdWxsKCkg
fHwgb2JqLmlzRGV0YWNoZWQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBXZWJOb2RlIG5v
ZGUgPSBvYmoubm9kZSgpOworICAgIGlmICghbm9kZS5pc051bGwoKSAmJiBub2RlLmlzRWxlbWVu
dE5vZGUoKSkgeworICAgICAgICBXZWJFbGVtZW50IGVsZW1lbnQgPSBub2RlLnRvPFdlYkVsZW1l
bnQ+KCk7CisgICAgICAgIGVsZW1lbnQuZ2V0QXR0cmlidXRlKCJpZCIpOworICAgICAgICBpZiAo
ZWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikgPT0gaWQpIAorICAgICAgICAgICAgcmV0dXJuIG1f
ZWxlbWVudHMuZ2V0T3JDcmVhdGUob2JqKTsKKyAgICB9CisKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgb2JqLmNoaWxkQ291bnQoKTsgaSsrKSB7CisgICAgICAgIGlmIChBY2Nlc3NpYmls
aXR5VUlFbGVtZW50KiByZXN1bHQgPSBmaW5kQWNjZXNzaWJsZUVsZW1lbnRCeUlkUmVjdXJzaXZl
KG9iai5jaGlsZEF0KGkpLCBpZCkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0K
KworICAgIHJldHVybiAwOworfQorCitBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBBY2Nlc3NpYmls
aXR5Q29udHJvbGxlcjo6Z2V0QWNjZXNzaWJsZUVsZW1lbnRCeUlkKGNvbnN0IHN0ZDo6c3RyaW5n
JiBpZCkKK3sKKyAgICBpZiAobV9yb290RWxlbWVudC5pc051bGwoKSkKKyAgICAgICAgbV9yb290
RWxlbWVudCA9IG1fd2ViVmlldy0+YWNjZXNzaWJpbGl0eU9iamVjdCgpOworCisgICAgcmV0dXJu
IGZpbmRBY2Nlc3NpYmxlRWxlbWVudEJ5SWRSZWN1cnNpdmUobV9yb290RWxlbWVudCwgV2ViU3Ry
aW5nOjpmcm9tVVRGOChpZC5jX3N0cigpKSk7Cit9CisKIGJvb2wgQWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXI6OnNob3VsZExvZ0FjY2Vzc2liaWxpdHlFdmVudHMoKQogewogICAgIHJldHVybiBtX2xv
Z0FjY2Vzc2liaWxpdHlFdmVudHM7CkBAIC0xNDEsNiArMTc0LDIzIEBAIHZvaWQgQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXI6OnJvb3RFbGVtZW50R2V0dGVyQ2FsbGJhY2soQ3BwVmFyaWFudCogcmVz
dWx0KQogICAgIHJlc3VsdC0+c2V0KCooZ2V0Um9vdEVsZW1lbnQoKS0+Z2V0QXNDcHBWYXJpYW50
KCkpKTsKIH0KIAordm9pZCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6YWNjZXNzaWJsZUVsZW1l
bnRCeUlkR2V0dGVyQ2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENw
cFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA8IDEgfHwgIWFy
Z3VtZW50c1swXS5pc1N0cmluZygpKSB7CisgICAgICAgIHJlc3VsdC0+c2V0TnVsbCgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgc3RkOjpzdHJpbmcgaWQgPSBhcmd1bWVudHNbMF0u
dG9TdHJpbmcoKTsKKyAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBmb3VuZEVsZW1lbnQgPSBn
ZXRBY2Nlc3NpYmxlRWxlbWVudEJ5SWQoaWQpOworICAgIGlmICghZm91bmRFbGVtZW50KSB7Cisg
ICAgICAgIHJlc3VsdC0+c2V0TnVsbCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
cmVzdWx0LT5zZXQoKihmb3VuZEVsZW1lbnQtPmdldEFzQ3BwVmFyaWFudCgpKSk7Cit9CisKIHZv
aWQgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmZhbGxiYWNrQ2FsbGJhY2soY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIHByaW50ZigiQ09OU09MRSBN
RVNTQUdFOiBKYXZhU2NyaXB0IEVSUk9SOiB1bmtub3duIG1ldGhvZCBjYWxsZWQgb24gIgpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9BY2Nlc3Np
YmlsaXR5Q29udHJvbGxlckNocm9taXVtLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyQ2hyb21pdW0uaAppbmRleCAxMWMw
ODJiM2U4MDhjMWY2MzBlYjg1MTg0ZTZlOGZiM2U4MTZmNDk4Li5mMGY1ZGVlODU2MmQ5NTQxZjAw
Y2YxMDI0ZDg2Y2Y2NjFjNjM3ZDEwIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyQ2hyb21pdW0uaAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL0FjY2Vzc2liaWxpdHlD
b250cm9sbGVyQ2hyb21pdW0uaApAQCAtNTEsNiArNTEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRGb2N1c2VkRWxlbWVudChjb25zdCBXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3QmKTsK
ICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBnZXRGb2N1c2VkRWxlbWVudCgpOwogICAgIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQqIGdldFJvb3RFbGVtZW50KCk7CisgICAgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudCogZ2V0QWNjZXNzaWJsZUVsZW1lbnRCeUlkKGNvbnN0IHN0ZDo6c3RyaW5nJiBp
ZCk7CiAKICAgICBib29sIHNob3VsZExvZ0FjY2Vzc2liaWxpdHlFdmVudHMoKTsKIApAQCAtNzAs
NiArNzEsOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBmb2N1c2VkRWxlbWVudEdldHRlckNhbGxi
YWNrKENwcFZhcmlhbnQqKTsKICAgICB2b2lkIHJvb3RFbGVtZW50R2V0dGVyQ2FsbGJhY2soQ3Bw
VmFyaWFudCopOworICAgIHZvaWQgYWNjZXNzaWJsZUVsZW1lbnRCeUlkR2V0dGVyQ2FsbGJhY2so
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworCisgICAgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudCogZmluZEFjY2Vzc2libGVFbGVtZW50QnlJZFJlY3Vyc2l2ZShjb25zdCBXZWJL
aXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3QmLCBjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgaWQp
OwogCiAgICAgV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0IG1fZm9jdXNlZEVsZW1lbnQ7
CiAgICAgV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0IG1fcm9vdEVsZW1lbnQ7CmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJH
dGsuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVy
R3RrLmNwcAppbmRleCBjZWViOGRmY2JmZmEzOWY1MzVhMzliMGRkY2JlY2IyY2EzNjI1OWIwLi40
NjYxODJiYjMwNWE2Njc2MDgwNmJlZjg0OGQ5NGM3NjIyZjg3NWNlIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJHdGsuY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckd0ay5jcHAK
QEAgLTcwLDYgKzcwLDEyIEBAIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXI6OnJvb3RFbGVtZW50KCkKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dChhY2Nlc3NpYmxlKTsKIH0KIAorQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nlc3NpYmlsaXR5
Q29udHJvbGxlcjo6YWNjZXNzaWJsZUVsZW1lbnRCeUlkKEpTU3RyaW5nUmVmIGlkKQoreworICAg
IC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gMDsKK30KKwogdm9pZCBBY2Nlc3NpYmls
aXR5Q29udHJvbGxlcjo6c2V0TG9nRm9jdXNFdmVudHMoYm9vbCkKIHsKIH0KZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlck1hYy5tbSBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlck1hYy5tbQpp
bmRleCA2ZmMwZGQwNTY1Nzk0ZWY4NDY1NjI2ODgyNzA2MmE1ZGZlMGU1YjI2Li4yMDVlNDY1ZjMz
Y2Y5YTI3NWIwNjAwOGUyNzhlYzU1YjE3NmM3NTNhIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJNYWMubW0KKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1tCkBAIC0zMSwxMCAr
MzEsMzQgQEAKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCIKICNpbXBvcnQgPEFw
cEtpdC9OU0NvbG9yLmg+CiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBv
cnQgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmLmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29y
ZS9KU1N0cmluZ1JlZkNGLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViRnJhbWUuaD4KICNpbXBvcnQg
PFdlYktpdC9XZWJGcmFtZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJIVE1MVmlldy5o
PgogCisvLyBJZiBhbiB1bnN1cHBvcnRlZCBhdHRyaWJ1dGUgaXMgcGFzc2VkIGluLCBpdCB3aWxs
IHJhaXNlIGFuIGFjY2Vzc2liaWxpdHkgZXhjZXB0aW9uLiBUaGVzZSBhcmUgdXN1YWxseSBjYXVn
aHQgYnkgdGhlIEFjY2Vzc2liaWxpdHkgUnVudGltZSB0byBpbmZvcm0KKy8vIHRoZSBBWCBjbGll
bnQgYXBwIG9mIHRoZSBlcnJvci4gSG93ZXZlciwgRFJUIGlzIHRoZSBBWCBjbGllbnQgYXBwLCBz
byBpdCBtdXN0IGNhdGNoIHRoZXNlIGV4Y2VwdGlvbnMuCisjZGVmaW5lIEJFR0lOX0FYX09CSkNf
RVhDRVBUSU9OUyBAdHJ5IHsKKyNkZWZpbmUgRU5EX0FYX09CSkNfRVhDRVBUSU9OUyB9IEBjYXRj
aChOU0V4Y2VwdGlvbiAqZSkgeyBpZiAoIVtbZSBuYW1lXSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nl
c3NpYmlsaXR5RXhjZXB0aW9uXSkgQHRocm93OyB9CisKK0BpbnRlcmZhY2UgTlNTdHJpbmcgKEpT
U3RyaW5nUmVmQWRkaXRpb25zKQorKyAoTlNTdHJpbmcgKilzdHJpbmdXaXRoSlNTdHJpbmdSZWY6
KEpTU3RyaW5nUmVmKWpzU3RyaW5nUmVmOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gTlNTdHJp
bmcgKEpTU3RyaW5nUmVmQWRkaXRpb25zKQorCisrIChOU1N0cmluZyAqKXN0cmluZ1dpdGhKU1N0
cmluZ1JlZjooSlNTdHJpbmdSZWYpanNTdHJpbmdSZWYKK3sKKyAgICBpZiAoIWpzU3RyaW5nUmVm
KQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIENGU3RyaW5nUmVmIGNmU3RyaW5nID0gSlNT
dHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwganNTdHJpbmdSZWYpOworICAg
IHJldHVybiBbKE5TU3RyaW5nICopY2ZTdHJpbmcgYXV0b3JlbGVhc2VdOworfQorCitAZW5kCisK
IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcigpCiB7CiB9
CkBAIC02OCw2ICs5MiwzNSBAQCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlD
b250cm9sbGVyOjpyb290RWxlbWVudCgpCiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQoYWNjZXNzaWJpbGl0eU9iamVjdCk7CiB9CiAKK3N0YXRpYyBpZCBmaW5kQWNjZXNzaWJsZU9i
amVjdEJ5SWQoaWQgb2JqLCBOU1N0cmluZyogaWRBdHRyaWJ1dGUpCit7CisgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCisgICAgaWQgb2JqSWRBdHRyaWJ1dGUgPSBbb2JqIGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpAIkFYRFJURWxlbWVudElkQXR0cmlidXRlIl07CisgICAgaWYgKFtv
YmpJZEF0dHJpYnV0ZSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dICYmIFtvYmpJZEF0
dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6aWRBdHRyaWJ1dGVdKQorICAgICAgICByZXR1cm4gb2Jq
OworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKworICAgIE5TQXJyYXkqIGNoaWxkcmVuID0g
W29iaiBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5B
dHRyaWJ1dGVdOworICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IFtjaGlsZHJlbiBjb3Vu
dF07ICsraSkgeworICAgICAgICBpZCByZXN1bHQgPSBmaW5kQWNjZXNzaWJsZU9iamVjdEJ5SWQo
W2NoaWxkcmVuIG9iamVjdEF0SW5kZXg6aV0sIGlkQXR0cmlidXRlKTsKKyAgICAgICAgaWYgKHJl
c3VsdCkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgcmV0dXJuIDA7
Cit9CisKK0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFj
Y2Vzc2libGVFbGVtZW50QnlJZChKU1N0cmluZ1JlZiBpZEF0dHJpYnV0ZVJlZikKK3sKKyAgICBO
U1N0cmluZyogaWRBdHRyaWJ1dGUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOmlk
QXR0cmlidXRlUmVmXTsKKyAgICBpZCByb290ID0gW1ttYWluRnJhbWUgYWNjZXNzaWJpbGl0eVJv
b3RdIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlQYXJlbnRBdHRy
aWJ1dGVdOworICAgIGlkIHJlc3VsdCA9IGZpbmRBY2Nlc3NpYmxlT2JqZWN0QnlJZChyb290LCBp
ZEF0dHJpYnV0ZSk7CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQocmVzdWx0KTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiAwOworfQorCiB2
b2lkIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpzZXRMb2dGb2N1c0V2ZW50cyhib29sKQogewog
fQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlDb250
cm9sbGVyV2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcldpbi5jcHAKaW5kZXggN2Y5YWE2Y2MyZWU5MjliMmJmOGVhNDE2ZjVkNjViYjA1NmUz
ZWFkMS4uMmViZGY5OWU2NzYxMDA3ZWEzMDI1NDZmYWY0NTY4NWIxMmQ4N2QwNCAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyV2luLmNw
cAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJX
aW4uY3BwCkBAIC02Nyw2ICs2NywxMiBAQCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vzc2li
aWxpdHlDb250cm9sbGVyOjplbGVtZW50QXRQb2ludChpbnQgeCwgaW50IHkpCiAgICAgcmV0dXJu
IDA7CiB9CiAKK0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6
OmFjY2Vzc2libGVFbGVtZW50QnlJZChKU3RyaW5nUmVmIGlkKQoreworICAgIC8vIEZJWE1FOiBp
bXBsZW1lbnQKKyAgICByZXR1cm4gMDsKK30KKwogQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcjo6Zm9jdXNlZEVsZW1lbnQoKQogewogICAgIENPTVB0cjxJQWNj
ZXNzaWJsZT4gcm9vdEFjY2Vzc2libGUgPSByb290RWxlbWVudCgpLnBsYXRmb3JtVUlFbGVtZW50
KCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Fj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwCmluZGV4IDJjZDMwNDlmZTE1Nzk1
Nzc2YWJkMTMyMjBiMmUyYWEwZWRjZmY3NWQuLmM2ZjdkNzVjYzNiNzlkMDZjMGMyY2M2MmU4OWZi
OWE0MDg5YTEyZDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwCkBAIC0xMDYs
NiArMTA2LDcgQEAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmls
aXR5Q29udHJvbGxlcjo6ZWxlbWVudEF0UG9pbnQoaW50IHgKICNpZiAhUExBVEZPUk0oTUFDKQog
Ym9vbCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6YWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoSlNW
YWx1ZVJlZikgeyByZXR1cm4gZmFsc2U7IH0KIGJvb2wgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6
OnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCkgeyByZXR1cm4gZmFsc2U7IH0KK1Bhc3NSZWZQ
dHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFjY2Vz
c2libGVFbGVtZW50QnlJZChKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpIHsgcmV0dXJuIDA7IH0KICNl
bmRpZgogCiAjaWYgIVBMQVRGT1JNKEdUSykKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaApp
bmRleCAzYzg3Y2FjNWQ1YzZhOWM0MDYyMDdiMzdiNmFlMzczYWU0ZDNiNzc5Li44MzExNGQ0YjBl
MzFkOWIyN2I2MGI3ZGQ0NTAzZThmYTA4OTUzNDRkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5oCkBAIC00OCw2ICs0OCw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ+IHJvb3RFbGVtZW50KCk7CiAgICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50PiBmb2N1c2VkRWxlbWVudCgpOwogICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4gZWxlbWVudEF0UG9pbnQoaW50IHgsIGludCB5KTsKKyAgICBQYXNzUmVm
UHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGFjY2Vzc2libGVFbGVtZW50QnlJZChKU1N0cmlu
Z1JlZiBhdHRyaWJ1dGUpOwogCiAgICAgYm9vbCBhZGROb3RpZmljYXRpb25MaXN0ZW5lcihKU1Zh
bHVlUmVmIGZ1bmN0aW9uQ2FsbGJhY2spOwogICAgIGJvb2wgcmVtb3ZlTm90aWZpY2F0aW9uTGlz
dGVuZXIoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5p
ZGwKaW5kZXggMmRmOGMyNzlmOWJkODg5NjEyNjdhNmIwY2M0MGIwYWJjZjExNDhkOS4uYmQwNWYx
MzM0MzA4NWY4OTg0NGE5ZWMxOTI1MWY0MWVjMTAxOWQ1MyAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5k
aW5ncy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5pZGwKQEAgLTI5LDYgKzI5LDcgQEAgbW9kdWxl
IFdUUiB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
IHJvb3RFbGVtZW50OwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudCBmb2N1c2VkRWxlbWVudDsKICAgICAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBl
bGVtZW50QXRQb2ludChpbiBpbnQgeCwgaW4gaW50IHkpOworICAgICAgICBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50IGFjY2Vzc2libGVFbGVtZW50QnlJZChpbiBET01TdHJpbmcgaWQpOwogICAgICAg
ICAKICAgICAgICAgYm9vbGVhbiBhZGROb3RpZmljYXRpb25MaXN0ZW5lcihpbiBvYmplY3QgZnVu
Y3Rpb25DYWxsYmFjayk7CiAgICAgICAgIGJvb2xlYW4gcmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVu
ZXIoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
bWFjL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJNYWMubW0KaW5kZXgg
ODYzZTc0MDdlYjIwMTk1Y2I3NDllZWZkNzViOTQ0NzNhOWRhMWQ3ZC4uMzZiYzM5MTE1Y2RhODEx
M2IyNTQ0YThmMTE5NWQ2ZTUxYWE0NDA2MyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJNYWMubW0KKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXJNYWMubW0KQEAgLTMxLDYgKzMxLDM3IEBACiAjaW1wb3J0ICJjb25maWcuaCIK
ICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmls
aXR5Tm90aWZpY2F0aW9uSGFuZGxlci5oIgorI2ltcG9ydCAiSW5qZWN0ZWRCdW5kbGUuaCIKKyNp
bXBvcnQgIkluamVjdGVkQnVuZGxlUGFnZS5oIgorCisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9K
U1JldGFpblB0ci5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWYuaD4KKyNp
bXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmQ0YuaD4KKyNpbXBvcnQgPFdlYktpdDIv
V0tCdW5kbGUuaD4KKyNpbXBvcnQgPFdlYktpdDIvV0tCdW5kbGVQYWdlLmg+CisjaW1wb3J0IDxX
ZWJLaXQyL1dLQnVuZGxlUGFnZVByaXZhdGUuaD4KKworLy8gSWYgYW4gdW5zdXBwb3J0ZWQgYXR0
cmlidXRlIGlzIHBhc3NlZCBpbiwgaXQgd2lsbCByYWlzZSBhbiBhY2Nlc3NpYmlsaXR5IGV4Y2Vw
dGlvbi4gVGhlc2UgYXJlIHVzdWFsbHkgY2F1Z2h0IGJ5IHRoZSBBY2Nlc3NpYmlsaXR5IFJ1bnRp
bWUgdG8gaW5mb3JtCisvLyB0aGUgQVggY2xpZW50IGFwcCBvZiB0aGUgZXJyb3IuIEhvd2V2ZXIs
IERSVCBpcyB0aGUgQVggY2xpZW50IGFwcCwgc28gaXQgbXVzdCBjYXRjaCB0aGVzZSBleGNlcHRp
b25zLgorI2RlZmluZSBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMgQHRyeSB7CisjZGVmaW5lIEVO
RF9BWF9PQkpDX0VYQ0VQVElPTlMgfSBAY2F0Y2goTlNFeGNlcHRpb24gKmUpIHsgaWYgKCFbW2Ug
bmFtZV0gaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUV4Y2VwdGlvbl0pIEB0aHJvdzsg
fQorCitAaW50ZXJmYWNlIE5TU3RyaW5nIChKU1N0cmluZ1JlZkFkZGl0aW9ucykKKysgKE5TU3Ry
aW5nICopc3RyaW5nV2l0aEpTU3RyaW5nUmVmOihKU1N0cmluZ1JlZilqc1N0cmluZ1JlZjsKK0Bl
bmQKKworQGltcGxlbWVudGF0aW9uIE5TU3RyaW5nIChKU1N0cmluZ1JlZkFkZGl0aW9ucykKKwor
KyAoTlNTdHJpbmcgKilzdHJpbmdXaXRoSlNTdHJpbmdSZWY6KEpTU3RyaW5nUmVmKWpzU3RyaW5n
UmVmCit7CisgICAgaWYgKCFqc1N0cmluZ1JlZikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAg
CisgICAgQ0ZTdHJpbmdSZWYgY2ZTdHJpbmcgPSBKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBqc1N0cmluZ1JlZik7CisgICAgcmV0dXJuIFsoTlNTdHJpbmcgKiljZlN0
cmluZyBhdXRvcmVsZWFzZV07Cit9CisKK0BlbmQKIAogbmFtZXNwYWNlIFdUUiB7CiAKQEAgLTU5
LDQgKzkwLDM0IEBAIGJvb2wgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnJlbW92ZU5vdGlmaWNh
dGlvbkxpc3RlbmVyKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIGlkIGZpbmRBY2Nl
c3NpYmxlT2JqZWN0QnlJZChpZCBvYmosIE5TU3RyaW5nKiBpZEF0dHJpYnV0ZSkKK3sKKyAgICBC
RUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCBvYmpJZEF0dHJpYnV0ZSA9IFtvYmogYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhEUlRFbGVtZW50SWRBdHRyaWJ1dGUiXTsKKyAg
ICBpZiAoW29iaklkQXR0cmlidXRlIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0gJiYg
W29iaklkQXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzppZEF0dHJpYnV0ZV0pCisgICAgICAgIHJl
dHVybiBvYmo7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworCisgICAgTlNBcnJheSogY2hp
bGRyZW4gPSBbb2JqIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlD
aGlsZHJlbkF0dHJpYnV0ZV07CisgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgW2NoaWxk
cmVuIGNvdW50XTsgKytpKSB7CisgICAgICAgIGlkIHJlc3VsdCA9IGZpbmRBY2Nlc3NpYmxlT2Jq
ZWN0QnlJZChbY2hpbGRyZW4gb2JqZWN0QXRJbmRleDppXSwgaWRBdHRyaWJ1dGUpOworICAgICAg
ICBpZiAocmVzdWx0KQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBy
ZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlcjo6YWNjZXNzaWJsZUVsZW1lbnRCeUlkKEpTU3RyaW5nUmVmIGlkQXR0
cmlidXRlKQoreworICAgIFdLQnVuZGxlUGFnZVJlZiBwYWdlID0gSW5qZWN0ZWRCdW5kbGU6OnNo
YXJlZCgpLnBhZ2UoKS0+cGFnZSgpOworICAgIGlkIHJvb3QgPSBzdGF0aWNfY2FzdDxQbGF0Zm9y
bVVJRWxlbWVudD4oV0tBY2Nlc3NpYmlsaXR5Um9vdE9iamVjdChwYWdlKSk7CisKKyAgICBpZCBy
ZXN1bHQgPSBmaW5kQWNjZXNzaWJsZU9iamVjdEJ5SWQocm9vdCwgW05TU3RyaW5nIHN0cmluZ1dp
dGhKU1N0cmluZ1JlZjppZEF0dHJpYnV0ZV0pOworICAgIGlmIChyZXN1bHQpCisgICAgICAgIHJl
dHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUocmVzdWx0KTsKKworICAgIHJldHVy
biAwOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmYzk3NWU0YThmMDljYThkNjIx
ZGQ2ZGI4MGU2NGUzY2U0YzU4NWE2Li40NWYzYTNkN2M3NmRiNDA2ZTg3OTljYmZkMWRmOTVlZTg0
ODYyODVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDktMjAgIERvbWluaWMgTWF6em9u
aSAgPGRtYXp6b25pQGdvb2dsZS5jb20+CisKKyAgICAgICAgQVg6IExheW91dCB0ZXN0cyB3b3Vs
ZCBiZSBlYXNpZXIgdG8gd3JpdGUgaWYgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIgY291bGQgZmlu
ZCBhbiBlbGVtZW50IGJ5IGlkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05NzMwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE1vZGlmaWVzIGFuIGV4aXN0aW5nIHRlc3QgdG8gdXNlIHRoZSBuZXcgYWNjZXNz
aWJsZUVsZW1lbnRCeUlkCisgICAgICAgIG1ldGhvZCBvZiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ciwgZW5hYmxpbmcgdGhlIHRlc3QgdG8gcGFzcyBvbgorICAgICAgICBib3RoIE1hYyBhbmQgQ2hy
b21pdW0uCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2FyaWEtaGlkZGVuLXdpdGgtZWxlbWVu
dHMuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zOgor
CiAyMDEyLTA5LTE4ICBTYWlsZXNoIEFncmF3YWwgIDxzYWlsQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBDaHJvbWl1bTogU2Nyb2xsYmFyIHdpdGggdGlja21hcmtzIGRvZXNuJ3QgcmVzcG9uZCB0
byBjbGlja3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1oaWRk
ZW4td2l0aC1lbGVtZW50cy5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWhp
ZGRlbi13aXRoLWVsZW1lbnRzLmh0bWwKaW5kZXggM2EzZjhhN2UzMjJjZTIzZjlhZjZlYTgwYTQy
Y2JiNTNkYjRlMzQ2OS4uNWE3YTI0NjViMWNlYzhlNWQwODE5YjM2ZGUwYjYwMmVlMTdmZmM0MSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWhpZGRlbi13aXRoLWVs
ZW1lbnRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWhpZGRlbi13
aXRoLWVsZW1lbnRzLmh0bWwKQEAgLTUsNiArNSw4IEBACiA8L2hlYWQ+CiA8Ym9keSBpZD0iYm9k
eSI+CiAKKzxkaXYgaWQ9ImNvbnRhaW5lciIgYXJpYS1sYWJlbD0iY29udGFpbmVyIj4KKwogPHRh
YmxlIGJvcmRlcj0xIHN1bW1hcnk9InRlc3QiIGFyaWEtaGlkZGVuPSJ0cnVlIj4KIDx0cj48dGQ+
Y2VsbDwvdGQ+PHRkPmNlbGw8L3RkPjx0ZD5jZWxsPC90ZD48L3RyPgogPHRyPjx0ZD5jZWxsPC90
ZD48dGQ+Y2VsbDwvdGQ+PHRkPmNlbGw8L3RkPjwvdHI+CkBAIC0yNiw2ICsyOCw4IEBACiAKIDxo
MT5oZWFkaW5nPC9oMT4KIAorPC9kaXY+CisKIDxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgogPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+CiAKQEAgLTM0LDE0ICszOCwxNCBAQAogICAgIGRlc2NyaXB0
aW9uKCJUaGlzIHRlc3RzIHRoYXQgYXJpYS1oaWRkZW4gd29ya3MgYXMgZXhwZWN0ZWQgb24gZWxl
bWVudHMgdGhhdCBhcmUgc3ViY2xhc3NlcyBvZiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Iik7
CiAKICAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7Ci0gICAgICAgdmFy
IHJvb3QgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5yb290RWxlbWVudDsKKyAgICAgICB2YXIg
Y29udGFpbmVyID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlk
KCJjb250YWluZXIiKTsKIAogICAgICAgIC8vIGZpcnN0IGNoaWxkIGlzIGFuIEFYR3JvdXAgdGhh
dCBoYXMgbm8gY2hpbGRyZW4KLSAgICAgICB2YXIgY2hpbGQgPSByb290LmNoaWxkQXRJbmRleCgw
KS5jaGlsZEF0SW5kZXgoMCk7CisgICAgICAgdmFyIGNoaWxkID0gY29udGFpbmVyLmNoaWxkQXRJ
bmRleCgwKTsKICAgICAgICBzaG91bGRCZSgiY2hpbGQuY2hpbGRyZW5Db3VudCIsICIwIik7CiAK
ICAgICAgICAvLyBUaGUgc2Vjb25kIGNoaWxkIHdlIGFzayBmb3IgZnJvbSB0aGUgd2ViIGFyZWEg
c2hvdWxkIGJlIHRoZSBoZWFkaW5nLCBhbmQgd2Ugc2hvdWxkIGhhdmUgc2tpcHBlZCBvdmVyIGV2
ZXJ5dGhpbmcgZWxzZS4KLSAgICAgICBjaGlsZCA9IHJvb3QuY2hpbGRBdEluZGV4KDApLmNoaWxk
QXRJbmRleCgxKTsKKyAgICAgICBjaGlsZCA9IGNvbnRhaW5lci5jaGlsZEF0SW5kZXgoMSk7CiAg
ICAgICAgc2hvdWxkQmUoImNoaWxkLnJvbGUiLCAiJ0FYUm9sZTogQVhIZWFkaW5nJyIpOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVj
dGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMK
aW5kZXggNWE3NDBlOTcyYzdiYTE0OTI1MWNlOTA5ZmQ4NjI2NzczNzIyYmI2My4uYTI2MzRlMWRk
ZTBjYjMyMTYwOTcxNDIxMmEzMjZjNTExODRmODIwNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCkBAIC0xMzM4LDcgKzEzMzgsNiBAQCBCVUdD
UjEwMzIyIFNLSVAgOiBhY2Nlc3NpYmlsaXR5L2FyaWEtY29tYm9ib3guaHRtbCA9IFRFWFQKIEJV
R0NSMTAzMjIgU0tJUCA6IGFjY2Vzc2liaWxpdHkvYXJpYS1jb250cm9scy13aXRoLXRhYnMuaHRt
bCA9IFRFWFQKIEJVR0NSMTAzMjIgU0tJUCA6IGFjY2Vzc2liaWxpdHkvYXJpYS1mYWxsYmFjay1y
b2xlcy5odG1sID0gVEVYVAogQlVHQ1IxMDMyMiBTS0lQIDogYWNjZXNzaWJpbGl0eS9hcmlhLWhp
ZGRlbi11cGRhdGUuaHRtbCA9IFRFWFQKLUJVR0NSMTAzMjIgU0tJUCA6IGFjY2Vzc2liaWxpdHkv
YXJpYS1oaWRkZW4td2l0aC1lbGVtZW50cy5odG1sID0gVEVYVAogQlVHQ1IxMDMyMiBTS0lQIDog
YWNjZXNzaWJpbGl0eS9hcmlhLWludmFsaWQuaHRtbCA9IFRJTUVPVVQgUEFTUwogQlVHQ1IxMDMy
MiBTS0lQIDogYWNjZXNzaWJpbGl0eS9hcmlhLWxhYmVsbGVkYnktb3ZlcnJpZGVzLWxhYmVsLmh0
bWwgPSBURVhUCiBCVUdDUjEwMzIyIFNLSVAgOiBhY2Nlc3NpYmlsaXR5L2FyaWEtbGluay1zdXBw
b3J0cy1wcmVzcy5odG1sID0gVEVYVAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165138</attachid>
            <date>2012-09-21 08:46:52 -0700</date>
            <delta_ts>2012-09-21 10:05:40 -0700</delta_ts>
            <desc>Rebase only, still needs work</desc>
            <filename>bug-97301-20120921084724.patch</filename>
            <type>text/plain</type>
            <size>23490</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmU1MjIwNzU5ODViMzc1
OTRjYjAyYWE0NTBiZjI2M2M3MTM3YTY0Ni4uYjhiMTA2Njg3NWJhNjBkMjk4YjQyNDgxY2M0NTlk
NTljN2IxZDQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA5LTIwICBEb21p
bmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFYOiBMYXlvdXQg
dGVzdHMgd291bGQgYmUgZWFzaWVyIHRvIHdyaXRlIGlmIEFjY2Vzc2liaWxpdHlDb250cm9sbGVy
IGNvdWxkIGZpbmQgYW4gZWxlbWVudCBieSBpZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTczMDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgYSBtZXRob2QgdG8gZ2V0IHRoZSBET00gImlkIiBhdHRy
aWJ1dGUgZnJvbSBhbiBhY2Nlc3NpYmxlIG9iamVjdCwgb25seSBmb3IgbGF5b3V0IHRlc3RzLgor
CisgICAgICAgIE1ha2VzIGV4aXN0aW5nIHRlc3QgbW9yZSBjcm9zcy1wbGF0Zm9ybToKKyAgICAg
ICAgVGVzdHM6IGFjY2Vzc2liaWxpdHkvYXJpYS1oaWRkZW4td2l0aC1lbGVtZW50cy5odG1sCisK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ci5tbToKKwogMjAxMi0wOS0yMSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFp
bC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyOTIxOS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0KaW5kZXggMjZjN2FhZTI3YWJiZmVkZTcwMGZjZjE2
M2I0OWFhY2U2YjZiNGRhYy4uYTQzOTRiYTIwNjA1Nzg0MjU2YzU2ZDg3MDBkZjI4MzYzY2QwMGMw
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0KQEAgLTI0MzAsNiArMjQzMCwx
MCBAQCBzdGF0aWMgTlNTdHJpbmcqIHJvbGVWYWx1ZVRvTlNTdHJpbmcoQWNjZXNzaWJpbGl0eVJv
bGUgdmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gQCJub3JtYWwiOwogICAgICAgICB9CiAgICAg
fQorCisgICAgLy8gVXNlZCBieSBEUlQgdG8gZmluZCBhbiBhY2Nlc3NpYmxlIG5vZGUgYnkgaXRz
IGVsZW1lbnQgaWQuCisgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpAIkFY
RFJURWxlbWVudElkQXR0cmlidXRlIl0pCisgICAgICAgIHJldHVybiBtX29iamVjdC0+Z2V0QXR0
cmlidXRlKGlkQXR0cik7CiAgICAgCiAgICAgcmV0dXJuIG5pbDsKIH0KZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmYTliODU4ZDNjMGY2NjZmNDVj
NGIyMGUxMDUwZDI2YjczYjg2M2YwLi44ZDhiODNhNzY3NDhmYzhiZjYyOWE5ODg0MDZiNWQyZDZi
ZTFiYTNmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjcgQEAKKzIwMTItMDktMjAgIERvbWluaWMgTWF6em9uaSAgPGRtYXp6b25p
QGdvb2dsZS5jb20+CisKKyAgICAgICAgQVg6IExheW91dCB0ZXN0cyB3b3VsZCBiZSBlYXNpZXIg
dG8gd3JpdGUgaWYgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIgY291bGQgZmluZCBhbiBlbGVtZW50
IGJ5IGlkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
NzMwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZHMgYSBuZXcgYWNjZXNzaWJsZUVsZW1lbnRCeUlkIG1ldGhvZCB0byBBY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlciwgdG8gbWFrZSBpdAorICAgICAgICBlYXNpZXIgdG8gd3JpdGUgY3Jvc3MtcGxhdGZv
cm0gbGF5b3V0IHRlc3RzLgorCisgICAgICAgIEltcGxlbWVudGVkIGZvciBDaHJvbWl1bSBhbmQg
Zm9yIE1hYyAoRFJUIGFuZCBXS1RSKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0FjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9BY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJDaHJvbWl1bS5jcHA6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9BY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ckNocm9taXVtLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0FjY2Vzc2liaWxpdHlD
b250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXJNYWMubW06CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vz
c2liaWxpdHlDb250cm9sbGVyV2luLmNwcDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmg6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJNYWMubW06CisKIDIwMTItMDktMjEg
IFBldGVyIEJldmVybG9vICA8cGV0ZXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1
bV0gU3dpdGNoIGJhY2sgdG8gYSBmaXhlZCBmaWZvIHBhdGggZm9yIEFuZHJvaWQKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcAppbmRleCBiMzY3
ZDVjNDY5ZDliYTk4ZDI1NWM4ZWRmZWU2Zjk1ODkzNWMzYjVmLi40OWQ0NTNhODRjZGViY2RiOGEz
MjI2YmZkOTJjYzgxMTgyNGE2NTczIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9B
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwCkBAIC05Nyw2ICs5NywxOCBAQCBzdGF0aWMgSlNWYWx1
ZVJlZiBnZXRFbGVtZW50QXRQb2ludENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09i
amVjdFJlZiBmdQogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYWtlSlNBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50KGNvbnRleHQsIGNvbnRyb2xsZXItPmVsZW1lbnRBdFBvaW50KHgs
IHkpKTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgZ2V0QWNjZXNzaWJsZUVsZW1lbnRCeUlkQ2Fs
bGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVj
dFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBh
cmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIEpTU3RyaW5nUmVmIGlk
QXR0cmlidXRlID0gMDsKKyAgICBpZiAoYXJndW1lbnRDb3VudCA9PSAxKQorICAgICAgICBpZEF0
dHJpYnV0ZSA9IEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNl
cHRpb24pOyAgICAKKyAgICBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0
YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRo
aXNPYmplY3QpKTsKKyAgICBKU1ZhbHVlUmVmIHJlc3VsdCA9IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6Om1ha2VKU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQoY29udGV4dCwgY29udHJvbGxlci0+YWNj
ZXNzaWJsZUVsZW1lbnRCeUlkKGlkQXR0cmlidXRlKSk7CisgICAgaWYgKGlkQXR0cmlidXRlKQor
ICAgICAgICBKU1N0cmluZ1JlbGVhc2UoaWRBdHRyaWJ1dGUpOworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIGFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyQ2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0
aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVu
dHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIGlmIChhcmd1bWVudENvdW50ICE9
IDEpCkBAIC0xMjMsNiArMTM1LDcgQEAgSlNDbGFzc1JlZiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cjo6Z2V0SlNDbGFzcygpCiAgICAgICAgIHsgImxvZ1Njcm9sbGluZ1N0YXJ0RXZlbnRzIiwgbG9n
U2Nyb2xsaW5nU3RhcnRFdmVudHNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJsb2dBY2Nl
c3NpYmlsaXR5RXZlbnRzIiwgbG9nQWNjZXNzaWJpbGl0eUV2ZW50c0NhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CiAgICAgICAgIHsgImVsZW1lbnRBdFBvaW50IiwgZ2V0RWxlbWVudEF0UG9pbnRDYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LAorICAgICAgICB7ICJhY2Nlc3NpYmxlRWxlbWVudEJ5SWQiLCBnZXRBY2Nlc3NpYmxl
RWxlbWVudEJ5SWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJhZGROb3RpZmljYXRpb25M
aXN0ZW5lciIsIGFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAg
ICAgeyAicmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIiLCByZW1vdmVOb3RpZmljYXRpb25MaXN0
ZW5lckNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgMCwgMCwgMCB9CmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaAppbmRleCAxZDUyMzUzY2Q2Y2E3
NzQwMTdiYTA0YTVmNzBhYWZjMmY1MzYyNDNjLi5hNmNkYzQ2ODZjMTMyZmY1ODZkNTgyZmU1MWEw
NzY4ZWU3MmMwMTAwIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgcHVibGljOgogICAgIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQgcm9vdEVsZW1lbnQoKTsKICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IGZvY3Vz
ZWRFbGVtZW50KCk7CiAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBlbGVtZW50QXRQb2ludChp
bnQgeCwgaW50IHkpOworICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgYWNjZXNzaWJsZUVsZW1l
bnRCeUlkKEpTU3RyaW5nUmVmIGlkKTsKIAogICAgIHZvaWQgc2V0TG9nRm9jdXNFdmVudHMoYm9v
bCk7CiAgICAgdm9pZCBzZXRMb2dWYWx1ZUNoYW5nZUV2ZW50cyhib29sKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXJDaHJvbWl1bS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyQ2hyb21pdW0uY3BwCmluZGV4IGIxZDI5NDhh
ZWJhYjMyOTgyNDkyNzU0NTgyNDU4MzA3MzE0YmNkZWQuLjYxODczYjZhMzI3MGE4M2M3YTA2MmE0
NDZiMWE3NGY1MmIwZmFmN2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJDaHJvbWl1bS5jcHAKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9BY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlckNocm9taXVtLmNwcApAQCAtMzIsOSArMzIsMTEgQEAKICNpbmNsdWRlICJBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlckNocm9taXVtLmgiCiAKICNpbmNsdWRlICJXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0LmgiCisjaW5jbHVkZSAiV2ViRWxlbWVudC5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgi
CisjaW5jbHVkZSAiV2ViTm9kZS5oIgogI2luY2x1ZGUgIldlYlZpZXcuaCIKLSNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDU3RyaW5nLmgiCiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKQEAgLTQ5LDYgKzUxLDggQEAgQWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCkKICAgICBiaW5kUHJvcGVydHko
ImZvY3VzZWRFbGVtZW50IiwgJkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpmb2N1c2VkRWxlbWVu
dEdldHRlckNhbGxiYWNrKTsKICAgICBiaW5kUHJvcGVydHkoInJvb3RFbGVtZW50IiwgJkFjY2Vz
c2liaWxpdHlDb250cm9sbGVyOjpyb290RWxlbWVudEdldHRlckNhbGxiYWNrKTsKIAorICAgIGJp
bmRNZXRob2QoImFjY2Vzc2libGVFbGVtZW50QnlJZCIsICZBY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cjo6YWNjZXNzaWJsZUVsZW1lbnRCeUlkR2V0dGVyQ2FsbGJhY2spOworCiAgICAgYmluZEZhbGxi
YWNrTWV0aG9kKCZBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6ZmFsbGJhY2tDYWxsYmFjayk7CiB9
CiAKQEAgLTg2LDYgKzkwLDM1IEBAIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIEFjY2Vzc2liaWxp
dHlDb250cm9sbGVyOjpnZXRSb290RWxlbWVudCgpCiAgICAgcmV0dXJuIG1fZWxlbWVudHMuY3Jl
YXRlUm9vdChtX3Jvb3RFbGVtZW50KTsKIH0KIAorQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmZpbmRBY2Nlc3NpYmxlRWxlbWVudEJ5SWRSZWN1cnNpdmUo
Y29uc3QgV2ViQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqLCBjb25zdCBXZWJTdHJpbmcmIGlkKQor
eworICAgIGlmIChvYmouaXNOdWxsKCkgfHwgb2JqLmlzRGV0YWNoZWQoKSkKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICBXZWJOb2RlIG5vZGUgPSBvYmoubm9kZSgpOworICAgIGlmICghbm9kZS5p
c051bGwoKSAmJiBub2RlLmlzRWxlbWVudE5vZGUoKSkgeworICAgICAgICBXZWJFbGVtZW50IGVs
ZW1lbnQgPSBub2RlLnRvPFdlYkVsZW1lbnQ+KCk7CisgICAgICAgIGVsZW1lbnQuZ2V0QXR0cmli
dXRlKCJpZCIpOworICAgICAgICBpZiAoZWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikgPT0gaWQp
IAorICAgICAgICAgICAgcmV0dXJuIG1fZWxlbWVudHMuZ2V0T3JDcmVhdGUob2JqKTsKKyAgICB9
CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgb2JqLmNoaWxkQ291bnQoKTsgaSsrKSB7
CisgICAgICAgIGlmIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiByZXN1bHQgPSBmaW5kQWNjZXNz
aWJsZUVsZW1lbnRCeUlkUmVjdXJzaXZlKG9iai5jaGlsZEF0KGkpLCBpZCkpCisgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitBY2Nlc3NpYmls
aXR5VUlFbGVtZW50KiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6Z2V0QWNjZXNzaWJsZUVsZW1l
bnRCeUlkKGNvbnN0IHN0ZDo6c3RyaW5nJiBpZCkKK3sKKyAgICBpZiAobV9yb290RWxlbWVudC5p
c051bGwoKSkKKyAgICAgICAgbV9yb290RWxlbWVudCA9IG1fd2ViVmlldy0+YWNjZXNzaWJpbGl0
eU9iamVjdCgpOworCisgICAgcmV0dXJuIGZpbmRBY2Nlc3NpYmxlRWxlbWVudEJ5SWRSZWN1cnNp
dmUobV9yb290RWxlbWVudCwgV2ViU3RyaW5nOjpmcm9tVVRGOChpZC5jX3N0cigpKSk7Cit9CisK
IGJvb2wgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnNob3VsZExvZ0FjY2Vzc2liaWxpdHlFdmVu
dHMoKQogewogICAgIHJldHVybiBtX2xvZ0FjY2Vzc2liaWxpdHlFdmVudHM7CkBAIC0xNDEsNiAr
MTc0LDIzIEBAIHZvaWQgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnJvb3RFbGVtZW50R2V0dGVy
Q2FsbGJhY2soQ3BwVmFyaWFudCogcmVzdWx0KQogICAgIHJlc3VsdC0+c2V0KCooZ2V0Um9vdEVs
ZW1lbnQoKS0+Z2V0QXNDcHBWYXJpYW50KCkpKTsKIH0KIAordm9pZCBBY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcjo6YWNjZXNzaWJsZUVsZW1lbnRCeUlkR2V0dGVyQ2FsbGJhY2soY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICBpZiAoYXJn
dW1lbnRzLnNpemUoKSA8IDEgfHwgIWFyZ3VtZW50c1swXS5pc1N0cmluZygpKSB7CisgICAgICAg
IHJlc3VsdC0+c2V0TnVsbCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3RkOjpz
dHJpbmcgaWQgPSBhcmd1bWVudHNbMF0udG9TdHJpbmcoKTsKKyAgICBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50KiBmb3VuZEVsZW1lbnQgPSBnZXRBY2Nlc3NpYmxlRWxlbWVudEJ5SWQoaWQpOworICAg
IGlmICghZm91bmRFbGVtZW50KSB7CisgICAgICAgIHJlc3VsdC0+c2V0TnVsbCgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgcmVzdWx0LT5zZXQoKihmb3VuZEVsZW1lbnQtPmdldEFz
Q3BwVmFyaWFudCgpKSk7Cit9CisKIHZvaWQgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmZhbGxi
YWNrQ2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQog
ewogICAgIHByaW50ZigiQ09OU09MRSBNRVNTQUdFOiBKYXZhU2NyaXB0IEVSUk9SOiB1bmtub3du
IG1ldGhvZCBjYWxsZWQgb24gIgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckNocm9taXVtLmggYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL0FjY2Vzc2liaWxpdHlDb250cm9s
bGVyQ2hyb21pdW0uaAppbmRleCAxMWMwODJiM2U4MDhjMWY2MzBlYjg1MTg0ZTZlOGZiM2U4MTZm
NDk4Li5mMGY1ZGVlODU2MmQ5NTQxZjAwY2YxMDI0ZDg2Y2Y2NjFjNjM3ZDEwIDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL0FjY2Vzc2liaWxpdHlD
b250cm9sbGVyQ2hyb21pdW0uaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyQ2hyb21pdW0uaApAQCAtNTEsNiArNTEs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRGb2N1c2VkRWxlbWVudChjb25zdCBXZWJLaXQ6Oldl
YkFjY2Vzc2liaWxpdHlPYmplY3QmKTsKICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBnZXRG
b2N1c2VkRWxlbWVudCgpOwogICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIGdldFJvb3RFbGVt
ZW50KCk7CisgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogZ2V0QWNjZXNzaWJsZUVsZW1lbnRC
eUlkKGNvbnN0IHN0ZDo6c3RyaW5nJiBpZCk7CiAKICAgICBib29sIHNob3VsZExvZ0FjY2Vzc2li
aWxpdHlFdmVudHMoKTsKIApAQCAtNzAsNiArNzEsOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBm
b2N1c2VkRWxlbWVudEdldHRlckNhbGxiYWNrKENwcFZhcmlhbnQqKTsKICAgICB2b2lkIHJvb3RF
bGVtZW50R2V0dGVyQ2FsbGJhY2soQ3BwVmFyaWFudCopOworICAgIHZvaWQgYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkR2V0dGVyQ2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFu
dCopOworCisgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogZmluZEFjY2Vzc2libGVFbGVtZW50
QnlJZFJlY3Vyc2l2ZShjb25zdCBXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3QmLCBjb25z
dCBXZWJLaXQ6OldlYlN0cmluZyYgaWQpOwogCiAgICAgV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0IG1fZm9jdXNlZEVsZW1lbnQ7CiAgICAgV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0IG1fcm9vdEVsZW1lbnQ7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsv
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJHdGsuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3Rr
L0FjY2Vzc2liaWxpdHlDb250cm9sbGVyR3RrLmNwcAppbmRleCBjZWViOGRmY2JmZmEzOWY1MzVh
MzliMGRkY2JlY2IyY2EzNjI1OWIwLi40NjYxODJiYjMwNWE2Njc2MDgwNmJlZjg0OGQ5NGM3NjIy
Zjg3NWNlIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXJHdGsuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9BY2Nlc3Np
YmlsaXR5Q29udHJvbGxlckd0ay5jcHAKQEAgLTcwLDYgKzcwLDEyIEBAIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnJvb3RFbGVtZW50KCkKICAgICByZXR1
cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudChhY2Nlc3NpYmxlKTsKIH0KIAorQWNjZXNzaWJpbGl0
eVVJRWxlbWVudCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6YWNjZXNzaWJsZUVsZW1lbnRCeUlk
KEpTU3RyaW5nUmVmIGlkKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4g
MDsKK30KKwogdm9pZCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6c2V0TG9nRm9jdXNFdmVudHMo
Ym9vbCkKIHsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3Np
YmlsaXR5Q29udHJvbGxlck1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3Np
YmlsaXR5Q29udHJvbGxlck1hYy5tbQppbmRleCA2ZmMwZGQwNTY1Nzk0ZWY4NDY1NjI2ODgyNzA2
MmE1ZGZlMGU1YjI2Li4yMDVlNDY1ZjMzY2Y5YTI3NWIwNjAwOGUyNzhlYzU1YjE3NmM3NTNhIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXJNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlDb250
cm9sbGVyTWFjLm1tCkBAIC0zMSwxMCArMzEsMzQgQEAKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQuaCIKICNpbXBvcnQgPEFwcEtpdC9OU0NvbG9yLmg+CiAjaW1wb3J0IDxGb3VuZGF0
aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmLmg+
CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZkNGLmg+CiAjaW1wb3J0IDxXZWJL
aXQvV2ViRnJhbWUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJGcmFtZVByaXZhdGUuaD4KICNpbXBv
cnQgPFdlYktpdC9XZWJIVE1MVmlldy5oPgogCisvLyBJZiBhbiB1bnN1cHBvcnRlZCBhdHRyaWJ1
dGUgaXMgcGFzc2VkIGluLCBpdCB3aWxsIHJhaXNlIGFuIGFjY2Vzc2liaWxpdHkgZXhjZXB0aW9u
LiBUaGVzZSBhcmUgdXN1YWxseSBjYXVnaHQgYnkgdGhlIEFjY2Vzc2liaWxpdHkgUnVudGltZSB0
byBpbmZvcm0KKy8vIHRoZSBBWCBjbGllbnQgYXBwIG9mIHRoZSBlcnJvci4gSG93ZXZlciwgRFJU
IGlzIHRoZSBBWCBjbGllbnQgYXBwLCBzbyBpdCBtdXN0IGNhdGNoIHRoZXNlIGV4Y2VwdGlvbnMu
CisjZGVmaW5lIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUyBAdHJ5IHsKKyNkZWZpbmUgRU5EX0FY
X09CSkNfRVhDRVBUSU9OUyB9IEBjYXRjaChOU0V4Y2VwdGlvbiAqZSkgeyBpZiAoIVtbZSBuYW1l
XSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5RXhjZXB0aW9uXSkgQHRocm93OyB9CisK
K0BpbnRlcmZhY2UgTlNTdHJpbmcgKEpTU3RyaW5nUmVmQWRkaXRpb25zKQorKyAoTlNTdHJpbmcg
KilzdHJpbmdXaXRoSlNTdHJpbmdSZWY6KEpTU3RyaW5nUmVmKWpzU3RyaW5nUmVmOworQGVuZAor
CitAaW1wbGVtZW50YXRpb24gTlNTdHJpbmcgKEpTU3RyaW5nUmVmQWRkaXRpb25zKQorCisrIChO
U1N0cmluZyAqKXN0cmluZ1dpdGhKU1N0cmluZ1JlZjooSlNTdHJpbmdSZWYpanNTdHJpbmdSZWYK
K3sKKyAgICBpZiAoIWpzU3RyaW5nUmVmKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIENG
U3RyaW5nUmVmIGNmU3RyaW5nID0gSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVm
YXVsdCwganNTdHJpbmdSZWYpOworICAgIHJldHVybiBbKE5TU3RyaW5nICopY2ZTdHJpbmcgYXV0
b3JlbGVhc2VdOworfQorCitAZW5kCisKIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlcigpCiB7CiB9CkBAIC02OCw2ICs5MiwzNSBAQCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpyb290RWxlbWVudCgpCiAgICAgcmV0
dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoYWNjZXNzaWJpbGl0eU9iamVjdCk7CiB9CiAKK3N0
YXRpYyBpZCBmaW5kQWNjZXNzaWJsZU9iamVjdEJ5SWQoaWQgb2JqLCBOU1N0cmluZyogaWRBdHRy
aWJ1dGUpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgb2JqSWRBdHRy
aWJ1dGUgPSBbb2JqIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYRFJURWxlbWVudElk
QXR0cmlidXRlIl07CisgICAgaWYgKFtvYmpJZEF0dHJpYnV0ZSBpc0tpbmRPZkNsYXNzOltOU1N0
cmluZyBjbGFzc11dICYmIFtvYmpJZEF0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6aWRBdHRyaWJ1
dGVdKQorICAgICAgICByZXR1cm4gb2JqOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKwor
ICAgIE5TQXJyYXkqIGNoaWxkcmVuID0gW29iaiBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGVdOworICAgIGZvciAoTlNVSW50ZWdlciBp
ID0gMDsgaSA8IFtjaGlsZHJlbiBjb3VudF07ICsraSkgeworICAgICAgICBpZCByZXN1bHQgPSBm
aW5kQWNjZXNzaWJsZU9iamVjdEJ5SWQoW2NoaWxkcmVuIG9iamVjdEF0SW5kZXg6aV0sIGlkQXR0
cmlidXRlKTsKKyAgICAgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFjY2Vzc2libGVFbGVtZW50QnlJZChKU1N0cmluZ1JlZiBp
ZEF0dHJpYnV0ZVJlZikKK3sKKyAgICBOU1N0cmluZyogaWRBdHRyaWJ1dGUgPSBbTlNTdHJpbmcg
c3RyaW5nV2l0aEpTU3RyaW5nUmVmOmlkQXR0cmlidXRlUmVmXTsKKyAgICBpZCByb290ID0gW1tt
YWluRnJhbWUgYWNjZXNzaWJpbGl0eVJvb3RdIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpO
U0FjY2Vzc2liaWxpdHlQYXJlbnRBdHRyaWJ1dGVdOworICAgIGlkIHJlc3VsdCA9IGZpbmRBY2Nl
c3NpYmxlT2JqZWN0QnlJZChyb290LCBpZEF0dHJpYnV0ZSk7CisgICAgaWYgKHJlc3VsdCkKKyAg
ICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQocmVzdWx0KTsKKyAgICBlbHNlCisg
ICAgICAgIHJldHVybiAwOworfQorCiB2b2lkIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpzZXRM
b2dGb2N1c0V2ZW50cyhib29sKQogewogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvd2luL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyV2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcldpbi5jcHAKaW5kZXggN2Y5YWE2Y2MyZWU5
MjliMmJmOGVhNDE2ZjVkNjViYjA1NmUzZWFkMS4uMmViZGY5OWU2NzYxMDA3ZWEzMDI1NDZmYWY0
NTY4NWIxMmQ4N2QwNCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vz
c2liaWxpdHlDb250cm9sbGVyV2luLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4v
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJXaW4uY3BwCkBAIC02Nyw2ICs2NywxMiBAQCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjplbGVtZW50QXRQb2ludChp
bnQgeCwgaW50IHkpCiAgICAgcmV0dXJuIDA7CiB9CiAKK0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQg
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFjY2Vzc2libGVFbGVtZW50QnlJZChKU3RyaW5nUmVm
IGlkKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gMDsKK30KKwogQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6Zm9jdXNlZEVsZW1l
bnQoKQogewogICAgIENPTVB0cjxJQWNjZXNzaWJsZT4gcm9vdEFjY2Vzc2libGUgPSByb290RWxl
bWVudCgpLnBsYXRmb3JtVUlFbGVtZW50KCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
Y3BwCmluZGV4IDJjZDMwNDlmZTE1Nzk1Nzc2YWJkMTMyMjBiMmUyYWEwZWRjZmY3NWQuLmM2Zjdk
NzVjYzNiNzlkMDZjMGMyY2M2MmU4OWZiOWE0MDg5YTEyZDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3Bw
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuY3BwCkBAIC0xMDYsNiArMTA2LDcgQEAgUGFzc1JlZlB0cjxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6ZWxlbWVudEF0UG9pbnQoaW50
IHgKICNpZiAhUExBVEZPUk0oTUFDKQogYm9vbCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6YWRk
Tm90aWZpY2F0aW9uTGlzdGVuZXIoSlNWYWx1ZVJlZikgeyByZXR1cm4gZmFsc2U7IH0KIGJvb2wg
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCkgeyBy
ZXR1cm4gZmFsc2U7IH0KK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXI6OmFjY2Vzc2libGVFbGVtZW50QnlJZChKU1N0cmluZ1JlZiBhdHRy
aWJ1dGUpIHsgcmV0dXJuIDA7IH0KICNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKEdUSykKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuaAppbmRleCAzYzg3Y2FjNWQ1YzZhOWM0MDYyMDdiMzdiNmFl
MzczYWU0ZDNiNzc5Li44MzExNGQ0YjBlMzFkOWIyN2I2MGI3ZGQ0NTAzZThmYTA4OTUzNDRkIDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oCkBAIC00OCw2ICs0OCw3IEBAIHB1YmxpYzoK
ICAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IHJvb3RFbGVtZW50KCk7CiAg
ICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBmb2N1c2VkRWxlbWVudCgpOwog
ICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gZWxlbWVudEF0UG9pbnQoaW50
IHgsIGludCB5KTsKKyAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGFjY2Vz
c2libGVFbGVtZW50QnlJZChKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpOwogCiAgICAgYm9vbCBhZGRO
b3RpZmljYXRpb25MaXN0ZW5lcihKU1ZhbHVlUmVmIGZ1bmN0aW9uQ2FsbGJhY2spOwogICAgIGJv
b2wgcmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9B
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5pZGwKaW5kZXggMmRmOGMyNzlmOWJkODg5NjEyNjdhNmIw
Y2M0MGIwYWJjZjExNDhkOS4uYmQwNWYxMzM0MzA4NWY4OTg0NGE5ZWMxOTI1MWY0MWVjMTAxOWQ1
MyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5k
aW5ncy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5pZGwK
QEAgLTI5LDYgKzI5LDcgQEAgbW9kdWxlIFdUUiB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IHJvb3RFbGVtZW50OwogICAgICAgICByZWFkb25seSBh
dHRyaWJ1dGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBmb2N1c2VkRWxlbWVudDsKICAgICAgICAg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudCBlbGVtZW50QXRQb2ludChpbiBpbnQgeCwgaW4gaW50IHkp
OworICAgICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IGFjY2Vzc2libGVFbGVtZW50QnlJZChp
biBET01TdHJpbmcgaWQpOwogICAgICAgICAKICAgICAgICAgYm9vbGVhbiBhZGROb3RpZmljYXRp
b25MaXN0ZW5lcihpbiBvYmplY3QgZnVuY3Rpb25DYWxsYmFjayk7CiAgICAgICAgIGJvb2xlYW4g
cmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1t
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXJNYWMubW0KaW5kZXggODYzZTc0MDdlYjIwMTk1Y2I3NDllZWZkNzViOTQ0NzNh
OWRhMWQ3ZC4uMzZiYzM5MTE1Y2RhODExM2IyNTQ0YThmMTE5NWQ2ZTUxYWE0NDA2MyAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXJNYWMubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJNYWMubW0KQEAgLTMxLDYgKzMxLDM3
IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5oIgorI2ltcG9y
dCAiSW5qZWN0ZWRCdW5kbGUuaCIKKyNpbXBvcnQgIkluamVjdGVkQnVuZGxlUGFnZS5oIgorCisj
aW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5oPgorI2ltcG9ydCA8SmF2YVNjcmlw
dENvcmUvSlNTdHJpbmdSZWYuaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVm
Q0YuaD4KKyNpbXBvcnQgPFdlYktpdDIvV0tCdW5kbGUuaD4KKyNpbXBvcnQgPFdlYktpdDIvV0tC
dW5kbGVQYWdlLmg+CisjaW1wb3J0IDxXZWJLaXQyL1dLQnVuZGxlUGFnZVByaXZhdGUuaD4KKwor
Ly8gSWYgYW4gdW5zdXBwb3J0ZWQgYXR0cmlidXRlIGlzIHBhc3NlZCBpbiwgaXQgd2lsbCByYWlz
ZSBhbiBhY2Nlc3NpYmlsaXR5IGV4Y2VwdGlvbi4gVGhlc2UgYXJlIHVzdWFsbHkgY2F1Z2h0IGJ5
IHRoZSBBY2Nlc3NpYmlsaXR5IFJ1bnRpbWUgdG8gaW5mb3JtCisvLyB0aGUgQVggY2xpZW50IGFw
cCBvZiB0aGUgZXJyb3IuIEhvd2V2ZXIsIERSVCBpcyB0aGUgQVggY2xpZW50IGFwcCwgc28gaXQg
bXVzdCBjYXRjaCB0aGVzZSBleGNlcHRpb25zLgorI2RlZmluZSBCRUdJTl9BWF9PQkpDX0VYQ0VQ
VElPTlMgQHRyeSB7CisjZGVmaW5lIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMgfSBAY2F0Y2goTlNF
eGNlcHRpb24gKmUpIHsgaWYgKCFbW2UgbmFtZV0gaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJp
bGl0eUV4Y2VwdGlvbl0pIEB0aHJvdzsgfQorCitAaW50ZXJmYWNlIE5TU3RyaW5nIChKU1N0cmlu
Z1JlZkFkZGl0aW9ucykKKysgKE5TU3RyaW5nICopc3RyaW5nV2l0aEpTU3RyaW5nUmVmOihKU1N0
cmluZ1JlZilqc1N0cmluZ1JlZjsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIE5TU3RyaW5nIChK
U1N0cmluZ1JlZkFkZGl0aW9ucykKKworKyAoTlNTdHJpbmcgKilzdHJpbmdXaXRoSlNTdHJpbmdS
ZWY6KEpTU3RyaW5nUmVmKWpzU3RyaW5nUmVmCit7CisgICAgaWYgKCFqc1N0cmluZ1JlZikKKyAg
ICAgICAgcmV0dXJuIE5VTEw7CisgICAgCisgICAgQ0ZTdHJpbmdSZWYgY2ZTdHJpbmcgPSBKU1N0
cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBqc1N0cmluZ1JlZik7CisgICAg
cmV0dXJuIFsoTlNTdHJpbmcgKiljZlN0cmluZyBhdXRvcmVsZWFzZV07Cit9CisKK0BlbmQKIAog
bmFtZXNwYWNlIFdUUiB7CiAKQEAgLTU5LDQgKzkwLDM0IEBAIGJvb2wgQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXI6OnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCkKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAorc3RhdGljIGlkIGZpbmRBY2Nlc3NpYmxlT2JqZWN0QnlJZChpZCBvYmosIE5TU3RyaW5n
KiBpZEF0dHJpYnV0ZSkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCBv
YmpJZEF0dHJpYnV0ZSA9IFtvYmogYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhEUlRF
bGVtZW50SWRBdHRyaWJ1dGUiXTsKKyAgICBpZiAoW29iaklkQXR0cmlidXRlIGlzS2luZE9mQ2xh
c3M6W05TU3RyaW5nIGNsYXNzXV0gJiYgW29iaklkQXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpp
ZEF0dHJpYnV0ZV0pCisgICAgICAgIHJldHVybiBvYmo7CisgICAgRU5EX0FYX09CSkNfRVhDRVBU
SU9OUworCisgICAgTlNBcnJheSogY2hpbGRyZW4gPSBbb2JqIGFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZV07CisgICAgZm9yIChOU1VJ
bnRlZ2VyIGkgPSAwOyBpIDwgW2NoaWxkcmVuIGNvdW50XTsgKytpKSB7CisgICAgICAgIGlkIHJl
c3VsdCA9IGZpbmRBY2Nlc3NpYmxlT2JqZWN0QnlJZChbY2hpbGRyZW4gb2JqZWN0QXRJbmRleDpp
XSwgaWRBdHRyaWJ1dGUpOworICAgICAgICBpZiAocmVzdWx0KQorICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6YWNjZXNzaWJsZUVsZW1l
bnRCeUlkKEpTU3RyaW5nUmVmIGlkQXR0cmlidXRlKQoreworICAgIFdLQnVuZGxlUGFnZVJlZiBw
YWdlID0gSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpOworICAgIGlkIHJv
b3QgPSBzdGF0aWNfY2FzdDxQbGF0Zm9ybVVJRWxlbWVudD4oV0tBY2Nlc3NpYmlsaXR5Um9vdE9i
amVjdChwYWdlKSk7CisKKyAgICBpZCByZXN1bHQgPSBmaW5kQWNjZXNzaWJsZU9iamVjdEJ5SWQo
cm9vdCwgW05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjppZEF0dHJpYnV0ZV0pOworICAg
IGlmIChyZXN1bHQpCisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVh
dGUocmVzdWx0KTsKKworICAgIHJldHVybiAwOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCBlMmFmMDQzN2QzYjIxYzcwMDMyOTA0OWFkZWY4NTU3ZTViNzAwMmY0Li5jMTEzMWNlZGY4
NGEwNWQ1MDdmYTZlNzY0NWExMDFlNzkyNGNmMjU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIw
MTItMDktMjAgIERvbWluaWMgTWF6em9uaSAgPGRtYXp6b25pQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgQVg6IExheW91dCB0ZXN0cyB3b3VsZCBiZSBlYXNpZXIgdG8gd3JpdGUgaWYgQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIgY291bGQgZmluZCBhbiBlbGVtZW50IGJ5IGlkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzMwMQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vZGlmaWVzIGFuIGV4aXN0aW5nIHRl
c3QgdG8gdXNlIHRoZSBuZXcgYWNjZXNzaWJsZUVsZW1lbnRCeUlkCisgICAgICAgIG1ldGhvZCBv
ZiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlciwgZW5hYmxpbmcgdGhlIHRlc3QgdG8gcGFzcyBvbgor
ICAgICAgICBib3RoIE1hYyBhbmQgQ2hyb21pdW0uCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L2FyaWEtaGlkZGVuLXdpdGgtZWxlbWVudHMuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDEyLTA5LTIxICBab2x0YW4gSGVyY3plZyAgPHpo
ZXJjemVnQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBVbnJldmlld2VkIGdhcmRlbmluZy4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1oaWRkZW4td2l0aC1l
bGVtZW50cy5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWhpZGRlbi13aXRo
LWVsZW1lbnRzLmh0bWwKaW5kZXggM2EzZjhhN2UzMjJjZTIzZjlhZjZlYTgwYTQyY2JiNTNkYjRl
MzQ2OS4uNWE3YTI0NjViMWNlYzhlNWQwODE5YjM2ZGUwYjYwMmVlMTdmZmM0MSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWhpZGRlbi13aXRoLWVsZW1lbnRzLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWhpZGRlbi13aXRoLWVsZW1l
bnRzLmh0bWwKQEAgLTUsNiArNSw4IEBACiA8L2hlYWQ+CiA8Ym9keSBpZD0iYm9keSI+CiAKKzxk
aXYgaWQ9ImNvbnRhaW5lciIgYXJpYS1sYWJlbD0iY29udGFpbmVyIj4KKwogPHRhYmxlIGJvcmRl
cj0xIHN1bW1hcnk9InRlc3QiIGFyaWEtaGlkZGVuPSJ0cnVlIj4KIDx0cj48dGQ+Y2VsbDwvdGQ+
PHRkPmNlbGw8L3RkPjx0ZD5jZWxsPC90ZD48L3RyPgogPHRyPjx0ZD5jZWxsPC90ZD48dGQ+Y2Vs
bDwvdGQ+PHRkPmNlbGw8L3RkPjwvdHI+CkBAIC0yNiw2ICsyOCw4IEBACiAKIDxoMT5oZWFkaW5n
PC9oMT4KIAorPC9kaXY+CisKIDxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgogPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+CiAKQEAgLTM0LDE0ICszOCwxNCBAQAogICAgIGRlc2NyaXB0aW9uKCJUaGlz
IHRlc3RzIHRoYXQgYXJpYS1oaWRkZW4gd29ya3MgYXMgZXhwZWN0ZWQgb24gZWxlbWVudHMgdGhh
dCBhcmUgc3ViY2xhc3NlcyBvZiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Iik7CiAKICAgICBp
ZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7Ci0gICAgICAgdmFyIHJvb3QgPSBh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5yb290RWxlbWVudDsKKyAgICAgICB2YXIgY29udGFpbmVy
ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjb250YWlu
ZXIiKTsKIAogICAgICAgIC8vIGZpcnN0IGNoaWxkIGlzIGFuIEFYR3JvdXAgdGhhdCBoYXMgbm8g
Y2hpbGRyZW4KLSAgICAgICB2YXIgY2hpbGQgPSByb290LmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0
SW5kZXgoMCk7CisgICAgICAgdmFyIGNoaWxkID0gY29udGFpbmVyLmNoaWxkQXRJbmRleCgwKTsK
ICAgICAgICBzaG91bGRCZSgiY2hpbGQuY2hpbGRyZW5Db3VudCIsICIwIik7CiAKICAgICAgICAv
LyBUaGUgc2Vjb25kIGNoaWxkIHdlIGFzayBmb3IgZnJvbSB0aGUgd2ViIGFyZWEgc2hvdWxkIGJl
IHRoZSBoZWFkaW5nLCBhbmQgd2Ugc2hvdWxkIGhhdmUgc2tpcHBlZCBvdmVyIGV2ZXJ5dGhpbmcg
ZWxzZS4KLSAgICAgICBjaGlsZCA9IHJvb3QuY2hpbGRBdEluZGV4KDApLmNoaWxkQXRJbmRleCgx
KTsKKyAgICAgICBjaGlsZCA9IGNvbnRhaW5lci5jaGlsZEF0SW5kZXgoMSk7CiAgICAgICAgc2hv
dWxkQmUoImNoaWxkLnJvbGUiLCAiJ0FYUm9sZTogQVhIZWFkaW5nJyIpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOTFk
Y2U0MTZkOTRmZWY1M2JiYzVkMjc5MzMxMzgyMmJiMmY2ZmYwYS4uYzIxMjExOGIyZjJiOGQ5YTkx
Y2EwOTA2ZTUwNmUxYzMxNGY2MzcwMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9UZXN0RXhwZWN0YXRpb25zCkBAIC0xMzQ0LDcgKzEzNDQsNiBAQCBjcmJ1Zy5jb20vMTAz
MjIgYWNjZXNzaWJpbGl0eS9hcmlhLWNvbWJvYm94Lmh0bWwgWyBTa2lwIF0KIGNyYnVnLmNvbS8x
MDMyMiBhY2Nlc3NpYmlsaXR5L2FyaWEtY29udHJvbHMtd2l0aC10YWJzLmh0bWwgWyBTa2lwIF0K
IGNyYnVnLmNvbS8xMDMyMiBhY2Nlc3NpYmlsaXR5L2FyaWEtZmFsbGJhY2stcm9sZXMuaHRtbCBb
IFNraXAgXQogY3JidWcuY29tLzEwMzIyIGFjY2Vzc2liaWxpdHkvYXJpYS1oaWRkZW4tdXBkYXRl
Lmh0bWwgWyBTa2lwIF0KLWNyYnVnLmNvbS8xMDMyMiBhY2Nlc3NpYmlsaXR5L2FyaWEtaGlkZGVu
LXdpdGgtZWxlbWVudHMuaHRtbCBbIFNraXAgXQogY3JidWcuY29tLzEwMzIyIGFjY2Vzc2liaWxp
dHkvYXJpYS1pbnZhbGlkLmh0bWwgWyBTa2lwIF0KIGNyYnVnLmNvbS8xMDMyMiBhY2Nlc3NpYmls
aXR5L2FyaWEtbGFiZWxsZWRieS1vdmVycmlkZXMtbGFiZWwuaHRtbCBbIFNraXAgXQogY3JidWcu
Y29tLzEwMzIyIGFjY2Vzc2liaWxpdHkvYXJpYS1saW5rLXN1cHBvcnRzLXByZXNzLmh0bWwgWyBT
a2lwIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165148</attachid>
            <date>2012-09-21 10:05:42 -0700</date>
            <delta_ts>2012-09-21 15:11:37 -0700</delta_ts>
            <desc>Feedback addressed</desc>
            <filename>bug-97301-20120921100614.patch</filename>
            <type>text/plain</type>
            <size>32393</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmU1MjIwNzU5ODViMzc1
OTRjYjAyYWE0NTBiZjI2M2M3MTM3YTY0Ni4uYjhiMTA2Njg3NWJhNjBkMjk4YjQyNDgxY2M0NTlk
NTljN2IxZDQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA5LTIwICBEb21p
bmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFYOiBMYXlvdXQg
dGVzdHMgd291bGQgYmUgZWFzaWVyIHRvIHdyaXRlIGlmIEFjY2Vzc2liaWxpdHlDb250cm9sbGVy
IGNvdWxkIGZpbmQgYW4gZWxlbWVudCBieSBpZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTczMDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgYSBtZXRob2QgdG8gZ2V0IHRoZSBET00gImlkIiBhdHRy
aWJ1dGUgZnJvbSBhbiBhY2Nlc3NpYmxlIG9iamVjdCwgb25seSBmb3IgbGF5b3V0IHRlc3RzLgor
CisgICAgICAgIE1ha2VzIGV4aXN0aW5nIHRlc3QgbW9yZSBjcm9zcy1wbGF0Zm9ybToKKyAgICAg
ICAgVGVzdHM6IGFjY2Vzc2liaWxpdHkvYXJpYS1oaWRkZW4td2l0aC1lbGVtZW50cy5odG1sCisK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ci5tbToKKwogMjAxMi0wOS0yMSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFp
bC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyOTIxOS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0KaW5kZXggMjZjN2FhZTI3YWJiZmVkZTcwMGZjZjE2
M2I0OWFhY2U2YjZiNGRhYy4uYTQzOTRiYTIwNjA1Nzg0MjU2YzU2ZDg3MDBkZjI4MzYzY2QwMGMw
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0KQEAgLTI0MzAsNiArMjQzMCwx
MCBAQCBzdGF0aWMgTlNTdHJpbmcqIHJvbGVWYWx1ZVRvTlNTdHJpbmcoQWNjZXNzaWJpbGl0eVJv
bGUgdmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gQCJub3JtYWwiOwogICAgICAgICB9CiAgICAg
fQorCisgICAgLy8gVXNlZCBieSBEUlQgdG8gZmluZCBhbiBhY2Nlc3NpYmxlIG5vZGUgYnkgaXRz
IGVsZW1lbnQgaWQuCisgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpAIkFY
RFJURWxlbWVudElkQXR0cmlidXRlIl0pCisgICAgICAgIHJldHVybiBtX29iamVjdC0+Z2V0QXR0
cmlidXRlKGlkQXR0cik7CiAgICAgCiAgICAgcmV0dXJuIG5pbDsKIH0KZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmYTliODU4ZDNjMGY2NjZmNDVj
NGIyMGUxMDUwZDI2YjczYjg2M2YwLi44ZDhiODNhNzY3NDhmYzhiZjYyOWE5ODg0MDZiNWQyZDZi
ZTFiYTNmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjcgQEAKKzIwMTItMDktMjAgIERvbWluaWMgTWF6em9uaSAgPGRtYXp6b25p
QGdvb2dsZS5jb20+CisKKyAgICAgICAgQVg6IExheW91dCB0ZXN0cyB3b3VsZCBiZSBlYXNpZXIg
dG8gd3JpdGUgaWYgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIgY291bGQgZmluZCBhbiBlbGVtZW50
IGJ5IGlkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
NzMwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZHMgYSBuZXcgYWNjZXNzaWJsZUVsZW1lbnRCeUlkIG1ldGhvZCB0byBBY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlciwgdG8gbWFrZSBpdAorICAgICAgICBlYXNpZXIgdG8gd3JpdGUgY3Jvc3MtcGxhdGZv
cm0gbGF5b3V0IHRlc3RzLgorCisgICAgICAgIEltcGxlbWVudGVkIGZvciBDaHJvbWl1bSBhbmQg
Zm9yIE1hYyAoRFJUIGFuZCBXS1RSKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0FjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9BY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJDaHJvbWl1bS5jcHA6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9BY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ckNocm9taXVtLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0FjY2Vzc2liaWxpdHlD
b250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXJNYWMubW06CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vz
c2liaWxpdHlDb250cm9sbGVyV2luLmNwcDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmg6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJNYWMubW06CisKIDIwMTItMDktMjEg
IFBldGVyIEJldmVybG9vICA8cGV0ZXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1
bV0gU3dpdGNoIGJhY2sgdG8gYSBmaXhlZCBmaWZvIHBhdGggZm9yIEFuZHJvaWQKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcAppbmRleCBiMzY3
ZDVjNDY5ZDliYTk4ZDI1NWM4ZWRmZWU2Zjk1ODkzNWMzYjVmLi40OWQ0NTNhODRjZGViY2RiOGEz
MjI2YmZkOTJjYzgxMTgyNGE2NTczIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9B
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwCkBAIC05Nyw2ICs5NywxOCBAQCBzdGF0aWMgSlNWYWx1
ZVJlZiBnZXRFbGVtZW50QXRQb2ludENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09i
amVjdFJlZiBmdQogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYWtlSlNBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50KGNvbnRleHQsIGNvbnRyb2xsZXItPmVsZW1lbnRBdFBvaW50KHgs
IHkpKTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgZ2V0QWNjZXNzaWJsZUVsZW1lbnRCeUlkQ2Fs
bGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVj
dFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBh
cmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIEpTU3RyaW5nUmVmIGlk
QXR0cmlidXRlID0gMDsKKyAgICBpZiAoYXJndW1lbnRDb3VudCA9PSAxKQorICAgICAgICBpZEF0
dHJpYnV0ZSA9IEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNl
cHRpb24pOyAgICAKKyAgICBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0
YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRo
aXNPYmplY3QpKTsKKyAgICBKU1ZhbHVlUmVmIHJlc3VsdCA9IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6Om1ha2VKU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQoY29udGV4dCwgY29udHJvbGxlci0+YWNj
ZXNzaWJsZUVsZW1lbnRCeUlkKGlkQXR0cmlidXRlKSk7CisgICAgaWYgKGlkQXR0cmlidXRlKQor
ICAgICAgICBKU1N0cmluZ1JlbGVhc2UoaWRBdHRyaWJ1dGUpOworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIGFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyQ2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0
aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVu
dHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIGlmIChhcmd1bWVudENvdW50ICE9
IDEpCkBAIC0xMjMsNiArMTM1LDcgQEAgSlNDbGFzc1JlZiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cjo6Z2V0SlNDbGFzcygpCiAgICAgICAgIHsgImxvZ1Njcm9sbGluZ1N0YXJ0RXZlbnRzIiwgbG9n
U2Nyb2xsaW5nU3RhcnRFdmVudHNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJsb2dBY2Nl
c3NpYmlsaXR5RXZlbnRzIiwgbG9nQWNjZXNzaWJpbGl0eUV2ZW50c0NhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CiAgICAgICAgIHsgImVsZW1lbnRBdFBvaW50IiwgZ2V0RWxlbWVudEF0UG9pbnRDYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LAorICAgICAgICB7ICJhY2Nlc3NpYmxlRWxlbWVudEJ5SWQiLCBnZXRBY2Nlc3NpYmxl
RWxlbWVudEJ5SWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJhZGROb3RpZmljYXRpb25M
aXN0ZW5lciIsIGFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAg
ICAgeyAicmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIiLCByZW1vdmVOb3RpZmljYXRpb25MaXN0
ZW5lckNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgMCwgMCwgMCB9CmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaAppbmRleCAxZDUyMzUzY2Q2Y2E3
NzQwMTdiYTA0YTVmNzBhYWZjMmY1MzYyNDNjLi5hNmNkYzQ2ODZjMTMyZmY1ODZkNTgyZmU1MWEw
NzY4ZWU3MmMwMTAwIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgcHVibGljOgogICAgIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQgcm9vdEVsZW1lbnQoKTsKICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IGZvY3Vz
ZWRFbGVtZW50KCk7CiAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBlbGVtZW50QXRQb2ludChp
bnQgeCwgaW50IHkpOworICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgYWNjZXNzaWJsZUVsZW1l
bnRCeUlkKEpTU3RyaW5nUmVmIGlkKTsKIAogICAgIHZvaWQgc2V0TG9nRm9jdXNFdmVudHMoYm9v
bCk7CiAgICAgdm9pZCBzZXRMb2dWYWx1ZUNoYW5nZUV2ZW50cyhib29sKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXJDaHJvbWl1bS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyQ2hyb21pdW0uY3BwCmluZGV4IGIxZDI5NDhh
ZWJhYjMyOTgyNDkyNzU0NTgyNDU4MzA3MzE0YmNkZWQuLjg5ZDVkNTg3NzBjNjFkMWFhZTkxNjBi
YTM0ZTQzNjc2NTE2YjA3YzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJDaHJvbWl1bS5jcHAKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9BY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlckNocm9taXVtLmNwcApAQCAtMzIsOSArMzIsMTEgQEAKICNpbmNsdWRlICJBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlckNocm9taXVtLmgiCiAKICNpbmNsdWRlICJXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0LmgiCisjaW5jbHVkZSAiV2ViRWxlbWVudC5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgi
CisjaW5jbHVkZSAiV2ViTm9kZS5oIgogI2luY2x1ZGUgIldlYlZpZXcuaCIKLSNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDU3RyaW5nLmgiCiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKQEAgLTQ5LDYgKzUxLDggQEAgQWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCkKICAgICBiaW5kUHJvcGVydHko
ImZvY3VzZWRFbGVtZW50IiwgJkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpmb2N1c2VkRWxlbWVu
dEdldHRlckNhbGxiYWNrKTsKICAgICBiaW5kUHJvcGVydHkoInJvb3RFbGVtZW50IiwgJkFjY2Vz
c2liaWxpdHlDb250cm9sbGVyOjpyb290RWxlbWVudEdldHRlckNhbGxiYWNrKTsKIAorICAgIGJp
bmRNZXRob2QoImFjY2Vzc2libGVFbGVtZW50QnlJZCIsICZBY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cjo6YWNjZXNzaWJsZUVsZW1lbnRCeUlkR2V0dGVyQ2FsbGJhY2spOworCiAgICAgYmluZEZhbGxi
YWNrTWV0aG9kKCZBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6ZmFsbGJhY2tDYWxsYmFjayk7CiB9
CiAKQEAgLTg2LDYgKzkwLDM2IEBAIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIEFjY2Vzc2liaWxp
dHlDb250cm9sbGVyOjpnZXRSb290RWxlbWVudCgpCiAgICAgcmV0dXJuIG1fZWxlbWVudHMuY3Jl
YXRlUm9vdChtX3Jvb3RFbGVtZW50KTsKIH0KIAorQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmZpbmRBY2Nlc3NpYmxlRWxlbWVudEJ5SWRSZWN1cnNpdmUo
Y29uc3QgV2ViQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqLCBjb25zdCBXZWJTdHJpbmcmIGlkKQor
eworICAgIGlmIChvYmouaXNOdWxsKCkgfHwgb2JqLmlzRGV0YWNoZWQoKSkKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICBXZWJOb2RlIG5vZGUgPSBvYmoubm9kZSgpOworICAgIGlmICghbm9kZS5p
c051bGwoKSAmJiBub2RlLmlzRWxlbWVudE5vZGUoKSkgeworICAgICAgICBXZWJFbGVtZW50IGVs
ZW1lbnQgPSBub2RlLnRvPFdlYkVsZW1lbnQ+KCk7CisgICAgICAgIGVsZW1lbnQuZ2V0QXR0cmli
dXRlKCJpZCIpOworICAgICAgICBpZiAoZWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikgPT0gaWQp
IAorICAgICAgICAgICAgcmV0dXJuIG1fZWxlbWVudHMuZ2V0T3JDcmVhdGUob2JqKTsKKyAgICB9
CisKKyAgICB1bnNpZ25lZCBjaGlsZENvdW50ID0gb2JqLmNoaWxkQ291bnQoKTsKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgY2hpbGRDb3VudDsgaSsrKSB7CisgICAgICAgIGlmIChBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50KiByZXN1bHQgPSBmaW5kQWNjZXNzaWJsZUVsZW1lbnRCeUlkUmVj
dXJzaXZlKG9iai5jaGlsZEF0KGkpLCBpZCkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIH0KKworICAgIHJldHVybiAwOworfQorCitBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBBY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcjo6Z2V0QWNjZXNzaWJsZUVsZW1lbnRCeUlkKGNvbnN0IHN0ZDo6
c3RyaW5nJiBpZCkKK3sKKyAgICBpZiAobV9yb290RWxlbWVudC5pc051bGwoKSkKKyAgICAgICAg
bV9yb290RWxlbWVudCA9IG1fd2ViVmlldy0+YWNjZXNzaWJpbGl0eU9iamVjdCgpOworCisgICAg
cmV0dXJuIGZpbmRBY2Nlc3NpYmxlRWxlbWVudEJ5SWRSZWN1cnNpdmUobV9yb290RWxlbWVudCwg
V2ViU3RyaW5nOjpmcm9tVVRGOChpZC5jX3N0cigpKSk7Cit9CisKIGJvb2wgQWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXI6OnNob3VsZExvZ0FjY2Vzc2liaWxpdHlFdmVudHMoKQogewogICAgIHJldHVy
biBtX2xvZ0FjY2Vzc2liaWxpdHlFdmVudHM7CkBAIC0xNDEsNiArMTc1LDIxIEBAIHZvaWQgQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnJvb3RFbGVtZW50R2V0dGVyQ2FsbGJhY2soQ3BwVmFyaWFu
dCogcmVzdWx0KQogICAgIHJlc3VsdC0+c2V0KCooZ2V0Um9vdEVsZW1lbnQoKS0+Z2V0QXNDcHBW
YXJpYW50KCkpKTsKIH0KIAordm9pZCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6YWNjZXNzaWJs
ZUVsZW1lbnRCeUlkR2V0dGVyQ2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVu
dHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICByZXN1bHQtPnNldE51bGwoKTsKKworICAg
IGlmIChhcmd1bWVudHMuc2l6ZSgpIDwgMSB8fCAhYXJndW1lbnRzWzBdLmlzU3RyaW5nKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIHN0ZDo6c3RyaW5nIGlkID0gYXJndW1lbnRzWzBdLnRvU3Ry
aW5nKCk7CisgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogZm91bmRFbGVtZW50ID0gZ2V0QWNj
ZXNzaWJsZUVsZW1lbnRCeUlkKGlkKTsKKyAgICBpZiAoIWZvdW5kRWxlbWVudCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgcmVzdWx0LT5zZXQoKihmb3VuZEVsZW1lbnQtPmdldEFzQ3BwVmFyaWFu
dCgpKSk7Cit9CisKIHZvaWQgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmZhbGxiYWNrQ2FsbGJh
Y2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIHBy
aW50ZigiQ09OU09MRSBNRVNTQUdFOiBKYXZhU2NyaXB0IEVSUk9SOiB1bmtub3duIG1ldGhvZCBj
YWxsZWQgb24gIgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckNocm9taXVtLmggYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyQ2hyb21p
dW0uaAppbmRleCAxMWMwODJiM2U4MDhjMWY2MzBlYjg1MTg0ZTZlOGZiM2U4MTZmNDk4Li5mMGY1
ZGVlODU2MmQ5NTQxZjAwY2YxMDI0ZDg2Y2Y2NjFjNjM3ZDEwIDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL0FjY2Vzc2liaWxpdHlDb250cm9sbGVy
Q2hyb21pdW0uaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L0FjY2Vzc2liaWxpdHlDb250cm9sbGVyQ2hyb21pdW0uaApAQCAtNTEsNiArNTEsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRGb2N1c2VkRWxlbWVudChjb25zdCBXZWJLaXQ6OldlYkFjY2Vzc2li
aWxpdHlPYmplY3QmKTsKICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBnZXRGb2N1c2VkRWxl
bWVudCgpOwogICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIGdldFJvb3RFbGVtZW50KCk7Cisg
ICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogZ2V0QWNjZXNzaWJsZUVsZW1lbnRCeUlkKGNvbnN0
IHN0ZDo6c3RyaW5nJiBpZCk7CiAKICAgICBib29sIHNob3VsZExvZ0FjY2Vzc2liaWxpdHlFdmVu
dHMoKTsKIApAQCAtNzAsNiArNzEsOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBmb2N1c2VkRWxl
bWVudEdldHRlckNhbGxiYWNrKENwcFZhcmlhbnQqKTsKICAgICB2b2lkIHJvb3RFbGVtZW50R2V0
dGVyQ2FsbGJhY2soQ3BwVmFyaWFudCopOworICAgIHZvaWQgYWNjZXNzaWJsZUVsZW1lbnRCeUlk
R2V0dGVyQ2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworCisg
ICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogZmluZEFjY2Vzc2libGVFbGVtZW50QnlJZFJlY3Vy
c2l2ZShjb25zdCBXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3QmLCBjb25zdCBXZWJLaXQ6
OldlYlN0cmluZyYgaWQpOwogCiAgICAgV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0IG1f
Zm9jdXNlZEVsZW1lbnQ7CiAgICAgV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0IG1fcm9v
dEVsZW1lbnQ7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXJHdGsuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0FjY2Vzc2li
aWxpdHlDb250cm9sbGVyR3RrLmNwcAppbmRleCBjZWViOGRmY2JmZmEzOWY1MzVhMzliMGRkY2Jl
Y2IyY2EzNjI1OWIwLi40NjYxODJiYjMwNWE2Njc2MDgwNmJlZjg0OGQ5NGM3NjIyZjg3NWNlIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXJHdGsuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9BY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlckd0ay5jcHAKQEAgLTcwLDYgKzcwLDEyIEBAIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQg
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnJvb3RFbGVtZW50KCkKICAgICByZXR1cm4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudChhY2Nlc3NpYmxlKTsKIH0KIAorQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6YWNjZXNzaWJsZUVsZW1lbnRCeUlkKEpTU3RyaW5n
UmVmIGlkKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gMDsKK30KKwog
dm9pZCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6c2V0TG9nRm9jdXNFdmVudHMoYm9vbCkKIHsK
IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5Q29t
bW9uTWFjLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1h
Yy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjdiMGE0OWZhZmIzODQ3ZmYyNGQ4YmUyODE1MmZlYmNkYzM4ODI0ZTYK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0
eUNvbW1vbk1hYy5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEFjY2Vzc2liaWxpdHlDb21tb25N
YWNfaAorI2RlZmluZSBBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjX2gKKworI2ltcG9ydCA8SmF2YVNj
cmlwdENvcmUvSlNTdHJpbmdSZWYuaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5n
UmVmQ0YuaD4KKworLy8gSWYgYW4gdW5zdXBwb3J0ZWQgYXR0cmlidXRlIGlzIHBhc3NlZCBpbiwg
aXQgd2lsbCByYWlzZSBhbiBhY2Nlc3NpYmlsaXR5IGV4Y2VwdGlvbi4gVGhlc2UgYXJlIHVzdWFs
bHkgY2F1Z2h0IGJ5IHRoZSBBY2Nlc3NpYmlsaXR5IFJ1bnRpbWUgdG8gaW5mb3JtCisvLyB0aGUg
QVggY2xpZW50IGFwcCBvZiB0aGUgZXJyb3IuIEhvd2V2ZXIsIERSVCBpcyB0aGUgQVggY2xpZW50
IGFwcCwgc28gaXQgbXVzdCBjYXRjaCB0aGVzZSBleGNlcHRpb25zLgorI2RlZmluZSBCRUdJTl9B
WF9PQkpDX0VYQ0VQVElPTlMgQHRyeSB7CisjZGVmaW5lIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMg
fSBAY2F0Y2goTlNFeGNlcHRpb24gKmUpIHsgaWYgKCFbW2UgbmFtZV0gaXNFcXVhbFRvU3RyaW5n
Ok5TQWNjZXNzaWJpbGl0eUV4Y2VwdGlvbl0pIEB0aHJvdzsgfQorCisKK0BpbnRlcmZhY2UgTlNT
dHJpbmcgKEpTU3RyaW5nUmVmQWRkaXRpb25zKQorKyAoTlNTdHJpbmcgKilzdHJpbmdXaXRoSlNT
dHJpbmdSZWY6KEpTU3RyaW5nUmVmKWpzU3RyaW5nUmVmOworLSAoSlNTdHJpbmdSZWYpY3JlYXRl
SlNTdHJpbmdSZWY7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBOU1N0cmluZyAoSlNTdHJpbmdS
ZWZBZGRpdGlvbnMpCisKKysgKE5TU3RyaW5nICopc3RyaW5nV2l0aEpTU3RyaW5nUmVmOihKU1N0
cmluZ1JlZilqc1N0cmluZ1JlZgoreworICAgIGlmICghanNTdHJpbmdSZWYpCisgICAgICAgIHJl
dHVybiBuaWw7CisKKyAgICBDRlN0cmluZ1JlZiBjZlN0cmluZyA9IEpTU3RyaW5nQ29weUNGU3Ry
aW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGpzU3RyaW5nUmVmKTsKKyAgICByZXR1cm4gWyhOU1N0
cmluZyAqKWNmU3RyaW5nIGF1dG9yZWxlYXNlXTsKK30KKworLSAoSlNTdHJpbmdSZWYpY3JlYXRl
SlNTdHJpbmdSZWYKK3sKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENG
U3RyaW5nUmVmKXNlbGYpOworfQorCitAZW5kCisKKyNlbmRpZiAvLyBBY2Nlc3NpYmlsaXR5Q29t
bW9uTWFjX2gKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmls
aXR5Q29udHJvbGxlck1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmls
aXR5Q29udHJvbGxlck1hYy5tbQppbmRleCA2ZmMwZGQwNTY1Nzk0ZWY4NDY1NjI2ODgyNzA2MmE1
ZGZlMGU1YjI2Li42ZTAyMTMyNDEyYjVkOWVlOTlmYTAzY2VlNDIzZGRlYjU1YzQ0ZjVkIDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJN
YWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlDb250cm9s
bGVyTWFjLm1tCkBAIC0yNywxMCArMjcsMTMgQEAKICNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlLmgi
CiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oIgogCisjaW1wb3J0ICJBY2Nlc3Np
YmlsaXR5Q29tbW9uTWFjLmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFu
ZGxlci5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oIgogI2ltcG9ydCA8QXBw
S2l0L05TQ29sb3IuaD4KICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9y
dCA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWYuaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3Jl
L0pTU3RyaW5nUmVmQ0YuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJGcmFtZS5oPgogI2ltcG9ydCA8
V2ViS2l0L1dlYkZyYW1lUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkhUTUxWaWV3Lmg+
CkBAIC02OCw2ICs3MSwzNiBAQCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlD
b250cm9sbGVyOjpyb290RWxlbWVudCgpCiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQoYWNjZXNzaWJpbGl0eU9iamVjdCk7CiB9CiAKK3N0YXRpYyBpZCBmaW5kQWNjZXNzaWJsZU9i
amVjdEJ5SWQoaWQgb2JqLCBOU1N0cmluZyAqaWRBdHRyaWJ1dGUpCit7CisgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCisgICAgaWQgb2JqSWRBdHRyaWJ1dGUgPSBbb2JqIGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpAIkFYRFJURWxlbWVudElkQXR0cmlidXRlIl07CisgICAgaWYgKFtv
YmpJZEF0dHJpYnV0ZSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dICYmIFtvYmpJZEF0
dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6aWRBdHRyaWJ1dGVdKQorICAgICAgICByZXR1cm4gb2Jq
OworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKworICAgIE5TQXJyYXkgKmNoaWxkcmVuID0g
W29iaiBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5B
dHRyaWJ1dGVdOworICAgIE5TVUludGVnZXIgY2hpbGRyZW5Db3VudCA9IFtjaGlsZHJlbiBjb3Vu
dF07CisgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgY2hpbGRyZW5Db3VudDsgKytpKSB7
CisgICAgICAgIGlkIHJlc3VsdCA9IGZpbmRBY2Nlc3NpYmxlT2JqZWN0QnlJZChbY2hpbGRyZW4g
b2JqZWN0QXRJbmRleDppXSwgaWRBdHRyaWJ1dGUpOworICAgICAgICBpZiAocmVzdWx0KQorICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6YWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKEpTU3RyaW5nUmVmIGlkQXR0cmlidXRlUmVmKQoreworICAgIE5TU3RyaW5nICpp
ZEF0dHJpYnV0ZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6aWRBdHRyaWJ1dGVS
ZWZdOworICAgIGlkIHJvb3QgPSBbW21haW5GcmFtZSBhY2Nlc3NpYmlsaXR5Um9vdF0gYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVBhcmVudEF0dHJpYnV0ZV07Cisg
ICAgaWQgcmVzdWx0ID0gZmluZEFjY2Vzc2libGVPYmplY3RCeUlkKHJvb3QsIGlkQXR0cmlidXRl
KTsKKyAgICBpZiAocmVzdWx0KQorICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dChyZXN1bHQpOworCisgICAgcmV0dXJuIDA7Cit9CisKIHZvaWQgQWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXI6OnNldExvZ0ZvY3VzRXZlbnRzKGJvb2wpCiB7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCmluZGV4IDVhYmQ1
MjcwMDE3ZWEyM2UyYjYwNTJjZTBiY2E1YTI2MzcyYjg4NTEuLmNkMWM5MmQxMjRmNzMxNjRiMDNk
ODBmMjM2ZThlMDE5NmM3OGIyMmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCkBAIC0yNSw2ICsyNSw3IEBACiAKICNp
bXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiRHVtcFJlbmRlclRyZWUuaCIKKyNpbXBvcnQgIkFj
Y2Vzc2liaWxpdHlDb21tb25NYWMuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlOb3RpZmljYXRp
b25IYW5kbGVyLmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgiCiAKQEAgLTUx
LDEyICs1Miw2IEBACiAjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eURyb3BFZmZlY3RzQXR0cmlidXRl
IEAiQVhEcm9wRWZmZWN0cyIKICNlbmRpZgogCi0vLyBJZiBhbiB1bnN1cHBvcnRlZCBhdHRyaWJ1
dGUgaXMgcGFzc2VkIGluLCBpdCB3aWxsIHJhaXNlIGFuIGFjY2Vzc2liaWxpdHkgZXhjZXB0aW9u
LiBUaGVzZSBhcmUgdXN1YWxseSBjYXVnaHQgYnkgdGhlIEFjY2Vzc2liaWxpdHkgUnVudGltZSB0
byBpbmZvcm0KLS8vIHRoZSBBWCBjbGllbnQgYXBwIG9mIHRoZSBlcnJvci4gSG93ZXZlciwgRFJU
IGlzIHRoZSBBWCBjbGllbnQgYXBwLCBzbyBpdCBtdXN0IGNhdGNoIHRoZXNlIGV4Y2VwdGlvbnMu
Ci0jZGVmaW5lIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUyBAdHJ5IHsKLSNkZWZpbmUgRU5EX0FY
X09CSkNfRVhDRVBUSU9OUyB9IEBjYXRjaChOU0V4Y2VwdGlvbiAqZSkgeyBpZiAoIVtbZSBuYW1l
XSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5RXhjZXB0aW9uXSkgQHRocm93OyB9Ci0K
LQogdHlwZWRlZiB2b2lkICgqQVhQb3N0ZWROb3RpZmljYXRpb25DYWxsYmFjaykoaWQgZWxlbWVu
dCwgTlNTdHJpbmcqIG5vdGlmaWNhdGlvbiwgdm9pZCogY29udGV4dCk7CiAKIEBpbnRlcmZhY2Ug
TlNPYmplY3QgKFdlYktpdEFjY2Vzc2liaWxpdHlBZGRpdGlvbnMpCkBAIC02NSwyOSArNjAsNiBA
QCB0eXBlZGVmIHZvaWQgKCpBWFBvc3RlZE5vdGlmaWNhdGlvbkNhbGxiYWNrKShpZCBlbGVtZW50
LCBOU1N0cmluZyogbm90aWZpY2F0aW9uLAogLSAoTlNVSW50ZWdlcilhY2Nlc3NpYmlsaXR5QXJy
YXlBdHRyaWJ1dGVDb3VudDooTlNTdHJpbmcgKilhdHRyaWJ1dGU7CiBAZW5kCiAKLUBpbnRlcmZh
Y2UgTlNTdHJpbmcgKEpTU3RyaW5nUmVmQWRkaXRpb25zKQotKyAoTlNTdHJpbmcgKilzdHJpbmdX
aXRoSlNTdHJpbmdSZWY6KEpTU3RyaW5nUmVmKWpzU3RyaW5nUmVmOwotLSAoSlNTdHJpbmdSZWYp
Y3JlYXRlSlNTdHJpbmdSZWY7Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBOU1N0cmluZyAoSlNT
dHJpbmdSZWZBZGRpdGlvbnMpCi0KLSsgKE5TU3RyaW5nICopc3RyaW5nV2l0aEpTU3RyaW5nUmVm
OihKU1N0cmluZ1JlZilqc1N0cmluZ1JlZgotewotICAgIGlmICghanNTdHJpbmdSZWYpCi0gICAg
ICAgIHJldHVybiBOVUxMOwotICAgIAotICAgIENGU3RyaW5nUmVmIGNmU3RyaW5nID0gSlNTdHJp
bmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwganNTdHJpbmdSZWYpOwotICAgIHJl
dHVybiBbKE5TU3RyaW5nICopY2ZTdHJpbmcgYXV0b3JlbGVhc2VdOwotfQotCi0tIChKU1N0cmlu
Z1JlZiljcmVhdGVKU1N0cmluZ1JlZgotewotICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhD
RlN0cmluZygoQ0ZTdHJpbmdSZWYpc2VsZik7Ci19Ci0KLUBlbmQKLQogQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudChQbGF0Zm9ybVVJRWxlbWVudCBlbGVtZW50
KQogICAgIDogbV9lbGVtZW50KGVsZW1lbnQpCiAgICAgLCBtX25vdGlmaWNhdGlvbkhhbmRsZXIo
MCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcldpbi5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXJXaW4uY3BwCmluZGV4IDdmOWFhNmNjMmVlOTI5YjJiZjhlYTQxNmY1ZDY1YmIwNTZl
M2VhZDEuLjllNzZjOGRkYTMzMjdhMDdlOGU4N2UzMzZjOGFkNjlhOTQ0NDY4ODkgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcldpbi5j
cHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlDb250cm9sbGVy
V2luLmNwcApAQCAtNjcsNiArNjcsMTIgQEAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlcjo6ZWxlbWVudEF0UG9pbnQoaW50IHgsIGludCB5KQogICAgIHJldHVy
biAwOwogfQogCitBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlDb250cm9sbGVy
OjphY2Nlc3NpYmxlRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWQpCit7CisgICAgLy8gRklYTUU6
IGltcGxlbWVudAorICAgIHJldHVybiAwOworfQorCiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyOjpmb2N1c2VkRWxlbWVudCgpCiB7CiAgICAgQ09NUHRyPElB
Y2Nlc3NpYmxlPiByb290QWNjZXNzaWJsZSA9IHJvb3RFbGVtZW50KCkucGxhdGZvcm1VSUVsZW1l
bnQoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAKaW5kZXggMmNkMzA0OWZlMTU3
OTU3NzZhYmQxMzIyMGIyZTJhYTBlZGNmZjc1ZC4uYzZmN2Q3NWNjM2I3OWQwNmMwYzJjYzYyZTg5
ZmI5YTQwODlhMTJkNiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAKQEAgLTEw
Niw2ICsxMDYsNyBAQCBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2li
aWxpdHlDb250cm9sbGVyOjplbGVtZW50QXRQb2ludChpbnQgeAogI2lmICFQTEFURk9STShNQUMp
CiBib29sIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjphZGROb3RpZmljYXRpb25MaXN0ZW5lcihK
U1ZhbHVlUmVmKSB7IHJldHVybiBmYWxzZTsgfQogYm9vbCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cjo6cmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIoKSB7IHJldHVybiBmYWxzZTsgfQorUGFzc1Jl
ZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6YWNj
ZXNzaWJsZUVsZW1lbnRCeUlkKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkgeyByZXR1cm4gMDsgfQog
I2VuZGlmCiAKICNpZiAhUExBVEZPUk0oR1RLKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5o
CmluZGV4IDNjODdjYWM1ZDVjNmE5YzQwNjIwN2IzN2I2YWUzNzNhZTRkM2I3NzkuLmYwMmZlYWMw
NTU5OThjNzk2OWE0YWRlNGViZjUwMTA0YTc3NDA5YWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gcm9vdEVsZW1lbnQoKTsKICAgICBQYXNzUmVmUHRyPEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ+IGZvY3VzZWRFbGVtZW50KCk7CiAgICAgUGFzc1JlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiBlbGVtZW50QXRQb2ludChpbnQgeCwgaW50IHkpOworICAgIFBhc3NS
ZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gYWNjZXNzaWJsZUVsZW1lbnRCeUlkKEpTU3Ry
aW5nUmVmIGlkQXR0cmlidXRlKTsKIAogICAgIGJvb2wgYWRkTm90aWZpY2F0aW9uTGlzdGVuZXIo
SlNWYWx1ZVJlZiBmdW5jdGlvbkNhbGxiYWNrKTsKICAgICBib29sIHJlbW92ZU5vdGlmaWNhdGlv
bkxpc3RlbmVyKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmlkbCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuaWRsCmluZGV4IDJkZjhjMjc5ZjliZDg4OTYxMjY3YTZiMGNjNDBiMGFiY2YxMTQ4ZDkuLmJk
MDVmMTMzNDMwODVmODk4NDRhOWVjMTkyNTFmNDFlYzEwMTlkNTMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QmluZGluZ3MvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaWRsCkBAIC0yOSw2ICsyOSw3IEBAIG1v
ZHVsZSBXVFIgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudCByb290RWxlbWVudDsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQgZm9jdXNlZEVsZW1lbnQ7CiAgICAgICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQgZWxlbWVudEF0UG9pbnQoaW4gaW50IHgsIGluIGludCB5KTsKKyAgICAgICAgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudCBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoaW4gRE9NU3RyaW5nIGlkKTsKICAg
ICAgICAgCiAgICAgICAgIGJvb2xlYW4gYWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoaW4gb2JqZWN0
IGZ1bmN0aW9uQ2FsbGJhY2spOwogICAgICAgICBib29sZWFuIHJlbW92ZU5vdGlmaWNhdGlvbkxp
c3RlbmVyKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
N2IwYTQ5ZmFmYjM4NDdmZjI0ZDhiZTI4MTUyZmViY2RjMzg4MjRlNgotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxp
dHlDb21tb25NYWMuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBY2Nlc3NpYmlsaXR5Q29tbW9u
TWFjX2gKKyNkZWZpbmUgQWNjZXNzaWJpbGl0eUNvbW1vbk1hY19oCisKKyNpbXBvcnQgPEphdmFT
Y3JpcHRDb3JlL0pTU3RyaW5nUmVmLmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU1N0cmlu
Z1JlZkNGLmg+CisKKy8vIElmIGFuIHVuc3VwcG9ydGVkIGF0dHJpYnV0ZSBpcyBwYXNzZWQgaW4s
IGl0IHdpbGwgcmFpc2UgYW4gYWNjZXNzaWJpbGl0eSBleGNlcHRpb24uIFRoZXNlIGFyZSB1c3Vh
bGx5IGNhdWdodCBieSB0aGUgQWNjZXNzaWJpbGl0eSBSdW50aW1lIHRvIGluZm9ybQorLy8gdGhl
IEFYIGNsaWVudCBhcHAgb2YgdGhlIGVycm9yLiBIb3dldmVyLCBEUlQgaXMgdGhlIEFYIGNsaWVu
dCBhcHAsIHNvIGl0IG11c3QgY2F0Y2ggdGhlc2UgZXhjZXB0aW9ucy4KKyNkZWZpbmUgQkVHSU5f
QVhfT0JKQ19FWENFUFRJT05TIEB0cnkgeworI2RlZmluZSBFTkRfQVhfT0JKQ19FWENFUFRJT05T
IH0gQGNhdGNoKE5TRXhjZXB0aW9uICplKSB7IGlmICghW1tlIG5hbWVdIGlzRXF1YWxUb1N0cmlu
ZzpOU0FjY2Vzc2liaWxpdHlFeGNlcHRpb25dKSBAdGhyb3c7IH0KKworCitAaW50ZXJmYWNlIE5T
U3RyaW5nIChKU1N0cmluZ1JlZkFkZGl0aW9ucykKKysgKE5TU3RyaW5nICopc3RyaW5nV2l0aEpT
U3RyaW5nUmVmOihKU1N0cmluZ1JlZilqc1N0cmluZ1JlZjsKKy0gKEpTU3RyaW5nUmVmKWNyZWF0
ZUpTU3RyaW5nUmVmOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gTlNTdHJpbmcgKEpTU3RyaW5n
UmVmQWRkaXRpb25zKQorCisrIChOU1N0cmluZyAqKXN0cmluZ1dpdGhKU1N0cmluZ1JlZjooSlNT
dHJpbmdSZWYpanNTdHJpbmdSZWYKK3sKKyAgICBpZiAoIWpzU3RyaW5nUmVmKQorICAgICAgICBy
ZXR1cm4gbmlsOworCisgICAgQ0ZTdHJpbmdSZWYgY2ZTdHJpbmcgPSBKU1N0cmluZ0NvcHlDRlN0
cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBqc1N0cmluZ1JlZik7CisgICAgcmV0dXJuIFsoTlNT
dHJpbmcgKiljZlN0cmluZyBhdXRvcmVsZWFzZV07Cit9CisKKy0gKEpTU3RyaW5nUmVmKWNyZWF0
ZUpTU3RyaW5nUmVmCit7CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChD
RlN0cmluZ1JlZilzZWxmKTsKK30KKworQGVuZAorCisjZW5kaWYgLy8gQWNjZXNzaWJpbGl0eUNv
bW1vbk1hY19oCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlck1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1tCmlu
ZGV4IDg2M2U3NDA3ZWIyMDE5NWNiNzQ5ZWVmZDc1Yjk0NDczYTlkYTFkN2QuLjllNTQ5MDhiOTZj
ZWM1NGQwNDA0N2FjYjNlN2IwZDI2ZGMwNTcyMTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1t
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2li
aWxpdHlDb250cm9sbGVyTWFjLm1tCkBAIC0yOSw4ICsyOSwxOCBAQAogICovCiAKICNpbXBvcnQg
ImNvbmZpZy5oIgorI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5oIgogI2ltcG9ydCAi
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlOb3RpZmlj
YXRpb25IYW5kbGVyLmgiCisjaW1wb3J0ICJJbmplY3RlZEJ1bmRsZS5oIgorI2ltcG9ydCAiSW5q
ZWN0ZWRCdW5kbGVQYWdlLmgiCisKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRy
Lmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZi5oPgorI2ltcG9ydCA8SmF2
YVNjcmlwdENvcmUvSlNTdHJpbmdSZWZDRi5oPgorI2ltcG9ydCA8V2ViS2l0Mi9XS0J1bmRsZS5o
PgorI2ltcG9ydCA8V2ViS2l0Mi9XS0J1bmRsZVBhZ2UuaD4KKyNpbXBvcnQgPFdlYktpdDIvV0tC
dW5kbGVQYWdlUHJpdmF0ZS5oPgogCiBuYW1lc3BhY2UgV1RSIHsKIApAQCAtNTksNCArNjksMzUg
QEAgYm9vbCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVu
ZXIoKQogICAgIHJldHVybiB0cnVlOwogfQogCitzdGF0aWMgaWQgZmluZEFjY2Vzc2libGVPYmpl
Y3RCeUlkKGlkIG9iaiwgTlNTdHJpbmcgKmlkQXR0cmlidXRlKQoreworICAgIEJFR0lOX0FYX09C
SkNfRVhDRVBUSU9OUworICAgIGlkIG9iaklkQXR0cmlidXRlID0gW29iaiBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6QCJBWERSVEVsZW1lbnRJZEF0dHJpYnV0ZSJdOworICAgIGlmIChbb2Jq
SWRBdHRyaWJ1dGUgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSAmJiBbb2JqSWRBdHRy
aWJ1dGUgaXNFcXVhbFRvU3RyaW5nOmlkQXR0cmlidXRlXSkKKyAgICAgICAgcmV0dXJuIG9iajsK
KyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisKKyAgICBOU0FycmF5ICpjaGlsZHJlbiA9IFtv
YmogYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0
cmlidXRlXTsKKyAgICBOU1VJbnRlZ2VyIGNoaWxkcmVuQ291bnQgPSBbY2hpbGRyZW4gY291bnRd
OworICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGNoaWxkcmVuQ291bnQ7ICsraSkgewor
ICAgICAgICBpZCByZXN1bHQgPSBmaW5kQWNjZXNzaWJsZU9iamVjdEJ5SWQoW2NoaWxkcmVuIG9i
amVjdEF0SW5kZXg6aV0sIGlkQXR0cmlidXRlKTsKKyAgICAgICAgaWYgKHJlc3VsdCkKKyAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NS
ZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFj
Y2Vzc2libGVFbGVtZW50QnlJZChKU1N0cmluZ1JlZiBpZEF0dHJpYnV0ZSkKK3sKKyAgICBXS0J1
bmRsZVBhZ2VSZWYgcGFnZSA9IEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2Uo
KTsKKyAgICBpZCByb290ID0gc3RhdGljX2Nhc3Q8UGxhdGZvcm1VSUVsZW1lbnQ+KFdLQWNjZXNz
aWJpbGl0eVJvb3RPYmplY3QocGFnZSkpOworCisgICAgaWQgcmVzdWx0ID0gZmluZEFjY2Vzc2li
bGVPYmplY3RCeUlkKHJvb3QsIFtOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6aWRBdHRy
aWJ1dGVdKTsKKyAgICBpZiAocmVzdWx0KQorICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6Y3JlYXRlKHJlc3VsdCk7CisKKyAgICByZXR1cm4gMDsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQppbmRl
eCA4MWEwMzEwYjEyNzQ2ZDQzOWY0YzU3YWQxMDcwODBjNDY1NzkyM2Q5Li4yNGVlZjA4MzdmZDIz
MzVlZTQ1ODVhZDhhYmNjNjFjNjNlZDYyNTA1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnRNYWMubW0KQEAgLTI0LDYgKzI0LDcgQEAKICAqLwogCiAjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIkFjY2Vzc2liaWxpdHlDb21tb25NYWMuaCIKICNpbXBvcnQgIkFjY2Vz
c2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50LmgiCiAjaW1wb3J0ICJJbmplY3RlZEJ1bmRsZS5oIgpAQCAtNTEsMTIgKzUyLDYgQEAK
ICNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5RHJvcEVmZmVjdHNBdHRyaWJ1dGUgQCJBWERyb3BFZmZl
Y3RzIgogI2VuZGlmCiAKLS8vIElmIGFuIHVuc3VwcG9ydGVkIGF0dHJpYnV0ZSBpcyBwYXNzZWQg
aW4sIGl0IHdpbGwgcmFpc2UgYW4gYWNjZXNzaWJpbGl0eSBleGNlcHRpb24uIFRoZXNlIGFyZSB1
c3VhbGx5IGNhdWdodCBieSB0aGUgQWNjZXNzaWJpbGl0eSBSdW50aW1lIHRvIGluZm9ybQotLy8g
dGhlIEFYIGNsaWVudCBhcHAgb2YgdGhlIGVycm9yLiBIb3dldmVyLCBEUlQgaXMgdGhlIEFYIGNs
aWVudCBhcHAsIHNvIGl0IG11c3QgY2F0Y2ggdGhlc2UgZXhjZXB0aW9ucy4KLSNkZWZpbmUgQkVH
SU5fQVhfT0JKQ19FWENFUFRJT05TIEB0cnkgewotI2RlZmluZSBFTkRfQVhfT0JKQ19FWENFUFRJ
T05TIH0gQGNhdGNoKE5TRXhjZXB0aW9uICplKSB7IGlmICghW1tlIG5hbWVdIGlzRXF1YWxUb1N0
cmluZzpOU0FjY2Vzc2liaWxpdHlFeGNlcHRpb25dKSBAdGhyb3c7IH0KLQotCiB0eXBlZGVmIHZv
aWQgKCpBWFBvc3RlZE5vdGlmaWNhdGlvbkNhbGxiYWNrKShpZCBlbGVtZW50LCBOU1N0cmluZyog
bm90aWZpY2F0aW9uLCB2b2lkKiBjb250ZXh0KTsKIAogQGludGVyZmFjZSBOU09iamVjdCAoV2Vi
S2l0QWNjZXNzaWJpbGl0eUFkZGl0aW9ucykKQEAgLTY1LDI5ICs2MCw2IEBAIHR5cGVkZWYgdm9p
ZCAoKkFYUG9zdGVkTm90aWZpY2F0aW9uQ2FsbGJhY2spKGlkIGVsZW1lbnQsIE5TU3RyaW5nKiBu
b3RpZmljYXRpb24sCiAtIChOU1VJbnRlZ2VyKWFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZUNv
dW50OihOU1N0cmluZyAqKWF0dHJpYnV0ZTsKIEBlbmQKIAotQGludGVyZmFjZSBOU1N0cmluZyAo
SlNTdHJpbmdSZWZBZGRpdGlvbnMpCi0rIChOU1N0cmluZyAqKXN0cmluZ1dpdGhKU1N0cmluZ1Jl
ZjooSlNTdHJpbmdSZWYpanNTdHJpbmdSZWY7Ci0tIChKU1N0cmluZ1JlZiljcmVhdGVKU1N0cmlu
Z1JlZjsKLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIE5TU3RyaW5nIChKU1N0cmluZ1JlZkFkZGl0
aW9ucykKLQotKyAoTlNTdHJpbmcgKilzdHJpbmdXaXRoSlNTdHJpbmdSZWY6KEpTU3RyaW5nUmVm
KWpzU3RyaW5nUmVmCi17Ci0gICAgaWYgKCFqc1N0cmluZ1JlZikKLSAgICAgICAgcmV0dXJuIE5V
TEw7Ci0gICAgCi0gICAgQ0ZTdHJpbmdSZWYgY2ZTdHJpbmcgPSBKU1N0cmluZ0NvcHlDRlN0cmlu
ZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBqc1N0cmluZ1JlZik7Ci0gICAgcmV0dXJuIFsoTlNTdHJp
bmcgKiljZlN0cmluZyBhdXRvcmVsZWFzZV07Ci19Ci0KLS0gKEpTU3RyaW5nUmVmKWNyZWF0ZUpT
U3RyaW5nUmVmCi17Ci0gICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0
cmluZ1JlZilzZWxmKTsKLX0KLQotQGVuZAotCiBuYW1lc3BhY2UgV1RSIHsKIAogQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudChQbGF0Zm9ybVVJRWxlbWVudCBl
bGVtZW50KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IGUyYWYwNDM3ZDNiMjFjNzAwMzI5MDQ5YWRlZjg1NTdlNWI3MDAyZjQu
LmMxMTMxY2VkZjg0YTA1ZDUwN2ZhNmU3NjQ1YTEwMWU3OTI0Y2YyNTggMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNyBAQAorMjAxMi0wOS0yMCAgRG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNv
bT4KKworICAgICAgICBBWDogTGF5b3V0IHRlc3RzIHdvdWxkIGJlIGVhc2llciB0byB3cml0ZSBp
ZiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlciBjb3VsZCBmaW5kIGFuIGVsZW1lbnQgYnkgaWQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3MzAxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW9kaWZpZXMgYW4g
ZXhpc3RpbmcgdGVzdCB0byB1c2UgdGhlIG5ldyBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQKKyAgICAg
ICAgbWV0aG9kIG9mIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyLCBlbmFibGluZyB0aGUgdGVzdCB0
byBwYXNzIG9uCisgICAgICAgIGJvdGggTWFjIGFuZCBDaHJvbWl1bS4KKworICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvYXJpYS1oaWRkZW4td2l0aC1lbGVtZW50cy5odG1sOgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTItMDktMjEgIFpvbHRhbiBI
ZXJjemVnICA8emhlcmN6ZWdAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIFVucmV2aWV3ZWQg
Z2FyZGVuaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWhp
ZGRlbi13aXRoLWVsZW1lbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEt
aGlkZGVuLXdpdGgtZWxlbWVudHMuaHRtbAppbmRleCAzYTNmOGE3ZTMyMmNlMjNmOWFmNmVhODBh
NDJjYmI1M2RiNGUzNDY5Li41YTdhMjQ2NWIxY2VjOGU1ZDA4MTliMzZkZTBiNjAyZWUxN2ZmYzQx
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtaGlkZGVuLXdpdGgt
ZWxlbWVudHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtaGlkZGVu
LXdpdGgtZWxlbWVudHMuaHRtbApAQCAtNSw2ICs1LDggQEAKIDwvaGVhZD4KIDxib2R5IGlkPSJi
b2R5Ij4KIAorPGRpdiBpZD0iY29udGFpbmVyIiBhcmlhLWxhYmVsPSJjb250YWluZXIiPgorCiA8
dGFibGUgYm9yZGVyPTEgc3VtbWFyeT0idGVzdCIgYXJpYS1oaWRkZW49InRydWUiPgogPHRyPjx0
ZD5jZWxsPC90ZD48dGQ+Y2VsbDwvdGQ+PHRkPmNlbGw8L3RkPjwvdHI+CiA8dHI+PHRkPmNlbGw8
L3RkPjx0ZD5jZWxsPC90ZD48dGQ+Y2VsbDwvdGQ+PC90cj4KQEAgLTI2LDYgKzI4LDggQEAKIAog
PGgxPmhlYWRpbmc8L2gxPgogCis8L2Rpdj4KKwogPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CiA8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KIApAQCAtMzQsMTQgKzM4LDE0IEBACiAgICAgZGVzY3Jp
cHRpb24oIlRoaXMgdGVzdHMgdGhhdCBhcmlhLWhpZGRlbiB3b3JrcyBhcyBleHBlY3RlZCBvbiBl
bGVtZW50cyB0aGF0IGFyZSBzdWJjbGFzc2VzIG9mIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qi
KTsKIAogICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKLSAgICAgICB2
YXIgcm9vdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLnJvb3RFbGVtZW50OworICAgICAgIHZh
ciBjb250YWluZXIgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5
SWQoImNvbnRhaW5lciIpOwogCiAgICAgICAgLy8gZmlyc3QgY2hpbGQgaXMgYW4gQVhHcm91cCB0
aGF0IGhhcyBubyBjaGlsZHJlbgotICAgICAgIHZhciBjaGlsZCA9IHJvb3QuY2hpbGRBdEluZGV4
KDApLmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICB2YXIgY2hpbGQgPSBjb250YWluZXIuY2hpbGRB
dEluZGV4KDApOwogICAgICAgIHNob3VsZEJlKCJjaGlsZC5jaGlsZHJlbkNvdW50IiwgIjAiKTsK
IAogICAgICAgIC8vIFRoZSBzZWNvbmQgY2hpbGQgd2UgYXNrIGZvciBmcm9tIHRoZSB3ZWIgYXJl
YSBzaG91bGQgYmUgdGhlIGhlYWRpbmcsIGFuZCB3ZSBzaG91bGQgaGF2ZSBza2lwcGVkIG92ZXIg
ZXZlcnl0aGluZyBlbHNlLgotICAgICAgIGNoaWxkID0gcm9vdC5jaGlsZEF0SW5kZXgoMCkuY2hp
bGRBdEluZGV4KDEpOworICAgICAgIGNoaWxkID0gY29udGFpbmVyLmNoaWxkQXRJbmRleCgxKTsK
ICAgICAgICBzaG91bGRCZSgiY2hpbGQucm9sZSIsICInQVhSb2xlOiBBWEhlYWRpbmcnIik7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhw
ZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9u
cwppbmRleCA5MWRjZTQxNmQ5NGZlZjUzYmJjNWQyNzkzMzEzODIyYmIyZjZmZjBhLi5jMjEyMTE4
YjJmMmI4ZDlhOTFjYTA5MDZlNTA2ZTFjMzE0ZjYzNzAwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTEzNDQsNyArMTM0NCw2IEBAIGNy
YnVnLmNvbS8xMDMyMiBhY2Nlc3NpYmlsaXR5L2FyaWEtY29tYm9ib3guaHRtbCBbIFNraXAgXQog
Y3JidWcuY29tLzEwMzIyIGFjY2Vzc2liaWxpdHkvYXJpYS1jb250cm9scy13aXRoLXRhYnMuaHRt
bCBbIFNraXAgXQogY3JidWcuY29tLzEwMzIyIGFjY2Vzc2liaWxpdHkvYXJpYS1mYWxsYmFjay1y
b2xlcy5odG1sIFsgU2tpcCBdCiBjcmJ1Zy5jb20vMTAzMjIgYWNjZXNzaWJpbGl0eS9hcmlhLWhp
ZGRlbi11cGRhdGUuaHRtbCBbIFNraXAgXQotY3JidWcuY29tLzEwMzIyIGFjY2Vzc2liaWxpdHkv
YXJpYS1oaWRkZW4td2l0aC1lbGVtZW50cy5odG1sIFsgU2tpcCBdCiBjcmJ1Zy5jb20vMTAzMjIg
YWNjZXNzaWJpbGl0eS9hcmlhLWludmFsaWQuaHRtbCBbIFNraXAgXQogY3JidWcuY29tLzEwMzIy
IGFjY2Vzc2liaWxpdHkvYXJpYS1sYWJlbGxlZGJ5LW92ZXJyaWRlcy1sYWJlbC5odG1sIFsgU2tp
cCBdCiBjcmJ1Zy5jb20vMTAzMjIgYWNjZXNzaWJpbGl0eS9hcmlhLWxpbmstc3VwcG9ydHMtcHJl
c3MuaHRtbCBbIFNraXAgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165205</attachid>
            <date>2012-09-21 15:10:17 -0700</date>
            <delta_ts>2012-09-21 23:41:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97301-20120921151049.patch</filename>
            <type>text/plain</type>
            <size>47521</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmU1MjIwNzU5ODViMzc1
OTRjYjAyYWE0NTBiZjI2M2M3MTM3YTY0Ni4uMzFjMTQ2ZDJlMmViYjZlN2RiYjdjMzUyZDU5NTlh
YmIzZmMyZDQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTA5LTIxICBEb21p
bmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFYOiBMYXlvdXQg
dGVzdHMgd291bGQgYmUgZWFzaWVyIHRvIHdyaXRlIGlmIEFjY2Vzc2liaWxpdHlDb250cm9sbGVy
IGNvdWxkIGZpbmQgYW4gZWxlbWVudCBieSBpZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTczMDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ug
c3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNj
cmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBtZXRob2QgdG8gZ2V0IHRo
ZSBET00gImlkIiBhdHRyaWJ1dGUgZnJvbSBhbiBhY2Nlc3NpYmxlIG9iamVjdCwgb25seSBmb3Ig
bGF5b3V0IHRlc3RzLgorCisgICAgICAgIE1ha2VzIGV4aXN0aW5nIHRlc3QgbW9yZSBjcm9zcy1w
bGF0Zm9ybToKKyAgICAgICAgVGVzdHM6IGFjY2Vzc2liaWxpdHkvYXJpYS1oaWRkZW4td2l0aC1l
bGVtZW50cy5odG1sCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlci5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOl0pOgorCiAyMDEyLTA5LTIxICBTaGVy
aWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMTI5MjE5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5t
bQppbmRleCAyNmM3YWFlMjdhYmJmZWRlNzAwZmNmMTYzYjQ5YWFjZTZiNmI0ZGFjLi5hNDM5NGJh
MjA2MDU3ODQyNTZjNTZkODcwMGRmMjgzNjNjZDAwYzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlci5tbQpAQCAtMjQzMCw2ICsyNDMwLDEwIEBAIHN0YXRpYyBOU1N0cmluZyogcm9s
ZVZhbHVlVG9OU1N0cmluZyhBY2Nlc3NpYmlsaXR5Um9sZSB2YWx1ZSkKICAgICAgICAgICAgIHJl
dHVybiBAIm5vcm1hbCI7CiAgICAgICAgIH0KICAgICB9CisKKyAgICAvLyBVc2VkIGJ5IERSVCB0
byBmaW5kIGFuIGFjY2Vzc2libGUgbm9kZSBieSBpdHMgZWxlbWVudCBpZC4KKyAgICBpZiAoW2F0
dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiQVhEUlRFbGVtZW50SWRBdHRyaWJ1dGUiXSkK
KyAgICAgICAgcmV0dXJuIG1fb2JqZWN0LT5nZXRBdHRyaWJ1dGUoaWRBdHRyKTsKICAgICAKICAg
ICByZXR1cm4gbmlsOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IGZhOWI4NThkM2MwZjY2NmY0NWM0YjIwZTEwNTBkMjZiNzNiODYzZjAuLjM1
ODlhNGM2NTRkZDY3YWNjYWU5YTY4YjExMjdiZmRiMjllMzQ5ZjIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NiBAQAorMjAxMi0w
OS0yMSAgRG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KKworICAgICAgICBB
WDogTGF5b3V0IHRlc3RzIHdvdWxkIGJlIGVhc2llciB0byB3cml0ZSBpZiBBY2Nlc3NpYmlsaXR5
Q29udHJvbGxlciBjb3VsZCBmaW5kIGFuIGVsZW1lbnQgYnkgaWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3MzAxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBhIG5ldyBhY2Nlc3NpYmxlRWxlbWVu
dEJ5SWQgbWV0aG9kIHRvIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyLCB0byBtYWtlIGl0CisgICAg
ICAgIGVhc2llciB0byB3cml0ZSBjcm9zcy1wbGF0Zm9ybSBsYXlvdXQgdGVzdHMuCisKKyAgICAg
ICAgSW1wbGVtZW50ZWQgZm9yIENocm9taXVtIGFuZCBmb3IgTWFjIChEUlQgYW5kIFdLVFIpLgor
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoZ2V0QWNjZXNzaWJsZUVsZW1lbnRCeUlkQ2FsbGJhY2spOgorICAgICAgICAoQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmdldEpTQ2xhc3MpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmg6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyQ2hyb21pdW0uY3BwOgorICAgICAgICAo
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyKToKKyAgICAg
ICAgKEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpmaW5kQWNjZXNzaWJsZUVsZW1lbnRCeUlkUmVj
dXJzaXZlKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpnZXRBY2Nlc3NpYmxl
RWxlbWVudEJ5SWQpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFjY2Vzc2li
bGVFbGVtZW50QnlJZEdldHRlckNhbGxiYWNrKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyQ2hyb21pdW0uaDoKKyAg
ICAgICAgKEFjY2Vzc2liaWxpdHlDb250cm9sbGVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9ndGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAoQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXI6OmFjY2Vzc2libGVFbGVtZW50QnlJZCk6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMuaDogYWRkZWQKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbTogYWRkZWQKKyAgICAg
ICAgKCtbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOl0pOgorICAgICAgICAoLVtOU1N0
cmluZyBjcmVhdGVKU1N0cmluZ1JlZl0pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9B
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKGZpbmRBY2Nlc3NpYmxlT2Jq
ZWN0QnlJZCk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6YWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudE1hYy5tbToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAoQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFj
Y2Vzc2libGVFbGVtZW50QnlJZCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlDb250cm9sbGVyOjphY2Nlc3NpYmxlRWxlbWVudEJ5SWQpOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaDoK
KyAgICAgICAgKEFjY2Vzc2liaWxpdHlDb250cm9sbGVyKToKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmlk
bDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3Np
YmlsaXR5Q29tbW9uTWFjLmg6IGFkZGVkCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbTogYWRkZWQKKyAgICAgICAg
KCtbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOl0pOgorICAgICAgICAoLVtOU1N0cmlu
ZyBjcmVhdGVKU1N0cmluZ1JlZl0pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoV1RS
OjpmaW5kQWNjZXNzaWJsZU9iamVjdEJ5SWQpOgorICAgICAgICAoV1RSKToKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFjY2Vzc2libGVFbGVtZW50QnlJZCk6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudE1hYy5tbToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5u
ZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxMi0wOS0yMSAgUGV0ZXIgQmV2ZXJs
b28gIDxwZXRlckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBTd2l0Y2ggYmFj
ayB0byBhIGZpeGVkIGZpZm8gcGF0aCBmb3IgQW5kcm9pZApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwCmluZGV4IGIzNjdkNWM0NjlkOWJhOThk
MjU1YzhlZGZlZTZmOTU4OTM1YzNiNWYuLjQ5ZDQ1M2E4NGNkZWJjZGI4YTMyMjZiZmQ5MmNjODEx
ODI0YTY1NzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5jcHAKQEAgLTk3LDYgKzk3LDE4IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGdldEVsZW1l
bnRBdFBvaW50Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1CiAg
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1ha2VKU0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQoY29udGV4dCwgY29udHJvbGxlci0+ZWxlbWVudEF0UG9pbnQoeCwgeSkpOwogfQogCitz
dGF0aWMgSlNWYWx1ZVJlZiBnZXRBY2Nlc3NpYmxlRWxlbWVudEJ5SWRDYWxsYmFjayhKU0NvbnRl
eHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmpl
Y3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgSlNTdHJpbmdSZWYgaWRBdHRyaWJ1dGUgPSAw
OworICAgIGlmIChhcmd1bWVudENvdW50ID09IDEpCisgICAgICAgIGlkQXR0cmlidXRlID0gSlNW
YWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbik7ICAgIAor
ICAgIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8QWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwor
ICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWFrZUpTQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudChjb250ZXh0LCBjb250cm9sbGVyLT5hY2Nlc3NpYmxlRWxlbWVu
dEJ5SWQoaWRBdHRyaWJ1dGUpKTsKKyAgICBpZiAoaWRBdHRyaWJ1dGUpCisgICAgICAgIEpTU3Ry
aW5nUmVsZWFzZShpZEF0dHJpYnV0ZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogc3RhdGlj
IEpTVmFsdWVSZWYgYWRkTm90aWZpY2F0aW9uTGlzdGVuZXJDYWxsYmFjayhKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNp
emVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVl
UmVmKiBleGNlcHRpb24pCiB7CiAgICAgaWYgKGFyZ3VtZW50Q291bnQgIT0gMSkKQEAgLTEyMyw2
ICsxMzUsNyBAQCBKU0NsYXNzUmVmIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpnZXRKU0NsYXNz
KCkKICAgICAgICAgeyAibG9nU2Nyb2xsaW5nU3RhcnRFdmVudHMiLCBsb2dTY3JvbGxpbmdTdGFy
dEV2ZW50c0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImxvZ0FjY2Vzc2liaWxpdHlFdmVu
dHMiLCBsb2dBY2Nlc3NpYmlsaXR5RXZlbnRzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAi
ZWxlbWVudEF0UG9pbnQiLCBnZXRFbGVtZW50QXRQb2ludENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAg
ICAgIHsgImFjY2Vzc2libGVFbGVtZW50QnlJZCIsIGdldEFjY2Vzc2libGVFbGVtZW50QnlJZENh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyIiwgYWRk
Tm90aWZpY2F0aW9uTGlzdGVuZXJDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJyZW1vdmVO
b3RpZmljYXRpb25MaXN0ZW5lciIsIHJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyQ2FsbGJhY2ss
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfSwKICAgICAgICAgeyAwLCAwLCAwIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9B
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oCmluZGV4IDFkNTIzNTNjZDZjYTc3NDAxN2JhMDRhNWY3
MGFhZmMyZjUzNjI0M2MuLmE2Y2RjNDY4NmMxMzJmZjU4NmQ1ODJmZTUxYTA3NjhlZTcyYzAxMDAg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaApA
QCAtNDYsNiArNDYsNyBAQCBwdWJsaWM6CiAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCByb290
RWxlbWVudCgpOwogICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgZm9jdXNlZEVsZW1lbnQoKTsK
ICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IGVsZW1lbnRBdFBvaW50KGludCB4LCBpbnQgeSk7
CisgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoSlNTdHJp
bmdSZWYgaWQpOwogCiAgICAgdm9pZCBzZXRMb2dGb2N1c0V2ZW50cyhib29sKTsKICAgICB2b2lk
IHNldExvZ1ZhbHVlQ2hhbmdlRXZlbnRzKGJvb2wpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNTViNmVmMjkwOTUxNDdjZjEwYTY4MWRiYjAxYWIxNTI0YWJjZTlhOC4uMGM2YjgwNDll
YThkODc1NDM2NzlhNDRiNzUyOTZlNDNlYTgxYWQ1ZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMTYsNiArMTE2LDggQEAKIAkJQkMwRTI0RTAwRTJEOTQ1MTAwMUI2QkMyIC8qIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDMEUyNERFMEUyRDk0NTEwMDFCNkJDMiAvKiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50LmggKi87IH07CiAJCUJDMEUyNEUxMEUyRDk0NTEwMDFCNkJDMiAvKiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDMEUyNERGMEUyRDk0NTEwMDFCNkJDMiAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
LmNwcCAqLzsgfTsKIAkJQkMwRTI2MTUwRTJEQTRDNjAwMUI2QkMyIC8qIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQzBFMjYxNDBFMkRBNEM2MDAxQjZCQzIgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1h
Yy5tbSAqLzsgfTsKKwkJQkMwRTI0RTAwRTJEOTQ1MTAwMUI2QkMzIC8qIEFjY2Vzc2liaWxpdHlD
b21tb25NYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMEUyNERFMEUyRDk0NTEwMDFCNkJDMyAvKiBBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLmggKi87
IH07CisJCUJDMEUyNjE1MEUyREE0QzYwMDFCNkJDMyAvKiBBY2Nlc3NpYmlsaXR5Q29tbW9uTWFj
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwRTI2
MTQwRTJEQTRDNjAwMUI2QkMzIC8qIEFjY2Vzc2liaWxpdHlDb21tb25NYWMubW0gKi87IH07CiAJ
CUJDNDc0MTJBMEQwMzhBNEMwMDcyQjAwNiAvKiBKYXZhU2NyaXB0VGhyZWFkaW5nLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzQ3NDEyOTBEMDM4QTRD
MDA3MkIwMDYgLyogSmF2YVNjcmlwdFRocmVhZGluZy5oICovOyB9OwogCQlCQzQ3NDE0MTBEMDM4
QTU3MDA3MkIwMDYgLyogSmF2YVNjcmlwdFRocmVhZGluZ1B0aHJlYWRzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNDc0MTQwMEQwMzhBNTcwMDcy
QjAwNiAvKiBKYXZhU2NyaXB0VGhyZWFkaW5nUHRocmVhZHMuY3BwICovOyB9OwogCQlCQzlEOTAy
NDBDOTc0NzJFMDA5OUE0QTMgLyogV29ya1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOUQ5MDIxMEM5NzQ3MkQwMDk5QTRBMyAvKiBXb3Jr
UXVldWUuY3BwICovOyB9OwpAQCAtMzIzLDggKzMyNSwxMCBAQAogCQlCQzAxMzFEODBDOTc3MjAx
MDA4NzMxN0QgLyogVGVzdFJ1bm5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gVGVzdFJ1bm5lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJD
MDEzMUQ5MEM5NzcyMDEwMDg3MzE3RCAvKiBUZXN0UnVubmVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBUZXN0UnVubmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDMEUyNERFMEUyRDk0NTEwMDFCNkJDMiAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMwRTI0REUwRTJEOTQ1MTAwMUI2QkMz
IC8qIEFjY2Vzc2liaWxpdHlDb21tb25NYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkMwRTI0REYwRTJEOTQ1MTAwMUI2QkMyIC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMEUyNjE0MEUy
REE0QzYwMDFCNkJDMiAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5t
bTsgcGF0aCA9IG1hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlCQzBFMjYxNDBFMkRBNEM2MDAxQjZCQzMgLyogQWNjZXNzaWJpbGl0
eUNvbW1vbk1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEFj
Y2Vzc2liaWxpdHlDb21tb25NYWMubW07IHBhdGggPSBtYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1h
Yy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM0NzQxMjkwRDAzOEE0QzAwNzJC
MDA2IC8qIEphdmFTY3JpcHRUaHJlYWRpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSmF2YVNjcmlwdFRocmVhZGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQzQ3NDE0MDBEMDM4QTU3MDA3MkIwMDYgLyogSmF2YVNjcmlwdFRocmVhZGluZ1B0aHJlYWRz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEphdmFTY3JpcHRUaHJl
YWRpbmdQdGhyZWFkcy5jcHA7IHBhdGggPSBwdGhyZWFkcy9KYXZhU2NyaXB0VGhyZWFkaW5nUHRo
cmVhZHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzY0NkE0QjEzNjkwNURF
MDBCMzVERUQgLyogQ29tcGlsZXJWZXJzaW9uLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2Nv
bmZpZzsgbmFtZSA9IENvbXBpbGVyVmVyc2lvbi54Y2NvbmZpZzsgcGF0aCA9IG1hYy9Db25maWd1
cmF0aW9ucy9Db21waWxlclZlcnNpb24ueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC01MDMsNiArNTA3LDggQEAKIAkJCQlCQzBFMjRERjBFMkQ5NDUxMDAxQjZCQzIgLyog
QWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAgKi8sCiAJCQkJQkMwRTI0REUwRTJEOTQ1MTAwMUI2
QkMyIC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCAqLywKIAkJCQlCQzBFMjYxNDBFMkRBNEM2
MDAxQjZCQzIgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSAqLywKKwkJCQlCQzBFMjYx
NDBFMkRBNEM2MDAxQjZCQzMgLyogQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5oICovLAorCQkJCUJD
MEUyNjE0MEUyREE0QzYwMDFCNkJDMyAvKiBBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tICovLAog
CQkJCUJDQTE4QjM2MEM5QjAyMTkwMDExNDM2OSAvKiBBcHBsZVNjcmlwdENvbnRyb2xsZXIuaCAq
LywKIAkJCQlCQ0ExOEIzNzBDOUIwMjE5MDAxMTQzNjkgLyogQXBwbGVTY3JpcHRDb250cm9sbGVy
Lm0gKi8sCiAJCQkJQkNBMThCNkIwQzlCMDhEQjAwMTE0MzY5IC8qIEV2ZW50U2VuZGluZ0NvbnRy
b2xsZXIuaCAqLywKQEAgLTk0OCw2ICs5NTQsNyBAQAogCQkJCUJDRDA4QjcxMEUxMDU5RDIwMEE3
RDBDMSAvKiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUJDMEUyNEUxMEUyRDk0NTEwMDFCNkJDMiAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUJDMEUyNjE1MEUyREE0QzYwMDFCNkJDMiAvKiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50TWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQkMwRTI2MTUwRTJEQTRDNjAw
MUI2QkMzIC8qIEFjY2Vzc2liaWxpdHlDb21tb25NYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlC
Q0ExOEIzOTBDOUIwMjE5MDAxMTQzNjkgLyogQXBwbGVTY3JpcHRDb250cm9sbGVyLm0gaW4gU291
cmNlcyAqLywKIAkJCQlBOEI5MUJGRDBDRjUyMkI0MDA4RjkxRkYgLyogQ2hlY2tlZE1hbGxvYy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1M0NCQjgzMjEzNEU0MkYzMDAxQ0U2QTQgLyogQ3ljbGlj
UmVkdW5kYW5jeUNoZWNrLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckNo
cm9taXVtLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXJDaHJvbWl1bS5jcHAKaW5kZXggYjFkMjk0OGFlYmFiMzI5ODI0
OTI3NTQ1ODI0NTgzMDczMTRiY2RlZC4uODlkNWQ1ODc3MGM2MWQxYWFlOTE2MGJhMzRlNDM2NzY1
MTZiMDdjMiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckNocm9taXVtLmNwcAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyQ2hy
b21pdW0uY3BwCkBAIC0zMiw5ICszMiwxMSBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlDb250
cm9sbGVyQ2hyb21pdW0uaCIKIAogI2luY2x1ZGUgIldlYkFjY2Vzc2liaWxpdHlPYmplY3QuaCIK
KyNpbmNsdWRlICJXZWJFbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKKyNpbmNsdWRl
ICJXZWJOb2RlLmgiCiAjaW5jbHVkZSAiV2ViVmlldy5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dl
YlN0cmluZy5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNTdHJpbmcuaCIKIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYktpdDsKIApAQCAtNDksNiArNTEsOCBAQCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoKQogICAgIGJpbmRQcm9wZXJ0eSgiZm9jdXNlZEVs
ZW1lbnQiLCAmQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmZvY3VzZWRFbGVtZW50R2V0dGVyQ2Fs
bGJhY2spOwogICAgIGJpbmRQcm9wZXJ0eSgicm9vdEVsZW1lbnQiLCAmQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXI6OnJvb3RFbGVtZW50R2V0dGVyQ2FsbGJhY2spOwogCisgICAgYmluZE1ldGhvZCgi
YWNjZXNzaWJsZUVsZW1lbnRCeUlkIiwgJkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjphY2Nlc3Np
YmxlRWxlbWVudEJ5SWRHZXR0ZXJDYWxsYmFjayk7CisKICAgICBiaW5kRmFsbGJhY2tNZXRob2Qo
JkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpmYWxsYmFja0NhbGxiYWNrKTsKIH0KIApAQCAtODYs
NiArOTAsMzYgQEAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXI6OmdldFJvb3RFbGVtZW50KCkKICAgICByZXR1cm4gbV9lbGVtZW50cy5jcmVhdGVSb290KG1f
cm9vdEVsZW1lbnQpOwogfQogCitBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBBY2Nlc3NpYmlsaXR5
Q29udHJvbGxlcjo6ZmluZEFjY2Vzc2libGVFbGVtZW50QnlJZFJlY3Vyc2l2ZShjb25zdCBXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmosIGNvbnN0IFdlYlN0cmluZyYgaWQpCit7CisgICAgaWYg
KG9iai5pc051bGwoKSB8fCBvYmouaXNEZXRhY2hlZCgpKQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIFdlYk5vZGUgbm9kZSA9IG9iai5ub2RlKCk7CisgICAgaWYgKCFub2RlLmlzTnVsbCgpICYm
IG5vZGUuaXNFbGVtZW50Tm9kZSgpKSB7CisgICAgICAgIFdlYkVsZW1lbnQgZWxlbWVudCA9IG5v
ZGUudG88V2ViRWxlbWVudD4oKTsKKyAgICAgICAgZWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIik7
CisgICAgICAgIGlmIChlbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSA9PSBpZCkgCisgICAgICAg
ICAgICByZXR1cm4gbV9lbGVtZW50cy5nZXRPckNyZWF0ZShvYmopOworICAgIH0KKworICAgIHVu
c2lnbmVkIGNoaWxkQ291bnQgPSBvYmouY2hpbGRDb3VudCgpOworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBjaGlsZENvdW50OyBpKyspIHsKKyAgICAgICAgaWYgKEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQqIHJlc3VsdCA9IGZpbmRBY2Nlc3NpYmxlRWxlbWVudEJ5SWRSZWN1cnNpdmUob2Jq
LmNoaWxkQXQoaSksIGlkKSkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisg
ICAgcmV0dXJuIDA7Cit9CisKK0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIEFjY2Vzc2liaWxpdHlD
b250cm9sbGVyOjpnZXRBY2Nlc3NpYmxlRWxlbWVudEJ5SWQoY29uc3Qgc3RkOjpzdHJpbmcmIGlk
KQoreworICAgIGlmIChtX3Jvb3RFbGVtZW50LmlzTnVsbCgpKQorICAgICAgICBtX3Jvb3RFbGVt
ZW50ID0gbV93ZWJWaWV3LT5hY2Nlc3NpYmlsaXR5T2JqZWN0KCk7CisKKyAgICByZXR1cm4gZmlu
ZEFjY2Vzc2libGVFbGVtZW50QnlJZFJlY3Vyc2l2ZShtX3Jvb3RFbGVtZW50LCBXZWJTdHJpbmc6
OmZyb21VVEY4KGlkLmNfc3RyKCkpKTsKK30KKwogYm9vbCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cjo6c2hvdWxkTG9nQWNjZXNzaWJpbGl0eUV2ZW50cygpCiB7CiAgICAgcmV0dXJuIG1fbG9nQWNj
ZXNzaWJpbGl0eUV2ZW50czsKQEAgLTE0MSw2ICsxNzUsMjEgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5
Q29udHJvbGxlcjo6cm9vdEVsZW1lbnRHZXR0ZXJDYWxsYmFjayhDcHBWYXJpYW50KiByZXN1bHQp
CiAgICAgcmVzdWx0LT5zZXQoKihnZXRSb290RWxlbWVudCgpLT5nZXRBc0NwcFZhcmlhbnQoKSkp
OwogfQogCit2b2lkIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjphY2Nlc3NpYmxlRWxlbWVudEJ5
SWRHZXR0ZXJDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFy
aWFudCogcmVzdWx0KQoreworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworCisgICAgaWYgKGFyZ3Vt
ZW50cy5zaXplKCkgPCAxIHx8ICFhcmd1bWVudHNbMF0uaXNTdHJpbmcoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgc3RkOjpzdHJpbmcgaWQgPSBhcmd1bWVudHNbMF0udG9TdHJpbmcoKTsKKyAg
ICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBmb3VuZEVsZW1lbnQgPSBnZXRBY2Nlc3NpYmxlRWxl
bWVudEJ5SWQoaWQpOworICAgIGlmICghZm91bmRFbGVtZW50KQorICAgICAgICByZXR1cm47CisK
KyAgICByZXN1bHQtPnNldCgqKGZvdW5kRWxlbWVudC0+Z2V0QXNDcHBWYXJpYW50KCkpKTsKK30K
Kwogdm9pZCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6ZmFsbGJhY2tDYWxsYmFjayhjb25zdCBD
cHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgcHJpbnRmKCJDT05T
T0xFIE1FU1NBR0U6IEphdmFTY3JpcHQgRVJST1I6IHVua25vd24gbWV0aG9kIGNhbGxlZCBvbiAi
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL0Fj
Y2Vzc2liaWxpdHlDb250cm9sbGVyQ2hyb21pdW0uaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJDaHJvbWl1bS5oCmluZGV4
IDExYzA4MmIzZTgwOGMxZjYzMGViODUxODRlNmU4ZmIzZTgxNmY0OTguLmYwZjVkZWU4NTYyZDk1
NDFmMDBjZjEwMjRkODZjZjY2MWM2MzdkMTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJDaHJvbWl1bS5o
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXJDaHJvbWl1bS5oCkBAIC01MSw2ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldEZvY3VzZWRFbGVtZW50KGNvbnN0IFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVj
dCYpOwogICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIGdldEZvY3VzZWRFbGVtZW50KCk7CiAg
ICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogZ2V0Um9vdEVsZW1lbnQoKTsKKyAgICBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50KiBnZXRBY2Nlc3NpYmxlRWxlbWVudEJ5SWQoY29uc3Qgc3RkOjpzdHJp
bmcmIGlkKTsKIAogICAgIGJvb2wgc2hvdWxkTG9nQWNjZXNzaWJpbGl0eUV2ZW50cygpOwogCkBA
IC03MCw2ICs3MSw5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGZvY3VzZWRFbGVtZW50R2V0dGVy
Q2FsbGJhY2soQ3BwVmFyaWFudCopOwogICAgIHZvaWQgcm9vdEVsZW1lbnRHZXR0ZXJDYWxsYmFj
ayhDcHBWYXJpYW50Kik7CisgICAgdm9pZCBhY2Nlc3NpYmxlRWxlbWVudEJ5SWRHZXR0ZXJDYWxs
YmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisKKyAgICBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50KiBmaW5kQWNjZXNzaWJsZUVsZW1lbnRCeUlkUmVjdXJzaXZlKGNvbnN0
IFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdCYsIGNvbnN0IFdlYktpdDo6V2ViU3RyaW5n
JiBpZCk7CiAKICAgICBXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3QgbV9mb2N1c2VkRWxl
bWVudDsKICAgICBXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3QgbV9yb290RWxlbWVudDsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9BY2Nlc3NpYmlsaXR5Q29udHJv
bGxlckd0ay5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXJHdGsuY3BwCmluZGV4IGNlZWI4ZGZjYmZmYTM5ZjUzNWEzOWIwZGRjYmVjYjJjYTM2MjU5
YjAuLjQ2NjE4MmJiMzA1YTY2NzYwODA2YmVmODQ4ZDk0Yzc2MjJmODc1Y2UgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckd0ay5jcHAK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyR3Rr
LmNwcApAQCAtNzAsNiArNzAsMTIgQEAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nlc3NpYmls
aXR5Q29udHJvbGxlcjo6cm9vdEVsZW1lbnQoKQogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50KGFjY2Vzc2libGUpOwogfQogCitBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vzc2li
aWxpdHlDb250cm9sbGVyOjphY2Nlc3NpYmxlRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWQpCit7
CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiAwOworfQorCiB2b2lkIEFjY2Vz
c2liaWxpdHlDb250cm9sbGVyOjpzZXRMb2dGb2N1c0V2ZW50cyhib29sKQogewogfQpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMuaCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYzhiOTEyNTdmNDY4Nzc0OTc5NTBhOTM0MWEyNjkxZmU5ODU3NGE1MwotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFj
LmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQWNjZXNzaWJpbGl0eUNvbW1vbk1hY19oCisjZGVm
aW5lIEFjY2Vzc2liaWxpdHlDb21tb25NYWNfaAorCisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9K
U1N0cmluZ1JlZi5oPgorCisvLyBJZiBhbiB1bnN1cHBvcnRlZCBhdHRyaWJ1dGUgaXMgcGFzc2Vk
IGluLCBpdCB3aWxsIHJhaXNlIGFuIGFjY2Vzc2liaWxpdHkgZXhjZXB0aW9uLiBUaGVzZSBhcmUg
dXN1YWxseSBjYXVnaHQgYnkgdGhlIEFjY2Vzc2liaWxpdHkgUnVudGltZSB0byBpbmZvcm0KKy8v
IHRoZSBBWCBjbGllbnQgYXBwIG9mIHRoZSBlcnJvci4gSG93ZXZlciwgRFJUIGlzIHRoZSBBWCBj
bGllbnQgYXBwLCBzbyBpdCBtdXN0IGNhdGNoIHRoZXNlIGV4Y2VwdGlvbnMuCisjZGVmaW5lIEJF
R0lOX0FYX09CSkNfRVhDRVBUSU9OUyBAdHJ5IHsKKyNkZWZpbmUgRU5EX0FYX09CSkNfRVhDRVBU
SU9OUyB9IEBjYXRjaChOU0V4Y2VwdGlvbiAqZSkgeyBpZiAoIVtbZSBuYW1lXSBpc0VxdWFsVG9T
dHJpbmc6TlNBY2Nlc3NpYmlsaXR5RXhjZXB0aW9uXSkgQHRocm93OyB9CisKKworQGludGVyZmFj
ZSBOU1N0cmluZyAoSlNTdHJpbmdSZWZBZGRpdGlvbnMpCisrIChOU1N0cmluZyAqKXN0cmluZ1dp
dGhKU1N0cmluZ1JlZjooSlNTdHJpbmdSZWYpanNTdHJpbmdSZWY7CistIChKU1N0cmluZ1JlZilj
cmVhdGVKU1N0cmluZ1JlZjsKK0BlbmQKKworI2VuZGlmIC8vIEFjY2Vzc2liaWxpdHlDb21tb25N
YWNfaApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlD
b21tb25NYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1v
bk1hYy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wODJjMGYwY2M4NmMzZTg0ODVkZmZhZmIwMDQzZDM2MmQxZmNl
NWJlCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2li
aWxpdHlDb21tb25NYWMubW0KQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2lt
cG9ydCAiQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5oIgorCisjaW1wb3J0IDxKYXZhU2NyaXB0Q29y
ZS9KU1N0cmluZ1JlZkNGLmg+CisKK0BpbXBsZW1lbnRhdGlvbiBOU1N0cmluZyAoSlNTdHJpbmdS
ZWZBZGRpdGlvbnMpCisKKysgKE5TU3RyaW5nICopc3RyaW5nV2l0aEpTU3RyaW5nUmVmOihKU1N0
cmluZ1JlZilqc1N0cmluZ1JlZgoreworICAgIGlmICghanNTdHJpbmdSZWYpCisgICAgICAgIHJl
dHVybiBuaWw7CisKKyAgICBDRlN0cmluZ1JlZiBjZlN0cmluZyA9IEpTU3RyaW5nQ29weUNGU3Ry
aW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGpzU3RyaW5nUmVmKTsKKyAgICByZXR1cm4gWyhOU1N0
cmluZyAqKWNmU3RyaW5nIGF1dG9yZWxlYXNlXTsKK30KKworLSAoSlNTdHJpbmdSZWYpY3JlYXRl
SlNTdHJpbmdSZWYKK3sKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENG
U3RyaW5nUmVmKXNlbGYpOworfQorCitAZW5kCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJNYWMubW0KaW5kZXggNmZjMGRkMDU2NTc5
NGVmODQ2NTYyNjg4MjcwNjJhNWRmZTBlNWIyNi4uNmUwMjEzMjQxMmI1ZDllZTk5ZmEwM2NlZTQy
M2RkZWI1NWM0NGY1ZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vz
c2liaWxpdHlDb250cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9B
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlck1hYy5tbQpAQCAtMjcsMTAgKzI3LDEzIEBACiAjaW1wb3J0
ICJEdW1wUmVuZGVyVHJlZS5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCIK
IAorI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5oIgogI2ltcG9ydCAiQWNjZXNzaWJp
bGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuaCIKICNpbXBvcnQgPEFwcEtpdC9OU0NvbG9yLmg+CiAjaW1wb3J0IDxGb3VuZGF0aW9uL0Zv
dW5kYXRpb24uaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmLmg+CisjaW1w
b3J0IDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZkNGLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2Vi
RnJhbWUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJGcmFtZVByaXZhdGUuaD4KICNpbXBvcnQgPFdl
YktpdC9XZWJIVE1MVmlldy5oPgpAQCAtNjgsNiArNzEsMzYgQEAgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cm9vdEVsZW1lbnQoKQogICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50KGFjY2Vzc2liaWxpdHlPYmplY3QpOwogfQogCitzdGF0aWMg
aWQgZmluZEFjY2Vzc2libGVPYmplY3RCeUlkKGlkIG9iaiwgTlNTdHJpbmcgKmlkQXR0cmlidXRl
KQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIG9iaklkQXR0cmlidXRl
ID0gW29iaiBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWERSVEVsZW1lbnRJZEF0dHJp
YnV0ZSJdOworICAgIGlmIChbb2JqSWRBdHRyaWJ1dGUgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcg
Y2xhc3NdXSAmJiBbb2JqSWRBdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOmlkQXR0cmlidXRlXSkK
KyAgICAgICAgcmV0dXJuIG9iajsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisKKyAgICBO
U0FycmF5ICpjaGlsZHJlbiA9IFtvYmogYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXTsKKyAgICBOU1VJbnRlZ2VyIGNoaWxkcmVuQ291
bnQgPSBbY2hpbGRyZW4gY291bnRdOworICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGNo
aWxkcmVuQ291bnQ7ICsraSkgeworICAgICAgICBpZCByZXN1bHQgPSBmaW5kQWNjZXNzaWJsZU9i
amVjdEJ5SWQoW2NoaWxkcmVuIG9iamVjdEF0SW5kZXg6aV0sIGlkQXR0cmlidXRlKTsKKyAgICAg
ICAgaWYgKHJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAg
cmV0dXJuIDA7Cit9CisKK0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXI6OmFjY2Vzc2libGVFbGVtZW50QnlJZChKU1N0cmluZ1JlZiBpZEF0dHJpYnV0ZVJlZikK
K3sKKyAgICBOU1N0cmluZyAqaWRBdHRyaWJ1dGUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3Ry
aW5nUmVmOmlkQXR0cmlidXRlUmVmXTsKKyAgICBpZCByb290ID0gW1ttYWluRnJhbWUgYWNjZXNz
aWJpbGl0eVJvb3RdIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlQ
YXJlbnRBdHRyaWJ1dGVdOworICAgIGlkIHJlc3VsdCA9IGZpbmRBY2Nlc3NpYmxlT2JqZWN0QnlJ
ZChyb290LCBpZEF0dHJpYnV0ZSk7CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQocmVzdWx0KTsKKworICAgIHJldHVybiAwOworfQorCiB2b2lk
IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpzZXRMb2dGb2N1c0V2ZW50cyhib29sKQogewogfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dE1hYy5tbQppbmRleCA1YWJkNTI3MDAxN2VhMjNlMmI2MDUyY2UwYmNhNWEyNjM3MmI4ODUxLi5j
ZDFjOTJkMTI0ZjczMTY0YjAzZDgwZjIzNmU4ZTAxOTZjNzhiMjJhIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQpAQCAt
MjUsNiArMjUsNyBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkR1bXBSZW5kZXJU
cmVlLmgiCisjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLmgiCiAjaW1wb3J0ICJBY2Nl
c3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudC5oIgogCkBAIC01MSwxMiArNTIsNiBAQAogI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlE
cm9wRWZmZWN0c0F0dHJpYnV0ZSBAIkFYRHJvcEVmZmVjdHMiCiAjZW5kaWYKIAotLy8gSWYgYW4g
dW5zdXBwb3J0ZWQgYXR0cmlidXRlIGlzIHBhc3NlZCBpbiwgaXQgd2lsbCByYWlzZSBhbiBhY2Nl
c3NpYmlsaXR5IGV4Y2VwdGlvbi4gVGhlc2UgYXJlIHVzdWFsbHkgY2F1Z2h0IGJ5IHRoZSBBY2Nl
c3NpYmlsaXR5IFJ1bnRpbWUgdG8gaW5mb3JtCi0vLyB0aGUgQVggY2xpZW50IGFwcCBvZiB0aGUg
ZXJyb3IuIEhvd2V2ZXIsIERSVCBpcyB0aGUgQVggY2xpZW50IGFwcCwgc28gaXQgbXVzdCBjYXRj
aCB0aGVzZSBleGNlcHRpb25zLgotI2RlZmluZSBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMgQHRy
eSB7Ci0jZGVmaW5lIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMgfSBAY2F0Y2goTlNFeGNlcHRpb24g
KmUpIHsgaWYgKCFbW2UgbmFtZV0gaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUV4Y2Vw
dGlvbl0pIEB0aHJvdzsgfQotCi0KIHR5cGVkZWYgdm9pZCAoKkFYUG9zdGVkTm90aWZpY2F0aW9u
Q2FsbGJhY2spKGlkIGVsZW1lbnQsIE5TU3RyaW5nKiBub3RpZmljYXRpb24sIHZvaWQqIGNvbnRl
eHQpOwogCiBAaW50ZXJmYWNlIE5TT2JqZWN0IChXZWJLaXRBY2Nlc3NpYmlsaXR5QWRkaXRpb25z
KQpAQCAtNjUsMjkgKzYwLDYgQEAgdHlwZWRlZiB2b2lkICgqQVhQb3N0ZWROb3RpZmljYXRpb25D
YWxsYmFjaykoaWQgZWxlbWVudCwgTlNTdHJpbmcqIG5vdGlmaWNhdGlvbiwKIC0gKE5TVUludGVn
ZXIpYWNjZXNzaWJpbGl0eUFycmF5QXR0cmlidXRlQ291bnQ6KE5TU3RyaW5nICopYXR0cmlidXRl
OwogQGVuZAogCi1AaW50ZXJmYWNlIE5TU3RyaW5nIChKU1N0cmluZ1JlZkFkZGl0aW9ucykKLSsg
KE5TU3RyaW5nICopc3RyaW5nV2l0aEpTU3RyaW5nUmVmOihKU1N0cmluZ1JlZilqc1N0cmluZ1Jl
ZjsKLS0gKEpTU3RyaW5nUmVmKWNyZWF0ZUpTU3RyaW5nUmVmOwotQGVuZAotCi1AaW1wbGVtZW50
YXRpb24gTlNTdHJpbmcgKEpTU3RyaW5nUmVmQWRkaXRpb25zKQotCi0rIChOU1N0cmluZyAqKXN0
cmluZ1dpdGhKU1N0cmluZ1JlZjooSlNTdHJpbmdSZWYpanNTdHJpbmdSZWYKLXsKLSAgICBpZiAo
IWpzU3RyaW5nUmVmKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAKLSAgICBDRlN0cmluZ1Jl
ZiBjZlN0cmluZyA9IEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGpz
U3RyaW5nUmVmKTsKLSAgICByZXR1cm4gWyhOU1N0cmluZyAqKWNmU3RyaW5nIGF1dG9yZWxlYXNl
XTsKLX0KLQotLSAoSlNTdHJpbmdSZWYpY3JlYXRlSlNTdHJpbmdSZWYKLXsKLSAgICByZXR1cm4g
SlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKXNlbGYpOwotfQotCi1AZW5k
Ci0KIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoUGxhdGZv
cm1VSUVsZW1lbnQgZWxlbWVudCkKICAgICA6IG1fZWxlbWVudChlbGVtZW50KQogICAgICwgbV9u
b3RpZmljYXRpb25IYW5kbGVyKDApCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93
aW4vQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJXaW4uY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyV2luLmNwcAppbmRleCA3ZjlhYTZjYzJlZTkyOWIy
YmY4ZWE0MTZmNWQ2NWJiMDU2ZTNlYWQxLi45ZTc2YzhkZGEzMzI3YTA3ZThlODdlMzM2YzhhZDY5
YTk0NDQ2ODg5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXJXaW4uY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9BY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcldpbi5jcHAKQEAgLTY3LDYgKzY3LDEyIEBAIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmVsZW1lbnRBdFBvaW50KGludCB4
LCBpbnQgeSkKICAgICByZXR1cm4gMDsKIH0KIAorQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcjo6YWNjZXNzaWJsZUVsZW1lbnRCeUlkKEpTU3RyaW5nUmVmIGlk
KQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gMDsKK30KKwogQWNjZXNz
aWJpbGl0eVVJRWxlbWVudCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6Zm9jdXNlZEVsZW1lbnQo
KQogewogICAgIENPTVB0cjxJQWNjZXNzaWJsZT4gcm9vdEFjY2Vzc2libGUgPSByb290RWxlbWVu
dCgpLnBsYXRmb3JtVUlFbGVtZW50KCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3Bw
CmluZGV4IDJjZDMwNDlmZTE1Nzk1Nzc2YWJkMTMyMjBiMmUyYWEwZWRjZmY3NWQuLmM2ZjdkNzVj
YzNiNzlkMDZjMGMyY2M2MmU4OWZiOWE0MDg5YTEyZDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuY3BwCkBAIC0xMDYsNiArMTA2LDcgQEAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6ZWxlbWVudEF0UG9pbnQoaW50IHgK
ICNpZiAhUExBVEZPUk0oTUFDKQogYm9vbCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6YWRkTm90
aWZpY2F0aW9uTGlzdGVuZXIoSlNWYWx1ZVJlZikgeyByZXR1cm4gZmFsc2U7IH0KIGJvb2wgQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCkgeyByZXR1
cm4gZmFsc2U7IH0KK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXI6OmFjY2Vzc2libGVFbGVtZW50QnlJZChKU1N0cmluZ1JlZiBhdHRyaWJ1
dGUpIHsgcmV0dXJuIDA7IH0KICNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKEdUSykKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuaAppbmRleCAzYzg3Y2FjNWQ1YzZhOWM0MDYyMDdiMzdiNmFlMzcz
YWU0ZDNiNzc5Li5mMDJmZWFjMDU1OTk4Yzc5NjlhNGFkZTRlYmY1MDEwNGE3NzQwOWFjIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oCkBAIC00OCw2ICs0OCw3IEBAIHB1YmxpYzoKICAg
ICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IHJvb3RFbGVtZW50KCk7CiAgICAg
UGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBmb2N1c2VkRWxlbWVudCgpOwogICAg
IFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gZWxlbWVudEF0UG9pbnQoaW50IHgs
IGludCB5KTsKKyAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGFjY2Vzc2li
bGVFbGVtZW50QnlJZChKU1N0cmluZ1JlZiBpZEF0dHJpYnV0ZSk7CiAKICAgICBib29sIGFkZE5v
dGlmaWNhdGlvbkxpc3RlbmVyKEpTVmFsdWVSZWYgZnVuY3Rpb25DYWxsYmFjayk7CiAgICAgYm9v
bCByZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcigpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0Fj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmlkbAppbmRleCAyZGY4YzI3OWY5YmQ4ODk2MTI2N2E2YjBj
YzQwYjBhYmNmMTE0OGQ5Li5iZDA1ZjEzMzQzMDg1Zjg5ODQ0YTllYzE5MjUxZjQxZWMxMDE5ZDUz
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRp
bmdzL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmlkbApA
QCAtMjksNiArMjksNyBAQCBtb2R1bGUgV1RSIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgcm9vdEVsZW1lbnQ7CiAgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IGZvY3VzZWRFbGVtZW50OwogICAgICAgICBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50IGVsZW1lbnRBdFBvaW50KGluIGludCB4LCBpbiBpbnQgeSk7
CisgICAgICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKGlu
IERPTVN0cmluZyBpZCk7CiAgICAgICAgIAogICAgICAgICBib29sZWFuIGFkZE5vdGlmaWNhdGlv
bkxpc3RlbmVyKGluIG9iamVjdCBmdW5jdGlvbkNhbGxiYWNrKTsKICAgICAgICAgYm9vbGVhbiBy
ZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcigpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5oIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1v
bk1hYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmM4YjkxMjU3ZjQ2ODc3NDk3OTUwYTkzNDFhMjY5MWZlOTg1NzRh
NTMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
QWNjZXNzaWJpbGl0eUNvbW1vbk1hY19oCisjZGVmaW5lIEFjY2Vzc2liaWxpdHlDb21tb25NYWNf
aAorCisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZi5oPgorCisvLyBJZiBhbiB1
bnN1cHBvcnRlZCBhdHRyaWJ1dGUgaXMgcGFzc2VkIGluLCBpdCB3aWxsIHJhaXNlIGFuIGFjY2Vz
c2liaWxpdHkgZXhjZXB0aW9uLiBUaGVzZSBhcmUgdXN1YWxseSBjYXVnaHQgYnkgdGhlIEFjY2Vz
c2liaWxpdHkgUnVudGltZSB0byBpbmZvcm0KKy8vIHRoZSBBWCBjbGllbnQgYXBwIG9mIHRoZSBl
cnJvci4gSG93ZXZlciwgRFJUIGlzIHRoZSBBWCBjbGllbnQgYXBwLCBzbyBpdCBtdXN0IGNhdGNo
IHRoZXNlIGV4Y2VwdGlvbnMuCisjZGVmaW5lIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUyBAdHJ5
IHsKKyNkZWZpbmUgRU5EX0FYX09CSkNfRVhDRVBUSU9OUyB9IEBjYXRjaChOU0V4Y2VwdGlvbiAq
ZSkgeyBpZiAoIVtbZSBuYW1lXSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5RXhjZXB0
aW9uXSkgQHRocm93OyB9CisKKworQGludGVyZmFjZSBOU1N0cmluZyAoSlNTdHJpbmdSZWZBZGRp
dGlvbnMpCisrIChOU1N0cmluZyAqKXN0cmluZ1dpdGhKU1N0cmluZ1JlZjooSlNTdHJpbmdSZWYp
anNTdHJpbmdSZWY7CistIChKU1N0cmluZ1JlZiljcmVhdGVKU1N0cmluZ1JlZjsKK0BlbmQKKwor
I2VuZGlmIC8vIEFjY2Vzc2liaWxpdHlDb21tb25NYWNfaApkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5t
bSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxp
dHlDb21tb25NYWMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDgyYzBmMGNjODZjM2U4NDg1ZGZmYWZiMDA0M2Qz
NjJkMWZjZTViZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMubW0KQEAgLTAsMCArMSw1MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5oIgor
CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZkNGLmg+CisKK0BpbXBsZW1lbnRh
dGlvbiBOU1N0cmluZyAoSlNTdHJpbmdSZWZBZGRpdGlvbnMpCisKKysgKE5TU3RyaW5nICopc3Ry
aW5nV2l0aEpTU3RyaW5nUmVmOihKU1N0cmluZ1JlZilqc1N0cmluZ1JlZgoreworICAgIGlmICgh
anNTdHJpbmdSZWYpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBDRlN0cmluZ1JlZiBjZlN0
cmluZyA9IEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGpzU3RyaW5n
UmVmKTsKKyAgICByZXR1cm4gWyhOU1N0cmluZyAqKWNmU3RyaW5nIGF1dG9yZWxlYXNlXTsKK30K
KworLSAoSlNTdHJpbmdSZWYpY3JlYXRlSlNTdHJpbmdSZWYKK3sKKyAgICByZXR1cm4gSlNTdHJp
bmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKXNlbGYpOworfQorCitAZW5kCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3Np
YmlsaXR5Q29udHJvbGxlck1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1tCmluZGV4IDg2M2U3NDA3ZWIy
MDE5NWNiNzQ5ZWVmZDc1Yjk0NDczYTlkYTFkN2QuLjllNTQ5MDhiOTZjZWM1NGQwNDA0N2FjYjNl
N2IwZDI2ZGMwNTcyMTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlDb250cm9sbGVy
TWFjLm1tCkBAIC0yOSw4ICsyOSwxOCBAQAogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgorI2lt
cG9ydCAiQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLmgi
CisjaW1wb3J0ICJJbmplY3RlZEJ1bmRsZS5oIgorI2ltcG9ydCAiSW5qZWN0ZWRCdW5kbGVQYWdl
LmgiCisKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+CisjaW1wb3J0IDxK
YXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZi5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNT
dHJpbmdSZWZDRi5oPgorI2ltcG9ydCA8V2ViS2l0Mi9XS0J1bmRsZS5oPgorI2ltcG9ydCA8V2Vi
S2l0Mi9XS0J1bmRsZVBhZ2UuaD4KKyNpbXBvcnQgPFdlYktpdDIvV0tCdW5kbGVQYWdlUHJpdmF0
ZS5oPgogCiBuYW1lc3BhY2UgV1RSIHsKIApAQCAtNTksNCArNjksMzUgQEAgYm9vbCBBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlcjo6cmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIoKQogICAgIHJldHVy
biB0cnVlOwogfQogCitzdGF0aWMgaWQgZmluZEFjY2Vzc2libGVPYmplY3RCeUlkKGlkIG9iaiwg
TlNTdHJpbmcgKmlkQXR0cmlidXRlKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwor
ICAgIGlkIG9iaklkQXR0cmlidXRlID0gW29iaiBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
QCJBWERSVEVsZW1lbnRJZEF0dHJpYnV0ZSJdOworICAgIGlmIChbb2JqSWRBdHRyaWJ1dGUgaXNL
aW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSAmJiBbb2JqSWRBdHRyaWJ1dGUgaXNFcXVhbFRv
U3RyaW5nOmlkQXR0cmlidXRlXSkKKyAgICAgICAgcmV0dXJuIG9iajsKKyAgICBFTkRfQVhfT0JK
Q19FWENFUFRJT05TCisKKyAgICBOU0FycmF5ICpjaGlsZHJlbiA9IFtvYmogYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXTsKKyAgICBO
U1VJbnRlZ2VyIGNoaWxkcmVuQ291bnQgPSBbY2hpbGRyZW4gY291bnRdOworICAgIGZvciAoTlNV
SW50ZWdlciBpID0gMDsgaSA8IGNoaWxkcmVuQ291bnQ7ICsraSkgeworICAgICAgICBpZCByZXN1
bHQgPSBmaW5kQWNjZXNzaWJsZU9iamVjdEJ5SWQoW2NoaWxkcmVuIG9iamVjdEF0SW5kZXg6aV0s
IGlkQXR0cmlidXRlKTsKKyAgICAgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFjY2Vzc2libGVFbGVtZW50
QnlJZChKU1N0cmluZ1JlZiBpZEF0dHJpYnV0ZSkKK3sKKyAgICBXS0J1bmRsZVBhZ2VSZWYgcGFn
ZSA9IEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKTsKKyAgICBpZCByb290
ID0gc3RhdGljX2Nhc3Q8UGxhdGZvcm1VSUVsZW1lbnQ+KFdLQWNjZXNzaWJpbGl0eVJvb3RPYmpl
Y3QocGFnZSkpOworCisgICAgaWQgcmVzdWx0ID0gZmluZEFjY2Vzc2libGVPYmplY3RCeUlkKHJv
b3QsIFtOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6aWRBdHRyaWJ1dGVdKTsKKyAgICBp
ZiAocmVzdWx0KQorICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRl
KHJlc3VsdCk7CisKKyAgICByZXR1cm4gMDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50TWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQppbmRleCA4MWEwMzEwYjEyNzQ2
ZDQzOWY0YzU3YWQxMDcwODBjNDY1NzkyM2Q5Li4yNGVlZjA4MzdmZDIzMzVlZTQ1ODVhZDhhYmNj
NjFjNjNlZDYyNTA1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMu
bW0KQEAgLTI0LDYgKzI0LDcgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQg
IkFjY2Vzc2liaWxpdHlDb21tb25NYWMuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlOb3RpZmlj
YXRpb25IYW5kbGVyLmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgiCiAjaW1w
b3J0ICJJbmplY3RlZEJ1bmRsZS5oIgpAQCAtNTEsMTIgKzUyLDYgQEAKICNkZWZpbmUgTlNBY2Nl
c3NpYmlsaXR5RHJvcEVmZmVjdHNBdHRyaWJ1dGUgQCJBWERyb3BFZmZlY3RzIgogI2VuZGlmCiAK
LS8vIElmIGFuIHVuc3VwcG9ydGVkIGF0dHJpYnV0ZSBpcyBwYXNzZWQgaW4sIGl0IHdpbGwgcmFp
c2UgYW4gYWNjZXNzaWJpbGl0eSBleGNlcHRpb24uIFRoZXNlIGFyZSB1c3VhbGx5IGNhdWdodCBi
eSB0aGUgQWNjZXNzaWJpbGl0eSBSdW50aW1lIHRvIGluZm9ybQotLy8gdGhlIEFYIGNsaWVudCBh
cHAgb2YgdGhlIGVycm9yLiBIb3dldmVyLCBEUlQgaXMgdGhlIEFYIGNsaWVudCBhcHAsIHNvIGl0
IG11c3QgY2F0Y2ggdGhlc2UgZXhjZXB0aW9ucy4KLSNkZWZpbmUgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TIEB0cnkgewotI2RlZmluZSBFTkRfQVhfT0JKQ19FWENFUFRJT05TIH0gQGNhdGNoKE5T
RXhjZXB0aW9uICplKSB7IGlmICghW1tlIG5hbWVdIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2li
aWxpdHlFeGNlcHRpb25dKSBAdGhyb3c7IH0KLQotCiB0eXBlZGVmIHZvaWQgKCpBWFBvc3RlZE5v
dGlmaWNhdGlvbkNhbGxiYWNrKShpZCBlbGVtZW50LCBOU1N0cmluZyogbm90aWZpY2F0aW9uLCB2
b2lkKiBjb250ZXh0KTsKIAogQGludGVyZmFjZSBOU09iamVjdCAoV2ViS2l0QWNjZXNzaWJpbGl0
eUFkZGl0aW9ucykKQEAgLTY1LDI5ICs2MCw2IEBAIHR5cGVkZWYgdm9pZCAoKkFYUG9zdGVkTm90
aWZpY2F0aW9uQ2FsbGJhY2spKGlkIGVsZW1lbnQsIE5TU3RyaW5nKiBub3RpZmljYXRpb24sCiAt
IChOU1VJbnRlZ2VyKWFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZUNvdW50OihOU1N0cmluZyAq
KWF0dHJpYnV0ZTsKIEBlbmQKIAotQGludGVyZmFjZSBOU1N0cmluZyAoSlNTdHJpbmdSZWZBZGRp
dGlvbnMpCi0rIChOU1N0cmluZyAqKXN0cmluZ1dpdGhKU1N0cmluZ1JlZjooSlNTdHJpbmdSZWYp
anNTdHJpbmdSZWY7Ci0tIChKU1N0cmluZ1JlZiljcmVhdGVKU1N0cmluZ1JlZjsKLUBlbmQKLQot
QGltcGxlbWVudGF0aW9uIE5TU3RyaW5nIChKU1N0cmluZ1JlZkFkZGl0aW9ucykKLQotKyAoTlNT
dHJpbmcgKilzdHJpbmdXaXRoSlNTdHJpbmdSZWY6KEpTU3RyaW5nUmVmKWpzU3RyaW5nUmVmCi17
Ci0gICAgaWYgKCFqc1N0cmluZ1JlZikKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgCi0gICAg
Q0ZTdHJpbmdSZWYgY2ZTdHJpbmcgPSBKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBqc1N0cmluZ1JlZik7Ci0gICAgcmV0dXJuIFsoTlNTdHJpbmcgKiljZlN0cmluZyBh
dXRvcmVsZWFzZV07Ci19Ci0KLS0gKEpTU3RyaW5nUmVmKWNyZWF0ZUpTU3RyaW5nUmVmCi17Ci0g
ICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmluZ1JlZilzZWxmKTsK
LX0KLQotQGVuZAotCiBuYW1lc3BhY2UgV1RSIHsKIAogQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudChQbGF0Zm9ybVVJRWxlbWVudCBlbGVtZW50KQpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3Y2VkZDBlYjJjMjg5MGNkNTVkZGY3NTM3
NjUyYjk5YjU3Y2ZlMDVmLi5jYzA4ZGFiNDhiZDc0OTc5Yzk5OGJjYzA4OWEwZjkxY2ZmYTk4NGE0
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktp
dFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjgsNiArMjgsNyBAQAog
CQkyOTIxMEVCNDE0NENBQ0Q1MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjkyMTBFQjEx
NDRDQUNENDAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcCAqLzsgfTsKIAkJ
MjkyMTBFQjUxNDRDQUNENTAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjkyMTBFQjMx
NDRDQUNENDAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tICovOyB9Owog
CQkyOTIxMEVEQTE0NENDM0VBMDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5MjEwRUFC
MTQ0Q0FDQjIwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tICovOyB9Owor
CQkyOTIxMEVEQTE0NENDM0VBMDA4MzVCQjYgLyogQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5MjEwRUFCMTQ0
Q0FDQjIwMDgzNUJCNiAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tICovOyB9OwogCQky
OTIxMEVEQjE0NENENDc5MDA4MzVCQjUgLyogSlNBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1ODM5MTNEMDE0
MzM1RTk1MDA4MzA3RTUgLyogSlNBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAgKi87IH07CiAJ
CTI5MjEwRUUxMTQ0Q0RCMjYwMDgzNUJCNSAvKiBKU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjkyMTBFREIx
NDY3MjdFNzExODM1QkI1IC8qIEpTQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAgKi87IH07CiAJ
CTI5QThGQ0NCMTQ1RUYwMkUwMDkwNDVBNiAvKiBKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5MjEwRUUx
MTQ0Q0RFNjc4OTgxNUVFNSAvKiBKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcCAqLzsgfTsK
QEAgLTEwNiw2ICsxMDcsNyBAQAogCQkyOTIxMEVBOTE0NENBQ0IyMDA4MzVCQjUgLyogQWNjZXNz
aWJpbGl0eVVJRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMjkyMTBFQUExNDRDQUNCMjAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTIxMEVBQjE0NENBQ0IyMDA4MzVCQjUg
LyogQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgbmFtZSA9IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW07IHBhdGggPSBtYWMv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMjkyMTBFQUIxNDRDQUNCMjAwODM1QkI2IC8qIEFjY2Vzc2liaWxpdHlDb21tb25NYWMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBBY2Nlc3NpYmlsaXR5Q29t
bW9uTWFjLm1tOyBwYXRoID0gbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5MjEwRUIxMTQ0Q0FDRDQwMDgzNUJCNSAvKiBBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTI5MjEwRUIyMTQ0Q0FDRDQwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTIxMEVCMzE0NENBQ0Q0MDA4MzVC
QjUgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IG5hbWUgPSBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbTsgcGF0aCA9
IG1hYy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTMwMiw2ICszMDQsNyBAQAogCQkJCTI5MjEwRUE5MTQ0Q0FDQjIwMDgzNUJCNSAv
KiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCAqLywKIAkJCQkyOTIxMEVBQTE0NENBQ0IyMDA4
MzVCQjUgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oICovLAogCQkJCTI5MjEwRUFCMTQ0Q0FD
QjIwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tICovLAorCQkJCTI5MjEw
RUFCMTQ0Q0FDQjIwMDgzNUJCNiAvKiBBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tICovLAogCQkJ
CTI5MjEwRUIxMTQ0Q0FDRDQwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAg
Ki8sCiAJCQkJMjkyMTBFQjIxNDRDQUNENDAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyLmggKi8sCiAJCQkJMjkyMTBFQjMxNDRDQUNENDAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyTWFjLm1tICovLApAQCAtNjAwLDYgKzYwMyw3IEBACiAJCQkJMjkyMTBFQjQxNDRD
QUNENTAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTI5MjEwRUI1MTQ0Q0FDRDUwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTI5MjEwRURBMTQ0Q0MzRUEwMDgzNUJCNSAvKiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMjkyMTBFREEx
NDRDQzNFQTAwODM1QkI2IC8qIEFjY2Vzc2liaWxpdHlDb21tb25NYWMubW0gaW4gU291cmNlcyAq
LywKIAkJCQkyOTIxMEVEQjE0NENENDc5MDA4MzVCQjUgLyogSlNBY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyOTIxMEVFMTE0NENEQjI2MDA4MzVCQjUgLyog
SlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI5QThGQ0NC
MTQ1RUYwMkUwMDkwNDVBNiAvKiBKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcCBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IGUyYWYwNDM3ZDNiMjFjNzAwMzI5MDQ5YWRlZjg1NTdlNWI3MDAyZjQu
LmRmZWE4NTgxMjQ0OGJiMjRkY2ZlOWFkZDA5NmUwMjlhOTIwYzFiYmIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNyBAQAorMjAxMi0wOS0yMSAgRG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNv
bT4KKworICAgICAgICBBWDogTGF5b3V0IHRlc3RzIHdvdWxkIGJlIGVhc2llciB0byB3cml0ZSBp
ZiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlciBjb3VsZCBmaW5kIGFuIGVsZW1lbnQgYnkgaWQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3MzAxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW9kaWZpZXMgYW4g
ZXhpc3RpbmcgdGVzdCB0byB1c2UgdGhlIG5ldyBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQKKyAgICAg
ICAgbWV0aG9kIG9mIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyLCBlbmFibGluZyB0aGUgdGVzdCB0
byBwYXNzIG9uCisgICAgICAgIGJvdGggTWFjIGFuZCBDaHJvbWl1bS4KKworICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvYXJpYS1oaWRkZW4td2l0aC1lbGVtZW50cy5odG1sOgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTItMDktMjEgIFpvbHRhbiBI
ZXJjemVnICA8emhlcmN6ZWdAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIFVucmV2aWV3ZWQg
Z2FyZGVuaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWhp
ZGRlbi13aXRoLWVsZW1lbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEt
aGlkZGVuLXdpdGgtZWxlbWVudHMuaHRtbAppbmRleCAzYTNmOGE3ZTMyMmNlMjNmOWFmNmVhODBh
NDJjYmI1M2RiNGUzNDY5Li4zZjdjZDA4MTY4MDkwMDYzYjdlM2U2YWMwNWE5MWRmNjcwNWFhZTJl
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtaGlkZGVuLXdpdGgt
ZWxlbWVudHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtaGlkZGVu
LXdpdGgtZWxlbWVudHMuaHRtbApAQCAtNSw2ICs1LDggQEAKIDwvaGVhZD4KIDxib2R5IGlkPSJi
b2R5Ij4KIAorPGRpdiBpZD0iY29udGFpbmVyIiBhcmlhLWxhYmVsPSJjb250YWluZXIiPgorCiA8
dGFibGUgYm9yZGVyPTEgc3VtbWFyeT0idGVzdCIgYXJpYS1oaWRkZW49InRydWUiPgogPHRyPjx0
ZD5jZWxsPC90ZD48dGQ+Y2VsbDwvdGQ+PHRkPmNlbGw8L3RkPjwvdHI+CiA8dHI+PHRkPmNlbGw8
L3RkPjx0ZD5jZWxsPC90ZD48dGQ+Y2VsbDwvdGQ+PC90cj4KQEAgLTE5LDEzICsyMSwxNyBAQAog
PGxpPnRlc3QKIDwvdWw+CiAKKzxkaXYgYXJpYT1sYWJlbD0id3JhcHBlciI+CiA8c2VsZWN0IHNp
emU9MTAgYXJpYS1oaWRkZW49InRydWUiPgogPG9wdGlvbj5vcHRpb24KIDxvcHRpb24+b3B0aW9u
CiA8L3NlbGVjdD4KKzwvZGl2PgogCiA8aDE+aGVhZGluZzwvaDE+CiAKKzwvZGl2PgorCiA8cCBp
ZD0iZGVzY3JpcHRpb24iPjwvcD4KIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgogCkBAIC0zNCwx
NCArNDAsMTQgQEAKICAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IGFyaWEtaGlkZGVu
IHdvcmtzIGFzIGV4cGVjdGVkIG9uIGVsZW1lbnRzIHRoYXQgYXJlIHN1YmNsYXNzZXMgb2YgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdCIpOwogCiAgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5
Q29udHJvbGxlcikgewotICAgICAgIHZhciByb290ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
cm9vdEVsZW1lbnQ7CisgICAgICAgdmFyIGNvbnRhaW5lciA9IGFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY29udGFpbmVyIik7CiAKICAgICAgICAvLyBmaXJz
dCBjaGlsZCBpcyBhbiBBWEdyb3VwIHRoYXQgaGFzIG5vIGNoaWxkcmVuCi0gICAgICAgdmFyIGNo
aWxkID0gcm9vdC5jaGlsZEF0SW5kZXgoMCkuY2hpbGRBdEluZGV4KDApOworICAgICAgIHZhciBj
aGlsZCA9IGNvbnRhaW5lci5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgc2hvdWxkQmUoImNoaWxk
LmNoaWxkcmVuQ291bnQiLCAiMCIpOwogCiAgICAgICAgLy8gVGhlIHNlY29uZCBjaGlsZCB3ZSBh
c2sgZm9yIGZyb20gdGhlIHdlYiBhcmVhIHNob3VsZCBiZSB0aGUgaGVhZGluZywgYW5kIHdlIHNo
b3VsZCBoYXZlIHNraXBwZWQgb3ZlciBldmVyeXRoaW5nIGVsc2UuCi0gICAgICAgY2hpbGQgPSBy
b290LmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMSk7CisgICAgICAgY2hpbGQgPSBjb250
YWluZXIuY2hpbGRBdEluZGV4KDEpOwogICAgICAgIHNob3VsZEJlKCJjaGlsZC5yb2xlIiwgIidB
WFJvbGU6IEFYSGVhZGluZyciKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDkxZGNlNDE2ZDk0ZmVmNTNiYmM1ZDI3OTMz
MTM4MjJiYjJmNmZmMGEuLmMyMTIxMThiMmYyYjhkOWE5MWNhMDkwNmU1MDZlMWMzMTRmNjM3MDAg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlv
bnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwpA
QCAtMTM0NCw3ICsxMzQ0LDYgQEAgY3JidWcuY29tLzEwMzIyIGFjY2Vzc2liaWxpdHkvYXJpYS1j
b21ib2JveC5odG1sIFsgU2tpcCBdCiBjcmJ1Zy5jb20vMTAzMjIgYWNjZXNzaWJpbGl0eS9hcmlh
LWNvbnRyb2xzLXdpdGgtdGFicy5odG1sIFsgU2tpcCBdCiBjcmJ1Zy5jb20vMTAzMjIgYWNjZXNz
aWJpbGl0eS9hcmlhLWZhbGxiYWNrLXJvbGVzLmh0bWwgWyBTa2lwIF0KIGNyYnVnLmNvbS8xMDMy
MiBhY2Nlc3NpYmlsaXR5L2FyaWEtaGlkZGVuLXVwZGF0ZS5odG1sIFsgU2tpcCBdCi1jcmJ1Zy5j
b20vMTAzMjIgYWNjZXNzaWJpbGl0eS9hcmlhLWhpZGRlbi13aXRoLWVsZW1lbnRzLmh0bWwgWyBT
a2lwIF0KIGNyYnVnLmNvbS8xMDMyMiBhY2Nlc3NpYmlsaXR5L2FyaWEtaW52YWxpZC5odG1sIFsg
U2tpcCBdCiBjcmJ1Zy5jb20vMTAzMjIgYWNjZXNzaWJpbGl0eS9hcmlhLWxhYmVsbGVkYnktb3Zl
cnJpZGVzLWxhYmVsLmh0bWwgWyBTa2lwIF0KIGNyYnVnLmNvbS8xMDMyMiBhY2Nlc3NpYmlsaXR5
L2FyaWEtbGluay1zdXBwb3J0cy1wcmVzcy5odG1sIFsgU2tpcCBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165248</attachid>
            <date>2012-09-21 23:41:41 -0700</date>
            <delta_ts>2012-09-22 08:41:23 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-97301-20120921234214.patch</filename>
            <type>text/plain</type>
            <size>47603</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5Mjk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGI4Njk1ODAzMGQ3MDYz
N2QwMTA5MmU1OTNjM2NmNTEyYTdjYjI0Yy4uZjUzOTU4MjE2ZGFhNjQ3YTliYTg4ZDA1OTUzNWI2
MjgyNWU3NTBiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTA5LTIxICBEb21p
bmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFYOiBMYXlvdXQg
dGVzdHMgd291bGQgYmUgZWFzaWVyIHRvIHdyaXRlIGlmIEFjY2Vzc2liaWxpdHlDb250cm9sbGVy
IGNvdWxkIGZpbmQgYW4gZWxlbWVudCBieSBpZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTczMDEKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBG
bGVpemFjaC4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ug
c3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNj
cmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBtZXRob2QgdG8gZ2V0IHRo
ZSBET00gImlkIiBhdHRyaWJ1dGUgZnJvbSBhbiBhY2Nlc3NpYmxlIG9iamVjdCwgb25seSBmb3Ig
bGF5b3V0IHRlc3RzLgorCisgICAgICAgIE1ha2VzIGV4aXN0aW5nIHRlc3QgbW9yZSBjcm9zcy1w
bGF0Zm9ybToKKyAgICAgICAgVGVzdHM6IGFjY2Vzc2liaWxpdHkvYXJpYS1oaWRkZW4td2l0aC1l
bGVtZW50cy5odG1sCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlci5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOl0pOgorCiAyMDEyLTA5LTIxICBBbWkg
RmlzY2htYW4gIDxmaXNjaG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSFRNTE1lZGlhRWxl
bWVudCBpc24ndCBnYXJiYWdlIGNvbGxlY3RlZCBiZXR3ZWVuIGRvY3VtZW50IHJlbG9hZHMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0KaW5kZXggMjZjN2FhZTI3YWJiZmVkZTcwMGZj
ZjE2M2I0OWFhY2U2YjZiNGRhYy4uYTQzOTRiYTIwNjA1Nzg0MjU2YzU2ZDg3MDBkZjI4MzYzY2Qw
MGMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0KQEAgLTI0MzAsNiArMjQz
MCwxMCBAQCBzdGF0aWMgTlNTdHJpbmcqIHJvbGVWYWx1ZVRvTlNTdHJpbmcoQWNjZXNzaWJpbGl0
eVJvbGUgdmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gQCJub3JtYWwiOwogICAgICAgICB9CiAg
ICAgfQorCisgICAgLy8gVXNlZCBieSBEUlQgdG8gZmluZCBhbiBhY2Nlc3NpYmxlIG5vZGUgYnkg
aXRzIGVsZW1lbnQgaWQuCisgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpA
IkFYRFJURWxlbWVudElkQXR0cmlidXRlIl0pCisgICAgICAgIHJldHVybiBtX29iamVjdC0+Z2V0
QXR0cmlidXRlKGlkQXR0cik7CiAgICAgCiAgICAgcmV0dXJuIG5pbDsKIH0KZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiYWQwMjYyNGI0Nzc3MzU4
MmIzNGYwZDRiOTNjZDc3MzFjMGUwYTE2Li5jYzg0MDA1NTFlNmY5NDRmM2YzZDk2NDdkNDgxMDIz
YTg4Mjk5MDY5IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNTYgQEAKKzIwMTItMDktMjEgIERvbWluaWMgTWF6em9uaSAgPGRtYXp6
b25pQGdvb2dsZS5jb20+CisKKyAgICAgICAgQVg6IExheW91dCB0ZXN0cyB3b3VsZCBiZSBlYXNp
ZXIgdG8gd3JpdGUgaWYgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIgY291bGQgZmluZCBhbiBlbGVt
ZW50IGJ5IGlkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05NzMwMQorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIEZsZWl6YWNoLgorCisgICAgICAg
IEFkZHMgYSBuZXcgYWNjZXNzaWJsZUVsZW1lbnRCeUlkIG1ldGhvZCB0byBBY2Nlc3NpYmlsaXR5
Q29udHJvbGxlciwgdG8gbWFrZSBpdAorICAgICAgICBlYXNpZXIgdG8gd3JpdGUgY3Jvc3MtcGxh
dGZvcm0gbGF5b3V0IHRlc3RzLgorCisgICAgICAgIEltcGxlbWVudGVkIGZvciBDaHJvbWl1bSBh
bmQgZm9yIE1hYyAoRFJUIGFuZCBXS1RSKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0Fj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKGdldEFjY2Vzc2libGVFbGVtZW50
QnlJZENhbGxiYWNrKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpnZXRKU0Ns
YXNzKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5o
OgorICAgICAgICAoQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9BY2Nlc3NpYmlsaXR5Q29udHJv
bGxlckNocm9taXVtLmNwcDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpBY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcik6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6
ZmluZEFjY2Vzc2libGVFbGVtZW50QnlJZFJlY3Vyc2l2ZSk6CisgICAgICAgIChBY2Nlc3NpYmls
aXR5Q29udHJvbGxlcjo6Z2V0QWNjZXNzaWJsZUVsZW1lbnRCeUlkKToKKyAgICAgICAgKEFjY2Vz
c2liaWxpdHlDb250cm9sbGVyOjphY2Nlc3NpYmxlRWxlbWVudEJ5SWRHZXR0ZXJDYWxsYmFjayk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9BY2Nlc3NpYmls
aXR5Q29udHJvbGxlckNocm9taXVtLmg6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVy
R3RrLmNwcDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjphY2Nlc3NpYmxlRWxl
bWVudEJ5SWQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5Q29t
bW9uTWFjLmg6IGFkZGVkCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxp
dHlDb21tb25NYWMubW06IGFkZGVkCisgICAgICAgICgrW05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0
cmluZ1JlZjpdKToKKyAgICAgICAgKC1bTlNTdHJpbmcgY3JlYXRlSlNTdHJpbmdSZWZdKToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJNYWMubW06
CisgICAgICAgIChmaW5kQWNjZXNzaWJsZU9iamVjdEJ5SWQpOgorICAgICAgICAoQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXI6OmFjY2Vzc2libGVFbGVtZW50QnlJZCk6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW06CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyV2luLmNwcDoKKyAgICAgICAg
KEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjphY2Nlc3NpYmxlRWxlbWVudEJ5SWQpOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6YWNjZXNzaWJs
ZUVsZW1lbnRCeUlkKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmg6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5n
cy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5oOiBhZGRlZAorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlD
b21tb25NYWMubW06IGFkZGVkCisgICAgICAgICgrW05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmlu
Z1JlZjpdKToKKyAgICAgICAgKC1bTlNTdHJpbmcgY3JlYXRlSlNTdHJpbmdSZWZdKToKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdUUjo6ZmluZEFjY2Vzc2libGVPYmplY3RCeUlkKToK
KyAgICAgICAgKFdUUik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjph
Y2Nlc3NpYmxlRWxlbWVudEJ5SWQpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW06CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisKIDIwMTItMDktMjEgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBX
ZWJQcm9jZXNzIFhQQyBzZXJ2aWNlcyBuZWVkIGhhdmUgdGhlaXIgZW52aXJvbm1lbnQgc2V0IHdp
dGhvdXQgZGlzcnVwdGluZyBhbGwgb3RoZXIgWFBDIHNlcnZpY2VzCmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAKaW5kZXggYjM2N2Q1YzQ2OWQ5
YmE5OGQyNTVjOGVkZmVlNmY5NTg5MzVjM2I1Zi4uNDlkNDUzYTg0Y2RlYmNkYjhhMzIyNmJmZDky
Y2M4MTE4MjRhNjU3MyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmNwcApAQCAtOTcsNiArOTcsMTggQEAgc3RhdGljIEpTVmFsdWVSZWYgZ2V0
RWxlbWVudEF0UG9pbnRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYg
ZnUKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWFrZUpTQWNjZXNzaWJpbGl0
eVVJRWxlbWVudChjb250ZXh0LCBjb250cm9sbGVyLT5lbGVtZW50QXRQb2ludCh4LCB5KSk7CiB9
CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIGdldEFjY2Vzc2libGVFbGVtZW50QnlJZENhbGxiYWNrKEpT
Q29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhp
c09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRz
W10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBKU1N0cmluZ1JlZiBpZEF0dHJpYnV0
ZSA9IDA7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPT0gMSkKKyAgICAgICAgaWRBdHRyaWJ1dGUg
PSBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKTsg
ICAgCisgICAgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2Fz
dDxBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0
KSk7CisgICAgSlNWYWx1ZVJlZiByZXN1bHQgPSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYWtl
SlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KGNvbnRleHQsIGNvbnRyb2xsZXItPmFjY2Vzc2libGVF
bGVtZW50QnlJZChpZEF0dHJpYnV0ZSkpOworICAgIGlmIChpZEF0dHJpYnV0ZSkKKyAgICAgICAg
SlNTdHJpbmdSZWxlYXNlKGlkQXR0cmlidXRlKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBz
dGF0aWMgSlNWYWx1ZVJlZiBhZGROb3RpZmljYXRpb25MaXN0ZW5lckNhbGxiYWNrKEpTQ29udGV4
dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVj
dCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpT
VmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBpZiAoYXJndW1lbnRDb3VudCAhPSAxKQpAQCAt
MTIzLDYgKzEzNSw3IEBAIEpTQ2xhc3NSZWYgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmdldEpT
Q2xhc3MoKQogICAgICAgICB7ICJsb2dTY3JvbGxpbmdTdGFydEV2ZW50cyIsIGxvZ1Njcm9sbGlu
Z1N0YXJ0RXZlbnRzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAibG9nQWNjZXNzaWJpbGl0
eUV2ZW50cyIsIGxvZ0FjY2Vzc2liaWxpdHlFdmVudHNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAg
ICB7ICJlbGVtZW50QXRQb2ludCIsIGdldEVsZW1lbnRBdFBvaW50Q2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
KyAgICAgICAgeyAiYWNjZXNzaWJsZUVsZW1lbnRCeUlkIiwgZ2V0QWNjZXNzaWJsZUVsZW1lbnRC
eUlkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiYWRkTm90aWZpY2F0aW9uTGlzdGVuZXIi
LCBhZGROb3RpZmljYXRpb25MaXN0ZW5lckNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInJl
bW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyIiwgcmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXJDYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LAogICAgICAgICB7IDAsIDAsIDAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgKaW5kZXggMWQ1MjM1M2NkNmNhNzc0MDE3YmEw
NGE1ZjcwYWFmYzJmNTM2MjQzYy4uYTZjZGM0Njg2YzEzMmZmNTg2ZDU4MmZlNTFhMDc2OGVlNzJj
MDEwMCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5oCkBAIC00Niw2ICs0Niw3IEBAIHB1YmxpYzoKICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
IHJvb3RFbGVtZW50KCk7CiAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBmb2N1c2VkRWxlbWVu
dCgpOwogICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgZWxlbWVudEF0UG9pbnQoaW50IHgsIGlu
dCB5KTsKKyAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IGFjY2Vzc2libGVFbGVtZW50QnlJZChK
U1N0cmluZ1JlZiBpZCk7CiAKICAgICB2b2lkIHNldExvZ0ZvY3VzRXZlbnRzKGJvb2wpOwogICAg
IHZvaWQgc2V0TG9nVmFsdWVDaGFuZ2VFdmVudHMoYm9vbCk7CmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA1NWI2ZWYyOTA5NTE0N2NmMTBhNjgxZGJiMDFhYjE1MjRhYmNlOWE4Li4wYzZi
ODA0OWVhOGQ4NzU0MzY3OWE0NGI3NTI5NmU0M2VhODFhZDVlIDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTExNiw2ICsxMTYsOCBAQAogCQlCQzBFMjRFMDBFMkQ5NDUxMDAxQjZCQzIg
LyogQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkMwRTI0REUwRTJEOTQ1MTAwMUI2QkMyIC8qIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQuaCAqLzsgfTsKIAkJQkMwRTI0RTEwRTJEOTQ1MTAwMUI2QkMyIC8qIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkMwRTI0REYwRTJEOTQ1MTAwMUI2QkMyIC8qIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQuY3BwICovOyB9OwogCQlCQzBFMjYxNTBFMkRBNEM2MDAxQjZCQzIgLyogQWNjZXNzaWJp
bGl0eVVJRWxlbWVudE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDMEUyNjE0MEUyREE0QzYwMDFCNkJDMiAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50TWFjLm1tICovOyB9OworCQlCQzBFMjRFMDBFMkQ5NDUxMDAxQjZCQzMgLyogQWNjZXNzaWJp
bGl0eUNvbW1vbk1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkMwRTI0REUwRTJEOTQ1MTAwMUI2QkMzIC8qIEFjY2Vzc2liaWxpdHlDb21tb25NYWMu
aCAqLzsgfTsKKwkJQkMwRTI2MTUwRTJEQTRDNjAwMUI2QkMzIC8qIEFjY2Vzc2liaWxpdHlDb21t
b25NYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzBFMjYxNDBFMkRBNEM2MDAxQjZCQzMgLyogQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbSAqLzsg
fTsKIAkJQkM0NzQxMkEwRDAzOEE0QzAwNzJCMDA2IC8qIEphdmFTY3JpcHRUaHJlYWRpbmcuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNDc0MTI5MEQw
MzhBNEMwMDcyQjAwNiAvKiBKYXZhU2NyaXB0VGhyZWFkaW5nLmggKi87IH07CiAJCUJDNDc0MTQx
MEQwMzhBNTcwMDcyQjAwNiAvKiBKYXZhU2NyaXB0VGhyZWFkaW5nUHRocmVhZHMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM0NzQxNDAwRDAzOEE1
NzAwNzJCMDA2IC8qIEphdmFTY3JpcHRUaHJlYWRpbmdQdGhyZWFkcy5jcHAgKi87IH07CiAJCUJD
OUQ5MDI0MEM5NzQ3MkUwMDk5QTRBMyAvKiBXb3JrUXVldWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5RDkwMjEwQzk3NDcyRDAwOTlBNEEzIC8q
IFdvcmtRdWV1ZS5jcHAgKi87IH07CkBAIC0zMjMsOCArMzI1LDEwIEBACiAJCUJDMDEzMUQ4MEM5
NzcyMDEwMDg3MzE3RCAvKiBUZXN0UnVubmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBUZXN0UnVubmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQkMwMTMxRDkwQzk3NzIwMTAwODczMTdEIC8qIFRlc3RSdW5uZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RSdW5uZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkMwRTI0REUwRTJEOTQ1MTAwMUI2QkMyIC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzBFMjRERTBFMkQ5NDUxMDAx
QjZCQzMgLyogQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBtYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCQzBFMjRERjBFMkQ5NDUxMDAxQjZCQzIgLyogQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMwRTI2
MTQwRTJEQTRDNjAwMUI2QkMyIC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
TWFjLm1tOyBwYXRoID0gbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMEUyNjE0MEUyREE0QzYwMDFCNkJDMyAvKiBBY2Nlc3Np
YmlsaXR5Q29tbW9uTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1l
ID0gQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbTsgcGF0aCA9IG1hYy9BY2Nlc3NpYmlsaXR5Q29t
bW9uTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzQ3NDEyOTBEMDM4QTRD
MDA3MkIwMDYgLyogSmF2YVNjcmlwdFRocmVhZGluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKYXZhU2NyaXB0VGhyZWFkaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUJDNDc0MTQwMEQwMzhBNTcwMDcyQjAwNiAvKiBKYXZhU2NyaXB0VGhyZWFkaW5nUHRo
cmVhZHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSmF2YVNjcmlw
dFRocmVhZGluZ1B0aHJlYWRzLmNwcDsgcGF0aCA9IHB0aHJlYWRzL0phdmFTY3JpcHRUaHJlYWRp
bmdQdGhyZWFkcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNjQ2QTRCMTM2
OTA1REUwMEIzNURFRCAvKiBDb21waWxlclZlcnNpb24ueGNjb25maWcgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
LnhjY29uZmlnOyBuYW1lID0gQ29tcGlsZXJWZXJzaW9uLnhjY29uZmlnOyBwYXRoID0gbWFjL0Nv
bmZpZ3VyYXRpb25zL0NvbXBpbGVyVmVyc2lvbi54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTUwMyw2ICs1MDcsOCBAQAogCQkJCUJDMEUyNERGMEUyRDk0NTEwMDFCNkJD
MiAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCAqLywKIAkJCQlCQzBFMjRERTBFMkQ5NDUx
MDAxQjZCQzIgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oICovLAogCQkJCUJDMEUyNjE0MEUy
REE0QzYwMDFCNkJDMiAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tICovLAorCQkJCUJD
MEUyNjE0MEUyREE0QzYwMDFCNkJDMyAvKiBBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLmggKi8sCisJ
CQkJQkMwRTI2MTQwRTJEQTRDNjAwMUI2QkMzIC8qIEFjY2Vzc2liaWxpdHlDb21tb25NYWMubW0g
Ki8sCiAJCQkJQkNBMThCMzYwQzlCMDIxOTAwMTE0MzY5IC8qIEFwcGxlU2NyaXB0Q29udHJvbGxl
ci5oICovLAogCQkJCUJDQTE4QjM3MEM5QjAyMTkwMDExNDM2OSAvKiBBcHBsZVNjcmlwdENvbnRy
b2xsZXIubSAqLywKIAkJCQlCQ0ExOEI2QjBDOUIwOERCMDAxMTQzNjkgLyogRXZlbnRTZW5kaW5n
Q29udHJvbGxlci5oICovLApAQCAtOTQ4LDYgKzk1NCw3IEBACiAJCQkJQkNEMDhCNzEwRTEwNTlE
MjAwQTdEMEMxIC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkMwRTI0RTEwRTJEOTQ1MTAwMUI2QkMyIC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwRTI2MTUwRTJEQTRDNjAwMUI2QkMyIC8qIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnRNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQlCQzBFMjYxNTBFMkRB
NEM2MDAxQjZCQzMgLyogQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUJDQTE4QjM5MEM5QjAyMTkwMDExNDM2OSAvKiBBcHBsZVNjcmlwdENvbnRyb2xsZXIubSBp
biBTb3VyY2VzICovLAogCQkJCUE4QjkxQkZEMENGNTIyQjQwMDhGOTFGRiAvKiBDaGVja2VkTWFs
bG9jLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzQ0JCODMyMTM0RTQyRjMwMDFDRTZBNCAvKiBD
eWNsaWNSZWR1bmRhbmN5Q2hlY2suY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL0FjY2Vzc2liaWxpdHlDb250cm9s
bGVyQ2hyb21pdW0uY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckNocm9taXVtLmNwcAppbmRleCBiMWQyOTQ4YWViYWIz
Mjk4MjQ5Mjc1NDU4MjQ1ODMwNzMxNGJjZGVkLi44OWQ1ZDU4NzcwYzYxZDFhYWU5MTYwYmEzNGU0
MzY3NjUxNmIwN2MyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyQ2hyb21pdW0uY3BwCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXJDaHJvbWl1bS5jcHAKQEAgLTMyLDkgKzMyLDExIEBACiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXJDaHJvbWl1bS5oIgogCiAjaW5jbHVkZSAiV2ViQWNjZXNzaWJpbGl0eU9iamVj
dC5oIgorI2luY2x1ZGUgIldlYkVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgorI2lu
Y2x1ZGUgIldlYk5vZGUuaCIKICNpbmNsdWRlICJXZWJWaWV3LmgiCi0jaW5jbHVkZSAicGxhdGZv
cm0vV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ1N0cmluZy5oIgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OwogCkBAIC00OSw2ICs1MSw4IEBAIEFjY2Vzc2liaWxpdHlDb250
cm9sbGVyOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcigpCiAgICAgYmluZFByb3BlcnR5KCJmb2N1
c2VkRWxlbWVudCIsICZBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6Zm9jdXNlZEVsZW1lbnRHZXR0
ZXJDYWxsYmFjayk7CiAgICAgYmluZFByb3BlcnR5KCJyb290RWxlbWVudCIsICZBY2Nlc3NpYmls
aXR5Q29udHJvbGxlcjo6cm9vdEVsZW1lbnRHZXR0ZXJDYWxsYmFjayk7CiAKKyAgICBiaW5kTWV0
aG9kKCJhY2Nlc3NpYmxlRWxlbWVudEJ5SWQiLCAmQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFj
Y2Vzc2libGVFbGVtZW50QnlJZEdldHRlckNhbGxiYWNrKTsKKwogICAgIGJpbmRGYWxsYmFja01l
dGhvZCgmQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmZhbGxiYWNrQ2FsbGJhY2spOwogfQogCkBA
IC04Niw2ICs5MCwzNiBAQCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBBY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcjo6Z2V0Um9vdEVsZW1lbnQoKQogICAgIHJldHVybiBtX2VsZW1lbnRzLmNyZWF0ZVJv
b3QobV9yb290RWxlbWVudCk7CiB9CiAKK0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIEFjY2Vzc2li
aWxpdHlDb250cm9sbGVyOjpmaW5kQWNjZXNzaWJsZUVsZW1lbnRCeUlkUmVjdXJzaXZlKGNvbnN0
IFdlYkFjY2Vzc2liaWxpdHlPYmplY3QmIG9iaiwgY29uc3QgV2ViU3RyaW5nJiBpZCkKK3sKKyAg
ICBpZiAob2JqLmlzTnVsbCgpIHx8IG9iai5pc0RldGFjaGVkKCkpCisgICAgICAgIHJldHVybiAw
OworCisgICAgV2ViTm9kZSBub2RlID0gb2JqLm5vZGUoKTsKKyAgICBpZiAoIW5vZGUuaXNOdWxs
KCkgJiYgbm9kZS5pc0VsZW1lbnROb2RlKCkpIHsKKyAgICAgICAgV2ViRWxlbWVudCBlbGVtZW50
ID0gbm9kZS50bzxXZWJFbGVtZW50PigpOworICAgICAgICBlbGVtZW50LmdldEF0dHJpYnV0ZSgi
aWQiKTsKKyAgICAgICAgaWYgKGVsZW1lbnQuZ2V0QXR0cmlidXRlKCJpZCIpID09IGlkKSAKKyAg
ICAgICAgICAgIHJldHVybiBtX2VsZW1lbnRzLmdldE9yQ3JlYXRlKG9iaik7CisgICAgfQorCisg
ICAgdW5zaWduZWQgY2hpbGRDb3VudCA9IG9iai5jaGlsZENvdW50KCk7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGNoaWxkQ291bnQ7IGkrKykgeworICAgICAgICBpZiAoQWNjZXNzaWJp
bGl0eVVJRWxlbWVudCogcmVzdWx0ID0gZmluZEFjY2Vzc2libGVFbGVtZW50QnlJZFJlY3Vyc2l2
ZShvYmouY2hpbGRBdChpKSwgaWQpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CisKKyAgICByZXR1cm4gMDsKK30KKworQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXI6OmdldEFjY2Vzc2libGVFbGVtZW50QnlJZChjb25zdCBzdGQ6OnN0cmlu
ZyYgaWQpCit7CisgICAgaWYgKG1fcm9vdEVsZW1lbnQuaXNOdWxsKCkpCisgICAgICAgIG1fcm9v
dEVsZW1lbnQgPSBtX3dlYlZpZXctPmFjY2Vzc2liaWxpdHlPYmplY3QoKTsKKworICAgIHJldHVy
biBmaW5kQWNjZXNzaWJsZUVsZW1lbnRCeUlkUmVjdXJzaXZlKG1fcm9vdEVsZW1lbnQsIFdlYlN0
cmluZzo6ZnJvbVVURjgoaWQuY19zdHIoKSkpOworfQorCiBib29sIEFjY2Vzc2liaWxpdHlDb250
cm9sbGVyOjpzaG91bGRMb2dBY2Nlc3NpYmlsaXR5RXZlbnRzKCkKIHsKICAgICByZXR1cm4gbV9s
b2dBY2Nlc3NpYmlsaXR5RXZlbnRzOwpAQCAtMTQxLDYgKzE3NSwyMSBAQCB2b2lkIEFjY2Vzc2li
aWxpdHlDb250cm9sbGVyOjpyb290RWxlbWVudEdldHRlckNhbGxiYWNrKENwcFZhcmlhbnQqIHJl
c3VsdCkKICAgICByZXN1bHQtPnNldCgqKGdldFJvb3RFbGVtZW50KCktPmdldEFzQ3BwVmFyaWFu
dCgpKSk7CiB9CiAKK3ZvaWQgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFjY2Vzc2libGVFbGVt
ZW50QnlJZEdldHRlckNhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBD
cHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7CisKKyAgICBpZiAo
YXJndW1lbnRzLnNpemUoKSA8IDEgfHwgIWFyZ3VtZW50c1swXS5pc1N0cmluZygpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBzdGQ6OnN0cmluZyBpZCA9IGFyZ3VtZW50c1swXS50b1N0cmluZygp
OworICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIGZvdW5kRWxlbWVudCA9IGdldEFjY2Vzc2li
bGVFbGVtZW50QnlJZChpZCk7CisgICAgaWYgKCFmb3VuZEVsZW1lbnQpCisgICAgICAgIHJldHVy
bjsKKworICAgIHJlc3VsdC0+c2V0KCooZm91bmRFbGVtZW50LT5nZXRBc0NwcFZhcmlhbnQoKSkp
OworfQorCiB2b2lkIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpmYWxsYmFja0NhbGxiYWNrKGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICBwcmludGYo
IkNPTlNPTEUgTUVTU0FHRTogSmF2YVNjcmlwdCBFUlJPUjogdW5rbm93biBtZXRob2QgY2FsbGVk
IG9uICIKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJDaHJvbWl1bS5oIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckNocm9taXVtLmgK
aW5kZXggMTFjMDgyYjNlODA4YzFmNjMwZWI4NTE4NGU2ZThmYjNlODE2ZjQ5OC4uZjBmNWRlZTg1
NjJkOTU0MWYwMGNmMTAyNGQ4NmNmNjYxYzYzN2QxMCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckNocm9t
aXVtLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9BY2Nl
c3NpYmlsaXR5Q29udHJvbGxlckNocm9taXVtLmgKQEAgLTUxLDYgKzUxLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0Rm9jdXNlZEVsZW1lbnQoY29uc3QgV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0Jik7CiAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogZ2V0Rm9jdXNlZEVsZW1lbnQo
KTsKICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBnZXRSb290RWxlbWVudCgpOworICAgIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQqIGdldEFjY2Vzc2libGVFbGVtZW50QnlJZChjb25zdCBzdGQ6
OnN0cmluZyYgaWQpOwogCiAgICAgYm9vbCBzaG91bGRMb2dBY2Nlc3NpYmlsaXR5RXZlbnRzKCk7
CiAKQEAgLTcwLDYgKzcxLDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZm9jdXNlZEVsZW1lbnRH
ZXR0ZXJDYWxsYmFjayhDcHBWYXJpYW50Kik7CiAgICAgdm9pZCByb290RWxlbWVudEdldHRlckNh
bGxiYWNrKENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIGFjY2Vzc2libGVFbGVtZW50QnlJZEdldHRl
ckNhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKworICAgIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQqIGZpbmRBY2Nlc3NpYmxlRWxlbWVudEJ5SWRSZWN1cnNpdmUo
Y29uc3QgV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0JiwgY29uc3QgV2ViS2l0OjpXZWJT
dHJpbmcmIGlkKTsKIAogICAgIFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdCBtX2ZvY3Vz
ZWRFbGVtZW50OwogICAgIFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdCBtX3Jvb3RFbGVt
ZW50OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0FjY2Vzc2liaWxpdHlD
b250cm9sbGVyR3RrLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9BY2Nlc3NpYmlsaXR5
Q29udHJvbGxlckd0ay5jcHAKaW5kZXggY2VlYjhkZmNiZmZhMzlmNTM1YTM5YjBkZGNiZWNiMmNh
MzYyNTliMC4uNDY2MTgyYmIzMDVhNjY3NjA4MDZiZWY4NDhkOTRjNzYyMmY4NzVjZSAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyR3Rr
LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXJHdGsuY3BwCkBAIC03MCw2ICs3MCwxMiBAQCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vz
c2liaWxpdHlDb250cm9sbGVyOjpyb290RWxlbWVudCgpCiAgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQoYWNjZXNzaWJsZSk7CiB9CiAKK0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFjY2Vzc2libGVFbGVtZW50QnlJZChKU1N0cmluZ1JlZiBp
ZCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIDA7Cit9CisKIHZvaWQg
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnNldExvZ0ZvY3VzRXZlbnRzKGJvb2wpCiB7CiB9CmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1h
Yy5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jOGI5MTI1N2Y0Njg3NzQ5Nzk1MGE5MzQxYTI2OTFmZTk4NTc0YTUzCi0tLSAv
ZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlDb21t
b25NYWMuaApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjX2gK
KyNkZWZpbmUgQWNjZXNzaWJpbGl0eUNvbW1vbk1hY19oCisKKyNpbXBvcnQgPEphdmFTY3JpcHRD
b3JlL0pTU3RyaW5nUmVmLmg+CisKKy8vIElmIGFuIHVuc3VwcG9ydGVkIGF0dHJpYnV0ZSBpcyBw
YXNzZWQgaW4sIGl0IHdpbGwgcmFpc2UgYW4gYWNjZXNzaWJpbGl0eSBleGNlcHRpb24uIFRoZXNl
IGFyZSB1c3VhbGx5IGNhdWdodCBieSB0aGUgQWNjZXNzaWJpbGl0eSBSdW50aW1lIHRvIGluZm9y
bQorLy8gdGhlIEFYIGNsaWVudCBhcHAgb2YgdGhlIGVycm9yLiBIb3dldmVyLCBEUlQgaXMgdGhl
IEFYIGNsaWVudCBhcHAsIHNvIGl0IG11c3QgY2F0Y2ggdGhlc2UgZXhjZXB0aW9ucy4KKyNkZWZp
bmUgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TIEB0cnkgeworI2RlZmluZSBFTkRfQVhfT0JKQ19F
WENFUFRJT05TIH0gQGNhdGNoKE5TRXhjZXB0aW9uICplKSB7IGlmICghW1tlIG5hbWVdIGlzRXF1
YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlFeGNlcHRpb25dKSBAdGhyb3c7IH0KKworCitAaW50
ZXJmYWNlIE5TU3RyaW5nIChKU1N0cmluZ1JlZkFkZGl0aW9ucykKKysgKE5TU3RyaW5nICopc3Ry
aW5nV2l0aEpTU3RyaW5nUmVmOihKU1N0cmluZ1JlZilqc1N0cmluZ1JlZjsKKy0gKEpTU3RyaW5n
UmVmKWNyZWF0ZUpTU3RyaW5nUmVmOworQGVuZAorCisjZW5kaWYgLy8gQWNjZXNzaWJpbGl0eUNv
bW1vbk1hY19oCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJp
bGl0eUNvbW1vbk1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5
Q29tbW9uTWFjLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA4MmMwZjBjYzg2YzNlODQ4NWRmZmFmYjAwNDNkMzYy
ZDFmY2U1YmUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNj
ZXNzaWJpbGl0eUNvbW1vbk1hYy5tbQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLmgiCisKKyNpbXBvcnQgPEphdmFTY3Jp
cHRDb3JlL0pTU3RyaW5nUmVmQ0YuaD4KKworQGltcGxlbWVudGF0aW9uIE5TU3RyaW5nIChKU1N0
cmluZ1JlZkFkZGl0aW9ucykKKworKyAoTlNTdHJpbmcgKilzdHJpbmdXaXRoSlNTdHJpbmdSZWY6
KEpTU3RyaW5nUmVmKWpzU3RyaW5nUmVmCit7CisgICAgaWYgKCFqc1N0cmluZ1JlZikKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKworICAgIENGU3RyaW5nUmVmIGNmU3RyaW5nID0gSlNTdHJpbmdDb3B5
Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwganNTdHJpbmdSZWYpOworICAgIHJldHVybiBb
KE5TU3RyaW5nICopY2ZTdHJpbmcgYXV0b3JlbGVhc2VdOworfQorCistIChKU1N0cmluZ1JlZilj
cmVhdGVKU1N0cmluZ1JlZgoreworICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmlu
ZygoQ0ZTdHJpbmdSZWYpc2VsZik7Cit9CisKK0BlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlck1hYy5tbSBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlck1hYy5tbQppbmRleCA2ZmMwZGQw
NTY1Nzk0ZWY4NDY1NjI2ODgyNzA2MmE1ZGZlMGU1YjI2Li42ZTAyMTMyNDEyYjVkOWVlOTlmYTAz
Y2VlNDIzZGRlYjU1YzQ0ZjVkIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1tCkBAIC0yNywxMCArMjcsMTMgQEAKICNp
bXBvcnQgIkR1bXBSZW5kZXJUcmVlLmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5oIgogCisjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLmgiCiAjaW1wb3J0ICJBY2Nl
c3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudC5oIgogI2ltcG9ydCA8QXBwS2l0L05TQ29sb3IuaD4KICNpbXBvcnQgPEZvdW5kYXRp
b24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWYuaD4K
KyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmQ0YuaD4KICNpbXBvcnQgPFdlYktp
dC9XZWJGcmFtZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkZyYW1lUHJpdmF0ZS5oPgogI2ltcG9y
dCA8V2ViS2l0L1dlYkhUTUxWaWV3Lmg+CkBAIC02OCw2ICs3MSwzNiBAQCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpyb290RWxlbWVudCgpCiAgICAgcmV0
dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoYWNjZXNzaWJpbGl0eU9iamVjdCk7CiB9CiAKK3N0
YXRpYyBpZCBmaW5kQWNjZXNzaWJsZU9iamVjdEJ5SWQoaWQgb2JqLCBOU1N0cmluZyAqaWRBdHRy
aWJ1dGUpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgb2JqSWRBdHRy
aWJ1dGUgPSBbb2JqIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYRFJURWxlbWVudElk
QXR0cmlidXRlIl07CisgICAgaWYgKFtvYmpJZEF0dHJpYnV0ZSBpc0tpbmRPZkNsYXNzOltOU1N0
cmluZyBjbGFzc11dICYmIFtvYmpJZEF0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6aWRBdHRyaWJ1
dGVdKQorICAgICAgICByZXR1cm4gb2JqOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKwor
ICAgIE5TQXJyYXkgKmNoaWxkcmVuID0gW29iaiBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGVdOworICAgIE5TVUludGVnZXIgY2hpbGRy
ZW5Db3VudCA9IFtjaGlsZHJlbiBjb3VudF07CisgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBp
IDwgY2hpbGRyZW5Db3VudDsgKytpKSB7CisgICAgICAgIGlkIHJlc3VsdCA9IGZpbmRBY2Nlc3Np
YmxlT2JqZWN0QnlJZChbY2hpbGRyZW4gb2JqZWN0QXRJbmRleDppXSwgaWRBdHRyaWJ1dGUpOwor
ICAgICAgICBpZiAocmVzdWx0KQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisK
KyAgICByZXR1cm4gMDsKK30KKworQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nlc3NpYmlsaXR5
Q29udHJvbGxlcjo6YWNjZXNzaWJsZUVsZW1lbnRCeUlkKEpTU3RyaW5nUmVmIGlkQXR0cmlidXRl
UmVmKQoreworICAgIE5TU3RyaW5nICppZEF0dHJpYnV0ZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRo
SlNTdHJpbmdSZWY6aWRBdHRyaWJ1dGVSZWZdOworICAgIGlkIHJvb3QgPSBbW21haW5GcmFtZSBh
Y2Nlc3NpYmlsaXR5Um9vdF0gYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJp
bGl0eVBhcmVudEF0dHJpYnV0ZV07CisgICAgaWQgcmVzdWx0ID0gZmluZEFjY2Vzc2libGVPYmpl
Y3RCeUlkKHJvb3QsIGlkQXR0cmlidXRlKTsKKyAgICBpZiAocmVzdWx0KQorICAgICAgICByZXR1
cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudChyZXN1bHQpOworCisgICAgcmV0dXJuIDA7Cit9CisK
IHZvaWQgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnNldExvZ0ZvY3VzRXZlbnRzKGJvb2wpCiB7
CiB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudE1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50TWFjLm1tCmluZGV4IDVhYmQ1MjcwMDE3ZWEyM2UyYjYwNTJjZTBiY2E1YTI2MzcyYjg4
NTEuLmNkMWM5MmQxMjRmNzMxNjRiMDNkODBmMjM2ZThlMDE5NmM3OGIyMmEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1t
CkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiRHVtcFJl
bmRlclRyZWUuaCIKKyNpbXBvcnQgIkFjY2Vzc2liaWxpdHlDb21tb25NYWMuaCIKICNpbXBvcnQg
IkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmls
aXR5VUlFbGVtZW50LmgiCiAKQEAgLTUxLDEyICs1Miw2IEBACiAjZGVmaW5lIE5TQWNjZXNzaWJp
bGl0eURyb3BFZmZlY3RzQXR0cmlidXRlIEAiQVhEcm9wRWZmZWN0cyIKICNlbmRpZgogCi0vLyBJ
ZiBhbiB1bnN1cHBvcnRlZCBhdHRyaWJ1dGUgaXMgcGFzc2VkIGluLCBpdCB3aWxsIHJhaXNlIGFu
IGFjY2Vzc2liaWxpdHkgZXhjZXB0aW9uLiBUaGVzZSBhcmUgdXN1YWxseSBjYXVnaHQgYnkgdGhl
IEFjY2Vzc2liaWxpdHkgUnVudGltZSB0byBpbmZvcm0KLS8vIHRoZSBBWCBjbGllbnQgYXBwIG9m
IHRoZSBlcnJvci4gSG93ZXZlciwgRFJUIGlzIHRoZSBBWCBjbGllbnQgYXBwLCBzbyBpdCBtdXN0
IGNhdGNoIHRoZXNlIGV4Y2VwdGlvbnMuCi0jZGVmaW5lIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UyBAdHJ5IHsKLSNkZWZpbmUgRU5EX0FYX09CSkNfRVhDRVBUSU9OUyB9IEBjYXRjaChOU0V4Y2Vw
dGlvbiAqZSkgeyBpZiAoIVtbZSBuYW1lXSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5
RXhjZXB0aW9uXSkgQHRocm93OyB9Ci0KLQogdHlwZWRlZiB2b2lkICgqQVhQb3N0ZWROb3RpZmlj
YXRpb25DYWxsYmFjaykoaWQgZWxlbWVudCwgTlNTdHJpbmcqIG5vdGlmaWNhdGlvbiwgdm9pZCog
Y29udGV4dCk7CiAKIEBpbnRlcmZhY2UgTlNPYmplY3QgKFdlYktpdEFjY2Vzc2liaWxpdHlBZGRp
dGlvbnMpCkBAIC02NSwyOSArNjAsNiBAQCB0eXBlZGVmIHZvaWQgKCpBWFBvc3RlZE5vdGlmaWNh
dGlvbkNhbGxiYWNrKShpZCBlbGVtZW50LCBOU1N0cmluZyogbm90aWZpY2F0aW9uLAogLSAoTlNV
SW50ZWdlcilhY2Nlc3NpYmlsaXR5QXJyYXlBdHRyaWJ1dGVDb3VudDooTlNTdHJpbmcgKilhdHRy
aWJ1dGU7CiBAZW5kCiAKLUBpbnRlcmZhY2UgTlNTdHJpbmcgKEpTU3RyaW5nUmVmQWRkaXRpb25z
KQotKyAoTlNTdHJpbmcgKilzdHJpbmdXaXRoSlNTdHJpbmdSZWY6KEpTU3RyaW5nUmVmKWpzU3Ry
aW5nUmVmOwotLSAoSlNTdHJpbmdSZWYpY3JlYXRlSlNTdHJpbmdSZWY7Ci1AZW5kCi0KLUBpbXBs
ZW1lbnRhdGlvbiBOU1N0cmluZyAoSlNTdHJpbmdSZWZBZGRpdGlvbnMpCi0KLSsgKE5TU3RyaW5n
ICopc3RyaW5nV2l0aEpTU3RyaW5nUmVmOihKU1N0cmluZ1JlZilqc1N0cmluZ1JlZgotewotICAg
IGlmICghanNTdHJpbmdSZWYpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIAotICAgIENGU3Ry
aW5nUmVmIGNmU3RyaW5nID0gSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVs
dCwganNTdHJpbmdSZWYpOwotICAgIHJldHVybiBbKE5TU3RyaW5nICopY2ZTdHJpbmcgYXV0b3Jl
bGVhc2VdOwotfQotCi0tIChKU1N0cmluZ1JlZiljcmVhdGVKU1N0cmluZ1JlZgotewotICAgIHJl
dHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpc2VsZik7Ci19Ci0K
LUBlbmQKLQogQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudChQ
bGF0Zm9ybVVJRWxlbWVudCBlbGVtZW50KQogICAgIDogbV9lbGVtZW50KGVsZW1lbnQpCiAgICAg
LCBtX25vdGlmaWNhdGlvbkhhbmRsZXIoMCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcldpbi5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS93aW4vQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJXaW4uY3BwCmluZGV4IDdmOWFhNmNjMmVl
OTI5YjJiZjhlYTQxNmY1ZDY1YmIwNTZlM2VhZDEuLjllNzZjOGRkYTMzMjdhMDdlOGU4N2UzMzZj
OGFkNjlhOTQ0NDY4ODkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9BY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcldpbi5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0FjY2Vzc2liaWxpdHlDb250cm9sbGVyV2luLmNwcApAQCAtNjcsNiArNjcsMTIgQEAgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6ZWxlbWVudEF0UG9pbnQo
aW50IHgsIGludCB5KQogICAgIHJldHVybiAwOwogfQogCitBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjphY2Nlc3NpYmxlRWxlbWVudEJ5SWQoSlNTdHJpbmdS
ZWYgaWQpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiAwOworfQorCiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpmb2N1c2VkRWxl
bWVudCgpCiB7CiAgICAgQ09NUHRyPElBY2Nlc3NpYmxlPiByb290QWNjZXNzaWJsZSA9IHJvb3RF
bGVtZW50KCkucGxhdGZvcm1VSUVsZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5jcHAKaW5kZXggMmNkMzA0OWZlMTU3OTU3NzZhYmQxMzIyMGIyZTJhYTBlZGNmZjc1ZC4uYzZm
N2Q3NWNjM2I3OWQwNmMwYzJjYzYyZTg5ZmI5YTQwODlhMTJkNiAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5j
cHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5jcHAKQEAgLTEwNiw2ICsxMDYsNyBAQCBQYXNzUmVmUHRyPEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjplbGVtZW50QXRQb2ludChp
bnQgeAogI2lmICFQTEFURk9STShNQUMpCiBib29sIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjph
ZGROb3RpZmljYXRpb25MaXN0ZW5lcihKU1ZhbHVlUmVmKSB7IHJldHVybiBmYWxzZTsgfQogYm9v
bCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIoKSB7
IHJldHVybiBmYWxzZTsgfQorUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcjo6YWNjZXNzaWJsZUVsZW1lbnRCeUlkKEpTU3RyaW5nUmVmIGF0
dHJpYnV0ZSkgeyByZXR1cm4gMDsgfQogI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oR1RLKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9B
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oCmluZGV4IDNjODdjYWM1ZDVjNmE5YzQwNjIwN2IzN2I2
YWUzNzNhZTRkM2I3NzkuLmYwMmZlYWMwNTU5OThjNzk2OWE0YWRlNGViZjUwMTA0YTc3NDA5YWMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgcHVibGlj
OgogICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gcm9vdEVsZW1lbnQoKTsK
ICAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGZvY3VzZWRFbGVtZW50KCk7
CiAgICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBlbGVtZW50QXRQb2ludChp
bnQgeCwgaW50IHkpOworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gYWNj
ZXNzaWJsZUVsZW1lbnRCeUlkKEpTU3RyaW5nUmVmIGlkQXR0cmlidXRlKTsKIAogICAgIGJvb2wg
YWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoSlNWYWx1ZVJlZiBmdW5jdGlvbkNhbGxiYWNrKTsKICAg
ICBib29sIHJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCk7CmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaWRsCmluZGV4IDJkZjhjMjc5ZjliZDg4OTYxMjY3
YTZiMGNjNDBiMGFiY2YxMTQ4ZDkuLmJkMDVmMTMzNDMwODVmODk4NDRhOWVjMTkyNTFmNDFlYzEw
MTlkNTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QmluZGluZ3MvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
aWRsCkBAIC0yOSw2ICsyOSw3IEBAIG1vZHVsZSBXVFIgewogICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCByb290RWxlbWVudDsKICAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgZm9jdXNlZEVsZW1lbnQ7CiAgICAg
ICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgZWxlbWVudEF0UG9pbnQoaW4gaW50IHgsIGluIGlu
dCB5KTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBhY2Nlc3NpYmxlRWxlbWVudEJ5
SWQoaW4gRE9NU3RyaW5nIGlkKTsKICAgICAgICAgCiAgICAgICAgIGJvb2xlYW4gYWRkTm90aWZp
Y2F0aW9uTGlzdGVuZXIoaW4gb2JqZWN0IGZ1bmN0aW9uQ2FsbGJhY2spOwogICAgICAgICBib29s
ZWFuIHJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLmgg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5
Q29tbW9uTWFjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzhiOTEyNTdmNDY4Nzc0OTc5NTBhOTM0MWEyNjkxZmU5
ODU3NGE1MwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMuaApAQCAtMCwwICsxLDQ3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjX2gKKyNkZWZpbmUgQWNjZXNzaWJpbGl0eUNvbW1v
bk1hY19oCisKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmLmg+CisKKy8vIElm
IGFuIHVuc3VwcG9ydGVkIGF0dHJpYnV0ZSBpcyBwYXNzZWQgaW4sIGl0IHdpbGwgcmFpc2UgYW4g
YWNjZXNzaWJpbGl0eSBleGNlcHRpb24uIFRoZXNlIGFyZSB1c3VhbGx5IGNhdWdodCBieSB0aGUg
QWNjZXNzaWJpbGl0eSBSdW50aW1lIHRvIGluZm9ybQorLy8gdGhlIEFYIGNsaWVudCBhcHAgb2Yg
dGhlIGVycm9yLiBIb3dldmVyLCBEUlQgaXMgdGhlIEFYIGNsaWVudCBhcHAsIHNvIGl0IG11c3Qg
Y2F0Y2ggdGhlc2UgZXhjZXB0aW9ucy4KKyNkZWZpbmUgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05T
IEB0cnkgeworI2RlZmluZSBFTkRfQVhfT0JKQ19FWENFUFRJT05TIH0gQGNhdGNoKE5TRXhjZXB0
aW9uICplKSB7IGlmICghW1tlIG5hbWVdIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlF
eGNlcHRpb25dKSBAdGhyb3c7IH0KKworCitAaW50ZXJmYWNlIE5TU3RyaW5nIChKU1N0cmluZ1Jl
ZkFkZGl0aW9ucykKKysgKE5TU3RyaW5nICopc3RyaW5nV2l0aEpTU3RyaW5nUmVmOihKU1N0cmlu
Z1JlZilqc1N0cmluZ1JlZjsKKy0gKEpTU3RyaW5nUmVmKWNyZWF0ZUpTU3RyaW5nUmVmOworQGVu
ZAorCisjZW5kaWYgLy8gQWNjZXNzaWJpbGl0eUNvbW1vbk1hY19oCmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9u
TWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNz
aWJpbGl0eUNvbW1vbk1hYy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wODJjMGYwY2M4NmMzZTg0ODVkZmZhZmIw
MDQzZDM2MmQxZmNlNWJlCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbQpAQCAtMCwwICsx
LDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5Q29tbW9uTWFj
LmgiCisKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmQ0YuaD4KKworQGltcGxl
bWVudGF0aW9uIE5TU3RyaW5nIChKU1N0cmluZ1JlZkFkZGl0aW9ucykKKworKyAoTlNTdHJpbmcg
KilzdHJpbmdXaXRoSlNTdHJpbmdSZWY6KEpTU3RyaW5nUmVmKWpzU3RyaW5nUmVmCit7CisgICAg
aWYgKCFqc1N0cmluZ1JlZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIENGU3RyaW5nUmVm
IGNmU3RyaW5nID0gSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwganNT
dHJpbmdSZWYpOworICAgIHJldHVybiBbKE5TU3RyaW5nICopY2ZTdHJpbmcgYXV0b3JlbGVhc2Vd
OworfQorCistIChKU1N0cmluZ1JlZiljcmVhdGVKU1N0cmluZ1JlZgoreworICAgIHJldHVybiBK
U1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpc2VsZik7Cit9CisKK0BlbmQK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0Fj
Y2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJNYWMubW0KaW5kZXggODYzZTc0
MDdlYjIwMTk1Y2I3NDllZWZkNzViOTQ0NzNhOWRhMWQ3ZC4uOWU1NDkwOGI5NmNlYzU0ZDA0MDQ3
YWNiM2U3YjBkMjZkYzA1NzIxNyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJNYWMubW0KKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXJNYWMubW0KQEAgLTI5LDggKzI5LDE4IEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgi
CisjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRs
ZXIuaCIKKyNpbXBvcnQgIkluamVjdGVkQnVuZGxlLmgiCisjaW1wb3J0ICJJbmplY3RlZEJ1bmRs
ZVBhZ2UuaCIKKworI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5QdHIuaD4KKyNpbXBv
cnQgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmLmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29y
ZS9KU1N0cmluZ1JlZkNGLmg+CisjaW1wb3J0IDxXZWJLaXQyL1dLQnVuZGxlLmg+CisjaW1wb3J0
IDxXZWJLaXQyL1dLQnVuZGxlUGFnZS5oPgorI2ltcG9ydCA8V2ViS2l0Mi9XS0J1bmRsZVBhZ2VQ
cml2YXRlLmg+CiAKIG5hbWVzcGFjZSBXVFIgewogCkBAIC01OSw0ICs2OSwzNSBAQCBib29sIEFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyOjpyZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcigpCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKK3N0YXRpYyBpZCBmaW5kQWNjZXNzaWJsZU9iamVjdEJ5SWQoaWQg
b2JqLCBOU1N0cmluZyAqaWRBdHRyaWJ1dGUpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJ
T05TCisgICAgaWQgb2JqSWRBdHRyaWJ1dGUgPSBbb2JqIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpAIkFYRFJURWxlbWVudElkQXR0cmlidXRlIl07CisgICAgaWYgKFtvYmpJZEF0dHJpYnV0
ZSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dICYmIFtvYmpJZEF0dHJpYnV0ZSBpc0Vx
dWFsVG9TdHJpbmc6aWRBdHRyaWJ1dGVdKQorICAgICAgICByZXR1cm4gb2JqOworICAgIEVORF9B
WF9PQkpDX0VYQ0VQVElPTlMKKworICAgIE5TQXJyYXkgKmNoaWxkcmVuID0gW29iaiBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGVdOwor
ICAgIE5TVUludGVnZXIgY2hpbGRyZW5Db3VudCA9IFtjaGlsZHJlbiBjb3VudF07CisgICAgZm9y
IChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgY2hpbGRyZW5Db3VudDsgKytpKSB7CisgICAgICAgIGlk
IHJlc3VsdCA9IGZpbmRBY2Nlc3NpYmxlT2JqZWN0QnlJZChbY2hpbGRyZW4gb2JqZWN0QXRJbmRl
eDppXSwgaWRBdHRyaWJ1dGUpOworICAgICAgICBpZiAocmVzdWx0KQorICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6YWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKEpTU3RyaW5nUmVmIGlkQXR0cmlidXRlKQoreworICAgIFdLQnVuZGxlUGFnZVJl
ZiBwYWdlID0gSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpOworICAgIGlk
IHJvb3QgPSBzdGF0aWNfY2FzdDxQbGF0Zm9ybVVJRWxlbWVudD4oV0tBY2Nlc3NpYmlsaXR5Um9v
dE9iamVjdChwYWdlKSk7CisKKyAgICBpZCByZXN1bHQgPSBmaW5kQWNjZXNzaWJsZU9iamVjdEJ5
SWQocm9vdCwgW05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjppZEF0dHJpYnV0ZV0pOwor
ICAgIGlmIChyZXN1bHQpCisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpj
cmVhdGUocmVzdWx0KTsKKworICAgIHJldHVybiAwOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVFIK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCmluZGV4IDgxYTAzMTBi
MTI3NDZkNDM5ZjRjNTdhZDEwNzA4MGM0NjU3OTIzZDkuLjI0ZWVmMDgzN2ZkMjMzNWVlNDU4NWFk
OGFiY2M2MWM2M2VkNjI1MDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dE1hYy5tbQpAQCAtMjQsNiArMjQsNyBAQAogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgorI2lt
cG9ydCAiQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eU5v
dGlmaWNhdGlvbkhhbmRsZXIuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCIK
ICNpbXBvcnQgIkluamVjdGVkQnVuZGxlLmgiCkBAIC01MSwxMiArNTIsNiBAQAogI2RlZmluZSBO
U0FjY2Vzc2liaWxpdHlEcm9wRWZmZWN0c0F0dHJpYnV0ZSBAIkFYRHJvcEVmZmVjdHMiCiAjZW5k
aWYKIAotLy8gSWYgYW4gdW5zdXBwb3J0ZWQgYXR0cmlidXRlIGlzIHBhc3NlZCBpbiwgaXQgd2ls
bCByYWlzZSBhbiBhY2Nlc3NpYmlsaXR5IGV4Y2VwdGlvbi4gVGhlc2UgYXJlIHVzdWFsbHkgY2F1
Z2h0IGJ5IHRoZSBBY2Nlc3NpYmlsaXR5IFJ1bnRpbWUgdG8gaW5mb3JtCi0vLyB0aGUgQVggY2xp
ZW50IGFwcCBvZiB0aGUgZXJyb3IuIEhvd2V2ZXIsIERSVCBpcyB0aGUgQVggY2xpZW50IGFwcCwg
c28gaXQgbXVzdCBjYXRjaCB0aGVzZSBleGNlcHRpb25zLgotI2RlZmluZSBCRUdJTl9BWF9PQkpD
X0VYQ0VQVElPTlMgQHRyeSB7Ci0jZGVmaW5lIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMgfSBAY2F0
Y2goTlNFeGNlcHRpb24gKmUpIHsgaWYgKCFbW2UgbmFtZV0gaXNFcXVhbFRvU3RyaW5nOk5TQWNj
ZXNzaWJpbGl0eUV4Y2VwdGlvbl0pIEB0aHJvdzsgfQotCi0KIHR5cGVkZWYgdm9pZCAoKkFYUG9z
dGVkTm90aWZpY2F0aW9uQ2FsbGJhY2spKGlkIGVsZW1lbnQsIE5TU3RyaW5nKiBub3RpZmljYXRp
b24sIHZvaWQqIGNvbnRleHQpOwogCiBAaW50ZXJmYWNlIE5TT2JqZWN0IChXZWJLaXRBY2Nlc3Np
YmlsaXR5QWRkaXRpb25zKQpAQCAtNjUsMjkgKzYwLDYgQEAgdHlwZWRlZiB2b2lkICgqQVhQb3N0
ZWROb3RpZmljYXRpb25DYWxsYmFjaykoaWQgZWxlbWVudCwgTlNTdHJpbmcqIG5vdGlmaWNhdGlv
biwKIC0gKE5TVUludGVnZXIpYWNjZXNzaWJpbGl0eUFycmF5QXR0cmlidXRlQ291bnQ6KE5TU3Ry
aW5nICopYXR0cmlidXRlOwogQGVuZAogCi1AaW50ZXJmYWNlIE5TU3RyaW5nIChKU1N0cmluZ1Jl
ZkFkZGl0aW9ucykKLSsgKE5TU3RyaW5nICopc3RyaW5nV2l0aEpTU3RyaW5nUmVmOihKU1N0cmlu
Z1JlZilqc1N0cmluZ1JlZjsKLS0gKEpTU3RyaW5nUmVmKWNyZWF0ZUpTU3RyaW5nUmVmOwotQGVu
ZAotCi1AaW1wbGVtZW50YXRpb24gTlNTdHJpbmcgKEpTU3RyaW5nUmVmQWRkaXRpb25zKQotCi0r
IChOU1N0cmluZyAqKXN0cmluZ1dpdGhKU1N0cmluZ1JlZjooSlNTdHJpbmdSZWYpanNTdHJpbmdS
ZWYKLXsKLSAgICBpZiAoIWpzU3RyaW5nUmVmKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAK
LSAgICBDRlN0cmluZ1JlZiBjZlN0cmluZyA9IEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9j
YXRvckRlZmF1bHQsIGpzU3RyaW5nUmVmKTsKLSAgICByZXR1cm4gWyhOU1N0cmluZyAqKWNmU3Ry
aW5nIGF1dG9yZWxlYXNlXTsKLX0KLQotLSAoSlNTdHJpbmdSZWYpY3JlYXRlSlNTdHJpbmdSZWYK
LXsKLSAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKXNl
bGYpOwotfQotCi1AZW5kCi0KIG5hbWVzcGFjZSBXVFIgewogCiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KFBsYXRmb3JtVUlFbGVtZW50IGVsZW1lbnQpCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1
bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDViY2QyN2Y3NTczM2ZmZTRlZjM2
OTZiN2EwZWZlNDA2MDQwNmNhYzEuLjAwYTY3ZmI3MjkyZjkxMGFkZWVlNWQzNmVlZmNjNzM1Nzhl
YTgyNjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5l
ci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
V2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yOSw2ICsyOSw3
IEBACiAJCTI5MjEwRUI0MTQ0Q0FDRDUwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTIx
MEVCMTE0NENBQ0Q0MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwICovOyB9
OwogCQkyOTIxMEVCNTE0NENBQ0Q1MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJN
YWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTIx
MEVCMzE0NENBQ0Q0MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJNYWMubW0gKi87
IH07CiAJCTI5MjEwRURBMTQ0Q0MzRUEwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjky
MTBFQUIxNDRDQUNCMjAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0gKi87
IH07CisJCTI5MjEwRURBMTQ0Q0MzRUEwMDgzNUJCNiAvKiBBY2Nlc3NpYmlsaXR5Q29tbW9uTWFj
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjkyMTBF
QUIxNDRDQUNCMjAwODM1QkI2IC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0gKi87IH07
CiAJCTI5MjEwRURCMTQ0Q0Q0NzkwMDgzNUJCNSAvKiBKU0FjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU4Mzkx
M0QwMTQzMzVFOTUwMDgzMDdFNSAvKiBKU0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcCAqLzsg
fTsKIAkJMjkyMTBFRTExNDRDREIyNjAwODM1QkI1IC8qIEpTQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTIx
MEVEQjE0NjcyN0U3MTE4MzVCQjUgLyogSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCAqLzsg
fTsKIAkJMjlBOEZDQ0IxNDVFRjAyRTAwOTA0NUE2IC8qIEpTQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjky
MTBFRTExNDRDREU2Nzg5ODE1RUU1IC8qIEpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwICov
OyB9OwpAQCAtMTA5LDYgKzExMCw3IEBACiAJCTI5MjEwRUE5MTQ0Q0FDQjIwMDgzNUJCNSAvKiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyOTIxMEVBQTE0NENBQ0IyMDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5MjEwRUFCMTQ0Q0FDQjIwMDgz
NUJCNSAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBuYW1lID0gQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbTsgcGF0aCA9
IG1hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkyOTIxMEVBQjE0NENBQ0IyMDA4MzVCQjYgLyogQWNjZXNzaWJpbGl0eUNvbW1vbk1h
Yy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEFjY2Vzc2liaWxp
dHlDb21tb25NYWMubW07IHBhdGggPSBtYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjkyMTBFQjExNDRDQUNENDAwODM1QkI1IC8qIEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMjkyMTBFQjIxNDRDQUNENDAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5MjEwRUIzMTQ0Q0FDRDQw
MDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tOyBw
YXRoID0gbWFjL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMzA3LDYgKzMwOSw3IEBACiAJCQkJMjkyMTBFQTkxNDRDQUNCMjAwODM1
QkI1IC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwICovLAogCQkJCTI5MjEwRUFBMTQ0Q0FD
QjIwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmggKi8sCiAJCQkJMjkyMTBFQUIx
NDRDQUNCMjAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0gKi8sCisJCQkJ
MjkyMTBFQUIxNDRDQUNCMjAwODM1QkI2IC8qIEFjY2Vzc2liaWxpdHlDb21tb25NYWMubW0gKi8s
CiAJCQkJMjkyMTBFQjExNDRDQUNENDAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
LmNwcCAqLywKIAkJCQkyOTIxMEVCMjE0NENBQ0Q0MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIuaCAqLywKIAkJCQkyOTIxMEVCMzE0NENBQ0Q0MDA4MzVCQjUgLyogQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJNYWMubW0gKi8sCkBAIC02MDYsNiArNjA5LDcgQEAKIAkJCQkyOTIxMEVC
NDE0NENBQ0Q1MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMjkyMTBFQjUxNDRDQUNENTAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMjkyMTBFREExNDRDQzNFQTAwODM1QkI1
IC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQkyOTIx
MEVEQTE0NENDM0VBMDA4MzVCQjYgLyogQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTI5MjEwRURCMTQ0Q0Q0NzkwMDgzNUJCNSAvKiBKU0FjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI5MjEwRUUxMTQ0Q0RCMjYwMDgzNUJC
NSAvKiBKU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjlB
OEZDQ0IxNDVFRjAyRTAwOTA0NUE2IC8qIEpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggMGEyYzEyMjI2NGU3N2Y1NDg3YWUzMDdmYjNkZTRhN2FiMGVj
YjNjMS4uNTRjZmQxZTNiMzI4OGFjMzEyYWUxYzVlYWM1MTFjNjA3ZGE3ODhjZCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE3IEBACisyMDEyLTA5LTIxICBEb21pbmljIE1henpvbmkgIDxkbWF6em9uaUBnb29n
bGUuY29tPgorCisgICAgICAgIEFYOiBMYXlvdXQgdGVzdHMgd291bGQgYmUgZWFzaWVyIHRvIHdy
aXRlIGlmIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyIGNvdWxkIGZpbmQgYW4gZWxlbWVudCBieSBp
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTczMDEK
KworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBGbGVpemFjaC4KKworICAgICAgICBNb2RpZmll
cyBhbiBleGlzdGluZyB0ZXN0IHRvIHVzZSB0aGUgbmV3IGFjY2Vzc2libGVFbGVtZW50QnlJZAor
ICAgICAgICBtZXRob2Qgb2YgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIsIGVuYWJsaW5nIHRoZSB0
ZXN0IHRvIHBhc3Mgb24KKyAgICAgICAgYm90aCBNYWMgYW5kIENocm9taXVtLgorCisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9hcmlhLWhpZGRlbi13aXRoLWVsZW1lbnRzLmh0bWw6CisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9uczoKKwogMjAxMi0wOS0yMSAgQWRh
bSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW1vdmUgYm9ndXMgYXNz
ZXJ0aW9ucyBmcm9tIENoaWxkTGlzdE11dGF0aW9uU2NvcGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1oaWRkZW4td2l0aC1lbGVtZW50cy5odG1sIGIvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWhpZGRlbi13aXRoLWVsZW1lbnRzLmh0bWwKaW5kZXgg
M2EzZjhhN2UzMjJjZTIzZjlhZjZlYTgwYTQyY2JiNTNkYjRlMzQ2OS4uZjlkMWViZDM3MGQ2Y2Rl
YTg5YWY2ODA5ODZlZDRiMmQzOTEyMDUxYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9hcmlhLWhpZGRlbi13aXRoLWVsZW1lbnRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9hcmlhLWhpZGRlbi13aXRoLWVsZW1lbnRzLmh0bWwKQEAgLTUsNiArNSw4
IEBACiA8L2hlYWQ+CiA8Ym9keSBpZD0iYm9keSI+CiAKKzxkaXYgaWQ9ImNvbnRhaW5lciIgYXJp
YS1sYWJlbD0iY29udGFpbmVyIj4KKwogPHRhYmxlIGJvcmRlcj0xIHN1bW1hcnk9InRlc3QiIGFy
aWEtaGlkZGVuPSJ0cnVlIj4KIDx0cj48dGQ+Y2VsbDwvdGQ+PHRkPmNlbGw8L3RkPjx0ZD5jZWxs
PC90ZD48L3RyPgogPHRyPjx0ZD5jZWxsPC90ZD48dGQ+Y2VsbDwvdGQ+PHRkPmNlbGw8L3RkPjwv
dHI+CkBAIC0xOSwxMyArMjEsMTcgQEAKIDxsaT50ZXN0CiA8L3VsPgogCis8ZGl2IGFyaWEtbGFi
ZWw9IndyYXBwZXIiPgogPHNlbGVjdCBzaXplPTEwIGFyaWEtaGlkZGVuPSJ0cnVlIj4KIDxvcHRp
b24+b3B0aW9uCiA8b3B0aW9uPm9wdGlvbgogPC9zZWxlY3Q+Cis8L2Rpdj4KIAogPGgxPmhlYWRp
bmc8L2gxPgogCis8L2Rpdj4KKwogPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CiA8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KIApAQCAtMzQsMTQgKzQwLDE0IEBACiAgICAgZGVzY3JpcHRpb24oIlRo
aXMgdGVzdHMgdGhhdCBhcmlhLWhpZGRlbiB3b3JrcyBhcyBleHBlY3RlZCBvbiBlbGVtZW50cyB0
aGF0IGFyZSBzdWJjbGFzc2VzIG9mIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QiKTsKIAogICAg
IGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKLSAgICAgICB2YXIgcm9vdCA9
IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLnJvb3RFbGVtZW50OworICAgICAgIHZhciBjb250YWlu
ZXIgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNvbnRh
aW5lciIpOwogCiAgICAgICAgLy8gZmlyc3QgY2hpbGQgaXMgYW4gQVhHcm91cCB0aGF0IGhhcyBu
byBjaGlsZHJlbgotICAgICAgIHZhciBjaGlsZCA9IHJvb3QuY2hpbGRBdEluZGV4KDApLmNoaWxk
QXRJbmRleCgwKTsKKyAgICAgICB2YXIgY2hpbGQgPSBjb250YWluZXIuY2hpbGRBdEluZGV4KDAp
OwogICAgICAgIHNob3VsZEJlKCJjaGlsZC5jaGlsZHJlbkNvdW50IiwgIjAiKTsKIAogICAgICAg
IC8vIFRoZSBzZWNvbmQgY2hpbGQgd2UgYXNrIGZvciBmcm9tIHRoZSB3ZWIgYXJlYSBzaG91bGQg
YmUgdGhlIGhlYWRpbmcsIGFuZCB3ZSBzaG91bGQgaGF2ZSBza2lwcGVkIG92ZXIgZXZlcnl0aGlu
ZyBlbHNlLgotICAgICAgIGNoaWxkID0gcm9vdC5jaGlsZEF0SW5kZXgoMCkuY2hpbGRBdEluZGV4
KDEpOworICAgICAgIGNoaWxkID0gY29udGFpbmVyLmNoaWxkQXRJbmRleCgxKTsKICAgICAgICBz
aG91bGRCZSgiY2hpbGQucm9sZSIsICInQVhSb2xlOiBBWEhlYWRpbmcnIik7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25z
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwppbmRleCA3
ODllYjVmZDMxMWViNGZmZGU1YTMxNTJlNjA5OTRiY2FjOGM0M2FlLi5mYzQ2NjEyNGExMWZmZDg4
OTJkMDcxYjU4NmRkYWFiMWI5YzVjNzVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTEzNDQsNyArMTM0NCw2IEBAIGNyYnVnLmNvbS8x
MDMyMiBhY2Nlc3NpYmlsaXR5L2FyaWEtY29tYm9ib3guaHRtbCBbIFNraXAgXQogY3JidWcuY29t
LzEwMzIyIGFjY2Vzc2liaWxpdHkvYXJpYS1jb250cm9scy13aXRoLXRhYnMuaHRtbCBbIFNraXAg
XQogY3JidWcuY29tLzEwMzIyIGFjY2Vzc2liaWxpdHkvYXJpYS1mYWxsYmFjay1yb2xlcy5odG1s
IFsgU2tpcCBdCiBjcmJ1Zy5jb20vMTAzMjIgYWNjZXNzaWJpbGl0eS9hcmlhLWhpZGRlbi11cGRh
dGUuaHRtbCBbIFNraXAgXQotY3JidWcuY29tLzEwMzIyIGFjY2Vzc2liaWxpdHkvYXJpYS1oaWRk
ZW4td2l0aC1lbGVtZW50cy5odG1sIFsgU2tpcCBdCiBjcmJ1Zy5jb20vMTAzMjIgYWNjZXNzaWJp
bGl0eS9hcmlhLWludmFsaWQuaHRtbCBbIFNraXAgXQogY3JidWcuY29tLzEwMzIyIGFjY2Vzc2li
aWxpdHkvYXJpYS1sYWJlbGxlZGJ5LW92ZXJyaWRlcy1sYWJlbC5odG1sIFsgU2tpcCBdCiBjcmJ1
Zy5jb20vMTAzMjIgYWNjZXNzaWJpbGl0eS9hcmlhLWxpbmstc3VwcG9ydHMtcHJlc3MuaHRtbCBb
IFNraXAgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165263</attachid>
            <date>2012-09-22 08:41:28 -0700</date>
            <delta_ts>2012-09-22 08:55:42 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-97301-20120922084201.patch</filename>
            <type>text/plain</type>
            <size>47597</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MzA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWRjNTQ4YjUwMGFiYjYx
NjQzOWEyNzdkNjAwNmYwYmM1NTcxMTA0MS4uYzZkYjcyMmRjMjc0OTgzZGM0NDIwYWUwMThjOGE0
YmMxYzM2ZmU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTA5LTIxICBEb21p
bmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFYOiBMYXlvdXQg
dGVzdHMgd291bGQgYmUgZWFzaWVyIHRvIHdyaXRlIGlmIEFjY2Vzc2liaWxpdHlDb250cm9sbGVy
IGNvdWxkIGZpbmQgYW4gZWxlbWVudCBieSBpZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTczMDEKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBG
bGVpemFjaC4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ug
c3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNj
cmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBtZXRob2QgdG8gZ2V0IHRo
ZSBET00gImlkIiBhdHRyaWJ1dGUgZnJvbSBhbiBhY2Nlc3NpYmxlIG9iamVjdCwgb25seSBmb3Ig
bGF5b3V0IHRlc3RzLgorCisgICAgICAgIE1ha2VzIGV4aXN0aW5nIHRlc3QgbW9yZSBjcm9zcy1w
bGF0Zm9ybToKKyAgICAgICAgVGVzdHM6IGFjY2Vzc2liaWxpdHkvYXJpYS1oaWRkZW4td2l0aC1l
bGVtZW50cy5odG1sCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlci5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOl0pOgorCiAyMDEyLTA5LTIyICBUaGll
cnJ5IFJlZGluZyAgPHRoaWVycnkucmVkaW5nQGF2aW9uaWMtZGVzaWduLmRlPgogCiAgICAgICAg
IFtHVEtdIEJ1aWxkIGlzIGJyb2tlbiB3aXRoIEdMaWIgVW5pY29kZSBiYWNrZW5kCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCmluZGV4IDI2YzdhYWUyN2FiYmZlZGU3MDBmY2YxNjNi
NDlhYWNlNmI2YjRkYWMuLmE0Mzk0YmEyMDYwNTc4NDI1NmM1NmQ4NzAwZGYyODM2M2NkMDBjMDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCkBAIC0yNDMwLDYgKzI0MzAsMTAg
QEAgc3RhdGljIE5TU3RyaW5nKiByb2xlVmFsdWVUb05TU3RyaW5nKEFjY2Vzc2liaWxpdHlSb2xl
IHZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIEAibm9ybWFsIjsKICAgICAgICAgfQogICAgIH0K
KworICAgIC8vIFVzZWQgYnkgRFJUIHRvIGZpbmQgYW4gYWNjZXNzaWJsZSBub2RlIGJ5IGl0cyBl
bGVtZW50IGlkLgorICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWERS
VEVsZW1lbnRJZEF0dHJpYnV0ZSJdKQorICAgICAgICByZXR1cm4gbV9vYmplY3QtPmdldEF0dHJp
YnV0ZShpZEF0dHIpOwogICAgIAogICAgIHJldHVybiBuaWw7CiB9CmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjkzYTFkOWI5YjhhYTllZjBkNGUw
NmZjMWY3YTQ0ZTVlMDE1NWRlNy4uZGNlMzRhM2Q3NGJjNTJkOGEyNjk5N2JjMWYxNjg1YTAyMmFi
YzBhMyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDU2IEBACisyMDEyLTA5LTIxICBEb21pbmljIE1henpvbmkgIDxkbWF6em9uaUBn
b29nbGUuY29tPgorCisgICAgICAgIEFYOiBMYXlvdXQgdGVzdHMgd291bGQgYmUgZWFzaWVyIHRv
IHdyaXRlIGlmIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyIGNvdWxkIGZpbmQgYW4gZWxlbWVudCBi
eSBpZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTcz
MDEKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBGbGVpemFjaC4KKworICAgICAgICBBZGRz
IGEgbmV3IGFjY2Vzc2libGVFbGVtZW50QnlJZCBtZXRob2QgdG8gQWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIsIHRvIG1ha2UgaXQKKyAgICAgICAgZWFzaWVyIHRvIHdyaXRlIGNyb3NzLXBsYXRmb3Jt
IGxheW91dCB0ZXN0cy4KKworICAgICAgICBJbXBsZW1lbnRlZCBmb3IgQ2hyb21pdW0gYW5kIGZv
ciBNYWMgKERSVCBhbmQgV0tUUikuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9BY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5jcHA6CisgICAgICAgIChnZXRBY2Nlc3NpYmxlRWxlbWVudEJ5SWRD
YWxsYmFjayk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6Z2V0SlNDbGFzcyk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaDoKKyAg
ICAgICAgKEFjY2Vzc2liaWxpdHlDb250cm9sbGVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJD
aHJvbWl1bS5jcHA6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6QWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmZpbmRB
Y2Nlc3NpYmxlRWxlbWVudEJ5SWRSZWN1cnNpdmUpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXI6OmdldEFjY2Vzc2libGVFbGVtZW50QnlJZCk6CisgICAgICAgIChBY2Nlc3NpYmls
aXR5Q29udHJvbGxlcjo6YWNjZXNzaWJsZUVsZW1lbnRCeUlkR2V0dGVyQ2FsbGJhY2spOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXJDaHJvbWl1bS5oOgorICAgICAgICAoQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckd0ay5j
cHA6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6YWNjZXNzaWJsZUVsZW1lbnRC
eUlkKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1h
Yy5oOiBhZGRlZAorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5Q29t
bW9uTWFjLm1tOiBhZGRlZAorICAgICAgICAoK1tOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdS
ZWY6XSk6CisgICAgICAgICgtW05TU3RyaW5nIGNyZWF0ZUpTU3RyaW5nUmVmXSk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1tOgorICAg
ICAgICAoZmluZEFjY2Vzc2libGVPYmplY3RCeUlkKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlD
b250cm9sbGVyOjphY2Nlc3NpYmxlRWxlbWVudEJ5SWQpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcldpbi5jcHA6CisgICAgICAgIChBY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcjo6YWNjZXNzaWJsZUVsZW1lbnRCeUlkKToKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFjY2Vzc2libGVFbGVt
ZW50QnlJZCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5oOgorICAgICAgICAoQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIp
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMuaDogYWRkZWQKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9u
TWFjLm1tOiBhZGRlZAorICAgICAgICAoK1tOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6
XSk6CisgICAgICAgICgtW05TU3RyaW5nIGNyZWF0ZUpTU3RyaW5nUmVmXSk6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXJNYWMubW06CisgICAgICAgIChXVFI6OmZpbmRBY2Nlc3NpYmxlT2JqZWN0QnlJZCk6CisgICAg
ICAgIChXVFIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6YWNjZXNz
aWJsZUVsZW1lbnRCeUlkKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAy
MDEyLTA5LTIyICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CiAKICAgICAg
ICAgVW5leHBlY3RlZCByZWZ0ZXN0IHBhc3NlcyBhcmUgb25seSByZXBvcnRlZCB3aGVuIHBpeGVs
IHRlc3RpbmcgaXMgZW5hYmxlZApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuY3BwCmluZGV4IGIzNjdkNWM0NjlkOWJhOThkMjU1YzhlZGZlZTZmOTU4
OTM1YzNiNWYuLjQ5ZDQ1M2E4NGNkZWJjZGI4YTMyMjZiZmQ5MmNjODExODI0YTY1NzMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAKQEAg
LTk3LDYgKzk3LDE4IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGdldEVsZW1lbnRBdFBvaW50Q2FsbGJh
Y2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1CiAgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6Om1ha2VKU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQoY29udGV4dCwg
Y29udHJvbGxlci0+ZWxlbWVudEF0UG9pbnQoeCwgeSkpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJl
ZiBnZXRBY2Nlc3NpYmxlRWxlbWVudEJ5SWRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwg
SlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1
bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNl
cHRpb24pCit7CisgICAgSlNTdHJpbmdSZWYgaWRBdHRyaWJ1dGUgPSAwOworICAgIGlmIChhcmd1
bWVudENvdW50ID09IDEpCisgICAgICAgIGlkQXR0cmlidXRlID0gSlNWYWx1ZVRvU3RyaW5nQ29w
eShjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbik7ICAgIAorICAgIEFjY2Vzc2liaWxp
dHlDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIEpTVmFsdWVSZWYg
cmVzdWx0ID0gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWFrZUpTQWNjZXNzaWJpbGl0eVVJRWxl
bWVudChjb250ZXh0LCBjb250cm9sbGVyLT5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoaWRBdHRyaWJ1
dGUpKTsKKyAgICBpZiAoaWRBdHRyaWJ1dGUpCisgICAgICAgIEpTU3RyaW5nUmVsZWFzZShpZEF0
dHJpYnV0ZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgYWRk
Tm90aWZpY2F0aW9uTGlzdGVuZXJDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmpl
Y3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENv
dW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
CiB7CiAgICAgaWYgKGFyZ3VtZW50Q291bnQgIT0gMSkKQEAgLTEyMyw2ICsxMzUsNyBAQCBKU0Ns
YXNzUmVmIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpnZXRKU0NsYXNzKCkKICAgICAgICAgeyAi
bG9nU2Nyb2xsaW5nU3RhcnRFdmVudHMiLCBsb2dTY3JvbGxpbmdTdGFydEV2ZW50c0NhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCiAgICAgICAgIHsgImxvZ0FjY2Vzc2liaWxpdHlFdmVudHMiLCBsb2dBY2Nlc3Np
YmlsaXR5RXZlbnRzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiZWxlbWVudEF0UG9pbnQi
LCBnZXRFbGVtZW50QXRQb2ludENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgImFjY2Vzc2li
bGVFbGVtZW50QnlJZCIsIGdldEFjY2Vzc2libGVFbGVtZW50QnlJZENhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CiAgICAgICAgIHsgImFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyIiwgYWRkTm90aWZpY2F0aW9uTGlz
dGVuZXJDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJyZW1vdmVOb3RpZmljYXRpb25MaXN0
ZW5lciIsIHJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAg
ICAgeyAwLCAwLCAwIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5oCmluZGV4IDFkNTIzNTNjZDZjYTc3NDAxN2JhMDRhNWY3MGFhZmMyZjUzNjI0M2Mu
LmE2Y2RjNDY4NmMxMzJmZjU4NmQ1ODJmZTUxYTA3NjhlZTcyYzAxMDAgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaApAQCAtNDYsNiArNDYsNyBA
QCBwdWJsaWM6CiAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCByb290RWxlbWVudCgpOwogICAg
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgZm9jdXNlZEVsZW1lbnQoKTsKICAgICBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50IGVsZW1lbnRBdFBvaW50KGludCB4LCBpbnQgeSk7CisgICAgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudCBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWQpOwogCiAg
ICAgdm9pZCBzZXRMb2dGb2N1c0V2ZW50cyhib29sKTsKICAgICB2b2lkIHNldExvZ1ZhbHVlQ2hh
bmdlRXZlbnRzKGJvb2wpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJl
bmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTViNmVmMjkw
OTUxNDdjZjEwYTY4MWRiYjAxYWIxNTI0YWJjZTlhOC4uMGM2YjgwNDllYThkODc1NDM2NzlhNDRi
NzUyOTZlNDNlYTgxYWQ1ZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJl
bmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTYsNiAr
MTE2LDggQEAKIAkJQkMwRTI0RTAwRTJEOTQ1MTAwMUI2QkMyIC8qIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
MEUyNERFMEUyRDk0NTEwMDFCNkJDMiAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmggKi87IH07
CiAJCUJDMEUyNEUxMEUyRDk0NTEwMDFCNkJDMiAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMEUyNERG
MEUyRDk0NTEwMDFCNkJDMiAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCAqLzsgfTsKIAkJ
QkMwRTI2MTUwRTJEQTRDNjAwMUI2QkMyIC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzBFMjYxNDBF
MkRBNEM2MDAxQjZCQzIgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSAqLzsgfTsKKwkJ
QkMwRTI0RTAwRTJEOTQ1MTAwMUI2QkMzIC8qIEFjY2Vzc2liaWxpdHlDb21tb25NYWMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMEUyNERFMEUyRDk0
NTEwMDFCNkJDMyAvKiBBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLmggKi87IH07CisJCUJDMEUyNjE1
MEUyREE0QzYwMDFCNkJDMyAvKiBBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwRTI2MTQwRTJEQTRDNjAwMUI2
QkMzIC8qIEFjY2Vzc2liaWxpdHlDb21tb25NYWMubW0gKi87IH07CiAJCUJDNDc0MTJBMEQwMzhB
NEMwMDcyQjAwNiAvKiBKYXZhU2NyaXB0VGhyZWFkaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzQ3NDEyOTBEMDM4QTRDMDA3MkIwMDYgLyogSmF2
YVNjcmlwdFRocmVhZGluZy5oICovOyB9OwogCQlCQzQ3NDE0MTBEMDM4QTU3MDA3MkIwMDYgLyog
SmF2YVNjcmlwdFRocmVhZGluZ1B0aHJlYWRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNDc0MTQwMEQwMzhBNTcwMDcyQjAwNiAvKiBKYXZhU2Ny
aXB0VGhyZWFkaW5nUHRocmVhZHMuY3BwICovOyB9OwogCQlCQzlEOTAyNDBDOTc0NzJFMDA5OUE0
QTMgLyogV29ya1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDOUQ5MDIxMEM5NzQ3MkQwMDk5QTRBMyAvKiBXb3JrUXVldWUuY3BwICovOyB9
OwpAQCAtMzIzLDggKzMyNSwxMCBAQAogCQlCQzAxMzFEODBDOTc3MjAxMDA4NzMxN0QgLyogVGVz
dFJ1bm5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGVzdFJ1
bm5lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMDEzMUQ5MEM5NzcyMDEw
MDg3MzE3RCAvKiBUZXN0UnVubmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBUZXN0UnVubmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMEUyNERFMEUy
RDk0NTEwMDFCNkJDMiAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQkMwRTI0REUwRTJEOTQ1MTAwMUI2QkMzIC8qIEFjY2Vzc2liaWxp
dHlDb21tb25NYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gbWFjL0FjY2Vz
c2liaWxpdHlDb21tb25NYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMwRTI0
REYwRTJEOTQ1MTAwMUI2QkMyIC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMEUyNjE0MEUyREE0QzYwMDFCNkJDMiAv
KiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBuYW1lID0gQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbTsgcGF0aCA9IG1hYy9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlCQzBFMjYxNDBFMkRBNEM2MDAxQjZCQzMgLyogQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEFjY2Vzc2liaWxpdHlDb21t
b25NYWMubW07IHBhdGggPSBtYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM0NzQxMjkwRDAzOEE0QzAwNzJCMDA2IC8qIEphdmFTY3Jp
cHRUaHJlYWRpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSmF2YVNjcmlw
dFRocmVhZGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzQ3NDE0MDBEMDM4
QTU3MDA3MkIwMDYgLyogSmF2YVNjcmlwdFRocmVhZGluZ1B0aHJlYWRzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEphdmFTY3JpcHRUaHJlYWRpbmdQdGhyZWFkcy5j
cHA7IHBhdGggPSBwdGhyZWFkcy9KYXZhU2NyaXB0VGhyZWFkaW5nUHRocmVhZHMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzY0NkE0QjEzNjkwNURFMDBCMzVERUQgLyogQ29t
cGlsZXJWZXJzaW9uLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgbmFtZSA9IENv
bXBpbGVyVmVyc2lvbi54Y2NvbmZpZzsgcGF0aCA9IG1hYy9Db25maWd1cmF0aW9ucy9Db21waWxl
clZlcnNpb24ueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MDMsNiAr
NTA3LDggQEAKIAkJCQlCQzBFMjRERjBFMkQ5NDUxMDAxQjZCQzIgLyogQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudC5jcHAgKi8sCiAJCQkJQkMwRTI0REUwRTJEOTQ1MTAwMUI2QkMyIC8qIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQuaCAqLywKIAkJCQlCQzBFMjYxNDBFMkRBNEM2MDAxQjZCQzIgLyogQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSAqLywKKwkJCQlCQzBFMjYxNDBFMkRBNEM2MDAxQjZC
QzMgLyogQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5oICovLAorCQkJCUJDMEUyNjE0MEUyREE0QzYw
MDFCNkJDMyAvKiBBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tICovLAogCQkJCUJDQTE4QjM2MEM5
QjAyMTkwMDExNDM2OSAvKiBBcHBsZVNjcmlwdENvbnRyb2xsZXIuaCAqLywKIAkJCQlCQ0ExOEIz
NzBDOUIwMjE5MDAxMTQzNjkgLyogQXBwbGVTY3JpcHRDb250cm9sbGVyLm0gKi8sCiAJCQkJQkNB
MThCNkIwQzlCMDhEQjAwMTE0MzY5IC8qIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaCAqLywKQEAg
LTk0OCw2ICs5NTQsNyBAQAogCQkJCUJDRDA4QjcxMEUxMDU5RDIwMEE3RDBDMSAvKiBBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDMEUyNEUxMEUyRDk0
NTEwMDFCNkJDMiAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDMEUyNjE1MEUyREE0QzYwMDFCNkJDMiAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFj
Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQkMwRTI2MTUwRTJEQTRDNjAwMUI2QkMzIC8qIEFjY2Vz
c2liaWxpdHlDb21tb25NYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0ExOEIzOTBDOUIwMjE5
MDAxMTQzNjkgLyogQXBwbGVTY3JpcHRDb250cm9sbGVyLm0gaW4gU291cmNlcyAqLywKIAkJCQlB
OEI5MUJGRDBDRjUyMkI0MDA4RjkxRkYgLyogQ2hlY2tlZE1hbGxvYy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1M0NCQjgzMjEzNEU0MkYzMDAxQ0U2QTQgLyogQ3ljbGljUmVkdW5kYW5jeUNoZWNr
LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckNocm9taXVtLmNwcCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvQWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXJDaHJvbWl1bS5jcHAKaW5kZXggYjFkMjk0OGFlYmFiMzI5ODI0OTI3NTQ1ODI0NTgzMDcz
MTRiY2RlZC4uODlkNWQ1ODc3MGM2MWQxYWFlOTE2MGJhMzRlNDM2NzY1MTZiMDdjMiAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9BY2Nlc3NpYmls
aXR5Q29udHJvbGxlckNocm9taXVtLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyQ2hyb21pdW0uY3BwCkBAIC0z
Miw5ICszMiwxMSBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlDb250cm9sbGVyQ2hyb21pdW0u
aCIKIAogI2luY2x1ZGUgIldlYkFjY2Vzc2liaWxpdHlPYmplY3QuaCIKKyNpbmNsdWRlICJXZWJF
bGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKKyNpbmNsdWRlICJXZWJOb2RlLmgiCiAj
aW5jbHVkZSAiV2ViVmlldy5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgorI2lu
Y2x1ZGUgInBsYXRmb3JtL1dlYkNTdHJpbmcuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
IApAQCAtNDksNiArNTEsOCBAQCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6QWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIoKQogICAgIGJpbmRQcm9wZXJ0eSgiZm9jdXNlZEVsZW1lbnQiLCAmQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXI6OmZvY3VzZWRFbGVtZW50R2V0dGVyQ2FsbGJhY2spOwogICAgIGJp
bmRQcm9wZXJ0eSgicm9vdEVsZW1lbnQiLCAmQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnJvb3RF
bGVtZW50R2V0dGVyQ2FsbGJhY2spOwogCisgICAgYmluZE1ldGhvZCgiYWNjZXNzaWJsZUVsZW1l
bnRCeUlkIiwgJkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjphY2Nlc3NpYmxlRWxlbWVudEJ5SWRH
ZXR0ZXJDYWxsYmFjayk7CisKICAgICBiaW5kRmFsbGJhY2tNZXRob2QoJkFjY2Vzc2liaWxpdHlD
b250cm9sbGVyOjpmYWxsYmFja0NhbGxiYWNrKTsKIH0KIApAQCAtODYsNiArOTAsMzYgQEAgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudCogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmdldFJvb3RFbGVt
ZW50KCkKICAgICByZXR1cm4gbV9lbGVtZW50cy5jcmVhdGVSb290KG1fcm9vdEVsZW1lbnQpOwog
fQogCitBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6Zmlu
ZEFjY2Vzc2libGVFbGVtZW50QnlJZFJlY3Vyc2l2ZShjb25zdCBXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0JiBvYmosIGNvbnN0IFdlYlN0cmluZyYgaWQpCit7CisgICAgaWYgKG9iai5pc051bGwoKSB8
fCBvYmouaXNEZXRhY2hlZCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFdlYk5vZGUgbm9k
ZSA9IG9iai5ub2RlKCk7CisgICAgaWYgKCFub2RlLmlzTnVsbCgpICYmIG5vZGUuaXNFbGVtZW50
Tm9kZSgpKSB7CisgICAgICAgIFdlYkVsZW1lbnQgZWxlbWVudCA9IG5vZGUudG88V2ViRWxlbWVu
dD4oKTsKKyAgICAgICAgZWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIik7CisgICAgICAgIGlmIChl
bGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSA9PSBpZCkgCisgICAgICAgICAgICByZXR1cm4gbV9l
bGVtZW50cy5nZXRPckNyZWF0ZShvYmopOworICAgIH0KKworICAgIHVuc2lnbmVkIGNoaWxkQ291
bnQgPSBvYmouY2hpbGRDb3VudCgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjaGls
ZENvdW50OyBpKyspIHsKKyAgICAgICAgaWYgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIHJlc3Vs
dCA9IGZpbmRBY2Nlc3NpYmxlRWxlbWVudEJ5SWRSZWN1cnNpdmUob2JqLmNoaWxkQXQoaSksIGlk
KSkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9
CisKK0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpnZXRB
Y2Nlc3NpYmxlRWxlbWVudEJ5SWQoY29uc3Qgc3RkOjpzdHJpbmcmIGlkKQoreworICAgIGlmICht
X3Jvb3RFbGVtZW50LmlzTnVsbCgpKQorICAgICAgICBtX3Jvb3RFbGVtZW50ID0gbV93ZWJWaWV3
LT5hY2Nlc3NpYmlsaXR5T2JqZWN0KCk7CisKKyAgICByZXR1cm4gZmluZEFjY2Vzc2libGVFbGVt
ZW50QnlJZFJlY3Vyc2l2ZShtX3Jvb3RFbGVtZW50LCBXZWJTdHJpbmc6OmZyb21VVEY4KGlkLmNf
c3RyKCkpKTsKK30KKwogYm9vbCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6c2hvdWxkTG9nQWNj
ZXNzaWJpbGl0eUV2ZW50cygpCiB7CiAgICAgcmV0dXJuIG1fbG9nQWNjZXNzaWJpbGl0eUV2ZW50
czsKQEAgLTE0MSw2ICsxNzUsMjEgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cm9v
dEVsZW1lbnRHZXR0ZXJDYWxsYmFjayhDcHBWYXJpYW50KiByZXN1bHQpCiAgICAgcmVzdWx0LT5z
ZXQoKihnZXRSb290RWxlbWVudCgpLT5nZXRBc0NwcFZhcmlhbnQoKSkpOwogfQogCit2b2lkIEFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyOjphY2Nlc3NpYmxlRWxlbWVudEJ5SWRHZXR0ZXJDYWxsYmFj
ayhjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQor
eworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworCisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPCAx
IHx8ICFhcmd1bWVudHNbMF0uaXNTdHJpbmcoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3Rk
OjpzdHJpbmcgaWQgPSBhcmd1bWVudHNbMF0udG9TdHJpbmcoKTsKKyAgICBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50KiBmb3VuZEVsZW1lbnQgPSBnZXRBY2Nlc3NpYmxlRWxlbWVudEJ5SWQoaWQpOwor
ICAgIGlmICghZm91bmRFbGVtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICByZXN1bHQtPnNl
dCgqKGZvdW5kRWxlbWVudC0+Z2V0QXNDcHBWYXJpYW50KCkpKTsKK30KKwogdm9pZCBBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlcjo6ZmFsbGJhY2tDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3Qm
LCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgcHJpbnRmKCJDT05TT0xFIE1FU1NBR0U6IEph
dmFTY3JpcHQgRVJST1I6IHVua25vd24gbWV0aG9kIGNhbGxlZCBvbiAiCmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL0FjY2Vzc2liaWxpdHlDb250
cm9sbGVyQ2hyb21pdW0uaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJDaHJvbWl1bS5oCmluZGV4IDExYzA4MmIzZTgwOGMx
ZjYzMGViODUxODRlNmU4ZmIzZTgxNmY0OTguLmYwZjVkZWU4NTYyZDk1NDFmMDBjZjEwMjRkODZj
ZjY2MWM2MzdkMTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJDaHJvbWl1bS5oCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJD
aHJvbWl1bS5oCkBAIC01MSw2ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEZvY3VzZWRF
bGVtZW50KGNvbnN0IFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdCYpOwogICAgIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQqIGdldEZvY3VzZWRFbGVtZW50KCk7CiAgICAgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudCogZ2V0Um9vdEVsZW1lbnQoKTsKKyAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
KiBnZXRBY2Nlc3NpYmxlRWxlbWVudEJ5SWQoY29uc3Qgc3RkOjpzdHJpbmcmIGlkKTsKIAogICAg
IGJvb2wgc2hvdWxkTG9nQWNjZXNzaWJpbGl0eUV2ZW50cygpOwogCkBAIC03MCw2ICs3MSw5IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIGZvY3VzZWRFbGVtZW50R2V0dGVyQ2FsbGJhY2soQ3BwVmFy
aWFudCopOwogICAgIHZvaWQgcm9vdEVsZW1lbnRHZXR0ZXJDYWxsYmFjayhDcHBWYXJpYW50Kik7
CisgICAgdm9pZCBhY2Nlc3NpYmxlRWxlbWVudEJ5SWRHZXR0ZXJDYWxsYmFjayhjb25zdCBDcHBB
cmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisKKyAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
KiBmaW5kQWNjZXNzaWJsZUVsZW1lbnRCeUlkUmVjdXJzaXZlKGNvbnN0IFdlYktpdDo6V2ViQWNj
ZXNzaWJpbGl0eU9iamVjdCYsIGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBpZCk7CiAKICAgICBX
ZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3QgbV9mb2N1c2VkRWxlbWVudDsKICAgICBXZWJL
aXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3QgbV9yb290RWxlbWVudDsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckd0ay5jcHAgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJHdGsuY3BwCmlu
ZGV4IGNlZWI4ZGZjYmZmYTM5ZjUzNWEzOWIwZGRjYmVjYjJjYTM2MjU5YjAuLjQ2NjE4MmJiMzA1
YTY2NzYwODA2YmVmODQ4ZDk0Yzc2MjJmODc1Y2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2d0ay9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckd0ay5jcHAKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvZ3RrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyR3RrLmNwcApAQCAtNzAsNiAr
NzAsMTIgQEAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6
cm9vdEVsZW1lbnQoKQogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KGFjY2Vzc2li
bGUpOwogfQogCitBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlDb250cm9sbGVy
OjphY2Nlc3NpYmxlRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWQpCit7CisgICAgLy8gRklYTUU6
IGltcGxlbWVudAorICAgIHJldHVybiAwOworfQorCiB2b2lkIEFjY2Vzc2liaWxpdHlDb250cm9s
bGVyOjpzZXRMb2dGb2N1c0V2ZW50cyhib29sKQogewogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMuaCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzhiOTEyNTdm
NDY4Nzc0OTc5NTBhOTM0MWEyNjkxZmU5ODU3NGE1MwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLmgKQEAgLTAsMCArMSw0
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgQWNjZXNzaWJpbGl0eUNvbW1vbk1hY19oCisjZGVmaW5lIEFjY2Vzc2liaWxp
dHlDb21tb25NYWNfaAorCisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZi5oPgor
CisvLyBJZiBhbiB1bnN1cHBvcnRlZCBhdHRyaWJ1dGUgaXMgcGFzc2VkIGluLCBpdCB3aWxsIHJh
aXNlIGFuIGFjY2Vzc2liaWxpdHkgZXhjZXB0aW9uLiBUaGVzZSBhcmUgdXN1YWxseSBjYXVnaHQg
YnkgdGhlIEFjY2Vzc2liaWxpdHkgUnVudGltZSB0byBpbmZvcm0KKy8vIHRoZSBBWCBjbGllbnQg
YXBwIG9mIHRoZSBlcnJvci4gSG93ZXZlciwgRFJUIGlzIHRoZSBBWCBjbGllbnQgYXBwLCBzbyBp
dCBtdXN0IGNhdGNoIHRoZXNlIGV4Y2VwdGlvbnMuCisjZGVmaW5lIEJFR0lOX0FYX09CSkNfRVhD
RVBUSU9OUyBAdHJ5IHsKKyNkZWZpbmUgRU5EX0FYX09CSkNfRVhDRVBUSU9OUyB9IEBjYXRjaChO
U0V4Y2VwdGlvbiAqZSkgeyBpZiAoIVtbZSBuYW1lXSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3Np
YmlsaXR5RXhjZXB0aW9uXSkgQHRocm93OyB9CisKKworQGludGVyZmFjZSBOU1N0cmluZyAoSlNT
dHJpbmdSZWZBZGRpdGlvbnMpCisrIChOU1N0cmluZyAqKXN0cmluZ1dpdGhKU1N0cmluZ1JlZjoo
SlNTdHJpbmdSZWYpanNTdHJpbmdSZWY7CistIChKU1N0cmluZ1JlZiljcmVhdGVKU1N0cmluZ1Jl
ZjsKK0BlbmQKKworI2VuZGlmIC8vIEFjY2Vzc2liaWxpdHlDb21tb25NYWNfaApkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMubW0gYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wODJjMGYwY2M4NmMzZTg0ODVkZmZhZmIwMDQzZDM2MmQxZmNlNWJlCi0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMu
bW0KQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQWNjZXNzaWJp
bGl0eUNvbW1vbk1hYy5oIgorCisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZkNG
Lmg+CisKK0BpbXBsZW1lbnRhdGlvbiBOU1N0cmluZyAoSlNTdHJpbmdSZWZBZGRpdGlvbnMpCisK
KysgKE5TU3RyaW5nICopc3RyaW5nV2l0aEpTU3RyaW5nUmVmOihKU1N0cmluZ1JlZilqc1N0cmlu
Z1JlZgoreworICAgIGlmICghanNTdHJpbmdSZWYpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAg
ICBDRlN0cmluZ1JlZiBjZlN0cmluZyA9IEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIGpzU3RyaW5nUmVmKTsKKyAgICByZXR1cm4gWyhOU1N0cmluZyAqKWNmU3RyaW5n
IGF1dG9yZWxlYXNlXTsKK30KKworLSAoSlNTdHJpbmdSZWYpY3JlYXRlSlNTdHJpbmdSZWYKK3sK
KyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKXNlbGYp
OworfQorCitAZW5kCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXJNYWMubW0KaW5kZXggNmZjMGRkMDU2NTc5NGVmODQ2NTYyNjg4Mjcw
NjJhNWRmZTBlNWIyNi4uNmUwMjEzMjQxMmI1ZDllZTk5ZmEwM2NlZTQyM2RkZWI1NWM0NGY1ZCAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlDb250cm9s
bGVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlck1hYy5tbQpAQCAtMjcsMTAgKzI3LDEzIEBACiAjaW1wb3J0ICJEdW1wUmVuZGVyVHJl
ZS5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCIKIAorI2ltcG9ydCAiQWNj
ZXNzaWJpbGl0eUNvbW1vbk1hYy5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlv
bkhhbmRsZXIuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCIKICNpbXBvcnQg
PEFwcEtpdC9OU0NvbG9yLmg+CiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNp
bXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmLmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0
Q29yZS9KU1N0cmluZ1JlZkNGLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViRnJhbWUuaD4KICNpbXBv
cnQgPFdlYktpdC9XZWJGcmFtZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJIVE1MVmll
dy5oPgpAQCAtNjgsNiArNzEsMzYgQEAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nlc3NpYmls
aXR5Q29udHJvbGxlcjo6cm9vdEVsZW1lbnQoKQogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50KGFjY2Vzc2liaWxpdHlPYmplY3QpOwogfQogCitzdGF0aWMgaWQgZmluZEFjY2Vzc2li
bGVPYmplY3RCeUlkKGlkIG9iaiwgTlNTdHJpbmcgKmlkQXR0cmlidXRlKQoreworICAgIEJFR0lO
X0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIG9iaklkQXR0cmlidXRlID0gW29iaiBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWERSVEVsZW1lbnRJZEF0dHJpYnV0ZSJdOworICAgIGlm
IChbb2JqSWRBdHRyaWJ1dGUgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSAmJiBbb2Jq
SWRBdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOmlkQXR0cmlidXRlXSkKKyAgICAgICAgcmV0dXJu
IG9iajsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisKKyAgICBOU0FycmF5ICpjaGlsZHJl
biA9IFtvYmogYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUNoaWxk
cmVuQXR0cmlidXRlXTsKKyAgICBOU1VJbnRlZ2VyIGNoaWxkcmVuQ291bnQgPSBbY2hpbGRyZW4g
Y291bnRdOworICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGNoaWxkcmVuQ291bnQ7ICsr
aSkgeworICAgICAgICBpZCByZXN1bHQgPSBmaW5kQWNjZXNzaWJsZU9iamVjdEJ5SWQoW2NoaWxk
cmVuIG9iamVjdEF0SW5kZXg6aV0sIGlkQXR0cmlidXRlKTsKKyAgICAgICAgaWYgKHJlc3VsdCkK
KyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisK
K0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFjY2Vzc2li
bGVFbGVtZW50QnlJZChKU1N0cmluZ1JlZiBpZEF0dHJpYnV0ZVJlZikKK3sKKyAgICBOU1N0cmlu
ZyAqaWRBdHRyaWJ1dGUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOmlkQXR0cmli
dXRlUmVmXTsKKyAgICBpZCByb290ID0gW1ttYWluRnJhbWUgYWNjZXNzaWJpbGl0eVJvb3RdIGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlQYXJlbnRBdHRyaWJ1dGVd
OworICAgIGlkIHJlc3VsdCA9IGZpbmRBY2Nlc3NpYmxlT2JqZWN0QnlJZChyb290LCBpZEF0dHJp
YnV0ZSk7CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQocmVzdWx0KTsKKworICAgIHJldHVybiAwOworfQorCiB2b2lkIEFjY2Vzc2liaWxpdHlD
b250cm9sbGVyOjpzZXRMb2dGb2N1c0V2ZW50cyhib29sKQogewogfQpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0gYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQppbmRleCA1
YWJkNTI3MDAxN2VhMjNlMmI2MDUyY2UwYmNhNWEyNjM3MmI4ODUxLi5jZDFjOTJkMTI0ZjczMTY0
YjAzZDgwZjIzNmU4ZTAxOTZjNzhiMjJhIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQpAQCAtMjUsNiArMjUsNyBAQAog
CiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlLmgiCisjaW1wb3J0
ICJBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5Tm90aWZp
Y2F0aW9uSGFuZGxlci5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oIgogCkBA
IC01MSwxMiArNTIsNiBAQAogI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlEcm9wRWZmZWN0c0F0dHJp
YnV0ZSBAIkFYRHJvcEVmZmVjdHMiCiAjZW5kaWYKIAotLy8gSWYgYW4gdW5zdXBwb3J0ZWQgYXR0
cmlidXRlIGlzIHBhc3NlZCBpbiwgaXQgd2lsbCByYWlzZSBhbiBhY2Nlc3NpYmlsaXR5IGV4Y2Vw
dGlvbi4gVGhlc2UgYXJlIHVzdWFsbHkgY2F1Z2h0IGJ5IHRoZSBBY2Nlc3NpYmlsaXR5IFJ1bnRp
bWUgdG8gaW5mb3JtCi0vLyB0aGUgQVggY2xpZW50IGFwcCBvZiB0aGUgZXJyb3IuIEhvd2V2ZXIs
IERSVCBpcyB0aGUgQVggY2xpZW50IGFwcCwgc28gaXQgbXVzdCBjYXRjaCB0aGVzZSBleGNlcHRp
b25zLgotI2RlZmluZSBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMgQHRyeSB7Ci0jZGVmaW5lIEVO
RF9BWF9PQkpDX0VYQ0VQVElPTlMgfSBAY2F0Y2goTlNFeGNlcHRpb24gKmUpIHsgaWYgKCFbW2Ug
bmFtZV0gaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUV4Y2VwdGlvbl0pIEB0aHJvdzsg
fQotCi0KIHR5cGVkZWYgdm9pZCAoKkFYUG9zdGVkTm90aWZpY2F0aW9uQ2FsbGJhY2spKGlkIGVs
ZW1lbnQsIE5TU3RyaW5nKiBub3RpZmljYXRpb24sIHZvaWQqIGNvbnRleHQpOwogCiBAaW50ZXJm
YWNlIE5TT2JqZWN0IChXZWJLaXRBY2Nlc3NpYmlsaXR5QWRkaXRpb25zKQpAQCAtNjUsMjkgKzYw
LDYgQEAgdHlwZWRlZiB2b2lkICgqQVhQb3N0ZWROb3RpZmljYXRpb25DYWxsYmFjaykoaWQgZWxl
bWVudCwgTlNTdHJpbmcqIG5vdGlmaWNhdGlvbiwKIC0gKE5TVUludGVnZXIpYWNjZXNzaWJpbGl0
eUFycmF5QXR0cmlidXRlQ291bnQ6KE5TU3RyaW5nICopYXR0cmlidXRlOwogQGVuZAogCi1AaW50
ZXJmYWNlIE5TU3RyaW5nIChKU1N0cmluZ1JlZkFkZGl0aW9ucykKLSsgKE5TU3RyaW5nICopc3Ry
aW5nV2l0aEpTU3RyaW5nUmVmOihKU1N0cmluZ1JlZilqc1N0cmluZ1JlZjsKLS0gKEpTU3RyaW5n
UmVmKWNyZWF0ZUpTU3RyaW5nUmVmOwotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gTlNTdHJpbmcg
KEpTU3RyaW5nUmVmQWRkaXRpb25zKQotCi0rIChOU1N0cmluZyAqKXN0cmluZ1dpdGhKU1N0cmlu
Z1JlZjooSlNTdHJpbmdSZWYpanNTdHJpbmdSZWYKLXsKLSAgICBpZiAoIWpzU3RyaW5nUmVmKQot
ICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAKLSAgICBDRlN0cmluZ1JlZiBjZlN0cmluZyA9IEpT
U3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGpzU3RyaW5nUmVmKTsKLSAg
ICByZXR1cm4gWyhOU1N0cmluZyAqKWNmU3RyaW5nIGF1dG9yZWxlYXNlXTsKLX0KLQotLSAoSlNT
dHJpbmdSZWYpY3JlYXRlSlNTdHJpbmdSZWYKLXsKLSAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVX
aXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKXNlbGYpOwotfQotCi1AZW5kCi0KIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoUGxhdGZvcm1VSUVsZW1lbnQgZWxl
bWVudCkKICAgICA6IG1fZWxlbWVudChlbGVtZW50KQogICAgICwgbV9ub3RpZmljYXRpb25IYW5k
bGVyKDApCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXJXaW4uY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2liaWxp
dHlDb250cm9sbGVyV2luLmNwcAppbmRleCA3ZjlhYTZjYzJlZTkyOWIyYmY4ZWE0MTZmNWQ2NWJi
MDU2ZTNlYWQxLi45ZTc2YzhkZGEzMzI3YTA3ZThlODdlMzM2YzhhZDY5YTk0NDQ2ODg5IDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJX
aW4uY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcldpbi5jcHAKQEAgLTY3LDYgKzY3LDEyIEBAIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmVsZW1lbnRBdFBvaW50KGludCB4LCBpbnQgeSkKICAgICBy
ZXR1cm4gMDsKIH0KIAorQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcjo6YWNjZXNzaWJsZUVsZW1lbnRCeUlkKEpTU3RyaW5nUmVmIGlkKQoreworICAgIC8vIEZJ
WE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gMDsKK30KKwogQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6Zm9jdXNlZEVsZW1lbnQoKQogewogICAgIENPTVB0
cjxJQWNjZXNzaWJsZT4gcm9vdEFjY2Vzc2libGUgPSByb290RWxlbWVudCgpLnBsYXRmb3JtVUlF
bGVtZW50KCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwCmluZGV4IDJjZDMwNDlm
ZTE1Nzk1Nzc2YWJkMTMyMjBiMmUyYWEwZWRjZmY3NWQuLmM2ZjdkNzVjYzNiNzlkMDZjMGMyY2M2
MmU4OWZiOWE0MDg5YTEyZDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwCkBA
IC0xMDYsNiArMTA2LDcgQEAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcjo6ZWxlbWVudEF0UG9pbnQoaW50IHgKICNpZiAhUExBVEZPUk0o
TUFDKQogYm9vbCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6YWRkTm90aWZpY2F0aW9uTGlzdGVu
ZXIoSlNWYWx1ZVJlZikgeyByZXR1cm4gZmFsc2U7IH0KIGJvb2wgQWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXI6OnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCkgeyByZXR1cm4gZmFsc2U7IH0KK1Bh
c3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6
OmFjY2Vzc2libGVFbGVtZW50QnlJZChKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpIHsgcmV0dXJuIDA7
IH0KICNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKEdUSykKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuaAppbmRleCAzYzg3Y2FjNWQ1YzZhOWM0MDYyMDdiMzdiNmFlMzczYWU0ZDNiNzc5Li5mMDJm
ZWFjMDU1OTk4Yzc5NjlhNGFkZTRlYmY1MDEwNGE3NzQwOWFjIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5oCkBAIC00OCw2ICs0OCw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+IHJvb3RFbGVtZW50KCk7CiAgICAgUGFzc1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50PiBmb2N1c2VkRWxlbWVudCgpOwogICAgIFBhc3NSZWZQdHI8QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudD4gZWxlbWVudEF0UG9pbnQoaW50IHgsIGludCB5KTsKKyAgICBQ
YXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGFjY2Vzc2libGVFbGVtZW50QnlJZChK
U1N0cmluZ1JlZiBpZEF0dHJpYnV0ZSk7CiAKICAgICBib29sIGFkZE5vdGlmaWNhdGlvbkxpc3Rl
bmVyKEpTVmFsdWVSZWYgZnVuY3Rpb25DYWxsYmFjayk7CiAgICAgYm9vbCByZW1vdmVOb3RpZmlj
YXRpb25MaXN0ZW5lcigpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5pZGwgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmlkbAppbmRleCAyZGY4YzI3OWY5YmQ4ODk2MTI2N2E2YjBjYzQwYjBhYmNmMTE0OGQ5
Li5iZDA1ZjEzMzQzMDg1Zjg5ODQ0YTllYzE5MjUxZjQxZWMxMDE5ZDUzIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmlkbApAQCAtMjksNiArMjksNyBA
QCBtb2R1bGUgV1RSIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQgcm9vdEVsZW1lbnQ7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50IGZvY3VzZWRFbGVtZW50OwogICAgICAgICBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50IGVsZW1lbnRBdFBvaW50KGluIGludCB4LCBpbiBpbnQgeSk7CisgICAgICAgIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKGluIERPTVN0cmluZyBpZCk7
CiAgICAgICAgIAogICAgICAgICBib29sZWFuIGFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKGluIG9i
amVjdCBmdW5jdGlvbkNhbGxiYWNrKTsKICAgICAgICAgYm9vbGVhbiByZW1vdmVOb3RpZmljYXRp
b25MaXN0ZW5lcigpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmM4YjkxMjU3ZjQ2ODc3NDk3OTUwYTkzNDFhMjY5MWZlOTg1NzRhNTMKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3Np
YmlsaXR5Q29tbW9uTWFjLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQWNjZXNzaWJpbGl0eUNv
bW1vbk1hY19oCisjZGVmaW5lIEFjY2Vzc2liaWxpdHlDb21tb25NYWNfaAorCisjaW1wb3J0IDxK
YXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZi5oPgorCisvLyBJZiBhbiB1bnN1cHBvcnRlZCBhdHRy
aWJ1dGUgaXMgcGFzc2VkIGluLCBpdCB3aWxsIHJhaXNlIGFuIGFjY2Vzc2liaWxpdHkgZXhjZXB0
aW9uLiBUaGVzZSBhcmUgdXN1YWxseSBjYXVnaHQgYnkgdGhlIEFjY2Vzc2liaWxpdHkgUnVudGlt
ZSB0byBpbmZvcm0KKy8vIHRoZSBBWCBjbGllbnQgYXBwIG9mIHRoZSBlcnJvci4gSG93ZXZlciwg
RFJUIGlzIHRoZSBBWCBjbGllbnQgYXBwLCBzbyBpdCBtdXN0IGNhdGNoIHRoZXNlIGV4Y2VwdGlv
bnMuCisjZGVmaW5lIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUyBAdHJ5IHsKKyNkZWZpbmUgRU5E
X0FYX09CSkNfRVhDRVBUSU9OUyB9IEBjYXRjaChOU0V4Y2VwdGlvbiAqZSkgeyBpZiAoIVtbZSBu
YW1lXSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5RXhjZXB0aW9uXSkgQHRocm93OyB9
CisKKworQGludGVyZmFjZSBOU1N0cmluZyAoSlNTdHJpbmdSZWZBZGRpdGlvbnMpCisrIChOU1N0
cmluZyAqKXN0cmluZ1dpdGhKU1N0cmluZ1JlZjooSlNTdHJpbmdSZWYpanNTdHJpbmdSZWY7Cist
IChKU1N0cmluZ1JlZiljcmVhdGVKU1N0cmluZ1JlZjsKK0BlbmQKKworI2VuZGlmIC8vIEFjY2Vz
c2liaWxpdHlDb21tb25NYWNfaApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbSBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMubW0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDgyYzBmMGNjODZjM2U4NDg1ZGZmYWZiMDA0M2QzNjJkMWZjZTViZQotLS0g
L2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFj
L0FjY2Vzc2liaWxpdHlDb21tb25NYWMubW0KQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZp
Zy5oIgorI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5oIgorCisjaW1wb3J0IDxKYXZh
U2NyaXB0Q29yZS9KU1N0cmluZ1JlZkNGLmg+CisKK0BpbXBsZW1lbnRhdGlvbiBOU1N0cmluZyAo
SlNTdHJpbmdSZWZBZGRpdGlvbnMpCisKKysgKE5TU3RyaW5nICopc3RyaW5nV2l0aEpTU3RyaW5n
UmVmOihKU1N0cmluZ1JlZilqc1N0cmluZ1JlZgoreworICAgIGlmICghanNTdHJpbmdSZWYpCisg
ICAgICAgIHJldHVybiBuaWw7CisKKyAgICBDRlN0cmluZ1JlZiBjZlN0cmluZyA9IEpTU3RyaW5n
Q29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGpzU3RyaW5nUmVmKTsKKyAgICByZXR1
cm4gWyhOU1N0cmluZyAqKWNmU3RyaW5nIGF1dG9yZWxlYXNlXTsKK30KKworLSAoSlNTdHJpbmdS
ZWYpY3JlYXRlSlNTdHJpbmdSZWYKK3sKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZT
dHJpbmcoKENGU3RyaW5nUmVmKXNlbGYpOworfQorCitAZW5kCmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ck1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vz
c2liaWxpdHlDb250cm9sbGVyTWFjLm1tCmluZGV4IDg2M2U3NDA3ZWIyMDE5NWNiNzQ5ZWVmZDc1
Yjk0NDczYTlkYTFkN2QuLjllNTQ5MDhiOTZjZWM1NGQwNDA0N2FjYjNlN2IwZDI2ZGMwNTcyMTcg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0Fj
Y2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1tCkBAIC0yOSw4
ICsyOSwxOCBAQAogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQWNjZXNzaWJp
bGl0eUNvbW1vbk1hYy5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCIKICNp
bXBvcnQgIkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLmgiCisjaW1wb3J0ICJJbmpl
Y3RlZEJ1bmRsZS5oIgorI2ltcG9ydCAiSW5qZWN0ZWRCdW5kbGVQYWdlLmgiCisKKyNpbXBvcnQg
PEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9K
U1N0cmluZ1JlZi5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWZDRi5oPgor
I2ltcG9ydCA8V2ViS2l0Mi9XS0J1bmRsZS5oPgorI2ltcG9ydCA8V2ViS2l0Mi9XS0J1bmRsZVBh
Z2UuaD4KKyNpbXBvcnQgPFdlYktpdDIvV0tCdW5kbGVQYWdlUHJpdmF0ZS5oPgogCiBuYW1lc3Bh
Y2UgV1RSIHsKIApAQCAtNTksNCArNjksMzUgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cjo6cmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIoKQogICAgIHJldHVybiB0cnVlOwogfQogCitz
dGF0aWMgaWQgZmluZEFjY2Vzc2libGVPYmplY3RCeUlkKGlkIG9iaiwgTlNTdHJpbmcgKmlkQXR0
cmlidXRlKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIG9iaklkQXR0
cmlidXRlID0gW29iaiBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWERSVEVsZW1lbnRJ
ZEF0dHJpYnV0ZSJdOworICAgIGlmIChbb2JqSWRBdHRyaWJ1dGUgaXNLaW5kT2ZDbGFzczpbTlNT
dHJpbmcgY2xhc3NdXSAmJiBbb2JqSWRBdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOmlkQXR0cmli
dXRlXSkKKyAgICAgICAgcmV0dXJuIG9iajsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisK
KyAgICBOU0FycmF5ICpjaGlsZHJlbiA9IFtvYmogYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
Ok5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXTsKKyAgICBOU1VJbnRlZ2VyIGNoaWxk
cmVuQ291bnQgPSBbY2hpbGRyZW4gY291bnRdOworICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsg
aSA8IGNoaWxkcmVuQ291bnQ7ICsraSkgeworICAgICAgICBpZCByZXN1bHQgPSBmaW5kQWNjZXNz
aWJsZU9iamVjdEJ5SWQoW2NoaWxkcmVuIG9iamVjdEF0SW5kZXg6aV0sIGlkQXR0cmlidXRlKTsK
KyAgICAgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQor
CisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4g
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFjY2Vzc2libGVFbGVtZW50QnlJZChKU1N0cmluZ1Jl
ZiBpZEF0dHJpYnV0ZSkKK3sKKyAgICBXS0J1bmRsZVBhZ2VSZWYgcGFnZSA9IEluamVjdGVkQnVu
ZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKTsKKyAgICBpZCByb290ID0gc3RhdGljX2Nhc3Q8
UGxhdGZvcm1VSUVsZW1lbnQ+KFdLQWNjZXNzaWJpbGl0eVJvb3RPYmplY3QocGFnZSkpOworCisg
ICAgaWQgcmVzdWx0ID0gZmluZEFjY2Vzc2libGVPYmplY3RCeUlkKHJvb3QsIFtOU1N0cmluZyBz
dHJpbmdXaXRoSlNTdHJpbmdSZWY6aWRBdHRyaWJ1dGVdKTsKKyAgICBpZiAocmVzdWx0KQorICAg
ICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKHJlc3VsdCk7CisKKyAg
ICByZXR1cm4gMDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
TWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudE1hYy5tbQppbmRleCA4MWEwMzEwYjEyNzQ2ZDQzOWY0YzU3YWQxMDcw
ODBjNDY1NzkyM2Q5Li4yNGVlZjA4MzdmZDIzMzVlZTQ1ODVhZDhhYmNjNjFjNjNlZDYyNTA1IDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KQEAgLTI0LDYgKzI0
LDcgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkFjY2Vzc2liaWxpdHlD
b21tb25NYWMuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLmgi
CiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgiCiAjaW1wb3J0ICJJbmplY3RlZEJ1
bmRsZS5oIgpAQCAtNTEsMTIgKzUyLDYgQEAKICNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5RHJvcEVm
ZmVjdHNBdHRyaWJ1dGUgQCJBWERyb3BFZmZlY3RzIgogI2VuZGlmCiAKLS8vIElmIGFuIHVuc3Vw
cG9ydGVkIGF0dHJpYnV0ZSBpcyBwYXNzZWQgaW4sIGl0IHdpbGwgcmFpc2UgYW4gYWNjZXNzaWJp
bGl0eSBleGNlcHRpb24uIFRoZXNlIGFyZSB1c3VhbGx5IGNhdWdodCBieSB0aGUgQWNjZXNzaWJp
bGl0eSBSdW50aW1lIHRvIGluZm9ybQotLy8gdGhlIEFYIGNsaWVudCBhcHAgb2YgdGhlIGVycm9y
LiBIb3dldmVyLCBEUlQgaXMgdGhlIEFYIGNsaWVudCBhcHAsIHNvIGl0IG11c3QgY2F0Y2ggdGhl
c2UgZXhjZXB0aW9ucy4KLSNkZWZpbmUgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TIEB0cnkgewot
I2RlZmluZSBFTkRfQVhfT0JKQ19FWENFUFRJT05TIH0gQGNhdGNoKE5TRXhjZXB0aW9uICplKSB7
IGlmICghW1tlIG5hbWVdIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlFeGNlcHRpb25d
KSBAdGhyb3c7IH0KLQotCiB0eXBlZGVmIHZvaWQgKCpBWFBvc3RlZE5vdGlmaWNhdGlvbkNhbGxi
YWNrKShpZCBlbGVtZW50LCBOU1N0cmluZyogbm90aWZpY2F0aW9uLCB2b2lkKiBjb250ZXh0KTsK
IAogQGludGVyZmFjZSBOU09iamVjdCAoV2ViS2l0QWNjZXNzaWJpbGl0eUFkZGl0aW9ucykKQEAg
LTY1LDI5ICs2MCw2IEBAIHR5cGVkZWYgdm9pZCAoKkFYUG9zdGVkTm90aWZpY2F0aW9uQ2FsbGJh
Y2spKGlkIGVsZW1lbnQsIE5TU3RyaW5nKiBub3RpZmljYXRpb24sCiAtIChOU1VJbnRlZ2VyKWFj
Y2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZUNvdW50OihOU1N0cmluZyAqKWF0dHJpYnV0ZTsKIEBl
bmQKIAotQGludGVyZmFjZSBOU1N0cmluZyAoSlNTdHJpbmdSZWZBZGRpdGlvbnMpCi0rIChOU1N0
cmluZyAqKXN0cmluZ1dpdGhKU1N0cmluZ1JlZjooSlNTdHJpbmdSZWYpanNTdHJpbmdSZWY7Ci0t
IChKU1N0cmluZ1JlZiljcmVhdGVKU1N0cmluZ1JlZjsKLUBlbmQKLQotQGltcGxlbWVudGF0aW9u
IE5TU3RyaW5nIChKU1N0cmluZ1JlZkFkZGl0aW9ucykKLQotKyAoTlNTdHJpbmcgKilzdHJpbmdX
aXRoSlNTdHJpbmdSZWY6KEpTU3RyaW5nUmVmKWpzU3RyaW5nUmVmCi17Ci0gICAgaWYgKCFqc1N0
cmluZ1JlZikKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgCi0gICAgQ0ZTdHJpbmdSZWYgY2ZT
dHJpbmcgPSBKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBqc1N0cmlu
Z1JlZik7Ci0gICAgcmV0dXJuIFsoTlNTdHJpbmcgKiljZlN0cmluZyBhdXRvcmVsZWFzZV07Ci19
Ci0KLS0gKEpTU3RyaW5nUmVmKWNyZWF0ZUpTU3RyaW5nUmVmCi17Ci0gICAgcmV0dXJuIEpTU3Ry
aW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmluZ1JlZilzZWxmKTsKLX0KLQotQGVuZAotCiBu
YW1lc3BhY2UgV1RSIHsKIAogQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudChQbGF0Zm9ybVVJRWxlbWVudCBlbGVtZW50KQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA1YmNkMjdmNzU3MzNmZmU0ZWYzNjk2YjdhMGVmZTQwNjA0MDZjYWMx
Li4wMGE2N2ZiNzI5MmY5MTBhZGVlZTVkMzZlZWZjYzczNTc4ZWE4MjYwIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjksNiArMjksNyBAQAogCQkyOTIxMEVCNDE0NENB
Q0Q1MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjkyMTBFQjExNDRDQUNENDAwODM1QkI1
IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcCAqLzsgfTsKIAkJMjkyMTBFQjUxNDRDQUNE
NTAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjkyMTBFQjMxNDRDQUNENDAwODM1QkI1
IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tICovOyB9OwogCQkyOTIxMEVEQTE0NEND
M0VBMDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5MjEwRUFCMTQ0Q0FDQjIwMDgzNUJC
NSAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tICovOyB9OworCQkyOTIxMEVEQTE0NEND
M0VBMDA4MzVCQjYgLyogQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5MjEwRUFCMTQ0Q0FDQjIwMDgzNUJCNiAv
KiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tICovOyB9OwogCQkyOTIxMEVEQjE0NENENDc5
MDA4MzVCQjUgLyogSlNBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1ODM5MTNEMDE0MzM1RTk1MDA4MzA3RTUg
LyogSlNBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAgKi87IH07CiAJCTI5MjEwRUUxMTQ0Q0RC
MjYwMDgzNUJCNSAvKiBKU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjkyMTBFREIxNDY3MjdFNzExODM1QkI1
IC8qIEpTQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAgKi87IH07CiAJCTI5QThGQ0NCMTQ1RUYw
MkUwMDkwNDVBNiAvKiBKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5MjEwRUUxMTQ0Q0RFNjc4OTgxNUVF
NSAvKiBKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcCAqLzsgfTsKQEAgLTEwOSw2ICsxMTAs
NyBAQAogCQkyOTIxMEVBOTE0NENBQ0IyMDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjkyMTBFQUExNDRD
QUNCMjAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyOTIxMEVBQjE0NENBQ0IyMDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0
eVVJRWxlbWVudE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW07IHBhdGggPSBtYWMvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjkyMTBFQUIxNDRD
QUNCMjAwODM1QkI2IC8qIEFjY2Vzc2liaWxpdHlDb21tb25NYWMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tOyBwYXRo
ID0gbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTI5MjEwRUIxMTQ0Q0FDRDQwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5MjEwRUIyMTQ0
Q0FDRDQwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyOTIxMEVCMzE0NENBQ0Q0MDA4MzVCQjUgLyogQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5h
bWUgPSBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbTsgcGF0aCA9IG1hYy9BY2Nlc3NpYmls
aXR5VGV4dE1hcmtlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMwNyw2
ICszMDksNyBAQAogCQkJCTI5MjEwRUE5MTQ0Q0FDQjIwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50LmNwcCAqLywKIAkJCQkyOTIxMEVBQTE0NENBQ0IyMDA4MzVCQjUgLyogQWNjZXNz
aWJpbGl0eVVJRWxlbWVudC5oICovLAogCQkJCTI5MjEwRUFCMTQ0Q0FDQjIwMDgzNUJCNSAvKiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tICovLAorCQkJCTI5MjEwRUFCMTQ0Q0FDQjIwMDgz
NUJCNiAvKiBBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tICovLAogCQkJCTI5MjEwRUIxMTQ0Q0FD
RDQwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAgKi8sCiAJCQkJMjkyMTBF
QjIxNDRDQUNENDAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmggKi8sCiAJCQkJ
MjkyMTBFQjMxNDRDQUNENDAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1t
ICovLApAQCAtNjA2LDYgKzYwOSw3IEBACiAJCQkJMjkyMTBFQjQxNDRDQUNENTAwODM1QkI1IC8q
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI5MjEwRUI1
MTQ0Q0FDRDUwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTI5MjEwRURBMTQ0Q0MzRUEwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50TWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMjkyMTBFREExNDRDQzNFQTAwODM1QkI2
IC8qIEFjY2Vzc2liaWxpdHlDb21tb25NYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkyOTIxMEVE
QjE0NENENDc5MDA4MzVCQjUgLyogSlNBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyOTIxMEVFMTE0NENEQjI2MDA4MzVCQjUgLyogSlNBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI5QThGQ0NCMTQ1RUYwMkUwMDkwNDVB
NiAvKiBKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGI1ZGRhZWE2Mzg4MWEyMTg3OTJjYzkyZWI5OTAyZDI3OWMyNjE4OWMuLjBjNjQzYjBhZjk3NWY1
NTNmYjcwYTZmNjRjNDA5YmRiZmUxNTM2OTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0w
OS0yMSAgRG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KKworICAgICAgICBB
WDogTGF5b3V0IHRlc3RzIHdvdWxkIGJlIGVhc2llciB0byB3cml0ZSBpZiBBY2Nlc3NpYmlsaXR5
Q29udHJvbGxlciBjb3VsZCBmaW5kIGFuIGVsZW1lbnQgYnkgaWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3MzAxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQ2hyaXMgRmxlaXphY2guCisKKyAgICAgICAgTW9kaWZpZXMgYW4gZXhpc3RpbmcgdGVzdCB0
byB1c2UgdGhlIG5ldyBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQKKyAgICAgICAgbWV0aG9kIG9mIEFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLCBlbmFibGluZyB0aGUgdGVzdCB0byBwYXNzIG9uCisgICAg
ICAgIGJvdGggTWFjIGFuZCBDaHJvbWl1bS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXJp
YS1oaWRkZW4td2l0aC1lbGVtZW50cy5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVt
L1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTItMDktMjIgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9z
c3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIFVucmV2aWV3ZWQgd2Vla2VuZCBnYXJkZW5p
bmcsIHVuc2tpcCBub3cgcGFzc2luZyB0ZXN0cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvYXJpYS1oaWRkZW4td2l0aC1lbGVtZW50cy5odG1sIGIvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9hcmlhLWhpZGRlbi13aXRoLWVsZW1lbnRzLmh0bWwKaW5kZXggM2EzZjhh
N2UzMjJjZTIzZjlhZjZlYTgwYTQyY2JiNTNkYjRlMzQ2OS4uZjlkMWViZDM3MGQ2Y2RlYTg5YWY2
ODA5ODZlZDRiMmQzOTEyMDUxYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9hcmlhLWhpZGRlbi13aXRoLWVsZW1lbnRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9hcmlhLWhpZGRlbi13aXRoLWVsZW1lbnRzLmh0bWwKQEAgLTUsNiArNSw4IEBACiA8
L2hlYWQ+CiA8Ym9keSBpZD0iYm9keSI+CiAKKzxkaXYgaWQ9ImNvbnRhaW5lciIgYXJpYS1sYWJl
bD0iY29udGFpbmVyIj4KKwogPHRhYmxlIGJvcmRlcj0xIHN1bW1hcnk9InRlc3QiIGFyaWEtaGlk
ZGVuPSJ0cnVlIj4KIDx0cj48dGQ+Y2VsbDwvdGQ+PHRkPmNlbGw8L3RkPjx0ZD5jZWxsPC90ZD48
L3RyPgogPHRyPjx0ZD5jZWxsPC90ZD48dGQ+Y2VsbDwvdGQ+PHRkPmNlbGw8L3RkPjwvdHI+CkBA
IC0xOSwxMyArMjEsMTcgQEAKIDxsaT50ZXN0CiA8L3VsPgogCis8ZGl2IGFyaWEtbGFiZWw9Indy
YXBwZXIiPgogPHNlbGVjdCBzaXplPTEwIGFyaWEtaGlkZGVuPSJ0cnVlIj4KIDxvcHRpb24+b3B0
aW9uCiA8b3B0aW9uPm9wdGlvbgogPC9zZWxlY3Q+Cis8L2Rpdj4KIAogPGgxPmhlYWRpbmc8L2gx
PgogCis8L2Rpdj4KKwogPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CiA8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KIApAQCAtMzQsMTQgKzQwLDE0IEBACiAgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVz
dHMgdGhhdCBhcmlhLWhpZGRlbiB3b3JrcyBhcyBleHBlY3RlZCBvbiBlbGVtZW50cyB0aGF0IGFy
ZSBzdWJjbGFzc2VzIG9mIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QiKTsKIAogICAgIGlmICh3
aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKLSAgICAgICB2YXIgcm9vdCA9IGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLnJvb3RFbGVtZW50OworICAgICAgIHZhciBjb250YWluZXIgPSBh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNvbnRhaW5lciIp
OwogCiAgICAgICAgLy8gZmlyc3QgY2hpbGQgaXMgYW4gQVhHcm91cCB0aGF0IGhhcyBubyBjaGls
ZHJlbgotICAgICAgIHZhciBjaGlsZCA9IHJvb3QuY2hpbGRBdEluZGV4KDApLmNoaWxkQXRJbmRl
eCgwKTsKKyAgICAgICB2YXIgY2hpbGQgPSBjb250YWluZXIuY2hpbGRBdEluZGV4KDApOwogICAg
ICAgIHNob3VsZEJlKCJjaGlsZC5jaGlsZHJlbkNvdW50IiwgIjAiKTsKIAogICAgICAgIC8vIFRo
ZSBzZWNvbmQgY2hpbGQgd2UgYXNrIGZvciBmcm9tIHRoZSB3ZWIgYXJlYSBzaG91bGQgYmUgdGhl
IGhlYWRpbmcsIGFuZCB3ZSBzaG91bGQgaGF2ZSBza2lwcGVkIG92ZXIgZXZlcnl0aGluZyBlbHNl
LgotICAgICAgIGNoaWxkID0gcm9vdC5jaGlsZEF0SW5kZXgoMCkuY2hpbGRBdEluZGV4KDEpOwor
ICAgICAgIGNoaWxkID0gY29udGFpbmVyLmNoaWxkQXRJbmRleCgxKTsKICAgICAgICBzaG91bGRC
ZSgiY2hpbGQucm9sZSIsICInQVhSb2xlOiBBWEhlYWRpbmcnIik7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwppbmRleCBiYjVmNzNl
NDhmM2VmODFiMTAxMTNhMmU3NThiNGI2MThmM2YxZmJjLi4zMDc2ZmI5M2NiYmViZGNhNGE4MjZh
Mjc4NzdmZjQ0NDk3NGVmYzhlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTEzNDQsNyArMTM0NCw2IEBAIGNyYnVnLmNvbS8xMDMyMiBh
Y2Nlc3NpYmlsaXR5L2FyaWEtY29tYm9ib3guaHRtbCBbIFNraXAgXQogY3JidWcuY29tLzEwMzIy
IGFjY2Vzc2liaWxpdHkvYXJpYS1jb250cm9scy13aXRoLXRhYnMuaHRtbCBbIFNraXAgXQogY3Ji
dWcuY29tLzEwMzIyIGFjY2Vzc2liaWxpdHkvYXJpYS1mYWxsYmFjay1yb2xlcy5odG1sIFsgU2tp
cCBdCiBjcmJ1Zy5jb20vMTAzMjIgYWNjZXNzaWJpbGl0eS9hcmlhLWhpZGRlbi11cGRhdGUuaHRt
bCBbIFNraXAgXQotY3JidWcuY29tLzEwMzIyIGFjY2Vzc2liaWxpdHkvYXJpYS1oaWRkZW4td2l0
aC1lbGVtZW50cy5odG1sIFsgU2tpcCBdCiBjcmJ1Zy5jb20vMTAzMjIgYWNjZXNzaWJpbGl0eS9h
cmlhLWludmFsaWQuaHRtbCBbIFNraXAgXQogY3JidWcuY29tLzEwMzIyIGFjY2Vzc2liaWxpdHkv
YXJpYS1sYWJlbGxlZGJ5LW92ZXJyaWRlcy1sYWJlbC5odG1sIFsgU2tpcCBdCiBjcmJ1Zy5jb20v
MTAzMjIgYWNjZXNzaWJpbGl0eS9hcmlhLWxpbmstc3VwcG9ydHMtcHJlc3MuaHRtbCBbIFNraXAg
XQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165265</attachid>
            <date>2012-09-22 08:55:47 -0700</date>
            <delta_ts>2012-09-22 09:17:39 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-97301-20120922085620.patch</filename>
            <type>text/plain</type>
            <size>47468</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MzA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWRjNTQ4YjUwMGFiYjYx
NjQzOWEyNzdkNjAwNmYwYmM1NTcxMTA0MS4uMjExNTRhZjYwOWM0ZmM3ZTFkZmM5MDg0YzhmMjY4
ZDU5NGRiZjVjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA5LTIxICBEb21p
bmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFYOiBMYXlvdXQg
dGVzdHMgd291bGQgYmUgZWFzaWVyIHRvIHdyaXRlIGlmIEFjY2Vzc2liaWxpdHlDb250cm9sbGVy
IGNvdWxkIGZpbmQgYW4gZWxlbWVudCBieSBpZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTczMDEKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBG
bGVpemFjaC4KKworICAgICAgICBBZGQgYSBtZXRob2QgdG8gZ2V0IHRoZSBET00gImlkIiBhdHRy
aWJ1dGUgZnJvbSBhbiBhY2Nlc3NpYmxlIG9iamVjdCwgb25seSBmb3IgbGF5b3V0IHRlc3RzLgor
CisgICAgICAgIE1ha2VzIGV4aXN0aW5nIHRlc3QgbW9yZSBjcm9zcy1wbGF0Zm9ybToKKyAgICAg
ICAgVGVzdHM6IGFjY2Vzc2liaWxpdHkvYXJpYS1oaWRkZW4td2l0aC1lbGVtZW50cy5odG1sCisK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ci5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZVZhbHVlOl0pOgorCiAyMDEyLTA5LTIyICBUaGllcnJ5IFJlZGluZyAgPHRo
aWVycnkucmVkaW5nQGF2aW9uaWMtZGVzaWduLmRlPgogCiAgICAgICAgIFtHVEtdIEJ1aWxkIGlz
IGJyb2tlbiB3aXRoIEdMaWIgVW5pY29kZSBiYWNrZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbSBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyLm1tCmluZGV4IDI2YzdhYWUyN2FiYmZlZGU3MDBmY2YxNjNiNDlhYWNlNmI2YjRkYWMu
LmE0Mzk0YmEyMDYwNTc4NDI1NmM1NmQ4NzAwZGYyODM2M2NkMDBjMDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyLm1tCkBAIC0yNDMwLDYgKzI0MzAsMTAgQEAgc3RhdGljIE5TU3Ry
aW5nKiByb2xlVmFsdWVUb05TU3RyaW5nKEFjY2Vzc2liaWxpdHlSb2xlIHZhbHVlKQogICAgICAg
ICAgICAgcmV0dXJuIEAibm9ybWFsIjsKICAgICAgICAgfQogICAgIH0KKworICAgIC8vIFVzZWQg
YnkgRFJUIHRvIGZpbmQgYW4gYWNjZXNzaWJsZSBub2RlIGJ5IGl0cyBlbGVtZW50IGlkLgorICAg
IGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWERSVEVsZW1lbnRJZEF0dHJp
YnV0ZSJdKQorICAgICAgICByZXR1cm4gbV9vYmplY3QtPmdldEF0dHJpYnV0ZShpZEF0dHIpOwog
ICAgIAogICAgIHJldHVybiBuaWw7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggNjkzYTFkOWI5YjhhYTllZjBkNGUwNmZjMWY3YTQ0ZTVlMDE1
NWRlNy4uZGNlMzRhM2Q3NGJjNTJkOGEyNjk5N2JjMWYxNjg1YTAyMmFiYzBhMyAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBA
CisyMDEyLTA5LTIxICBEb21pbmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisg
ICAgICAgIEFYOiBMYXlvdXQgdGVzdHMgd291bGQgYmUgZWFzaWVyIHRvIHdyaXRlIGlmIEFjY2Vz
c2liaWxpdHlDb250cm9sbGVyIGNvdWxkIGZpbmQgYW4gZWxlbWVudCBieSBpZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTczMDEKKworICAgICAgICBS
ZXZpZXdlZCBieSBDaHJpcyBGbGVpemFjaC4KKworICAgICAgICBBZGRzIGEgbmV3IGFjY2Vzc2li
bGVFbGVtZW50QnlJZCBtZXRob2QgdG8gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIsIHRvIG1ha2Ug
aXQKKyAgICAgICAgZWFzaWVyIHRvIHdyaXRlIGNyb3NzLXBsYXRmb3JtIGxheW91dCB0ZXN0cy4K
KworICAgICAgICBJbXBsZW1lbnRlZCBmb3IgQ2hyb21pdW0gYW5kIGZvciBNYWMgKERSVCBhbmQg
V0tUUikuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5jcHA6CisgICAgICAgIChnZXRBY2Nlc3NpYmxlRWxlbWVudEJ5SWRDYWxsYmFjayk6CisgICAg
ICAgIChBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6Z2V0SlNDbGFzcyk6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKEFjY2Vzc2li
aWxpdHlDb250cm9sbGVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJl
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIp
OgorICAgICAgICAoQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmZpbmRBY2Nlc3NpYmxlRWxlbWVu
dEJ5SWRSZWN1cnNpdmUpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmdldEFj
Y2Vzc2libGVFbGVtZW50QnlJZCk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6
YWNjZXNzaWJsZUVsZW1lbnRCeUlkR2V0dGVyQ2FsbGJhY2spOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJDaHJvbWl1
bS5oOgorICAgICAgICAoQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2d0ay9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckd0ay5jcHA6CisgICAgICAgIChB
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6YWNjZXNzaWJsZUVsZW1lbnRCeUlkKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5oOiBhZGRlZAorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tOiBhZGRl
ZAorICAgICAgICAoK1tOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6XSk6CisgICAgICAg
ICgtW05TU3RyaW5nIGNyZWF0ZUpTU3RyaW5nUmVmXSk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvbWFjL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoZmluZEFjY2Vz
c2libGVPYmplY3RCeUlkKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjphY2Nl
c3NpYmxlRWxlbWVudEJ5SWQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50TWFjLm1tOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9BY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcldpbi5jcHA6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcjo6YWNjZXNzaWJsZUVsZW1lbnRCeUlkKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFjY2Vzc2libGVFbGVtZW50QnlJZCk6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5oOgorICAgICAgICAoQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFj
L0FjY2Vzc2liaWxpdHlDb21tb25NYWMuaDogYWRkZWQKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tOiBhZGRlZAor
ICAgICAgICAoK1tOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6XSk6CisgICAgICAgICgt
W05TU3RyaW5nIGNyZWF0ZUpTU3RyaW5nUmVmXSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJNYWMubW06CisgICAg
ICAgIChXVFI6OmZpbmRBY2Nlc3NpYmxlT2JqZWN0QnlJZCk6CisgICAgICAgIChXVFIpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6YWNjZXNzaWJsZUVsZW1lbnRCeUlk
KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50TWFjLm1tOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvV2ViS2l0
VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDEyLTA5LTIyICBaYW4g
RG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CiAKICAgICAgICAgVW5leHBlY3RlZCBy
ZWZ0ZXN0IHBhc3NlcyBhcmUgb25seSByZXBvcnRlZCB3aGVuIHBpeGVsIHRlc3RpbmcgaXMgZW5h
YmxlZApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
Y3BwCmluZGV4IGIzNjdkNWM0NjlkOWJhOThkMjU1YzhlZGZlZTZmOTU4OTM1YzNiNWYuLjQ5ZDQ1
M2E4NGNkZWJjZGI4YTMyMjZiZmQ5MmNjODExODI0YTY1NzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAKQEAgLTk3LDYgKzk3LDE4IEBA
IHN0YXRpYyBKU1ZhbHVlUmVmIGdldEVsZW1lbnRBdFBvaW50Q2FsbGJhY2soSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1CiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6Om1ha2VKU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQoY29udGV4dCwgY29udHJvbGxlci0+ZWxl
bWVudEF0UG9pbnQoeCwgeSkpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBnZXRBY2Nlc3NpYmxl
RWxlbWVudEJ5SWRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVu
Y3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25z
dCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAg
SlNTdHJpbmdSZWYgaWRBdHRyaWJ1dGUgPSAwOworICAgIGlmIChhcmd1bWVudENvdW50ID09IDEp
CisgICAgICAgIGlkQXR0cmlidXRlID0gSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBhcmd1
bWVudHNbMF0sIGV4Y2VwdGlvbik7ICAgIAorICAgIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyKiBj
b250cm9sbGVyID0gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIqPihKU09iamVj
dEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6bWFrZUpTQWNjZXNzaWJpbGl0eVVJRWxlbWVudChjb250ZXh0LCBj
b250cm9sbGVyLT5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoaWRBdHRyaWJ1dGUpKTsKKyAgICBpZiAo
aWRBdHRyaWJ1dGUpCisgICAgICAgIEpTU3RyaW5nUmVsZWFzZShpZEF0dHJpYnV0ZSk7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgYWRkTm90aWZpY2F0aW9uTGlz
dGVuZXJDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24s
IEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1Zh
bHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgaWYgKGFy
Z3VtZW50Q291bnQgIT0gMSkKQEAgLTEyMyw2ICsxMzUsNyBAQCBKU0NsYXNzUmVmIEFjY2Vzc2li
aWxpdHlDb250cm9sbGVyOjpnZXRKU0NsYXNzKCkKICAgICAgICAgeyAibG9nU2Nyb2xsaW5nU3Rh
cnRFdmVudHMiLCBsb2dTY3JvbGxpbmdTdGFydEV2ZW50c0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAg
ICAgIHsgImxvZ0FjY2Vzc2liaWxpdHlFdmVudHMiLCBsb2dBY2Nlc3NpYmlsaXR5RXZlbnRzQ2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiZWxlbWVudEF0UG9pbnQiLCBnZXRFbGVtZW50QXRQ
b2ludENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgImFjY2Vzc2libGVFbGVtZW50QnlJZCIs
IGdldEFjY2Vzc2libGVFbGVtZW50QnlJZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImFk
ZE5vdGlmaWNhdGlvbkxpc3RlbmVyIiwgYWRkTm90aWZpY2F0aW9uTGlzdGVuZXJDYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LAogICAgICAgICB7ICJyZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lciIsIHJlbW92ZU5v
dGlmaWNhdGlvbkxpc3RlbmVyQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAwLCAwLCAwIH0K
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oCmluZGV4
IDFkNTIzNTNjZDZjYTc3NDAxN2JhMDRhNWY3MGFhZmMyZjUzNjI0M2MuLmE2Y2RjNDY4NmMxMzJm
ZjU4NmQ1ODJmZTUxYTA3NjhlZTcyYzAxMDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaApAQCAtNDYsNiArNDYsNyBAQCBwdWJsaWM6CiAgICAg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudCByb290RWxlbWVudCgpOwogICAgIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQgZm9jdXNlZEVsZW1lbnQoKTsKICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IGVs
ZW1lbnRBdFBvaW50KGludCB4LCBpbnQgeSk7CisgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBh
Y2Nlc3NpYmxlRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWQpOwogCiAgICAgdm9pZCBzZXRMb2dG
b2N1c0V2ZW50cyhib29sKTsKICAgICB2b2lkIHNldExvZ1ZhbHVlQ2hhbmdlRXZlbnRzKGJvb2wp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTViNmVmMjkwOTUxNDdjZjEwYTY4MWRi
YjAxYWIxNTI0YWJjZTlhOC4uMGM2YjgwNDllYThkODc1NDM2NzlhNDRiNzUyOTZlNDNlYTgxYWQ1
ZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVy
VHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTYsNiArMTE2LDggQEAKIAkJQkMw
RTI0RTAwRTJEOTQ1MTAwMUI2QkMyIC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMEUyNERFMEUyRDk0NTEw
MDFCNkJDMiAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmggKi87IH07CiAJCUJDMEUyNEUxMEUy
RDk0NTEwMDFCNkJDMiAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMEUyNERGMEUyRDk0NTEwMDFCNkJD
MiAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCAqLzsgfTsKIAkJQkMwRTI2MTUwRTJEQTRD
NjAwMUI2QkMyIC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzBFMjYxNDBFMkRBNEM2MDAxQjZCQzIg
LyogQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSAqLzsgfTsKKwkJQkMwRTI0RTAwRTJEOTQ1
MTAwMUI2QkMzIC8qIEFjY2Vzc2liaWxpdHlDb21tb25NYWMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMEUyNERFMEUyRDk0NTEwMDFCNkJDMyAvKiBB
Y2Nlc3NpYmlsaXR5Q29tbW9uTWFjLmggKi87IH07CisJCUJDMEUyNjE1MEUyREE0QzYwMDFCNkJD
MyAvKiBBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwRTI2MTQwRTJEQTRDNjAwMUI2QkMzIC8qIEFjY2Vzc2li
aWxpdHlDb21tb25NYWMubW0gKi87IH07CiAJCUJDNDc0MTJBMEQwMzhBNEMwMDcyQjAwNiAvKiBK
YXZhU2NyaXB0VGhyZWFkaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzQ3NDEyOTBEMDM4QTRDMDA3MkIwMDYgLyogSmF2YVNjcmlwdFRocmVhZGlu
Zy5oICovOyB9OwogCQlCQzQ3NDE0MTBEMDM4QTU3MDA3MkIwMDYgLyogSmF2YVNjcmlwdFRocmVh
ZGluZ1B0aHJlYWRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDNDc0MTQwMEQwMzhBNTcwMDcyQjAwNiAvKiBKYXZhU2NyaXB0VGhyZWFkaW5nUHRo
cmVhZHMuY3BwICovOyB9OwogCQlCQzlEOTAyNDBDOTc0NzJFMDA5OUE0QTMgLyogV29ya1F1ZXVl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOUQ5
MDIxMEM5NzQ3MkQwMDk5QTRBMyAvKiBXb3JrUXVldWUuY3BwICovOyB9OwpAQCAtMzIzLDggKzMy
NSwxMCBAQAogCQlCQzAxMzFEODBDOTc3MjAxMDA4NzMxN0QgLyogVGVzdFJ1bm5lci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGVzdFJ1bm5lci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMDEzMUQ5MEM5NzcyMDEwMDg3MzE3RCAvKiBUZXN0
UnVubmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXN0UnVubmVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMEUyNERFMEUyRDk0NTEwMDFCNkJDMiAv
KiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQkMwRTI0REUwRTJEOTQ1MTAwMUI2QkMzIC8qIEFjY2Vzc2liaWxpdHlDb21tb25NYWMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gbWFjL0FjY2Vzc2liaWxpdHlDb21tb25N
YWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMwRTI0REYwRTJEOTQ1MTAwMUI2
QkMyIC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUJDMEUyNjE0MEUyREE0QzYwMDFCNkJDMiAvKiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbTsgcGF0aCA9IG1hYy9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzBFMjYxNDBFMkRB
NEM2MDAxQjZCQzMgLyogQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEFjY2Vzc2liaWxpdHlDb21tb25NYWMubW07IHBhdGgg
PSBtYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkM0NzQxMjkwRDAzOEE0QzAwNzJCMDA2IC8qIEphdmFTY3JpcHRUaHJlYWRpbmcuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSmF2YVNjcmlwdFRocmVhZGluZy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzQ3NDE0MDBEMDM4QTU3MDA3MkIwMDYgLyog
SmF2YVNjcmlwdFRocmVhZGluZ1B0aHJlYWRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IEphdmFTY3JpcHRUaHJlYWRpbmdQdGhyZWFkcy5jcHA7IHBhdGggPSBwdGhy
ZWFkcy9KYXZhU2NyaXB0VGhyZWFkaW5nUHRocmVhZHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQzY0NkE0QjEzNjkwNURFMDBCMzVERUQgLyogQ29tcGlsZXJWZXJzaW9uLnhj
Y29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgbmFtZSA9IENvbXBpbGVyVmVyc2lvbi54
Y2NvbmZpZzsgcGF0aCA9IG1hYy9Db25maWd1cmF0aW9ucy9Db21waWxlclZlcnNpb24ueGNjb25m
aWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MDMsNiArNTA3LDggQEAKIAkJCQlC
QzBFMjRERjBFMkQ5NDUxMDAxQjZCQzIgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAgKi8s
CiAJCQkJQkMwRTI0REUwRTJEOTQ1MTAwMUI2QkMyIC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQu
aCAqLywKIAkJCQlCQzBFMjYxNDBFMkRBNEM2MDAxQjZCQzIgLyogQWNjZXNzaWJpbGl0eVVJRWxl
bWVudE1hYy5tbSAqLywKKwkJCQlCQzBFMjYxNDBFMkRBNEM2MDAxQjZCQzMgLyogQWNjZXNzaWJp
bGl0eUNvbW1vbk1hYy5oICovLAorCQkJCUJDMEUyNjE0MEUyREE0QzYwMDFCNkJDMyAvKiBBY2Nl
c3NpYmlsaXR5Q29tbW9uTWFjLm1tICovLAogCQkJCUJDQTE4QjM2MEM5QjAyMTkwMDExNDM2OSAv
KiBBcHBsZVNjcmlwdENvbnRyb2xsZXIuaCAqLywKIAkJCQlCQ0ExOEIzNzBDOUIwMjE5MDAxMTQz
NjkgLyogQXBwbGVTY3JpcHRDb250cm9sbGVyLm0gKi8sCiAJCQkJQkNBMThCNkIwQzlCMDhEQjAw
MTE0MzY5IC8qIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaCAqLywKQEAgLTk0OCw2ICs5NTQsNyBA
QAogCQkJCUJDRDA4QjcxMEUxMDU5RDIwMEE3RDBDMSAvKiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDMEUyNEUxMEUyRDk0NTEwMDFCNkJDMiAvKiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMEUyNjE1MEUy
REE0QzYwMDFCNkJDMiAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJQkMwRTI2MTUwRTJEQTRDNjAwMUI2QkMzIC8qIEFjY2Vzc2liaWxpdHlDb21tb25N
YWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0ExOEIzOTBDOUIwMjE5MDAxMTQzNjkgLyogQXBw
bGVTY3JpcHRDb250cm9sbGVyLm0gaW4gU291cmNlcyAqLywKIAkJCQlBOEI5MUJGRDBDRjUyMkI0
MDA4RjkxRkYgLyogQ2hlY2tlZE1hbGxvYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1M0NCQjgz
MjEzNEU0MkYzMDAxQ0U2QTQgLyogQ3ljbGljUmVkdW5kYW5jeUNoZWNrLmNwcCBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckNocm9taXVtLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJDaHJvbWl1bS5j
cHAKaW5kZXggYjFkMjk0OGFlYmFiMzI5ODI0OTI3NTQ1ODI0NTgzMDczMTRiY2RlZC4uODlkNWQ1
ODc3MGM2MWQxYWFlOTE2MGJhMzRlNDM2NzY1MTZiMDdjMiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckNo
cm9taXVtLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L0FjY2Vzc2liaWxpdHlDb250cm9sbGVyQ2hyb21pdW0uY3BwCkBAIC0zMiw5ICszMiwxMSBAQAog
I2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlDb250cm9sbGVyQ2hyb21pdW0uaCIKIAogI2luY2x1ZGUg
IldlYkFjY2Vzc2liaWxpdHlPYmplY3QuaCIKKyNpbmNsdWRlICJXZWJFbGVtZW50LmgiCiAjaW5j
bHVkZSAiV2ViRnJhbWUuaCIKKyNpbmNsdWRlICJXZWJOb2RlLmgiCiAjaW5jbHVkZSAiV2ViVmll
dy5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgorI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYkNTdHJpbmcuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIApAQCAtNDksNiArNTEs
OCBAQCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoKQog
ICAgIGJpbmRQcm9wZXJ0eSgiZm9jdXNlZEVsZW1lbnQiLCAmQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXI6OmZvY3VzZWRFbGVtZW50R2V0dGVyQ2FsbGJhY2spOwogICAgIGJpbmRQcm9wZXJ0eSgicm9v
dEVsZW1lbnQiLCAmQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnJvb3RFbGVtZW50R2V0dGVyQ2Fs
bGJhY2spOwogCisgICAgYmluZE1ldGhvZCgiYWNjZXNzaWJsZUVsZW1lbnRCeUlkIiwgJkFjY2Vz
c2liaWxpdHlDb250cm9sbGVyOjphY2Nlc3NpYmxlRWxlbWVudEJ5SWRHZXR0ZXJDYWxsYmFjayk7
CisKICAgICBiaW5kRmFsbGJhY2tNZXRob2QoJkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpmYWxs
YmFja0NhbGxiYWNrKTsKIH0KIApAQCAtODYsNiArOTAsMzYgQEAgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudCogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmdldFJvb3RFbGVtZW50KCkKICAgICByZXR1
cm4gbV9lbGVtZW50cy5jcmVhdGVSb290KG1fcm9vdEVsZW1lbnQpOwogfQogCitBY2Nlc3NpYmls
aXR5VUlFbGVtZW50KiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6ZmluZEFjY2Vzc2libGVFbGVt
ZW50QnlJZFJlY3Vyc2l2ZShjb25zdCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmosIGNvbnN0
IFdlYlN0cmluZyYgaWQpCit7CisgICAgaWYgKG9iai5pc051bGwoKSB8fCBvYmouaXNEZXRhY2hl
ZCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFdlYk5vZGUgbm9kZSA9IG9iai5ub2RlKCk7
CisgICAgaWYgKCFub2RlLmlzTnVsbCgpICYmIG5vZGUuaXNFbGVtZW50Tm9kZSgpKSB7CisgICAg
ICAgIFdlYkVsZW1lbnQgZWxlbWVudCA9IG5vZGUudG88V2ViRWxlbWVudD4oKTsKKyAgICAgICAg
ZWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIik7CisgICAgICAgIGlmIChlbGVtZW50LmdldEF0dHJp
YnV0ZSgiaWQiKSA9PSBpZCkgCisgICAgICAgICAgICByZXR1cm4gbV9lbGVtZW50cy5nZXRPckNy
ZWF0ZShvYmopOworICAgIH0KKworICAgIHVuc2lnbmVkIGNoaWxkQ291bnQgPSBvYmouY2hpbGRD
b3VudCgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjaGlsZENvdW50OyBpKyspIHsK
KyAgICAgICAgaWYgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIHJlc3VsdCA9IGZpbmRBY2Nlc3Np
YmxlRWxlbWVudEJ5SWRSZWN1cnNpdmUob2JqLmNoaWxkQXQoaSksIGlkKSkKKyAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnQqIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpnZXRBY2Nlc3NpYmxlRWxlbWVu
dEJ5SWQoY29uc3Qgc3RkOjpzdHJpbmcmIGlkKQoreworICAgIGlmIChtX3Jvb3RFbGVtZW50Lmlz
TnVsbCgpKQorICAgICAgICBtX3Jvb3RFbGVtZW50ID0gbV93ZWJWaWV3LT5hY2Nlc3NpYmlsaXR5
T2JqZWN0KCk7CisKKyAgICByZXR1cm4gZmluZEFjY2Vzc2libGVFbGVtZW50QnlJZFJlY3Vyc2l2
ZShtX3Jvb3RFbGVtZW50LCBXZWJTdHJpbmc6OmZyb21VVEY4KGlkLmNfc3RyKCkpKTsKK30KKwog
Ym9vbCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6c2hvdWxkTG9nQWNjZXNzaWJpbGl0eUV2ZW50
cygpCiB7CiAgICAgcmV0dXJuIG1fbG9nQWNjZXNzaWJpbGl0eUV2ZW50czsKQEAgLTE0MSw2ICsx
NzUsMjEgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cm9vdEVsZW1lbnRHZXR0ZXJD
YWxsYmFjayhDcHBWYXJpYW50KiByZXN1bHQpCiAgICAgcmVzdWx0LT5zZXQoKihnZXRSb290RWxl
bWVudCgpLT5nZXRBc0NwcFZhcmlhbnQoKSkpOwogfQogCit2b2lkIEFjY2Vzc2liaWxpdHlDb250
cm9sbGVyOjphY2Nlc3NpYmxlRWxlbWVudEJ5SWRHZXR0ZXJDYWxsYmFjayhjb25zdCBDcHBBcmd1
bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIHJlc3VsdC0+
c2V0TnVsbCgpOworCisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPCAxIHx8ICFhcmd1bWVudHNb
MF0uaXNTdHJpbmcoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3RkOjpzdHJpbmcgaWQgPSBh
cmd1bWVudHNbMF0udG9TdHJpbmcoKTsKKyAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBmb3Vu
ZEVsZW1lbnQgPSBnZXRBY2Nlc3NpYmxlRWxlbWVudEJ5SWQoaWQpOworICAgIGlmICghZm91bmRF
bGVtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICByZXN1bHQtPnNldCgqKGZvdW5kRWxlbWVu
dC0+Z2V0QXNDcHBWYXJpYW50KCkpKTsKK30KKwogdm9pZCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cjo6ZmFsbGJhY2tDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KiBy
ZXN1bHQpCiB7CiAgICAgcHJpbnRmKCJDT05TT0xFIE1FU1NBR0U6IEphdmFTY3JpcHQgRVJST1I6
IHVua25vd24gbWV0aG9kIGNhbGxlZCBvbiAiCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyQ2hyb21pdW0u
aCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvQWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXJDaHJvbWl1bS5oCmluZGV4IDExYzA4MmIzZTgwOGMxZjYzMGViODUxODRlNmU4
ZmIzZTgxNmY0OTguLmYwZjVkZWU4NTYyZDk1NDFmMDBjZjEwMjRkODZjZjY2MWM2MzdkMTAgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXJDaHJvbWl1bS5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJDaHJvbWl1bS5oCkBAIC01
MSw2ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEZvY3VzZWRFbGVtZW50KGNvbnN0IFdl
YktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdCYpOwogICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQqIGdldEZvY3VzZWRFbGVtZW50KCk7CiAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogZ2V0
Um9vdEVsZW1lbnQoKTsKKyAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBnZXRBY2Nlc3NpYmxl
RWxlbWVudEJ5SWQoY29uc3Qgc3RkOjpzdHJpbmcmIGlkKTsKIAogICAgIGJvb2wgc2hvdWxkTG9n
QWNjZXNzaWJpbGl0eUV2ZW50cygpOwogCkBAIC03MCw2ICs3MSw5IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIGZvY3VzZWRFbGVtZW50R2V0dGVyQ2FsbGJhY2soQ3BwVmFyaWFudCopOwogICAgIHZv
aWQgcm9vdEVsZW1lbnRHZXR0ZXJDYWxsYmFjayhDcHBWYXJpYW50Kik7CisgICAgdm9pZCBhY2Nl
c3NpYmxlRWxlbWVudEJ5SWRHZXR0ZXJDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBD
cHBWYXJpYW50Kik7CisKKyAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBmaW5kQWNjZXNzaWJs
ZUVsZW1lbnRCeUlkUmVjdXJzaXZlKGNvbnN0IFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVj
dCYsIGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBpZCk7CiAKICAgICBXZWJLaXQ6OldlYkFjY2Vz
c2liaWxpdHlPYmplY3QgbV9mb2N1c2VkRWxlbWVudDsKICAgICBXZWJLaXQ6OldlYkFjY2Vzc2li
aWxpdHlPYmplY3QgbV9yb290RWxlbWVudDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2d0ay9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckd0ay5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9ndGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJHdGsuY3BwCmluZGV4IGNlZWI4ZGZjYmZm
YTM5ZjUzNWEzOWIwZGRjYmVjYjJjYTM2MjU5YjAuLjQ2NjE4MmJiMzA1YTY2NzYwODA2YmVmODQ4
ZDk0Yzc2MjJmODc1Y2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9BY2Nl
c3NpYmlsaXR5Q29udHJvbGxlckd0ay5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3Rr
L0FjY2Vzc2liaWxpdHlDb250cm9sbGVyR3RrLmNwcApAQCAtNzAsNiArNzAsMTIgQEAgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cm9vdEVsZW1lbnQoKQog
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KGFjY2Vzc2libGUpOwogfQogCitBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjphY2Nlc3NpYmxlRWxl
bWVudEJ5SWQoSlNTdHJpbmdSZWYgaWQpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAg
IHJldHVybiAwOworfQorCiB2b2lkIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpzZXRMb2dGb2N1
c0V2ZW50cyhib29sKQogewogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0FjY2Vzc2liaWxpdHlDb21tb25NYWMuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nl
c3NpYmlsaXR5Q29tbW9uTWFjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzhiOTEyNTdmNDY4Nzc0OTc5NTBhOTM0
MWEyNjkxZmU5ODU3NGE1MwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQWNj
ZXNzaWJpbGl0eUNvbW1vbk1hY19oCisjZGVmaW5lIEFjY2Vzc2liaWxpdHlDb21tb25NYWNfaAor
CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZi5oPgorCisvLyBJZiBhbiB1bnN1
cHBvcnRlZCBhdHRyaWJ1dGUgaXMgcGFzc2VkIGluLCBpdCB3aWxsIHJhaXNlIGFuIGFjY2Vzc2li
aWxpdHkgZXhjZXB0aW9uLiBUaGVzZSBhcmUgdXN1YWxseSBjYXVnaHQgYnkgdGhlIEFjY2Vzc2li
aWxpdHkgUnVudGltZSB0byBpbmZvcm0KKy8vIHRoZSBBWCBjbGllbnQgYXBwIG9mIHRoZSBlcnJv
ci4gSG93ZXZlciwgRFJUIGlzIHRoZSBBWCBjbGllbnQgYXBwLCBzbyBpdCBtdXN0IGNhdGNoIHRo
ZXNlIGV4Y2VwdGlvbnMuCisjZGVmaW5lIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUyBAdHJ5IHsK
KyNkZWZpbmUgRU5EX0FYX09CSkNfRVhDRVBUSU9OUyB9IEBjYXRjaChOU0V4Y2VwdGlvbiAqZSkg
eyBpZiAoIVtbZSBuYW1lXSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5RXhjZXB0aW9u
XSkgQHRocm93OyB9CisKKworQGludGVyZmFjZSBOU1N0cmluZyAoSlNTdHJpbmdSZWZBZGRpdGlv
bnMpCisrIChOU1N0cmluZyAqKXN0cmluZ1dpdGhKU1N0cmluZ1JlZjooSlNTdHJpbmdSZWYpanNT
dHJpbmdSZWY7CistIChKU1N0cmluZ1JlZiljcmVhdGVKU1N0cmluZ1JlZjsKK0BlbmQKKworI2Vu
ZGlmIC8vIEFjY2Vzc2liaWxpdHlDb21tb25NYWNfaApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMubW0gYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wODJjMGYwY2M4
NmMzZTg0ODVkZmZhZmIwMDQzZDM2MmQxZmNlNWJlCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMubW0KQEAgLTAsMCArMSw1
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5o
IgorCisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZkNGLmg+CisKK0BpbXBsZW1l
bnRhdGlvbiBOU1N0cmluZyAoSlNTdHJpbmdSZWZBZGRpdGlvbnMpCisKKysgKE5TU3RyaW5nICop
c3RyaW5nV2l0aEpTU3RyaW5nUmVmOihKU1N0cmluZ1JlZilqc1N0cmluZ1JlZgoreworICAgIGlm
ICghanNTdHJpbmdSZWYpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBDRlN0cmluZ1JlZiBj
ZlN0cmluZyA9IEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGpzU3Ry
aW5nUmVmKTsKKyAgICByZXR1cm4gWyhOU1N0cmluZyAqKWNmU3RyaW5nIGF1dG9yZWxlYXNlXTsK
K30KKworLSAoSlNTdHJpbmdSZWYpY3JlYXRlSlNTdHJpbmdSZWYKK3sKKyAgICByZXR1cm4gSlNT
dHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKXNlbGYpOworfQorCitAZW5kCmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXJNYWMubW0KaW5kZXggNmZjMGRkMDU2NTc5NGVmODQ2NTYyNjg4MjcwNjJhNWRmZTBlNWIyNi4u
NmUwMjEzMjQxMmI1ZDllZTk5ZmEwM2NlZTQyM2RkZWI1NWM0NGY1ZCAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1tCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlck1hYy5tbQpA
QCAtMjcsMTAgKzI3LDEzIEBACiAjaW1wb3J0ICJEdW1wUmVuZGVyVHJlZS5oIgogI2ltcG9ydCAi
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCIKIAorI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUNvbW1v
bk1hYy5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIuaCIKICNp
bXBvcnQgIkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCIKICNpbXBvcnQgPEFwcEtpdC9OU0NvbG9y
Lmg+CiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPEphdmFTY3Jp
cHRDb3JlL0pTU3RyaW5nUmVmLmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1Jl
ZkNGLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViRnJhbWUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJG
cmFtZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJIVE1MVmlldy5oPgpAQCAtNjgsNiAr
NzEsMzYgQEAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6
cm9vdEVsZW1lbnQoKQogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KGFjY2Vzc2li
aWxpdHlPYmplY3QpOwogfQogCitzdGF0aWMgaWQgZmluZEFjY2Vzc2libGVPYmplY3RCeUlkKGlk
IG9iaiwgTlNTdHJpbmcgKmlkQXR0cmlidXRlKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBU
SU9OUworICAgIGlkIG9iaklkQXR0cmlidXRlID0gW29iaiBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6QCJBWERSVEVsZW1lbnRJZEF0dHJpYnV0ZSJdOworICAgIGlmIChbb2JqSWRBdHRyaWJ1
dGUgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSAmJiBbb2JqSWRBdHRyaWJ1dGUgaXNF
cXVhbFRvU3RyaW5nOmlkQXR0cmlidXRlXSkKKyAgICAgICAgcmV0dXJuIG9iajsKKyAgICBFTkRf
QVhfT0JKQ19FWENFUFRJT05TCisKKyAgICBOU0FycmF5ICpjaGlsZHJlbiA9IFtvYmogYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXTsK
KyAgICBOU1VJbnRlZ2VyIGNoaWxkcmVuQ291bnQgPSBbY2hpbGRyZW4gY291bnRdOworICAgIGZv
ciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGNoaWxkcmVuQ291bnQ7ICsraSkgeworICAgICAgICBp
ZCByZXN1bHQgPSBmaW5kQWNjZXNzaWJsZU9iamVjdEJ5SWQoW2NoaWxkcmVuIG9iamVjdEF0SW5k
ZXg6aV0sIGlkQXR0cmlidXRlKTsKKyAgICAgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnQgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFjY2Vzc2libGVFbGVtZW50QnlJZChK
U1N0cmluZ1JlZiBpZEF0dHJpYnV0ZVJlZikKK3sKKyAgICBOU1N0cmluZyAqaWRBdHRyaWJ1dGUg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOmlkQXR0cmlidXRlUmVmXTsKKyAgICBp
ZCByb290ID0gW1ttYWluRnJhbWUgYWNjZXNzaWJpbGl0eVJvb3RdIGFjY2Vzc2liaWxpdHlBdHRy
aWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlQYXJlbnRBdHRyaWJ1dGVdOworICAgIGlkIHJlc3Vs
dCA9IGZpbmRBY2Nlc3NpYmxlT2JqZWN0QnlJZChyb290LCBpZEF0dHJpYnV0ZSk7CisgICAgaWYg
KHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQocmVzdWx0KTsK
KworICAgIHJldHVybiAwOworfQorCiB2b2lkIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpzZXRM
b2dGb2N1c0V2ZW50cyhib29sKQogewogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQppbmRleCA1YWJkNTI3MDAxN2VhMjNl
MmI2MDUyY2UwYmNhNWEyNjM3MmI4ODUxLi5jZDFjOTJkMTI0ZjczMTY0YjAzZDgwZjIzNmU4ZTAx
OTZjNzhiMjJhIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudE1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudE1hYy5tbQpAQCAtMjUsNiArMjUsNyBAQAogCiAjaW1wb3J0ICJjb25m
aWcuaCIKICNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlLmgiCisjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5
Q29tbW9uTWFjLmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5o
IgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oIgogCkBAIC01MSwxMiArNTIsNiBA
QAogI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlEcm9wRWZmZWN0c0F0dHJpYnV0ZSBAIkFYRHJvcEVm
ZmVjdHMiCiAjZW5kaWYKIAotLy8gSWYgYW4gdW5zdXBwb3J0ZWQgYXR0cmlidXRlIGlzIHBhc3Nl
ZCBpbiwgaXQgd2lsbCByYWlzZSBhbiBhY2Nlc3NpYmlsaXR5IGV4Y2VwdGlvbi4gVGhlc2UgYXJl
IHVzdWFsbHkgY2F1Z2h0IGJ5IHRoZSBBY2Nlc3NpYmlsaXR5IFJ1bnRpbWUgdG8gaW5mb3JtCi0v
LyB0aGUgQVggY2xpZW50IGFwcCBvZiB0aGUgZXJyb3IuIEhvd2V2ZXIsIERSVCBpcyB0aGUgQVgg
Y2xpZW50IGFwcCwgc28gaXQgbXVzdCBjYXRjaCB0aGVzZSBleGNlcHRpb25zLgotI2RlZmluZSBC
RUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMgQHRyeSB7Ci0jZGVmaW5lIEVORF9BWF9PQkpDX0VYQ0VQ
VElPTlMgfSBAY2F0Y2goTlNFeGNlcHRpb24gKmUpIHsgaWYgKCFbW2UgbmFtZV0gaXNFcXVhbFRv
U3RyaW5nOk5TQWNjZXNzaWJpbGl0eUV4Y2VwdGlvbl0pIEB0aHJvdzsgfQotCi0KIHR5cGVkZWYg
dm9pZCAoKkFYUG9zdGVkTm90aWZpY2F0aW9uQ2FsbGJhY2spKGlkIGVsZW1lbnQsIE5TU3RyaW5n
KiBub3RpZmljYXRpb24sIHZvaWQqIGNvbnRleHQpOwogCiBAaW50ZXJmYWNlIE5TT2JqZWN0IChX
ZWJLaXRBY2Nlc3NpYmlsaXR5QWRkaXRpb25zKQpAQCAtNjUsMjkgKzYwLDYgQEAgdHlwZWRlZiB2
b2lkICgqQVhQb3N0ZWROb3RpZmljYXRpb25DYWxsYmFjaykoaWQgZWxlbWVudCwgTlNTdHJpbmcq
IG5vdGlmaWNhdGlvbiwKIC0gKE5TVUludGVnZXIpYWNjZXNzaWJpbGl0eUFycmF5QXR0cmlidXRl
Q291bnQ6KE5TU3RyaW5nICopYXR0cmlidXRlOwogQGVuZAogCi1AaW50ZXJmYWNlIE5TU3RyaW5n
IChKU1N0cmluZ1JlZkFkZGl0aW9ucykKLSsgKE5TU3RyaW5nICopc3RyaW5nV2l0aEpTU3RyaW5n
UmVmOihKU1N0cmluZ1JlZilqc1N0cmluZ1JlZjsKLS0gKEpTU3RyaW5nUmVmKWNyZWF0ZUpTU3Ry
aW5nUmVmOwotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gTlNTdHJpbmcgKEpTU3RyaW5nUmVmQWRk
aXRpb25zKQotCi0rIChOU1N0cmluZyAqKXN0cmluZ1dpdGhKU1N0cmluZ1JlZjooSlNTdHJpbmdS
ZWYpanNTdHJpbmdSZWYKLXsKLSAgICBpZiAoIWpzU3RyaW5nUmVmKQotICAgICAgICByZXR1cm4g
TlVMTDsKLSAgICAKLSAgICBDRlN0cmluZ1JlZiBjZlN0cmluZyA9IEpTU3RyaW5nQ29weUNGU3Ry
aW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGpzU3RyaW5nUmVmKTsKLSAgICByZXR1cm4gWyhOU1N0
cmluZyAqKWNmU3RyaW5nIGF1dG9yZWxlYXNlXTsKLX0KLQotLSAoSlNTdHJpbmdSZWYpY3JlYXRl
SlNTdHJpbmdSZWYKLXsKLSAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENG
U3RyaW5nUmVmKXNlbGYpOwotfQotCi1AZW5kCi0KIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQoUGxhdGZvcm1VSUVsZW1lbnQgZWxlbWVudCkKICAgICA6IG1f
ZWxlbWVudChlbGVtZW50KQogICAgICwgbV9ub3RpZmljYXRpb25IYW5kbGVyKDApCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJXaW4u
Y3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyV2lu
LmNwcAppbmRleCA3ZjlhYTZjYzJlZTkyOWIyYmY4ZWE0MTZmNWQ2NWJiMDU2ZTNlYWQxLi45ZTc2
YzhkZGEzMzI3YTA3ZThlODdlMzM2YzhhZDY5YTk0NDQ2ODg5IDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJXaW4uY3BwCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcldpbi5jcHAKQEAg
LTY3LDYgKzY3LDEyIEBAIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXI6OmVsZW1lbnRBdFBvaW50KGludCB4LCBpbnQgeSkKICAgICByZXR1cm4gMDsKIH0KIAor
QWNjZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6YWNjZXNzaWJs
ZUVsZW1lbnRCeUlkKEpTU3RyaW5nUmVmIGlkKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQK
KyAgICByZXR1cm4gMDsKK30KKwogQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nlc3NpYmlsaXR5
Q29udHJvbGxlcjo6Zm9jdXNlZEVsZW1lbnQoKQogewogICAgIENPTVB0cjxJQWNjZXNzaWJsZT4g
cm9vdEFjY2Vzc2libGUgPSByb290RWxlbWVudCgpLnBsYXRmb3JtVUlFbGVtZW50KCk7CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwCmluZGV4IDJjZDMwNDlmZTE1Nzk1Nzc2YWJkMTMy
MjBiMmUyYWEwZWRjZmY3NWQuLmM2ZjdkNzVjYzNiNzlkMDZjMGMyY2M2MmU4OWZiOWE0MDg5YTEy
ZDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwCkBAIC0xMDYsNiArMTA2LDcg
QEAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcjo6ZWxlbWVudEF0UG9pbnQoaW50IHgKICNpZiAhUExBVEZPUk0oTUFDKQogYm9vbCBBY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcjo6YWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoSlNWYWx1ZVJlZikg
eyByZXR1cm4gZmFsc2U7IH0KIGJvb2wgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnJlbW92ZU5v
dGlmaWNhdGlvbkxpc3RlbmVyKCkgeyByZXR1cm4gZmFsc2U7IH0KK1Bhc3NSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFjY2Vzc2libGVFbGVt
ZW50QnlJZChKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpIHsgcmV0dXJuIDA7IH0KICNlbmRpZgogCiAj
aWYgIVBMQVRGT1JNKEdUSykKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaAppbmRleCAzYzg3
Y2FjNWQ1YzZhOWM0MDYyMDdiMzdiNmFlMzczYWU0ZDNiNzc5Li5mMDJmZWFjMDU1OTk4Yzc5Njlh
NGFkZTRlYmY1MDEwNGE3NzQwOWFjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oCkBA
IC00OCw2ICs0OCw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+IHJvb3RFbGVtZW50KCk7CiAgICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiBmb2N1c2VkRWxlbWVudCgpOwogICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gZWxlbWVudEF0UG9pbnQoaW50IHgsIGludCB5KTsKKyAgICBQYXNzUmVmUHRyPEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ+IGFjY2Vzc2libGVFbGVtZW50QnlJZChKU1N0cmluZ1JlZiBpZEF0
dHJpYnV0ZSk7CiAKICAgICBib29sIGFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKEpTVmFsdWVSZWYg
ZnVuY3Rpb25DYWxsYmFjayk7CiAgICAgYm9vbCByZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcigp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5k
aW5ncy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmlkbAppbmRl
eCAyZGY4YzI3OWY5YmQ4ODk2MTI2N2E2YjBjYzQwYjBhYmNmMTE0OGQ5Li5iZDA1ZjEzMzQzMDg1
Zjg5ODQ0YTllYzE5MjUxZjQxZWMxMDE5ZDUzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmlk
bAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0Fj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmlkbApAQCAtMjksNiArMjksNyBAQCBtb2R1bGUgV1RSIHsK
ICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgcm9vdEVs
ZW1lbnQ7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
IGZvY3VzZWRFbGVtZW50OwogICAgICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IGVsZW1lbnRB
dFBvaW50KGluIGludCB4LCBpbiBpbnQgeSk7CisgICAgICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKGluIERPTVN0cmluZyBpZCk7CiAgICAgICAgIAogICAg
ICAgICBib29sZWFuIGFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKGluIG9iamVjdCBmdW5jdGlvbkNh
bGxiYWNrKTsKICAgICAgICAgYm9vbGVhbiByZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcigpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNj
ZXNzaWJpbGl0eUNvbW1vbk1hYy5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4YjkxMjU3ZjQ2
ODc3NDk3OTUwYTkzNDFhMjY5MWZlOTg1NzRhNTMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFj
LmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQWNjZXNzaWJpbGl0eUNvbW1vbk1hY19oCisjZGVm
aW5lIEFjY2Vzc2liaWxpdHlDb21tb25NYWNfaAorCisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9K
U1N0cmluZ1JlZi5oPgorCisvLyBJZiBhbiB1bnN1cHBvcnRlZCBhdHRyaWJ1dGUgaXMgcGFzc2Vk
IGluLCBpdCB3aWxsIHJhaXNlIGFuIGFjY2Vzc2liaWxpdHkgZXhjZXB0aW9uLiBUaGVzZSBhcmUg
dXN1YWxseSBjYXVnaHQgYnkgdGhlIEFjY2Vzc2liaWxpdHkgUnVudGltZSB0byBpbmZvcm0KKy8v
IHRoZSBBWCBjbGllbnQgYXBwIG9mIHRoZSBlcnJvci4gSG93ZXZlciwgRFJUIGlzIHRoZSBBWCBj
bGllbnQgYXBwLCBzbyBpdCBtdXN0IGNhdGNoIHRoZXNlIGV4Y2VwdGlvbnMuCisjZGVmaW5lIEJF
R0lOX0FYX09CSkNfRVhDRVBUSU9OUyBAdHJ5IHsKKyNkZWZpbmUgRU5EX0FYX09CSkNfRVhDRVBU
SU9OUyB9IEBjYXRjaChOU0V4Y2VwdGlvbiAqZSkgeyBpZiAoIVtbZSBuYW1lXSBpc0VxdWFsVG9T
dHJpbmc6TlNBY2Nlc3NpYmlsaXR5RXhjZXB0aW9uXSkgQHRocm93OyB9CisKKworQGludGVyZmFj
ZSBOU1N0cmluZyAoSlNTdHJpbmdSZWZBZGRpdGlvbnMpCisrIChOU1N0cmluZyAqKXN0cmluZ1dp
dGhKU1N0cmluZ1JlZjooSlNTdHJpbmdSZWYpanNTdHJpbmdSZWY7CistIChKU1N0cmluZ1JlZilj
cmVhdGVKU1N0cmluZ1JlZjsKK0BlbmQKKworI2VuZGlmIC8vIEFjY2Vzc2liaWxpdHlDb21tb25N
YWNfaApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9t
YWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDgy
YzBmMGNjODZjM2U4NDg1ZGZmYWZiMDA0M2QzNjJkMWZjZTViZQotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlD
b21tb25NYWMubW0KQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAi
QWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5oIgorCisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU1N0
cmluZ1JlZkNGLmg+CisKK0BpbXBsZW1lbnRhdGlvbiBOU1N0cmluZyAoSlNTdHJpbmdSZWZBZGRp
dGlvbnMpCisKKysgKE5TU3RyaW5nICopc3RyaW5nV2l0aEpTU3RyaW5nUmVmOihKU1N0cmluZ1Jl
Zilqc1N0cmluZ1JlZgoreworICAgIGlmICghanNTdHJpbmdSZWYpCisgICAgICAgIHJldHVybiBu
aWw7CisKKyAgICBDRlN0cmluZ1JlZiBjZlN0cmluZyA9IEpTU3RyaW5nQ29weUNGU3RyaW5nKGtD
RkFsbG9jYXRvckRlZmF1bHQsIGpzU3RyaW5nUmVmKTsKKyAgICByZXR1cm4gWyhOU1N0cmluZyAq
KWNmU3RyaW5nIGF1dG9yZWxlYXNlXTsKK30KKworLSAoSlNTdHJpbmdSZWYpY3JlYXRlSlNTdHJp
bmdSZWYKK3sKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5n
UmVmKXNlbGYpOworfQorCitAZW5kCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlck1hYy5tbSBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlDb250cm9s
bGVyTWFjLm1tCmluZGV4IDg2M2U3NDA3ZWIyMDE5NWNiNzQ5ZWVmZDc1Yjk0NDczYTlkYTFkN2Qu
LjllNTQ5MDhiOTZjZWM1NGQwNDA0N2FjYjNlN2IwZDI2ZGMwNTcyMTcgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlDb250
cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
bWFjL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1tCkBAIC0yOSw4ICsyOSwxOCBAQAogICov
CiAKICNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5o
IgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCIKICNpbXBvcnQgIkFjY2Vzc2li
aWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLmgiCisjaW1wb3J0ICJJbmplY3RlZEJ1bmRsZS5oIgor
I2ltcG9ydCAiSW5qZWN0ZWRCdW5kbGVQYWdlLmgiCisKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3Jl
L0pTUmV0YWluUHRyLmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZi5oPgor
I2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWZDRi5oPgorI2ltcG9ydCA8V2ViS2l0
Mi9XS0J1bmRsZS5oPgorI2ltcG9ydCA8V2ViS2l0Mi9XS0J1bmRsZVBhZ2UuaD4KKyNpbXBvcnQg
PFdlYktpdDIvV0tCdW5kbGVQYWdlUHJpdmF0ZS5oPgogCiBuYW1lc3BhY2UgV1RSIHsKIApAQCAt
NTksNCArNjksMzUgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cmVtb3ZlTm90aWZp
Y2F0aW9uTGlzdGVuZXIoKQogICAgIHJldHVybiB0cnVlOwogfQogCitzdGF0aWMgaWQgZmluZEFj
Y2Vzc2libGVPYmplY3RCeUlkKGlkIG9iaiwgTlNTdHJpbmcgKmlkQXR0cmlidXRlKQoreworICAg
IEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIG9iaklkQXR0cmlidXRlID0gW29iaiBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWERSVEVsZW1lbnRJZEF0dHJpYnV0ZSJdOwor
ICAgIGlmIChbb2JqSWRBdHRyaWJ1dGUgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSAm
JiBbb2JqSWRBdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOmlkQXR0cmlidXRlXSkKKyAgICAgICAg
cmV0dXJuIG9iajsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisKKyAgICBOU0FycmF5ICpj
aGlsZHJlbiA9IFtvYmogYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0
eUNoaWxkcmVuQXR0cmlidXRlXTsKKyAgICBOU1VJbnRlZ2VyIGNoaWxkcmVuQ291bnQgPSBbY2hp
bGRyZW4gY291bnRdOworICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGNoaWxkcmVuQ291
bnQ7ICsraSkgeworICAgICAgICBpZCByZXN1bHQgPSBmaW5kQWNjZXNzaWJsZU9iamVjdEJ5SWQo
W2NoaWxkcmVuIG9iamVjdEF0SW5kZXg6aV0sIGlkQXR0cmlidXRlKTsKKyAgICAgICAgaWYgKHJl
c3VsdCkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgcmV0dXJuIDA7
Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXI6OmFjY2Vzc2libGVFbGVtZW50QnlJZChKU1N0cmluZ1JlZiBpZEF0dHJpYnV0ZSkK
K3sKKyAgICBXS0J1bmRsZVBhZ2VSZWYgcGFnZSA9IEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5w
YWdlKCktPnBhZ2UoKTsKKyAgICBpZCByb290ID0gc3RhdGljX2Nhc3Q8UGxhdGZvcm1VSUVsZW1l
bnQ+KFdLQWNjZXNzaWJpbGl0eVJvb3RPYmplY3QocGFnZSkpOworCisgICAgaWQgcmVzdWx0ID0g
ZmluZEFjY2Vzc2libGVPYmplY3RCeUlkKHJvb3QsIFtOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJp
bmdSZWY6aWRBdHRyaWJ1dGVdKTsKKyAgICBpZiAocmVzdWx0KQorICAgICAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKHJlc3VsdCk7CisKKyAgICByZXR1cm4gMDsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dE1hYy5tbQppbmRleCA4MWEwMzEwYjEyNzQ2ZDQzOWY0YzU3YWQxMDcwODBjNDY1NzkyM2Q5Li4y
NGVlZjA4MzdmZDIzMzVlZTQ1ODVhZDhhYmNjNjFjNjNlZDYyNTA1IDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50TWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFj
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KQEAgLTI0LDYgKzI0LDcgQEAKICAqLwogCiAj
aW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkFjY2Vzc2liaWxpdHlDb21tb25NYWMuaCIKICNp
bXBvcnQgIkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLmgiCiAjaW1wb3J0ICJBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50LmgiCiAjaW1wb3J0ICJJbmplY3RlZEJ1bmRsZS5oIgpAQCAtNTEs
MTIgKzUyLDYgQEAKICNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5RHJvcEVmZmVjdHNBdHRyaWJ1dGUg
QCJBWERyb3BFZmZlY3RzIgogI2VuZGlmCiAKLS8vIElmIGFuIHVuc3VwcG9ydGVkIGF0dHJpYnV0
ZSBpcyBwYXNzZWQgaW4sIGl0IHdpbGwgcmFpc2UgYW4gYWNjZXNzaWJpbGl0eSBleGNlcHRpb24u
IFRoZXNlIGFyZSB1c3VhbGx5IGNhdWdodCBieSB0aGUgQWNjZXNzaWJpbGl0eSBSdW50aW1lIHRv
IGluZm9ybQotLy8gdGhlIEFYIGNsaWVudCBhcHAgb2YgdGhlIGVycm9yLiBIb3dldmVyLCBEUlQg
aXMgdGhlIEFYIGNsaWVudCBhcHAsIHNvIGl0IG11c3QgY2F0Y2ggdGhlc2UgZXhjZXB0aW9ucy4K
LSNkZWZpbmUgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TIEB0cnkgewotI2RlZmluZSBFTkRfQVhf
T0JKQ19FWENFUFRJT05TIH0gQGNhdGNoKE5TRXhjZXB0aW9uICplKSB7IGlmICghW1tlIG5hbWVd
IGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlFeGNlcHRpb25dKSBAdGhyb3c7IH0KLQot
CiB0eXBlZGVmIHZvaWQgKCpBWFBvc3RlZE5vdGlmaWNhdGlvbkNhbGxiYWNrKShpZCBlbGVtZW50
LCBOU1N0cmluZyogbm90aWZpY2F0aW9uLCB2b2lkKiBjb250ZXh0KTsKIAogQGludGVyZmFjZSBO
U09iamVjdCAoV2ViS2l0QWNjZXNzaWJpbGl0eUFkZGl0aW9ucykKQEAgLTY1LDI5ICs2MCw2IEBA
IHR5cGVkZWYgdm9pZCAoKkFYUG9zdGVkTm90aWZpY2F0aW9uQ2FsbGJhY2spKGlkIGVsZW1lbnQs
IE5TU3RyaW5nKiBub3RpZmljYXRpb24sCiAtIChOU1VJbnRlZ2VyKWFjY2Vzc2liaWxpdHlBcnJh
eUF0dHJpYnV0ZUNvdW50OihOU1N0cmluZyAqKWF0dHJpYnV0ZTsKIEBlbmQKIAotQGludGVyZmFj
ZSBOU1N0cmluZyAoSlNTdHJpbmdSZWZBZGRpdGlvbnMpCi0rIChOU1N0cmluZyAqKXN0cmluZ1dp
dGhKU1N0cmluZ1JlZjooSlNTdHJpbmdSZWYpanNTdHJpbmdSZWY7Ci0tIChKU1N0cmluZ1JlZilj
cmVhdGVKU1N0cmluZ1JlZjsKLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIE5TU3RyaW5nIChKU1N0
cmluZ1JlZkFkZGl0aW9ucykKLQotKyAoTlNTdHJpbmcgKilzdHJpbmdXaXRoSlNTdHJpbmdSZWY6
KEpTU3RyaW5nUmVmKWpzU3RyaW5nUmVmCi17Ci0gICAgaWYgKCFqc1N0cmluZ1JlZikKLSAgICAg
ICAgcmV0dXJuIE5VTEw7Ci0gICAgCi0gICAgQ0ZTdHJpbmdSZWYgY2ZTdHJpbmcgPSBKU1N0cmlu
Z0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBqc1N0cmluZ1JlZik7Ci0gICAgcmV0
dXJuIFsoTlNTdHJpbmcgKiljZlN0cmluZyBhdXRvcmVsZWFzZV07Ci19Ci0KLS0gKEpTU3RyaW5n
UmVmKWNyZWF0ZUpTU3RyaW5nUmVmCi17Ci0gICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENG
U3RyaW5nKChDRlN0cmluZ1JlZilzZWxmKTsKLX0KLQotQGVuZAotCiBuYW1lc3BhY2UgV1RSIHsK
IAogQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudChQbGF0Zm9y
bVVJRWxlbWVudCBlbGVtZW50KQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9X
ZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA1YmNkMjdmNzU3MzNmZmU0ZWYzNjk2YjdhMGVmZTQwNjA0MDZjYWMxLi4wMGE2N2ZiNzI5MmY5
MTBhZGVlZTVkMzZlZWZjYzczNTc4ZWE4MjYwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMjksNiArMjksNyBAQAogCQkyOTIxMEVCNDE0NENBQ0Q1MDA4MzVCQjUgLyog
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMjkyMTBFQjExNDRDQUNENDAwODM1QkI1IC8qIEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyLmNwcCAqLzsgfTsKIAkJMjkyMTBFQjUxNDRDQUNENTAwODM1QkI1IC8qIEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMjkyMTBFQjMxNDRDQUNENDAwODM1QkI1IC8qIEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyTWFjLm1tICovOyB9OwogCQkyOTIxMEVEQTE0NENDM0VBMDA4MzVCQjUgLyog
QWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDI5MjEwRUFCMTQ0Q0FDQjIwMDgzNUJCNSAvKiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50TWFjLm1tICovOyB9OworCQkyOTIxMEVEQTE0NENDM0VBMDA4MzVCQjYgLyog
QWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDI5MjEwRUFCMTQ0Q0FDQjIwMDgzNUJCNiAvKiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50TWFjLm1tICovOyB9OwogCQkyOTIxMEVEQjE0NENENDc5MDA4MzVCQjUgLyogSlNB
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1ODM5MTNEMDE0MzM1RTk1MDA4MzA3RTUgLyogSlNBY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5jcHAgKi87IH07CiAJCTI5MjEwRUUxMTQ0Q0RCMjYwMDgzNUJCNSAvKiBK
U0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMjkyMTBFREIxNDY3MjdFNzExODM1QkI1IC8qIEpTQWNjZXNzaWJp
bGl0eVVJRWxlbWVudC5jcHAgKi87IH07CiAJCTI5QThGQ0NCMTQ1RUYwMkUwMDkwNDVBNiAvKiBK
U0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDI5MjEwRUUxMTQ0Q0RFNjc4OTgxNUVFNSAvKiBKU0FjY2Vzc2li
aWxpdHlUZXh0TWFya2VyLmNwcCAqLzsgfTsKQEAgLTEwOSw2ICsxMTAsNyBAQAogCQkyOTIxMEVB
OTE0NENBQ0IyMDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjkyMTBFQUExNDRDQUNCMjAwODM1QkI1IC8q
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyOTIxMEVBQjE0NENBQ0IyMDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnRNYWMubW07IHBhdGggPSBtYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjkyMTBFQUIxNDRDQUNCMjAwODM1QkI2IC8q
IEFjY2Vzc2liaWxpdHlDb21tb25NYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IG5hbWUgPSBBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tOyBwYXRoID0gbWFjL0FjY2Vzc2li
aWxpdHlDb21tb25NYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5MjEwRUIx
MTQ0Q0FDRDQwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5MjEwRUIyMTQ0Q0FDRDQwMDgzNUJCNSAv
KiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyOTIxMEVCMzE0NENBQ0Q0MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJN
YWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlck1hYy5tbTsgcGF0aCA9IG1hYy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1h
Yy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMwNyw2ICszMDksNyBAQAogCQkJ
CTI5MjEwRUE5MTQ0Q0FDQjIwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCAq
LywKIAkJCQkyOTIxMEVBQTE0NENBQ0IyMDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dC5oICovLAogCQkJCTI5MjEwRUFCMTQ0Q0FDQjIwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50TWFjLm1tICovLAorCQkJCTI5MjEwRUFCMTQ0Q0FDQjIwMDgzNUJCNiAvKiBBY2Nlc3Np
YmlsaXR5Q29tbW9uTWFjLm1tICovLAogCQkJCTI5MjEwRUIxMTQ0Q0FDRDQwMDgzNUJCNSAvKiBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAgKi8sCiAJCQkJMjkyMTBFQjIxNDRDQUNENDAwODM1
QkI1IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmggKi8sCiAJCQkJMjkyMTBFQjMxNDRDQUNE
NDAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tICovLApAQCAtNjA2LDYg
KzYwOSw3IEBACiAJCQkJMjkyMTBFQjQxNDRDQUNENTAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI5MjEwRUI1MTQ0Q0FDRDUwMDgzNUJC
NSAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTI5
MjEwRURBMTQ0Q0MzRUEwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tIGlu
IFNvdXJjZXMgKi8sCisJCQkJMjkyMTBFREExNDRDQzNFQTAwODM1QkI2IC8qIEFjY2Vzc2liaWxp
dHlDb21tb25NYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkyOTIxMEVEQjE0NENENDc5MDA4MzVC
QjUgLyogSlNBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQky
OTIxMEVFMTE0NENEQjI2MDA4MzVCQjUgLyogSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTI5QThGQ0NCMTQ1RUYwMkUwMDkwNDVBNiAvKiBKU0FjY2Vzc2li
aWxpdHlUZXh0TWFya2VyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGI1ZGRhZWE2Mzg4MWEy
MTg3OTJjYzkyZWI5OTAyZDI3OWMyNjE4OWMuLjBjNjQzYjBhZjk3NWY1NTNmYjcwYTZmNjRjNDA5
YmRiZmUxNTM2OTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wOS0yMSAgRG9taW5pYyBN
YXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KKworICAgICAgICBBWDogTGF5b3V0IHRlc3Rz
IHdvdWxkIGJlIGVhc2llciB0byB3cml0ZSBpZiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlciBjb3Vs
ZCBmaW5kIGFuIGVsZW1lbnQgYnkgaWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk3MzAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRmxlaXph
Y2guCisKKyAgICAgICAgTW9kaWZpZXMgYW4gZXhpc3RpbmcgdGVzdCB0byB1c2UgdGhlIG5ldyBh
Y2Nlc3NpYmxlRWxlbWVudEJ5SWQKKyAgICAgICAgbWV0aG9kIG9mIEFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLCBlbmFibGluZyB0aGUgdGVzdCB0byBwYXNzIG9uCisgICAgICAgIGJvdGggTWFjIGFu
ZCBDaHJvbWl1bS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXJpYS1oaWRkZW4td2l0aC1l
bGVtZW50cy5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlv
bnM6CisKIDIwMTItMDktMjIgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4K
IAogICAgICAgICBbUXRdIFVucmV2aWV3ZWQgd2Vla2VuZCBnYXJkZW5pbmcsIHVuc2tpcCBub3cg
cGFzc2luZyB0ZXN0cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJp
YS1oaWRkZW4td2l0aC1lbGVtZW50cy5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9h
cmlhLWhpZGRlbi13aXRoLWVsZW1lbnRzLmh0bWwKaW5kZXggM2EzZjhhN2UzMjJjZTIzZjlhZjZl
YTgwYTQyY2JiNTNkYjRlMzQ2OS4uZjlkMWViZDM3MGQ2Y2RlYTg5YWY2ODA5ODZlZDRiMmQzOTEy
MDUxYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWhpZGRlbi13
aXRoLWVsZW1lbnRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWhp
ZGRlbi13aXRoLWVsZW1lbnRzLmh0bWwKQEAgLTUsNiArNSw4IEBACiA8L2hlYWQ+CiA8Ym9keSBp
ZD0iYm9keSI+CiAKKzxkaXYgaWQ9ImNvbnRhaW5lciIgYXJpYS1sYWJlbD0iY29udGFpbmVyIj4K
KwogPHRhYmxlIGJvcmRlcj0xIHN1bW1hcnk9InRlc3QiIGFyaWEtaGlkZGVuPSJ0cnVlIj4KIDx0
cj48dGQ+Y2VsbDwvdGQ+PHRkPmNlbGw8L3RkPjx0ZD5jZWxsPC90ZD48L3RyPgogPHRyPjx0ZD5j
ZWxsPC90ZD48dGQ+Y2VsbDwvdGQ+PHRkPmNlbGw8L3RkPjwvdHI+CkBAIC0xOSwxMyArMjEsMTcg
QEAKIDxsaT50ZXN0CiA8L3VsPgogCis8ZGl2IGFyaWEtbGFiZWw9IndyYXBwZXIiPgogPHNlbGVj
dCBzaXplPTEwIGFyaWEtaGlkZGVuPSJ0cnVlIj4KIDxvcHRpb24+b3B0aW9uCiA8b3B0aW9uPm9w
dGlvbgogPC9zZWxlY3Q+Cis8L2Rpdj4KIAogPGgxPmhlYWRpbmc8L2gxPgogCis8L2Rpdj4KKwog
PHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CiA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KIApAQCAt
MzQsMTQgKzQwLDE0IEBACiAgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCBhcmlhLWhp
ZGRlbiB3b3JrcyBhcyBleHBlY3RlZCBvbiBlbGVtZW50cyB0aGF0IGFyZSBzdWJjbGFzc2VzIG9m
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QiKTsKIAogICAgIGlmICh3aW5kb3cuYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIpIHsKLSAgICAgICB2YXIgcm9vdCA9IGFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLnJvb3RFbGVtZW50OworICAgICAgIHZhciBjb250YWluZXIgPSBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNvbnRhaW5lciIpOwogCiAgICAgICAgLy8g
Zmlyc3QgY2hpbGQgaXMgYW4gQVhHcm91cCB0aGF0IGhhcyBubyBjaGlsZHJlbgotICAgICAgIHZh
ciBjaGlsZCA9IHJvb3QuY2hpbGRBdEluZGV4KDApLmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICB2
YXIgY2hpbGQgPSBjb250YWluZXIuY2hpbGRBdEluZGV4KDApOwogICAgICAgIHNob3VsZEJlKCJj
aGlsZC5jaGlsZHJlbkNvdW50IiwgIjAiKTsKIAogICAgICAgIC8vIFRoZSBzZWNvbmQgY2hpbGQg
d2UgYXNrIGZvciBmcm9tIHRoZSB3ZWIgYXJlYSBzaG91bGQgYmUgdGhlIGhlYWRpbmcsIGFuZCB3
ZSBzaG91bGQgaGF2ZSBza2lwcGVkIG92ZXIgZXZlcnl0aGluZyBlbHNlLgotICAgICAgIGNoaWxk
ID0gcm9vdC5jaGlsZEF0SW5kZXgoMCkuY2hpbGRBdEluZGV4KDEpOworICAgICAgIGNoaWxkID0g
Y29udGFpbmVyLmNoaWxkQXRJbmRleCgxKTsKICAgICAgICBzaG91bGRCZSgiY2hpbGQucm9sZSIs
ICInQVhSb2xlOiBBWEhlYWRpbmcnIik7CiAgICAgfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwppbmRleCBiYjVmNzNlNDhmM2VmODFiMTAxMTNh
MmU3NThiNGI2MThmM2YxZmJjLi4zMDc2ZmI5M2NiYmViZGNhNGE4MjZhMjc4NzdmZjQ0NDk3NGVm
YzhlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0
YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlv
bnMKQEAgLTEzNDQsNyArMTM0NCw2IEBAIGNyYnVnLmNvbS8xMDMyMiBhY2Nlc3NpYmlsaXR5L2Fy
aWEtY29tYm9ib3guaHRtbCBbIFNraXAgXQogY3JidWcuY29tLzEwMzIyIGFjY2Vzc2liaWxpdHkv
YXJpYS1jb250cm9scy13aXRoLXRhYnMuaHRtbCBbIFNraXAgXQogY3JidWcuY29tLzEwMzIyIGFj
Y2Vzc2liaWxpdHkvYXJpYS1mYWxsYmFjay1yb2xlcy5odG1sIFsgU2tpcCBdCiBjcmJ1Zy5jb20v
MTAzMjIgYWNjZXNzaWJpbGl0eS9hcmlhLWhpZGRlbi11cGRhdGUuaHRtbCBbIFNraXAgXQotY3Ji
dWcuY29tLzEwMzIyIGFjY2Vzc2liaWxpdHkvYXJpYS1oaWRkZW4td2l0aC1lbGVtZW50cy5odG1s
IFsgU2tpcCBdCiBjcmJ1Zy5jb20vMTAzMjIgYWNjZXNzaWJpbGl0eS9hcmlhLWludmFsaWQuaHRt
bCBbIFNraXAgXQogY3JidWcuY29tLzEwMzIyIGFjY2Vzc2liaWxpdHkvYXJpYS1sYWJlbGxlZGJ5
LW92ZXJyaWRlcy1sYWJlbC5odG1sIFsgU2tpcCBdCiBjcmJ1Zy5jb20vMTAzMjIgYWNjZXNzaWJp
bGl0eS9hcmlhLWxpbmstc3VwcG9ydHMtcHJlc3MuaHRtbCBbIFNraXAgXQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>