<?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>103642</bug_id>
          
          <creation_ts>2012-11-29 08:07:58 -0800</creation_ts>
          <short_desc>Add support for generic types in arrays and sequences to the code generators</short_desc>
          <delta_ts>2012-12-04 12:27:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</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>
          
          <blocked>98416</blocked>
    
    <blocked>103899</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Bergkvist">adam.bergkvist</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>code.vineet</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>haraken</cc>
    
    <cc>hta</cc>
    
    <cc>japhet</cc>
    
    <cc>jsbell</cc>
    
    <cc>ojan</cc>
    
    <cc>philn</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>779022</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2012-11-29 08:07:58 -0800</bug_when>
    <thetext>We need to generate bindings for MediaStreamTrack[] in webkit.org/b/98416. Currently, there&apos;s only limited support for sequences and arrays of primitive types and strings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779025</commentid>
    <comment_count>1</comment_count>
      <attachid>176740</attachid>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2012-11-29 08:28:26 -0800</bug_when>
    <thetext>Created attachment 176740
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779053</commentid>
    <comment_count>2</comment_count>
      <attachid>176740</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-11-29 08:57:59 -0800</bug_when>
    <thetext>Comment on attachment 176740
Proposed patch

Attachment 176740 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15029840</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779125</commentid>
    <comment_count>3</comment_count>
      <attachid>176740</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-29 10:05:27 -0800</bug_when>
    <thetext>Comment on attachment 176740
Proposed patch

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

This looks good to me.  We might want to have haraken take a look as well.  It looks like you have some compile errors on gtk and efl.

&gt; Source/WebCore/bindings/js/JSDOMBinding.h:433
&gt; +        return result;

Does this mean we copy the array and churn the refcount, or are we smart enough to move it?  We might want to use an out parameter to avoid the extra memcpy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779307</commentid>
    <comment_count>4</comment_count>
      <attachid>176740</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-29 12:20:45 -0800</bug_when>
    <thetext>Comment on attachment 176740
Proposed patch

Attachment 176740 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15025842</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779568</commentid>
    <comment_count>5</comment_count>
      <attachid>176740</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-29 16:11:56 -0800</bug_when>
    <thetext>Comment on attachment 176740
Proposed patch

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

The approach looks reasonable. r-ing due to duplicated code in toHostObjectArray(). I hope you can use toNativeArray().

I guess you need to make some change to CodeGenerator{GObject,CPP,ObjC}.pm to fix build errors.

&gt; Source/WebCore/bindings/js/JSDOMBinding.h:416
&gt; +    template &lt;class T, class JST&gt;
&gt; +    Vector&lt;RefPtr&lt;T&gt; &gt; toHostObjectArray(JSC::ExecState* exec, JSC::JSValue value, T* (*toT)(JSC::JSValue value))

Can you avoid adding this method by using NativeValueTraits&lt;T&gt; ? See toNativeArray() and NativeValueTraits&lt;T&gt; in JSDOMBinding.h. toNativeArray() is doing the same thing as this method.

&gt; Source/WebCore/bindings/js/JSDOMBinding.h:421
&gt; +            return result;

Nit: &apos;return Vector&lt;T&gt;()&apos; would be clearer.

&gt; Source/WebCore/bindings/js/JSDOMBinding.h:430
&gt; +                return result;

Maybe this should be &apos;return Vector&lt;T&gt;()&apos; ?

&gt;&gt; Source/WebCore/bindings/js/JSDOMBinding.h:433
&gt;&gt; +        return result;
&gt; 
&gt; Does this mean we copy the array and churn the refcount, or are we smart enough to move it?  We might want to use an out parameter to avoid the extra memcpy.

Good point. We&apos;re doing the same thing in other methods of V8Binding.h and JSDOMBinding.h. Let&apos;s fix it in a follow-up patch.

&gt; Source/WebCore/bindings/v8/V8Binding.h:211
&gt; +    template &lt;class T, class V8T&gt;
&gt; +    Vector&lt;RefPtr&lt;T&gt; &gt; toHostObjectArray(v8::Handle&lt;v8::Value&gt; value)

Ditto. Can you avoid adding this method by using NativeValueTraits&lt;T&gt; ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780153</commentid>
    <comment_count>6</comment_count>
      <attachid>176978</attachid>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2012-11-30 09:04:44 -0800</bug_when>
    <thetext>Created attachment 176978
Updated patch

Thank you for reviewing.

(In reply to comment #5)
&gt; (From update of attachment 176740 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=176740&amp;action=review
&gt; 
&gt; The approach looks reasonable. r-ing due to duplicated code in toHostObjectArray(). I hope you can use toNativeArray().
&gt; 
&gt; I guess you need to make some change to CodeGenerator{GObject,CPP,ObjC}.pm to fix build errors.

The build errors are due to a &quot;sequence&lt;String&gt;&quot; in an IDL file (the change to &quot;sequence&lt;DOMString&gt;&quot; got lost in a last minute rebase). This is fixed now.
&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSDOMBinding.h:416
&gt; &gt; +    template &lt;class T, class JST&gt;
&gt; &gt; +    Vector&lt;RefPtr&lt;T&gt; &gt; toHostObjectArray(JSC::ExecState* exec, JSC::JSValue value, T* (*toT)(JSC::JSValue value))
&gt; 
&gt; Can you avoid adding this method by using NativeValueTraits&lt;T&gt; ? See toNativeArray() and NativeValueTraits&lt;T&gt; in JSDOMBinding.h. toNativeArray() is doing the same thing as this method.
&gt;

We could solve this by adding a &quot;struct NativeValueTraits&lt;RefPtr&lt;[Type]&gt; &gt;&quot; for every host object type that we need to put in an array or sequence, but then we would have to update the code generators every time a new type is needed.

The alternative would be to make a NativeValueTraits solution for the general RefPtr&lt;T&gt; type, but I think it will be hard to add that kind of support to the existing toNativeArray() which only deals with primitive types and strings. For example, besides the type T, the binding type (JST and V8T in this patch) is needed to deal with host objects.

I&apos;ve kept toHostObjectArray() for now.

&gt; &gt; Source/WebCore/bindings/js/JSDOMBinding.h:421
&gt; &gt; +            return result;
&gt; 
&gt; Nit: &apos;return Vector&lt;T&gt;()&apos; would be clearer.

Fixed (for V8Binding.h as well)

&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSDOMBinding.h:430
&gt; &gt; +                return result;
&gt; 
&gt; Maybe this should be &apos;return Vector&lt;T&gt;()&apos; ?

You&apos;re right. Fixed (for V8Binding.h as well)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780173</commentid>
    <comment_count>7</comment_count>
      <attachid>176978</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-11-30 09:35:24 -0800</bug_when>
    <thetext>Comment on attachment 176978
Updated patch

Attachment 176978 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15057408</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781037</commentid>
    <comment_count>8</comment_count>
      <attachid>176978</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-02 16:07:03 -0800</bug_when>
    <thetext>Comment on attachment 176978
Updated patch

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

Thanks for updating the patch. Almost looks OK.

&gt; Source/WebCore/bindings/js/JSDOMBinding.h:416
&gt; +    Vector&lt;RefPtr&lt;T&gt; &gt; toHostObjectArray(JSC::ExecState* exec, JSC::JSValue value, T* (*toT)(JSC::JSValue value))

toRefPtrNativeArray() might be a better name, as this is just another version of toNativeArray().

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:3070
&gt; +    return &quot;Vector&lt;&quot; . GetNativeInnerVectorType($arrayOrSequenceType) . &quot;&gt;&quot; if $arrayOrSequenceType;

Can&apos;t you use GetNativeType() ?

&gt; Source/WebCore/bindings/v8/V8Binding.h:211
&gt; +    Vector&lt;RefPtr&lt;T&gt; &gt; toHostObjectArray(v8::Handle&lt;v8::Value&gt; value)

toRefPtrNativeArray() might be a better name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781503</commentid>
    <comment_count>9</comment_count>
      <attachid>177263</attachid>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2012-12-03 09:01:31 -0800</bug_when>
    <thetext>Created attachment 177263
Updated patch

(In reply to comment #8)
&gt; (From update of attachment 176978 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=176978&amp;action=review
&gt; 
&gt; Thanks for updating the patch. Almost looks OK.
&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSDOMBinding.h:416
&gt; &gt; +    Vector&lt;RefPtr&lt;T&gt; &gt; toHostObjectArray(JSC::ExecState* exec, JSC::JSValue value, T* (*toT)(JSC::JSValue value))
&gt; 
&gt; toRefPtrNativeArray() might be a better name, as this is just another version of toNativeArray().

Fixed.

&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:3070
&gt; &gt; +    return &quot;Vector&lt;&quot; . GetNativeInnerVectorType($arrayOrSequenceType) . &quot;&gt;&quot; if $arrayOrSequenceType;
&gt; 
&gt; Can&apos;t you use GetNativeType() ?

That was my initial approach as well (since I use it for V8), but the JSC-version of GetNativeType doesn&apos;t behave the same as the V8 counterpart for some types. For example, DOMString is translated to &quot;const String&amp;&quot; instead of &quot;String&quot;.

&gt; &gt; Source/WebCore/bindings/v8/V8Binding.h:211
&gt; &gt; +    Vector&lt;RefPtr&lt;T&gt; &gt; toHostObjectArray(v8::Handle&lt;v8::Value&gt; value)
&gt; 
&gt; toRefPtrNativeArray() might be a better name.

Fixed.

The build errors on EFL were due to a mismatch between the IDL type and the implementation type in the Vibration API. I&apos;ve added a workaround and filed a separate bug to resolve that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781988</commentid>
    <comment_count>10</comment_count>
      <attachid>177263</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-03 15:57:05 -0800</bug_when>
    <thetext>Comment on attachment 177263
Updated patch

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

Looks good to me.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:3076
&gt; +sub GetNativeInnerVectorType

Shall we rename it to GetRefPtrNativeType() ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782421</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2012-12-04 02:49:15 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 177263 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=177263&amp;action=review
&gt; 
&gt; Looks good to me.
&gt; 
&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:3076
&gt; &gt; +sub GetNativeInnerVectorType
&gt; 
&gt; Shall we rename it to GetRefPtrNativeType() ?

This sub routine is used to get the Vector inner type for primitive types and String as well (when used together with the old toNativeArray) so it shouldn&apos;t have &quot;RefPtr&quot; in the name. I renamed it to GetNativeVectorInnerType() since I thought that it might be more descriptive.

Thank you for reviewing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782423</commentid>
    <comment_count>12</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-04 02:51:06 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; I renamed it to GetNativeVectorInnerType() since I thought that it might be more descriptive.

Sounds nicer!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782424</commentid>
    <comment_count>13</comment_count>
      <attachid>177461</attachid>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2012-12-04 02:53:12 -0800</bug_when>
    <thetext>Created attachment 177461
patch for landing

Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782436</commentid>
    <comment_count>14</comment_count>
      <attachid>177461</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-04 03:18:03 -0800</bug_when>
    <thetext>Comment on attachment 177461
patch for landing

Rejecting attachment 177461 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:
ripts/update-webkit line 152.

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;, &apos;--chromium&apos;, &apos;--force-update&apos;]&quot; exit_code: 2
Updating OpenSource
From http://git.chromium.org/external/Webkit
   9119335..f15c604  HEAD       -&gt; origin/HEAD
error: Ref refs/remotes/origin/master is at f15c604c4ceb9e673f01c999e7b638e0dead7e5c but expected 91193351fe3f098d5e3121072b1a9b057086e670
 ! 9119335..f15c604  master     -&gt; origin/master  (unable to update local ref)
Died at Tools/Scripts/update-webkit line 152.

Full output: http://queues.webkit.org/results/15126586</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782513</commentid>
    <comment_count>15</comment_count>
      <attachid>177461</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-04 06:57:15 -0800</bug_when>
    <thetext>Comment on attachment 177461
patch for landing

Clearing flags on attachment: 177461

Committed r136507: &lt;http://trac.webkit.org/changeset/136507&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782514</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-04 06:57:20 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782803</commentid>
    <comment_count>17</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-04 12:27:25 -0800</bug_when>
    <thetext>*** Bug 100537 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176740</attachid>
            <date>2012-11-29 08:28:26 -0800</date>
            <delta_ts>2012-11-30 09:04:44 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>codegen_array_support00.patch</filename>
            <type>text/plain</type>
            <size>28175</size>
            <attacher name="Adam Bergkvist">adam.bergkvist</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2ZDkyZjBlLi4xMjlkMjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMg
QEAKKzIwMTItMTEtMjkgIEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24u
Y29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBnZW5lcmljIHR5cGVzIGluIGFycmF5cyBh
bmQgc2VxdWVuY2VzIHRvIHRoZSBjb2RlIGdlbmVyYXRvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzY0MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZWQgdGhlIGJpbmRpbmdzIGdlbmVyYXRv
cnMgdG8gc3VwcG9ydCBhcnJheXMgYW5kIHNlcXVlbmNlcyBvZiBob3N0IG9iamVjdHMuCisKKyAg
ICAgICAgLSBBcnJheXMgYW5kIHNlcXVlbmNlcyBvZiBob3N0IG9iamVjdHMgYXJlIG1hcHBlZCB0
byBWZWN0b3I8UmVmUHRyPEhvc3RPYmplY3RUeXBlPiA+LgorICAgICAgICAtIEZpeGVkIGlzc3Vl
IHdoZXJlICJzZXF1ZW5jZTxTdHJpbmc+IiB3YXMgdXNlZCBpbiBJREwgZmlsZXMgaW5zdGVhZCBv
ZiAic2VxdWVuY2U8RE9NU3RyaW5nPiIuCisKKyAgICAgICAgVXBkYXRlZCBleGlzdGluZyB0ZXN0
IHJlc3VsdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5pZGw6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaWRsOgorICAgICAg
ICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6dG9Ib3N0T2JqZWN0QXJyYXkp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yLnBtOgorICAgICAgICAoSXNSZWZQdHJUeXBlKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEFkZEluY2x1ZGVzRm9yVHlwZSk6
CisgICAgICAgIChHZXROYXRpdmVUeXBlKToKKyAgICAgICAgKEdldE5hdGl2ZUlubmVyVmVjdG9y
VHlwZSk6CisgICAgICAgIChKU1ZhbHVlVG9OYXRpdmUpOgorICAgICAgICAoTmF0aXZlVG9KU1Zh
bHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAg
ICAgICAgKEdlbmVyYXRlTm9ybWFsQXR0ckdldHRlcik6CisgICAgICAgIChHZW5lcmF0ZU5vcm1h
bEF0dHJTZXR0ZXIpOgorICAgICAgICAoR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2tFeHByZXNzaW9u
KToKKyAgICAgICAgKEdlbmVyYXRlRnVuY3Rpb25DYWxsU3RyaW5nKToKKyAgICAgICAgKEdldE5h
dGl2ZVR5cGUpOgorICAgICAgICAoSlNWYWx1ZVRvTmF0aXZlKToKKyAgICAgICAgKENyZWF0ZUN1
c3RvbVNpZ25hdHVyZSk6CisgICAgICAgIChOYXRpdmVUb0pTVmFsdWUpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoU2VxdWVuY2VBcmcpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMTAp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
VW5zaWduZWRMb25nU2VxdWVuY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Omxv
bmdMb25nQXR0ckF0dHJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJu
YWw6OnVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0clNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0T2JqVjhJbnRlcm5hbDo6bWV0aG9kV2l0aFNlcXVlbmNlQXJnQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om92ZXJsb2FkZWRNZXRob2QxMENhbGxiYWNr
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6
OnRvSG9zdE9iamVjdEFycmF5KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisK
IDIwMTItMTEtMjkgIEFuZHkgU2hhdyAgPGFuZHkuc2hhd0BkaWdpYS5jb20+CiAKICAgICAgICAg
W1F0XSBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgQ29jb2EgYmFzZWQgTlBBUEkgcGx1Z2lucyBvbiBN
YWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmlk
bAppbmRleCAwYmVkMjRmLi41MGY3ZTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaWRsCkBAIC00NCw3ICs0NCw3IEBACiAgICAgICAgIHJh
aXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4
dF0gSURCVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oaW4gRE9NU3RyaW5nTGlzdCBzdG9yZU5hbWVz
LCBpbiBbT3B0aW9uYWw9RGVmYXVsdElzTnVsbFN0cmluZ10gRE9NU3RyaW5nIG1vZGUpCiAgICAg
ICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9u
Q29udGV4dF0gSURCVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oaW4gc2VxdWVuY2U8U3RyaW5nPiBz
dG9yZU5hbWVzLCBpbiBbT3B0aW9uYWw9RGVmYXVsdElzTnVsbFN0cmluZ10gRE9NU3RyaW5nIG1v
ZGUpCisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIElEQlRyYW5zYWN0aW9u
IHRyYW5zYWN0aW9uKGluIHNlcXVlbmNlPERPTVN0cmluZz4gc3RvcmVOYW1lcywgaW4gW09wdGlv
bmFsPURlZmF1bHRJc051bGxTdHJpbmddIERPTVN0cmluZyBtb2RlKQogICAgICAgICByYWlzZXMg
KERPTUV4Y2VwdGlvbik7CiAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIElE
QlRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uKGluIERPTVN0cmluZyBzdG9yZU5hbWUsIGluIFtPcHRp
b25hbD1EZWZhdWx0SXNOdWxsU3RyaW5nXSBET01TdHJpbmcgbW9kZSkKICAgICAgICAgcmFpc2Vz
IChET01FeGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCT2JqZWN0U3RvcmUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCT2JqZWN0U3RvcmUuaWRsCmluZGV4IGM3ZDhiZDYuLjM5NjQyYzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5pZGwKQEAg
LTUyLDcgKzUyLDcgQEAKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURC
UmVxdWVzdCBvcGVuQ3Vyc29yKGluIElEQktleSBrZXksIGluIFtPcHRpb25hbF0gRE9NU3RyaW5n
IGRpcmVjdGlvbikKICAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24pOwogCi0gICAgW0NhbGxX
aXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIElEQkluZGV4IGNyZWF0ZUluZGV4KGluIERPTVN0
cmluZyBuYW1lLCBpbiBzZXF1ZW5jZTxTdHJpbmc+IGtleVBhdGgsIGluIFtPcHRpb25hbF0gRGlj
dGlvbmFyeSBvcHRpb25zKQorICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJ
REJJbmRleCBjcmVhdGVJbmRleChpbiBET01TdHJpbmcgbmFtZSwgaW4gc2VxdWVuY2U8RE9NU3Ry
aW5nPiBrZXlQYXRoLCBpbiBbT3B0aW9uYWxdIERpY3Rpb25hcnkgb3B0aW9ucykKICAgICAgICAg
cmFpc2VzIChET01FeGNlcHRpb24pOwogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250
ZXh0XSBJREJJbmRleCBjcmVhdGVJbmRleChpbiBET01TdHJpbmcgbmFtZSwgaW4gRE9NU3RyaW5n
IGtleVBhdGgsIGluIFtPcHRpb25hbF0gRGljdGlvbmFyeSBvcHRpb25zKQogICAgICAgICByYWlz
ZXMgKERPTUV4Y2VwdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXQuaWRsCmluZGV4IDlmMTg4MWEuLjBmMDFmNDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsCkBAIC0zMyw3ICszMyw3IEBA
CiAgICAgQ29uZGl0aW9uYWw9V0VCX1NPQ0tFVFMsCiAgICAgQWN0aXZlRE9NT2JqZWN0LAogICAg
IENvbnN0cnVjdG9yKGluIERPTVN0cmluZyB1cmwpLAotICAgIENvbnN0cnVjdG9yKGluIERPTVN0
cmluZyB1cmwsIGluIHNlcXVlbmNlPFN0cmluZz4gcHJvdG9jb2xzKSwKKyAgICBDb25zdHJ1Y3Rv
cihpbiBET01TdHJpbmcgdXJsLCBpbiBzZXF1ZW5jZTxET01TdHJpbmc+IHByb3RvY29scyksCiAg
ICAgQ29uc3RydWN0b3IoaW4gRE9NU3RyaW5nIHVybCwgaW4gRE9NU3RyaW5nIHByb3RvY29sKSwK
ICAgICBDb25zdHJ1Y3RvclJhaXNlc0V4Y2VwdGlvbiwKICAgICBDYWxsV2l0aD1TY3JpcHRFeGVj
dXRpb25Db250ZXh0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01CaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApp
bmRleCBhMjE5NTliLi5lZjFmYjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuaApAQCAtMyw2ICszLDcgQEAKICAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQs
IDIwMDUsIDIwMDYsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogIENvcHlyaWdodCAoQykgMjAwNyBTYW11ZWwgV2VpbmlnIDxzYW1Ad2Via2l0Lm9yZz4KICAq
ICBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiAgQ29weXJpZ2h0IChDKSAyMDEyIEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNDExLDYgKzQxMiwyNyBAQCBlbnVtIFBhcmFtZXRlckRl
ZmF1bHRQb2xpY3kgewogICAgICAgICB9CiAgICAgfTsKIAorICAgIHRlbXBsYXRlIDxjbGFzcyBU
LCBjbGFzcyBKU1Q+CisgICAgVmVjdG9yPFJlZlB0cjxUPiA+IHRvSG9zdE9iamVjdEFycmF5KEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgdmFsdWUsIFQqICgqdG9UKShKU0M6OkpT
VmFsdWUgdmFsdWUpKQorICAgIHsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxUPiA+IHJlc3VsdDsK
KworICAgICAgICBpZiAoIWlzSlNBcnJheSh2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OworCisgICAgICAgIEpTQzo6SlNBcnJheSogYXJyYXkgPSBhc0FycmF5KHZhbHVlKTsKKyAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheS0+bGVuZ3RoKCk7ICsraSkgeworICAg
ICAgICAgICAgSlNDOjpKU1ZhbHVlIGVsZW1lbnQgPSBhcnJheS0+Z2V0SW5kZXgoZXhlYywgaSk7
CisgICAgICAgICAgICBpZiAoZWxlbWVudC5pbmhlcml0cygmSlNUOjpzX2luZm8pKQorICAgICAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoKCp0b1QpKGVsZW1lbnQpKTsKKyAgICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgICAgIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3Io
ZXhlYywgIkludmFsaWQgQXJyYXkgZWxlbWVudCB0eXBlIikpOworICAgICAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KICAgICBWZWN0b3I8VD4gdG9O
YXRpdmVBcnJheShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIHZhbHVlKQogICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvci5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5w
bQppbmRleCAwZmRjYTAyLi5hYzNhZDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCkBAIC0zOTUsNiArMzk1LDE3IEBAIHN1YiBJc1R5
cGVkQXJyYXlUeXBlCiAgICAgcmV0dXJuIDA7CiB9CiAKK3N1YiBJc1JlZlB0clR5cGUKK3sKKyAg
ICBteSAkb2JqZWN0ID0gc2hpZnQ7CisgICAgbXkgJHR5cGUgPSBzaGlmdDsKKworICAgIHJldHVy
biAwIGlmICRvYmplY3QtPklzUHJpbWl0aXZlVHlwZSgkdHlwZSk7CisgICAgcmV0dXJuIDAgaWYg
JHR5cGUgZXEgIkRPTVN0cmluZyI7CisKKyAgICByZXR1cm4gMTsKK30KKwogc3ViIEdldFNWR1R5
cGVOZWVkaW5nVGVhck9mZgogewogICAgIG15ICRvYmplY3QgPSBzaGlmdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggNWI0
ZDdhYy4uYTZlZjk0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTgsNiArOCw3IEBACiAjIENvcHlyaWdodCAoQykgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMgQ29w
eXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgt
aWVzKQogIyBDb3B5cmlnaHQgKEMpIDIwMTEgUGF0cmljayBHYW5zdGVyZXIgPHBhcm9nYUB3ZWJr
aXQub3JnPgorIyBDb3B5cmlnaHQgKEMpIDIwMTIgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAjCiAjIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKICMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI0MSw3ICsyNDIsNyBAQCBzdWIgQWRkSW5jbHVk
ZXNGb3JUeXBlCiAgICAgICAgICRpbmNsdWRlc1JlZi0+eyJKU1hQYXRoTlNSZXNvbHZlci5oIn0g
PSAxOwogICAgICAgICAkaW5jbHVkZXNSZWYtPnsiSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCJ9
ID0gMTsKICAgICB9IGVsc2lmICgkdHlwZSBlcSAiRE9NU3RyaW5nW10iKSB7Ci0gICAgICAgICMg
RklYTUU6IEFkZCBwcm9wZXIgc3VwcG9ydCBmb3IgVFtdLCBUW10/LCBzZXF1ZW5jZTxUPgorICAg
ICAgICAjIEZJWE1FOiBDb25zaWRlciByZXBsYWNpbmcgRE9NU3RyaW5nTGlzdCB3aXRoIERPTVN0
cmluZ1tdIG9yIHNlcXVlbmNlPERPTVN0cmluZz4uCiAgICAgICAgICRpbmNsdWRlc1JlZi0+eyJK
U0RPTVN0cmluZ0xpc3QuaCJ9ID0gMTsKICAgICB9IGVsc2lmICgkdHlwZSBlcSAiU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlIikgewogICAgICAgICAkaW5jbHVkZXNSZWYtPnsiU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmgifSA9IDE7CkBAIC0zMDMyLDcgKzMwMzMsNyBAQCBzdWIgR2V0TmF0aXZlVHlwZUZy
b21TaWduYXR1cmUKIG15ICVuYXRpdmVUeXBlID0gKAogICAgICJDb21wYXJlSG93IiA9PiAiUmFu
Z2U6OkNvbXBhcmVIb3ciLAogICAgICJET01TdHJpbmciID0+ICJjb25zdCBTdHJpbmcmIiwKLSAg
ICAjIEZJWE1FOiBBZGQgcHJvcGVyIHN1cHBvcnQgZm9yIFRbXSwgVFtdPywgc2VxdWVuY2U8VD4K
KyAgICAjIEZJWE1FOiBDb25zaWRlciByZXBsYWNpbmcgRE9NU3RyaW5nTGlzdCB3aXRoIERPTVN0
cmluZ1tdIG9yIHNlcXVlbmNlPERPTVN0cmluZz4uCiAgICAgIkRPTVN0cmluZ1tdIiA9PiAiUmVm
UHRyPERPTVN0cmluZ0xpc3Q+IiwKICAgICAiRE9NT2JqZWN0IiA9PiAiU2NyaXB0VmFsdWUiLAog
ICAgICJOb2RlRmlsdGVyIiA9PiAiUmVmUHRyPE5vZGVGaWx0ZXI+IiwKQEAgLTMwNjIsMTMgKzMw
NjMsMjUgQEAgc3ViIEdldE5hdGl2ZVR5cGUKICAgICByZXR1cm4gIlJlZlB0cjxET01TdHJpbmdM
aXN0PiIgaWYgJHR5cGUgZXEgIkRPTVN0cmluZ0xpc3QiIG9yICR0eXBlIGVxICJET01TdHJpbmdb
XSI7CiAgICAgcmV0dXJuICRuYXRpdmVUeXBleyR0eXBlfSBpZiBleGlzdHMgJG5hdGl2ZVR5cGV7
JHR5cGV9OwogCisgICAgbXkgJGFycmF5VHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5HZXRBcnJheVR5
cGUoJHR5cGUpOwogICAgIG15ICRzZXF1ZW5jZVR5cGUgPSAkY29kZUdlbmVyYXRvci0+R2V0U2Vx
dWVuY2VUeXBlKCR0eXBlKTsKLSAgICByZXR1cm4gIlZlY3Rvcjwke3NlcXVlbmNlVHlwZX0+IiBp
ZiAkc2VxdWVuY2VUeXBlOworICAgIG15ICRhcnJheU9yU2VxdWVuY2VUeXBlID0gJGFycmF5VHlw
ZSB8fCAkc2VxdWVuY2VUeXBlOworCisgICAgcmV0dXJuICJWZWN0b3I8IiAuIEdldE5hdGl2ZUlu
bmVyVmVjdG9yVHlwZSgkYXJyYXlPclNlcXVlbmNlVHlwZSkgLiAiPiIgaWYgJGFycmF5T3JTZXF1
ZW5jZVR5cGU7CiAKICAgICAjIEZvciBhbGwgb3RoZXIgdHlwZXMsIHRoZSBuYXRpdmUgdHlwZSBp
cyBhIHBvaW50ZXIgd2l0aCBzYW1lIHR5cGUgbmFtZSBhcyB0aGUgSURMIHR5cGUuCiAgICAgcmV0
dXJuICIke3R5cGV9KiI7CiB9CiAKK3N1YiBHZXROYXRpdmVJbm5lclZlY3RvclR5cGUKK3sKKyAg
ICBteSAkYXJyYXlPclNlcXVlbmNlVHlwZSA9IHNoaWZ0OworCisgICAgcmV0dXJuICJTdHJpbmci
IGlmICRhcnJheU9yU2VxdWVuY2VUeXBlIGVxICJET01TdHJpbmciOworICAgIHJldHVybiAkbmF0
aXZlVHlwZXskYXJyYXlPclNlcXVlbmNlVHlwZX0gaWYgZXhpc3RzICRuYXRpdmVUeXBleyRhcnJh
eU9yU2VxdWVuY2VUeXBlfTsKKyAgICByZXR1cm4gIlJlZlB0cjwke2FycmF5T3JTZXF1ZW5jZVR5
cGV9PiAiOworfQorCiBzdWIgR2V0TmF0aXZlVHlwZUZvckNhbGxiYWNrcwogewogICAgIG15ICR0
eXBlID0gc2hpZnQ7CkBAIC0zMTk0LDEzICszMjA3LDE1IEBAIHN1YiBKU1ZhbHVlVG9OYXRpdmUK
ICAgICBBZGRUb0ltcGxJbmNsdWRlcygiRXZlbnQuaCIsICRjb25kaXRpb25hbCkgaWYgJHR5cGUg
ZXEgIkV2ZW50IjsKIAogICAgIG15ICRhcnJheVR5cGUgPSAkY29kZUdlbmVyYXRvci0+R2V0QXJy
YXlUeXBlKCR0eXBlKTsKLSAgICBpZiAoJGFycmF5VHlwZSkgewotICAgICAgICByZXR1cm4gInRv
TmF0aXZlQXJyYXk8JGFycmF5VHlwZT4oZXhlYywgJHZhbHVlKSI7Ci0gICAgfQotCiAgICAgbXkg
JHNlcXVlbmNlVHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5HZXRTZXF1ZW5jZVR5cGUoJHR5cGUpOwot
ICAgIGlmICgkc2VxdWVuY2VUeXBlKSB7Ci0gICAgICAgIHJldHVybiAidG9OYXRpdmVBcnJheTwk
c2VxdWVuY2VUeXBlPihleGVjLCAkdmFsdWUpIjsKKyAgICBteSAkYXJyYXlPclNlcXVlbmNlVHlw
ZSA9ICRhcnJheVR5cGUgfHwgJHNlcXVlbmNlVHlwZTsKKworICAgIGlmICgkYXJyYXlPclNlcXVl
bmNlVHlwZSkgeworICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzUmVmUHRyVHlwZSgkYXJy
YXlPclNlcXVlbmNlVHlwZSkpIHsKKyAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKUyR7
YXJyYXlPclNlcXVlbmNlVHlwZX0uaCIpOworICAgICAgICAgICAgcmV0dXJuICIodG9Ib3N0T2Jq
ZWN0QXJyYXk8JHthcnJheU9yU2VxdWVuY2VUeXBlfSwgSlMke2FycmF5T3JTZXF1ZW5jZVR5cGV9
PihleGVjLCAkdmFsdWUsICZ0byR7YXJyYXlPclNlcXVlbmNlVHlwZX0pKSI7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuICJ0b05hdGl2ZUFycmF5PCIgLiBHZXROYXRpdmVJbm5lclZlY3RvclR5
cGUoJGFycmF5T3JTZXF1ZW5jZVR5cGUpIC4gIj4oZXhlYywgJHZhbHVlKSI7CiAgICAgfQogCiAg
ICAgIyBEZWZhdWx0LCBhc3N1bWUgYXV0b2dlbmVyYXRlZCB0eXBlIGNvbnZlcnNpb24gcm91dGlu
ZXMKQEAgLTMyNjIsMjMgKzMyNzcsMTcgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1ZQogICAgIH0KIAog
ICAgIG15ICRhcnJheVR5cGUgPSAkY29kZUdlbmVyYXRvci0+R2V0QXJyYXlUeXBlKCR0eXBlKTsK
LSAgICBpZiAoJGFycmF5VHlwZSkgewotICAgICAgICBpZiAoJHR5cGUgZXEgIkRPTVN0cmluZ1td
IikgeworICAgIG15ICRzZXF1ZW5jZVR5cGUgPSAkY29kZUdlbmVyYXRvci0+R2V0U2VxdWVuY2VU
eXBlKCR0eXBlKTsKKyAgICBteSAkYXJyYXlPclNlcXVlbmNlVHlwZSA9ICRhcnJheVR5cGUgfHwg
JHNlcXVlbmNlVHlwZTsKKworICAgIGlmICgkYXJyYXlPclNlcXVlbmNlVHlwZSkgeworICAgICAg
ICBpZiAoJGFycmF5VHlwZSBlcSAiRE9NU3RyaW5nIikgewogICAgICAgICAgICAgQWRkVG9JbXBs
SW5jbHVkZXMoIkpTRE9NU3RyaW5nTGlzdC5oIiwgJGNvbmRpdGlvbmFsKTsKICAgICAgICAgICAg
IEFkZFRvSW1wbEluY2x1ZGVzKCJET01TdHJpbmdMaXN0LmgiLCAkY29uZGl0aW9uYWwpOwotICAg
ICAgICB9IGVsc2lmICghJGNvZGVHZW5lcmF0b3ItPlNraXBJbmNsdWRlSGVhZGVyKCRhcnJheVR5
cGUpKSB7Ci0gICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlMkYXJyYXlUeXBlLmgiLCAk
Y29uZGl0aW9uYWwpOwotICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIiRhcnJheVR5cGUu
aCIsICRjb25kaXRpb25hbCk7Ci0gICAgICAgIH0KLSAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMo
IjxydW50aW1lL0pTQXJyYXkuaD4iLCAkY29uZGl0aW9uYWwpOwotICAgICAgICByZXR1cm4gImpz
QXJyYXkoZXhlYywgJHRoaXNWYWx1ZS0+Z2xvYmFsT2JqZWN0KCksICR2YWx1ZSkiOwotICAgIH0K
IAotICAgIG15ICRzZXF1ZW5jZVR5cGUgPSAkY29kZUdlbmVyYXRvci0+R2V0U2VxdWVuY2VUeXBl
KCR0eXBlKTsKLSAgICBpZiAoJHNlcXVlbmNlVHlwZSkgewotICAgICAgICBpZiAoISRjb2RlR2Vu
ZXJhdG9yLT5Ta2lwSW5jbHVkZUhlYWRlcigkc2VxdWVuY2VUeXBlKSkgewotICAgICAgICAgICAg
QWRkVG9JbXBsSW5jbHVkZXMoIkpTJHNlcXVlbmNlVHlwZS5oIiwgJGNvbmRpdGlvbmFsKTsKLSAg
ICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCIkc2VxdWVuY2VUeXBlLmgiLCAkY29uZGl0aW9u
YWwpOworICAgICAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SXNSZWZQdHJUeXBlKCRhcnJh
eU9yU2VxdWVuY2VUeXBlKSkgeworICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTJHth
cnJheU9yU2VxdWVuY2VUeXBlfS5oIiwgJGNvbmRpdGlvbmFsKTsKKyAgICAgICAgICAgIEFkZFRv
SW1wbEluY2x1ZGVzKCIke2FycmF5T3JTZXF1ZW5jZVR5cGV9LmgiLCAkY29uZGl0aW9uYWwpOwog
ICAgICAgICB9CiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCI8cnVudGltZS9KU0FycmF5Lmg+
IiwgJGNvbmRpdGlvbmFsKTsKICAgICAgICAgcmV0dXJuICJqc0FycmF5KGV4ZWMsICR0aGlzVmFs
dWUtPmdsb2JhbE9iamVjdCgpLCAkdmFsdWUpIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggOGFkYjBjZS4uNGYzMzk1NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
VjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
VjgucG0KQEAgLTcsNiArNyw3IEBACiAjIENvcHlyaWdodCAoQykgMjAwOSBDYW1lcm9uIE1jQ29y
bWFjayA8Y2FtQG1jYy5pZC5hdT4KICMgQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24g
TGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIyBDb3B5cmlnaHQgKEMpIDIwMTAg
Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisjIENvcHlyaWdo
dCAoQykgMjAxMiBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
IyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwpAQCAtMTAyMyw3ICsxMDI0LDcgQEAgRU5ECiAgICAgICAgIH0KIAogICAgICAgICAkcmVz
dWx0ID0gInYiOwotICAgICAgICAkcmVzdWx0IC49ICIucmVsZWFzZSgpIiBpZiAoSXNSZWZQdHJU
eXBlKCRyZXR1cm5UeXBlKSk7CisgICAgICAgICRyZXN1bHQgLj0gIi5yZWxlYXNlKCkiIGlmICgk
Y29kZUdlbmVyYXRvci0+SXNSZWZQdHJUeXBlKCRyZXR1cm5UeXBlKSk7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgIyBDYW4gaW5saW5lIHRoZSBmdW5jdGlvbiBjYWxsIGludG8gdGhlIHJldHVybiBz
dGF0ZW1lbnQgdG8gYXZvaWQgb3ZlcmhlYWQgb2YgdXNpbmcgYSBSZWY8PiB0ZW1wb3JhcnkKICAg
ICAgICAgJHJlc3VsdCA9ICRnZXR0ZXJTdHJpbmc7CkBAIC0xMjY2LDcgKzEyNjcsNyBAQCBFTkQK
IAogICAgIG15ICRyZXN1bHQgPSAidiI7CiAgICAgbXkgJHJldHVyblR5cGUgPSAkYXR0cmlidXRl
LT5zaWduYXR1cmUtPnR5cGU7Ci0gICAgaWYgKElzUmVmUHRyVHlwZSgkcmV0dXJuVHlwZSkgJiYg
ISRjb2RlR2VuZXJhdG9yLT5HZXRBcnJheVR5cGUoJHJldHVyblR5cGUpKSB7CisgICAgaWYgKCRj
b2RlR2VuZXJhdG9yLT5Jc1JlZlB0clR5cGUoJHJldHVyblR5cGUpICYmICEkY29kZUdlbmVyYXRv
ci0+R2V0QXJyYXlUeXBlKCRyZXR1cm5UeXBlKSkgewogICAgICAgICAkcmVzdWx0ID0gIldURjo6
Z2V0UHRyKCIgLiAkcmVzdWx0IC4gIikiOwogICAgIH0KIApAQCAtMTQyNCw3ICsxNDI1LDYgQEAg
c3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrRXhwcmVzc2lvbgogICAgICAgICAgICAgIyBGb3Ig
Q2FsbGJhY2tzIG9ubHkgY2hlY2tzIGlmIHRoZSB2YWx1ZSBpcyBudWxsIG9yIG9iamVjdC4KICAg
ICAgICAgICAgIHB1c2goQGFuZEV4cHJlc3Npb24sICIoJHt2YWx1ZX0tPklzTnVsbCgpIHx8ICR7
dmFsdWV9LT5Jc0Z1bmN0aW9uKCkpIik7CiAgICAgICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9y
LT5Jc0FycmF5VHlwZSgkdHlwZSkgfHwgJGNvZGVHZW5lcmF0b3ItPkdldFNlcXVlbmNlVHlwZSgk
dHlwZSkpIHsKLSAgICAgICAgICAgICMgRklYTUU6IEFkZCBwcm9wZXIgc3VwcG9ydCBmb3IgVFtd
LCBUW10/LCBzZXF1ZW5jZTxUPi4KICAgICAgICAgICAgIGlmICgkcGFyYW1ldGVyLT5pc051bGxh
YmxlKSB7CiAgICAgICAgICAgICAgICAgcHVzaChAYW5kRXhwcmVzc2lvbiwgIigke3ZhbHVlfS0+
SXNOdWxsKCkgfHwgJHt2YWx1ZX0tPklzQXJyYXkoKSkiKTsKICAgICAgICAgICAgIH0gZWxzZSB7
CkBAIC0zNjAxLDcgKzM2MDEsNyBAQCBzdWIgR2VuZXJhdGVGdW5jdGlvbkNhbGxTdHJpbmcoKQog
ICAgIG15ICRmdW5jdGlvblN0cmluZyA9ICIkZnVuY3Rpb25OYW1lKCIgLiBqb2luKCIsICIsIEBh
cmd1bWVudHMpIC4gIikiOwogCiAgICAgbXkgJHJldHVybiA9ICJyZXN1bHQiOwotICAgIG15ICRy
ZXR1cm5Jc1JlZiA9IElzUmVmUHRyVHlwZSgkcmV0dXJuVHlwZSk7CisgICAgbXkgJHJldHVybklz
UmVmID0gJGNvZGVHZW5lcmF0b3ItPklzUmVmUHRyVHlwZSgkcmV0dXJuVHlwZSk7CiAKICAgICBp
ZiAoJHJldHVyblR5cGUgZXEgInZvaWQiKSB7CiAgICAgICAgICRyZXN1bHQgLj0gJGluZGVudCAu
ICIkZnVuY3Rpb25TdHJpbmc7XG4iOwpAQCAtMzYxMiw3ICszNjEyLDcgQEAgc3ViIEdlbmVyYXRl
RnVuY3Rpb25DYWxsU3RyaW5nKCkKICAgICAgICAgJHJldHVybiA9ICRmdW5jdGlvblN0cmluZzsK
ICAgICAgICAgJHJldHVybklzUmVmID0gMDsKIAotICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUg
ZXEgIlNWR1RyYW5zZm9ybUxpc3QiIGFuZCBJc1JlZlB0clR5cGUoJHJldHVyblR5cGUpKSB7Cisg
ICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiU1ZHVHJhbnNmb3JtTGlzdCIgYW5kICRjb2Rl
R2VuZXJhdG9yLT5Jc1JlZlB0clR5cGUoJHJldHVyblR5cGUpKSB7CiAgICAgICAgICAgICAkcmV0
dXJuID0gIldURjo6Z2V0UHRyKCIgLiAkcmV0dXJuIC4gIikiOwogICAgICAgICB9CiAgICAgfQpA
QCAtMzY3OSwyNSArMzY3OSw2IEBAIHN1YiBHZXROYXRpdmVUeXBlRnJvbVNpZ25hdHVyZQogICAg
IHJldHVybiAkdHlwZTsKIH0KIAotc3ViIElzUmVmUHRyVHlwZQotewotICAgIG15ICR0eXBlID0g
c2hpZnQ7Ci0KLSAgICByZXR1cm4gMCBpZiAkdHlwZSBlcSAiYm9vbGVhbiI7Ci0gICAgcmV0dXJu
IDAgaWYgJHR5cGUgZXEgImZsb2F0IjsKLSAgICByZXR1cm4gMCBpZiAkdHlwZSBlcSAiaW50IjsK
LSAgICByZXR1cm4gMCBpZiAkdHlwZSBlcSAiRGF0ZSI7Ci0gICAgcmV0dXJuIDAgaWYgJHR5cGUg
ZXEgIkRPTVN0cmluZyI7Ci0gICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEgImRvdWJsZSI7Ci0gICAg
cmV0dXJuIDAgaWYgJHR5cGUgZXEgInNob3J0IjsKLSAgICByZXR1cm4gMCBpZiAkdHlwZSBlcSAi
bG9uZyI7Ci0gICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEgInVuc2lnbmVkIjsKLSAgICByZXR1cm4g
MCBpZiAkdHlwZSBlcSAidW5zaWduZWQgbG9uZyI7Ci0gICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEg
InVuc2lnbmVkIHNob3J0IjsKLQotICAgIHJldHVybiAxOwotfQotCiBzdWIgR2V0TmF0aXZlVHlw
ZQogewogICAgIG15ICR0eXBlID0gc2hpZnQ7CkBAIC0zNzEyLDkgKzM2OTMsNiBAQCBzdWIgR2V0
TmF0aXZlVHlwZQogICAgICAgICB9CiAgICAgfQogCi0gICAgbXkgJHNlcXVlbmNlVHlwZSA9ICRj
b2RlR2VuZXJhdG9yLT5HZXRTZXF1ZW5jZVR5cGUoJHR5cGUpOwotICAgIHJldHVybiAiVmVjdG9y
PCR7c2VxdWVuY2VUeXBlfT4iIGlmICRzZXF1ZW5jZVR5cGU7Ci0KICAgICBpZiAoJHR5cGUgZXEg
ImZsb2F0IiBvciAkdHlwZSBlcSAiZG91YmxlIikgewogICAgICAgICByZXR1cm4gJHR5cGU7CiAg
ICAgfQpAQCAtMzc1MSwxMyArMzcyOSwyMyBAQCBzdWIgR2V0TmF0aXZlVHlwZQogICAgIHJldHVy
biAiUmVmUHRyPFhQYXRoTlNSZXNvbHZlcj4iIGlmICR0eXBlIGVxICJYUGF0aE5TUmVzb2x2ZXIi
OwogCiAgICAgcmV0dXJuICJSZWZQdHI8RE9NU3RyaW5nTGlzdD4iIGlmICR0eXBlIGVxICJET01T
dHJpbmdbXSI7Ci0gICAgcmV0dXJuICJSZWZQdHI8JHt0eXBlfT4iIGlmIElzUmVmUHRyVHlwZSgk
dHlwZSkgYW5kIG5vdCAkaXNQYXJhbWV0ZXI7CisgICAgcmV0dXJuICJSZWZQdHI8JHt0eXBlfT4i
IGlmICRjb2RlR2VuZXJhdG9yLT5Jc1JlZlB0clR5cGUoJHR5cGUpIGFuZCBub3QgJGlzUGFyYW1l
dGVyOwogCiAgICAgcmV0dXJuICJSZWZQdHI8TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4iIGlmICR0
eXBlIGVxICJNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIjsKIAotICAgICMgRklYTUU6IFN1cHBvcnQg
VFtdLCBUW10/LCBzZXF1ZW5jZTxUPiBnZW5lcmljYWxseQorICAgICMgRklYTUU6IENvbnNpZGVy
IHJlcGxhY2luZyBET01TdHJpbmdMaXN0IHdpdGggRE9NU3RyaW5nW10gb3Igc2VxdWVuY2U8RE9N
U3RyaW5nPi4KICAgICByZXR1cm4gIlJlZlB0cjxET01TdHJpbmdMaXN0PiIgaWYgJHR5cGUgZXEg
IkRPTVN0cmluZ0xpc3QiOwogCisgICAgbXkgJGFycmF5VHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5H
ZXRBcnJheVR5cGUoJHR5cGUpOworICAgIG15ICRzZXF1ZW5jZVR5cGUgPSAkY29kZUdlbmVyYXRv
ci0+R2V0U2VxdWVuY2VUeXBlKCR0eXBlKTsKKyAgICBteSAkYXJyYXlPclNlcXVlbmNlVHlwZSA9
ICRhcnJheVR5cGUgfHwgJHNlcXVlbmNlVHlwZTsKKworICAgIGlmICgkYXJyYXlPclNlcXVlbmNl
VHlwZSkgeworICAgICAgICBteSAkbmF0aXZlVHlwZSA9IEdldE5hdGl2ZVR5cGUoJGFycmF5T3JT
ZXF1ZW5jZVR5cGUpOworICAgICAgICAkbmF0aXZlVHlwZSAuPSAiICIgaWYgKCRuYXRpdmVUeXBl
ID1+IC8+JC8pOworICAgICAgICByZXR1cm4gIlZlY3Rvcjwke25hdGl2ZVR5cGV9PiI7CisgICAg
fQorCiAgICAgIyBEZWZhdWx0LCBhc3N1bWUgbmF0aXZlIHR5cGUgaXMgYSBwb2ludGVyIHdpdGgg
c2FtZSB0eXBlIG5hbWUgYXMgaWRsIHR5cGUKICAgICByZXR1cm4gIiR7dHlwZX0qIjsKIH0KQEAg
LTM4MTAsNyArMzc5OCw3IEBAIHN1YiBKU1ZhbHVlVG9OYXRpdmUKICAgICByZXR1cm4gInN0YXRp
Y19jYXN0PFJhbmdlOjpDb21wYXJlSG93PigkdmFsdWUtPkludDMyVmFsdWUoKSkiIGlmICR0eXBl
IGVxICJDb21wYXJlSG93IjsKICAgICByZXR1cm4gInRvV2ViQ29yZURhdGUoJHZhbHVlKSIgaWYg
JHR5cGUgZXEgIkRhdGUiOwogICAgIHJldHVybiAidG9ET01TdHJpbmdMaXN0KCR2YWx1ZSkiIGlm
ICR0eXBlIGVxICJET01TdHJpbmdMaXN0IjsKLSAgICAjIEZJWE1FOiBBZGQgcHJvcGVyIHN1cHBv
cnQgZm9yIFRbXSwgVFtdPyBhbmQgc2VxdWVuY2U8VD4uCisgICAgIyBGSVhNRTogQ29uc2lkZXIg
cmVwbGFjaW5nIERPTVN0cmluZ0xpc3Qgd2l0aCBET01TdHJpbmdbXSBvciBzZXF1ZW5jZTxET01T
dHJpbmc+LgogICAgIHJldHVybiAidG9ET01TdHJpbmdMaXN0KCR2YWx1ZSkiIGlmICR0eXBlIGVx
ICJET01TdHJpbmdbXSI7CiAKICAgICBpZiAoJHR5cGUgZXEgIkRPTVN0cmluZyIgb3IgJHR5cGUg
ZXEgIkRPTVVzZXJEYXRhIikgewpAQCAtMzg2MiwxMyArMzg1MCwxNSBAQCBzdWIgSlNWYWx1ZVRv
TmF0aXZlCiAgICAgfQogCiAgICAgbXkgJGFycmF5VHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5HZXRB
cnJheVR5cGUoJHR5cGUpOwotICAgIGlmICgkYXJyYXlUeXBlKSB7Ci0gICAgICAgIHJldHVybiAi
dG9OYXRpdmVBcnJheTwkYXJyYXlUeXBlPigkdmFsdWUpIjsKLSAgICB9Ci0KICAgICBteSAkc2Vx
dWVuY2VUeXBlID0gJGNvZGVHZW5lcmF0b3ItPkdldFNlcXVlbmNlVHlwZSgkdHlwZSk7Ci0gICAg
aWYgKCRzZXF1ZW5jZVR5cGUpIHsKLSAgICAgICAgcmV0dXJuICJ0b05hdGl2ZUFycmF5PCRzZXF1
ZW5jZVR5cGU+KCR2YWx1ZSkiOworICAgIG15ICRhcnJheU9yU2VxdWVuY2VUeXBlID0gJGFycmF5
VHlwZSB8fCAkc2VxdWVuY2VUeXBlOworCisgICAgaWYgKCRhcnJheU9yU2VxdWVuY2VUeXBlKSB7
CisgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNSZWZQdHJUeXBlKCRhcnJheU9yU2VxdWVu
Y2VUeXBlKSkgeworICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlY4JHthcnJheU9yU2Vx
dWVuY2VUeXBlfS5oIik7CisgICAgICAgICAgICByZXR1cm4gIih0b0hvc3RPYmplY3RBcnJheTwk
e2FycmF5T3JTZXF1ZW5jZVR5cGV9LCBWOCR7YXJyYXlPclNlcXVlbmNlVHlwZX0+KCR2YWx1ZSkp
IjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gInRvTmF0aXZlQXJyYXk8IiAuIEdldE5hdGl2
ZVR5cGUoJGFycmF5T3JTZXF1ZW5jZVR5cGUpIC4gIj4oJHZhbHVlKSI7CiAgICAgfQogCiAgICAg
QWRkSW5jbHVkZXNGb3JUeXBlKCR0eXBlKTsKQEAgLTM5MDYsMTMgKzM4OTYsMjMgQEAgc3ViIENy
ZWF0ZUN1c3RvbVNpZ25hdHVyZQogICAgICAgICAgICAgICAgICRyZXN1bHQgLj0gInY4OjpIYW5k
bGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCkiOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICBteSAkdHlwZSA9ICRwYXJhbWV0ZXItPnR5cGU7CisKKyAgICAgICAgICAgICAg
ICBteSAkYXJyYXlUeXBlID0gJGNvZGVHZW5lcmF0b3ItPkdldEFycmF5VHlwZSgkdHlwZSk7CiAg
ICAgICAgICAgICAgICAgbXkgJHNlcXVlbmNlVHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5HZXRTZXF1
ZW5jZVR5cGUoJHR5cGUpOwotICAgICAgICAgICAgICAgIGlmICgkc2VxdWVuY2VUeXBlKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+U2tpcEluY2x1ZGVIZWFkZXIo
JHNlcXVlbmNlVHlwZSkpIHsKKyAgICAgICAgICAgICAgICBteSAkYXJyYXlPclNlcXVlbmNlVHlw
ZSA9ICRhcnJheVR5cGUgfHwgJHNlcXVlbmNlVHlwZTsKKworICAgICAgICAgICAgICAgIGlmICgk
YXJyYXlPclNlcXVlbmNlVHlwZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoJGFycmF5VHlw
ZSBlcSAiRE9NU3RyaW5nIikgeworICAgICAgICAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5j
bHVkZXMoIlY4RE9NU3RyaW5nTGlzdC5oIik7CisgICAgICAgICAgICAgICAgICAgICAgICBBZGRU
b0ltcGxJbmNsdWRlcygiRE9NU3RyaW5nTGlzdC5oIik7CisKKyAgICAgICAgICAgICAgICAgICAg
fSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPklzUmVmUHRyVHlwZSgkYXJyYXlPclNlcXVlbmNlVHlw
ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKEdldFY4SGVh
ZGVyTmFtZSgkYXJyYXlPclNlcXVlbmNlVHlwZSkpOworICAgICAgICAgICAgICAgICAgICAgICAg
QWRkVG9JbXBsSW5jbHVkZXMoIiR7YXJyYXlPclNlcXVlbmNlVHlwZX0uaCIpOworICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCAuPSAi
djg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSI7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBuZXh0OwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIEFk
ZFRvSW1wbEluY2x1ZGVzKCIkc2VxdWVuY2VUeXBlLmgiKTsKICAgICAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcyhHZXRWOEhlYWRlck5h
bWUoJHR5cGUpKTsKICAgICAgICAgICAgICAgICB9CkBAIC00MDk1LDI0ICs0MDk1LDE5IEBAIHN1
YiBOYXRpdmVUb0pTVmFsdWUKICAgICB9CiAKICAgICBteSAkYXJyYXlUeXBlID0gJGNvZGVHZW5l
cmF0b3ItPkdldEFycmF5VHlwZSgkdHlwZSk7Ci0gICAgaWYgKCRhcnJheVR5cGUpIHsKLSAgICAg
ICAgaWYgKCR0eXBlIGVxICJET01TdHJpbmdbXSIpIHsKKyAgICBteSAkc2VxdWVuY2VUeXBlID0g
JGNvZGVHZW5lcmF0b3ItPkdldFNlcXVlbmNlVHlwZSgkdHlwZSk7CisgICAgbXkgJGFycmF5T3JT
ZXF1ZW5jZVR5cGUgPSAkYXJyYXlUeXBlIHx8ICRzZXF1ZW5jZVR5cGU7CisKKyAgICBpZiAoJGFy
cmF5T3JTZXF1ZW5jZVR5cGUpIHsKKyAgICAgICAgaWYgKCRhcnJheVR5cGUgZXEgIkRPTVN0cmlu
ZyIpIHsKICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJWOERPTVN0cmluZ0xpc3QuaCIp
OwogICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkRPTVN0cmluZ0xpc3QuaCIpOwotICAg
ICAgICB9IGVsc2lmICghJGNvZGVHZW5lcmF0b3ItPlNraXBJbmNsdWRlSGVhZGVyKCRhcnJheVR5
cGUpKSB7Ci0gICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiVjgkYXJyYXlUeXBlLmgiKTsK
LSAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCIkYXJyYXlUeXBlLmgiKTsKLSAgICAgICAg
fQotICAgICAgICByZXR1cm4gInY4QXJyYXkoJHZhbHVlJGdldElzb2xhdGVBcmcpIjsKLSAgICB9
CiAKLSAgICBteSAkc2VxdWVuY2VUeXBlID0gJGNvZGVHZW5lcmF0b3ItPkdldFNlcXVlbmNlVHlw
ZSgkdHlwZSk7Ci0gICAgaWYgKCRzZXF1ZW5jZVR5cGUpIHsKLSAgICAgICAgaWYgKCEkY29kZUdl
bmVyYXRvci0+U2tpcEluY2x1ZGVIZWFkZXIoJHNlcXVlbmNlVHlwZSkpIHsKLSAgICAgICAgICAg
IEFkZFRvSW1wbEluY2x1ZGVzKCJWOCRzZXF1ZW5jZVR5cGUuaCIpOwotICAgICAgICAgICAgQWRk
VG9JbXBsSW5jbHVkZXMoIiRzZXF1ZW5jZVR5cGUuaCIpOworICAgICAgICB9IGVsc2lmICgkY29k
ZUdlbmVyYXRvci0+SXNSZWZQdHJUeXBlKCRhcnJheU9yU2VxdWVuY2VUeXBlKSkgeworICAgICAg
ICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoR2V0VjhIZWFkZXJOYW1lKCRhcnJheU9yU2VxdWVuY2VU
eXBlKSk7CisgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiJHthcnJheU9yU2VxdWVuY2VU
eXBlfS5oIik7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuICJ2OEFycmF5KCR2YWx1ZSRnZXRJ
c29sYXRlQXJnKSI7CisgICAgICAgIHJldHVybiAidjhBcnJheSgke3ZhbHVlfSR7Z2V0SXNvbGF0
ZUFyZ30pIjsKICAgICB9CiAKICAgICBBZGRJbmNsdWRlc0ZvclR5cGUoJHR5cGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNw
cAppbmRleCA0N2RhOTVlLi5mMzY5MzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtMTUzNiw3ICsxNTM2LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhTZXF1ZW5jZUFyZyhFeGUKICAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nh
c3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50
Q291bnQoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwotICAgIFZlY3RvcjxTY3JpcHRQcm9maWxlPiBz
ZXF1ZW5jZUFyZyh0b05hdGl2ZUFycmF5PFNjcmlwdFByb2ZpbGU+KGV4ZWMsIE1BWUJFX01JU1NJ
TkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKKyAgICBWZWN0b3I8
UmVmUHRyPFNjcmlwdFByb2ZpbGU+ID4gc2VxdWVuY2VBcmcoKHRvSG9zdE9iamVjdEFycmF5PFNj
cmlwdFByb2ZpbGUsIEpTU2NyaXB0UHJvZmlsZT4oZXhlYywgTUFZQkVfTUlTU0lOR19QQVJBTUVU
RVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSwgJnRvU2NyaXB0UHJvZmlsZSkpKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaW1wbC0+bWV0aG9kV2l0aFNlcXVlbmNlQXJnKHNlcXVl
bmNlQXJnKTsKQEAgLTIyNTQsNyArMjI1NCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEwCiAg
ICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBs
KCkpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQogICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsK
LSAgICBWZWN0b3I8dW5zaWduZWQgbG9uZz4gYXJyYXlBcmcodG9OYXRpdmVBcnJheTx1bnNpZ25l
ZCBsb25nPihleGVjLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNV
bmRlZmluZWQpKSk7CisgICAgVmVjdG9yPHVuc2lnbmVkPiBhcnJheUFyZyh0b05hdGl2ZUFycmF5
PHVuc2lnbmVkPihleGVjLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0
SXNVbmRlZmluZWQpKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwtPm92ZXJsb2Fk
ZWRNZXRob2QoYXJyYXlBcmcpOwpAQCAtMjQyMiw3ICsyNDIyLDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVbnNpZ25l
ZExvbmdTZXEKICAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3Rl
ZFRoaXMtPmltcGwoKSk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoZXhlYykpOwotICAgIFZlY3Rvcjx1bnNpZ25lZCBsb25nPiB1bnNpZ25lZExvbmdTZXF1ZW5j
ZSh0b05hdGl2ZUFycmF5PHVuc2lnbmVkIGxvbmc+KGV4ZWMsIE1BWUJFX01JU1NJTkdfUEFSQU1F
VEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKKyAgICBWZWN0b3I8dW5zaWduZWQ+
IHVuc2lnbmVkTG9uZ1NlcXVlbmNlKHRvTmF0aXZlQXJyYXk8dW5zaWduZWQ+KGV4ZWMsIE1BWUJF
X01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKICAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiAgICAgaW1wbC0+bWV0aG9kV2l0aFVuc2lnbmVkTG9uZ1NlcXVlbmNl
KHVuc2lnbmVkTG9uZ1NlcXVlbmNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKaW5kZXggYjhlNmIxNS4uZTM2N2NlOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE9iai5jcHAKQEAgLTE4OSw3ICsxODksNyBAQCBzdGF0aWMgdm9pZCBsb25nTG9uZ0F0dHJB
dHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbAog
ICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoubG9uZ0xvbmdBdHRyLl9zZXQiKTsKICAgICBUZXN0
T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIGxvbmcg
bG9uZyB2ID0gdG9JbnQ2NCh2YWx1ZSk7Ci0gICAgaW1wLT5zZXRMb25nTG9uZ0F0dHIoV1RGOjpn
ZXRQdHIodikpOworICAgIGltcC0+c2V0TG9uZ0xvbmdBdHRyKHYpOwogICAgIHJldHVybjsKIH0K
IApAQCAtMjA1LDcgKzIwNSw3IEBAIHN0YXRpYyB2b2lkIHVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0
clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsCiAgICAgSU5DX1NU
QVRTKCJET00uVGVzdE9iai51bnNpZ25lZExvbmdMb25nQXR0ci5fc2V0Iik7CiAgICAgVGVzdE9i
aiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICB1bnNpZ25l
ZCBsb25nIGxvbmcgdiA9IHRvSW50NjQodmFsdWUpOwotICAgIGltcC0+c2V0VW5zaWduZWRMb25n
TG9uZ0F0dHIoV1RGOjpnZXRQdHIodikpOworICAgIGltcC0+c2V0VW5zaWduZWRMb25nTG9uZ0F0
dHIodik7CiAgICAgcmV0dXJuOwogfQogCkBAIC0xMTA4LDcgKzExMDgsNyBAQCBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0NhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmCiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4g
dGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgVGVz
dE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBWOFRS
WUNBVENIKFZlY3RvcjxTY3JpcHRQcm9maWxlPiwgc2VxdWVuY2VBcmcsIHRvTmF0aXZlQXJyYXk8
U2NyaXB0UHJvZmlsZT4oTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElz
VW5kZWZpbmVkKSkpOworICAgIFY4VFJZQ0FUQ0goVmVjdG9yPFJlZlB0cjxTY3JpcHRQcm9maWxl
PiA+LCBzZXF1ZW5jZUFyZywgKHRvSG9zdE9iamVjdEFycmF5PFNjcmlwdFByb2ZpbGUsIFY4U2Ny
aXB0UHJvZmlsZT4oTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5k
ZWZpbmVkKSkpKTsKICAgICBpbXAtPm1ldGhvZFdpdGhTZXF1ZW5jZUFyZyhzZXF1ZW5jZUFyZyk7
CiAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CkBAIC0xNjUzLDcgKzE2NTMsNyBAQCBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG92ZXJsb2FkZWRNZXRob2QxMENhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAg
cmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwog
ICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0g
ICAgVjhUUllDQVRDSChWZWN0b3I8dW5zaWduZWQgbG9uZz4sIGFycmF5QXJnLCB0b05hdGl2ZUFy
cmF5PHVuc2lnbmVkIGxvbmc+KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1
bHRJc1VuZGVmaW5lZCkpKTsKKyAgICBWOFRSWUNBVENIKFZlY3Rvcjx1bnNpZ25lZD4sIGFycmF5
QXJnLCB0b05hdGl2ZUFycmF5PHVuc2lnbmVkPihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdz
LCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSk7CiAgICAgaW1wLT5vdmVybG9hZGVkTWV0aG9kKGFy
cmF5QXJnKTsKICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhCaW5kaW5nLmgKaW5kZXggNWQyZTA2MC4uNTEwYTJhNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKQEAgLTEsNSArMSw2IEBACiAvKgogKiBDb3B5cmlnaHQg
KEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyogQ29weXJpZ2h0IChD
KSAyMDEyIEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogKgogKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQpAQCAtMjA2LDYgKzIwNywzMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIH0KICAgICB9OwogCisgICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFY4VD4K
KyAgICBWZWN0b3I8UmVmUHRyPFQ+ID4gdG9Ib3N0T2JqZWN0QXJyYXkodjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHZhbHVlKQorICAgIHsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxUPiA+IHJlc3VsdDsK
KworICAgICAgICBpZiAoIXZhbHVlLT5Jc0FycmF5KCkpCisgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OworCisgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHY4VmFsdWUodjg6OkxvY2FsPHY4
OjpWYWx1ZT46Ok5ldyh2YWx1ZSkpOworICAgICAgICB2ODo6TG9jYWw8djg6OkFycmF5PiBhcnJh
eSA9IHY4OjpMb2NhbDx2ODo6QXJyYXk+OjpDYXN0KHY4VmFsdWUpOworICAgICAgICBzaXplX3Qg
bGVuZ3RoID0gYXJyYXktPkxlbmd0aCgpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZWxlbWVu
dCA9IGFycmF5LT5HZXQoaSk7CisKKyAgICAgICAgICAgIGlmIChWOFQ6Okhhc0luc3RhbmNlKGVs
ZW1lbnQpKSB7CisgICAgICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3Qg
PSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGVsZW1lbnQpOworICAgICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoVjhUOjp0b05hdGl2ZShvYmplY3QpKTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoIkludmFsaWQgQXJyYXkgZWxlbWVu
dCB0eXBlIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KIAogICAgIHRlbXBsYXRl
IDxjbGFzcyBUPgogICAgIFZlY3RvcjxUPiB0b05hdGl2ZUFycmF5KHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCAxNjdkMGU1
Li42ZGM3NWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0xMzMsOCAr
MTMzLDggQEAKICAgICBsb25nIGxhc3RTcGVsbENoZWNrUmVxdWVzdFNlcXVlbmNlKGluIERvY3Vt
ZW50IGRvY3VtZW50KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgbG9uZyBsYXN0U3BlbGxD
aGVja1Byb2Nlc3NlZFNlcXVlbmNlKGluIERvY3VtZW50IGRvY3VtZW50KSByYWlzZXMgKERPTUV4
Y2VwdGlvbik7CiAKLSAgICBzZXF1ZW5jZTxTdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMo
KTsKLSAgICB2b2lkIHNldFVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoaW4gc2VxdWVuY2U8U3RyaW5n
PiBsYW5ndWFnZXMpOworICAgIHNlcXVlbmNlPERPTVN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1
YWdlcygpOworICAgIHZvaWQgc2V0VXNlclByZWZlcnJlZExhbmd1YWdlcyhpbiBzZXF1ZW5jZTxE
T01TdHJpbmc+IGxhbmd1YWdlcyk7CiAKICAgICB1bnNpZ25lZCBsb25nIHdoZWVsRXZlbnRIYW5k
bGVyQ291bnQoaW4gRG9jdW1lbnQgZG9jdW1lbnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAg
ICB1bnNpZ25lZCBsb25nIHRvdWNoRXZlbnRIYW5kbGVyQ291bnQoaW4gRG9jdW1lbnQgZG9jdW1l
bnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKQEAgLTE4Myw3ICsxODMsNyBAQAogCiAgICAgW0Nv
bmRpdGlvbmFsPUlOU1BFQ1RPUl0gdW5zaWduZWQgbG9uZyBudW1iZXJPZkxpdmVOb2RlcygpOwog
ICAgIFtDb25kaXRpb25hbD1JTlNQRUNUT1JdIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZMaXZlRG9j
dW1lbnRzKCk7Ci0gICAgW0NvbmRpdGlvbmFsPUlOU1BFQ1RPUl0gc2VxdWVuY2U8U3RyaW5nPiBj
b25zb2xlTWVzc2FnZUFyZ3VtZW50Q291bnRzKGluIERvY3VtZW50IGRvY3VtZW50KTsKKyAgICBb
Q29uZGl0aW9uYWw9SU5TUEVDVE9SXSBzZXF1ZW5jZTxET01TdHJpbmc+IGNvbnNvbGVNZXNzYWdl
QXJndW1lbnRDb3VudHMoaW4gRG9jdW1lbnQgZG9jdW1lbnQpOwogICAgIFtDb25kaXRpb25hbD1J
TlNQRUNUT1JdIERPTVdpbmRvdyBvcGVuRHVtbXlJbnNwZWN0b3JGcm9udGVuZChpbiBET01TdHJp
bmcgdXJsKTsKICAgICBbQ29uZGl0aW9uYWw9SU5TUEVDVE9SXSB2b2lkIGNsb3NlRHVtbXlJbnNw
ZWN0b3JGcm9udGVuZCgpOwogICAgIFtDb25kaXRpb25hbD1JTlNQRUNUT1JdIHZvaWQgc2V0SW5z
cGVjdG9yUmVzb3VyY2VzRGF0YVNpemVMaW1pdHMoaW4gbG9uZyBtYXhpbXVtUmVzb3VyY2VzQ29u
dGVudFNpemUsIGluIGxvbmcgbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNpemUpIHJhaXNl
cyhET01FeGNlcHRpb24pOwo=
</data>
<flag name="review"
          id="192610"
          type_id="1"
          status="-"
          setter="haraken"
    />
    <flag name="commit-queue"
          id="192615"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176978</attachid>
            <date>2012-11-30 09:04:44 -0800</date>
            <delta_ts>2012-12-03 09:01:31 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>codegen_array_support01.patch</filename>
            <type>text/plain</type>
            <size>28754</size>
            <attacher name="Adam Bergkvist">adam.bergkvist</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2ZDkyZjBlLi4zNDgxYzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQg
QEAKKzIwMTItMTEtMzAgIEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24u
Y29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBnZW5lcmljIHR5cGVzIGluIGFycmF5cyBh
bmQgc2VxdWVuY2VzIHRvIHRoZSBjb2RlIGdlbmVyYXRvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzY0MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZWQgdGhlIGJpbmRpbmdzIGdlbmVyYXRv
cnMgdG8gc3VwcG9ydCBhcnJheXMgYW5kIHNlcXVlbmNlcyBvZiBob3N0IG9iamVjdHMuCisKKyAg
ICAgICAgLSBBcnJheXMgYW5kIHNlcXVlbmNlcyBvZiBob3N0IG9iamVjdHMgYXJlIG1hcHBlZCB0
byBWZWN0b3I8UmVmUHRyPEhvc3RPYmplY3RUeXBlPiA+LgorICAgICAgICAtIEZpeGVkIGlzc3Vl
IHdoZXJlICJzZXF1ZW5jZTxTdHJpbmc+IiB3YXMgdXNlZCBpbiBJREwgZmlsZXMgaW5zdGVhZCBv
ZiAic2VxdWVuY2U8RE9NU3RyaW5nPiIuCisKKyAgICAgICAgVXBkYXRlZCBleGlzdGluZyB0ZXN0
IHJlc3VsdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5pZGw6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaWRsOgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNFbGVtZW50LmlkbDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTUJpbmRpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSG9zdE9iamVjdEFycmF5KToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ci5wbToKKyAgICAgICAgKElzUmVmUHRyVHlwZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChBZGRJbmNsdWRlc0ZvclR5cGUpOgorICAg
ICAgICAoR2V0TmF0aXZlVHlwZSk6CisgICAgICAgIChHZXROYXRpdmVJbm5lclZlY3RvclR5cGUp
OgorICAgICAgICAoSlNWYWx1ZVRvTmF0aXZlKToKKyAgICAgICAgKE5hdGl2ZVRvSlNWYWx1ZSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAg
IChHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXIpOgorICAgICAgICAoR2VuZXJhdGVOb3JtYWxBdHRy
U2V0dGVyKToKKyAgICAgICAgKEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrRXhwcmVzc2lvbik6Cisg
ICAgICAgIChHZW5lcmF0ZUZ1bmN0aW9uQ2FsbFN0cmluZyk6CisgICAgICAgIChHZXROYXRpdmVU
eXBlKToKKyAgICAgICAgKEpTVmFsdWVUb05hdGl2ZSk6CisgICAgICAgIChDcmVhdGVDdXN0b21T
aWduYXR1cmUpOgorICAgICAgICAoTmF0aXZlVG9KU1ZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFNlcXVlbmNlQXJnKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEwKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVuc2ln
bmVkTG9uZ1NlcXVlbmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpsb25nTG9u
Z0F0dHJBdHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp1
bnNpZ25lZExvbmdMb25nQXR0ckF0dHJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9i
alY4SW50ZXJuYWw6Om1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0NhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpvdmVybG9hZGVkTWV0aG9kMTBDYWxsYmFjayk6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvVjhCaW5kaW5nLmg6CisgICAgICAgIChXZWJDb3JlOjp0b0hv
c3RPYmplY3RBcnJheSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDEy
LTExLTI5ICBBbmR5IFNoYXcgIDxhbmR5LnNoYXdAZGlnaWEuY29tPgogCiAgICAgICAgIFtRdF0g
SW1wbGVtZW50IHN1cHBvcnQgZm9yIENvY29hIGJhc2VkIE5QQVBJIHBsdWdpbnMgb24gTWFjCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5pZGwKaW5k
ZXggMGJlZDI0Zi4uNTBmN2U2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2UuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlLmlkbApAQCAtNDQsNyArNDQsNyBAQAogICAgICAgICByYWlzZXMg
KERPTUV4Y2VwdGlvbik7CiAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIElE
QlRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uKGluIERPTVN0cmluZ0xpc3Qgc3RvcmVOYW1lcywgaW4g
W09wdGlvbmFsPURlZmF1bHRJc051bGxTdHJpbmddIERPTVN0cmluZyBtb2RlKQogICAgICAgICBy
YWlzZXMgKERPTUV4Y2VwdGlvbik7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRdIElEQlRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uKGluIHNlcXVlbmNlPFN0cmluZz4gc3RvcmVO
YW1lcywgaW4gW09wdGlvbmFsPURlZmF1bHRJc051bGxTdHJpbmddIERPTVN0cmluZyBtb2RlKQor
ICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJUcmFuc2FjdGlvbiB0cmFu
c2FjdGlvbihpbiBzZXF1ZW5jZTxET01TdHJpbmc+IHN0b3JlTmFtZXMsIGluIFtPcHRpb25hbD1E
ZWZhdWx0SXNOdWxsU3RyaW5nXSBET01TdHJpbmcgbW9kZSkKICAgICAgICAgcmFpc2VzIChET01F
eGNlcHRpb24pOwogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJUcmFu
c2FjdGlvbiB0cmFuc2FjdGlvbihpbiBET01TdHJpbmcgc3RvcmVOYW1lLCBpbiBbT3B0aW9uYWw9
RGVmYXVsdElzTnVsbFN0cmluZ10gRE9NU3RyaW5nIG1vZGUpCiAgICAgICAgIHJhaXNlcyAoRE9N
RXhjZXB0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQk9iamVjdFN0b3JlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9iamVjdFN0b3JlLmlkbAppbmRleCBjN2Q4YmQ2Li4zOTY0MmMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaWRsCkBAIC01Miw3
ICs1Miw3IEBACiAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIElEQlJlcXVl
c3Qgb3BlbkN1cnNvcihpbiBJREJLZXkga2V5LCBpbiBbT3B0aW9uYWxdIERPTVN0cmluZyBkaXJl
Y3Rpb24pCiAgICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKIAotICAgIFtDYWxsV2l0aD1T
Y3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJJbmRleCBjcmVhdGVJbmRleChpbiBET01TdHJpbmcg
bmFtZSwgaW4gc2VxdWVuY2U8U3RyaW5nPiBrZXlQYXRoLCBpbiBbT3B0aW9uYWxdIERpY3Rpb25h
cnkgb3B0aW9ucykKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCSW5k
ZXggY3JlYXRlSW5kZXgoaW4gRE9NU3RyaW5nIG5hbWUsIGluIHNlcXVlbmNlPERPTVN0cmluZz4g
a2V5UGF0aCwgaW4gW09wdGlvbmFsXSBEaWN0aW9uYXJ5IG9wdGlvbnMpCiAgICAgICAgIHJhaXNl
cyAoRE9NRXhjZXB0aW9uKTsKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0g
SURCSW5kZXggY3JlYXRlSW5kZXgoaW4gRE9NU3RyaW5nIG5hbWUsIGluIERPTVN0cmluZyBrZXlQ
YXRoLCBpbiBbT3B0aW9uYWxdIERpY3Rpb25hcnkgb3B0aW9ucykKICAgICAgICAgcmFpc2VzIChE
T01FeGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENTdGF0c0VsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENTdGF0c0VsZW1lbnQuaWRsCmluZGV4IDZhODMwZGUuLjQyMjQxNzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNFbGVtZW50Lmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzRWxlbWVu
dC5pZGwKQEAgLTI3LDUgKzI3LDUgQEAKIF0gaW50ZXJmYWNlIFJUQ1N0YXRzRWxlbWVudCB7CiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIERhdGUgdGltZXN0YW1wOwogICAgIERPTVN0cmluZyBzdGF0
KGluIERPTVN0cmluZyBuYW1lKTsKLSAgICBzZXF1ZW5jZTxTdHJpbmc+IG5hbWVzKCk7CisgICAg
c2VxdWVuY2U8RE9NU3RyaW5nPiBuYW1lcygpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5pZGwKaW5kZXggOWYxODgxYS4uMGYwMWY0MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5pZGwKQEAg
LTMzLDcgKzMzLDcgQEAKICAgICBDb25kaXRpb25hbD1XRUJfU09DS0VUUywKICAgICBBY3RpdmVE
T01PYmplY3QsCiAgICAgQ29uc3RydWN0b3IoaW4gRE9NU3RyaW5nIHVybCksCi0gICAgQ29uc3Ry
dWN0b3IoaW4gRE9NU3RyaW5nIHVybCwgaW4gc2VxdWVuY2U8U3RyaW5nPiBwcm90b2NvbHMpLAor
ICAgIENvbnN0cnVjdG9yKGluIERPTVN0cmluZyB1cmwsIGluIHNlcXVlbmNlPERPTVN0cmluZz4g
cHJvdG9jb2xzKSwKICAgICBDb25zdHJ1Y3RvcihpbiBET01TdHJpbmcgdXJsLCBpbiBET01TdHJp
bmcgcHJvdG9jb2wpLAogICAgIENvbnN0cnVjdG9yUmFpc2VzRXhjZXB0aW9uLAogICAgIENhbGxX
aXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQmluZGluZy5oCmluZGV4IGEyMTk1OWIuLmExNWRhYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCkBAIC0zLDYgKzMsNyBAQAogICogIENvcHlyaWdodCAo
QykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IFNhbXVlbCBXZWluaWcgPHNhbUB3
ZWJraXQub3JnPgogICogIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUsIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIgRXJpY3Nzb24gQUIuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC00MTEsNiArNDEyLDI2IEBAIGVu
dW0gUGFyYW1ldGVyRGVmYXVsdFBvbGljeSB7CiAgICAgICAgIH0KICAgICB9OwogCisgICAgdGVt
cGxhdGUgPGNsYXNzIFQsIGNsYXNzIEpTVD4KKyAgICBWZWN0b3I8UmVmUHRyPFQ+ID4gdG9Ib3N0
T2JqZWN0QXJyYXkoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgVCog
KCp0b1QpKEpTQzo6SlNWYWx1ZSB2YWx1ZSkpCisgICAgeworICAgICAgICBpZiAoIWlzSlNBcnJh
eSh2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gVmVjdG9yPFJlZlB0cjxUPiA+KCk7CisKKyAg
ICAgICAgVmVjdG9yPFJlZlB0cjxUPiA+IHJlc3VsdDsKKyAgICAgICAgSlNDOjpKU0FycmF5KiBh
cnJheSA9IGFzQXJyYXkodmFsdWUpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFy
cmF5LT5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBKU0M6OkpTVmFsdWUgZWxlbWVudCA9
IGFycmF5LT5nZXRJbmRleChleGVjLCBpKTsKKyAgICAgICAgICAgIGlmIChlbGVtZW50LmluaGVy
aXRzKCZKU1Q6OnNfaW5mbykpCisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgoKnRvVCko
ZWxlbWVudCkpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgdGhyb3dWTUVy
cm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiSW52YWxpZCBBcnJheSBlbGVtZW50IHR5
cGUiKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFZlY3RvcjxSZWZQdHI8VD4gPigpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCiAg
ICAgdGVtcGxhdGUgPGNsYXNzIFQ+CiAgICAgVmVjdG9yPFQ+IHRvTmF0aXZlQXJyYXkoSlNDOjpF
eGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0gYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KaW5kZXggMGZkY2EwMi4u
YWMzYWQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvci5wbQpAQCAtMzk1LDYgKzM5NSwxNyBAQCBzdWIgSXNUeXBlZEFycmF5VHlwZQogICAg
IHJldHVybiAwOwogfQogCitzdWIgSXNSZWZQdHJUeXBlCit7CisgICAgbXkgJG9iamVjdCA9IHNo
aWZ0OworICAgIG15ICR0eXBlID0gc2hpZnQ7CisKKyAgICByZXR1cm4gMCBpZiAkb2JqZWN0LT5J
c1ByaW1pdGl2ZVR5cGUoJHR5cGUpOworICAgIHJldHVybiAwIGlmICR0eXBlIGVxICJET01TdHJp
bmciOworCisgICAgcmV0dXJuIDE7Cit9CisKIHN1YiBHZXRTVkdUeXBlTmVlZGluZ1RlYXJPZmYK
IHsKICAgICBteSAkb2JqZWN0ID0gc2hpZnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDViNGQ3YWMuLmE2ZWY5NGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCkBAIC04LDYgKzgsNyBAQAogIyBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBM
aW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoQykgMjAxMCBO
b2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICMgQ29weXJpZ2h0
IChDKSAyMDExIFBhdHJpY2sgR2Fuc3RlcmVyIDxwYXJvZ2FAd2Via2l0Lm9yZz4KKyMgQ29weXJp
Z2h0IChDKSAyMDEyIEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCkBAIC0yNDEsNyArMjQyLDcgQEAgc3ViIEFkZEluY2x1ZGVzRm9yVHlwZQogICAgICAg
ICAkaW5jbHVkZXNSZWYtPnsiSlNYUGF0aE5TUmVzb2x2ZXIuaCJ9ID0gMTsKICAgICAgICAgJGlu
Y2x1ZGVzUmVmLT57IkpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmgifSA9IDE7CiAgICAgfSBlbHNp
ZiAoJHR5cGUgZXEgIkRPTVN0cmluZ1tdIikgewotICAgICAgICAjIEZJWE1FOiBBZGQgcHJvcGVy
IHN1cHBvcnQgZm9yIFRbXSwgVFtdPywgc2VxdWVuY2U8VD4KKyAgICAgICAgIyBGSVhNRTogQ29u
c2lkZXIgcmVwbGFjaW5nIERPTVN0cmluZ0xpc3Qgd2l0aCBET01TdHJpbmdbXSBvciBzZXF1ZW5j
ZTxET01TdHJpbmc+LgogICAgICAgICAkaW5jbHVkZXNSZWYtPnsiSlNET01TdHJpbmdMaXN0Lmgi
fSA9IDE7CiAgICAgfSBlbHNpZiAoJHR5cGUgZXEgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIpIHsK
ICAgICAgICAgJGluY2x1ZGVzUmVmLT57IlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIn0gPSAxOwpA
QCAtMzAzMiw3ICszMDMzLDcgQEAgc3ViIEdldE5hdGl2ZVR5cGVGcm9tU2lnbmF0dXJlCiBteSAl
bmF0aXZlVHlwZSA9ICgKICAgICAiQ29tcGFyZUhvdyIgPT4gIlJhbmdlOjpDb21wYXJlSG93IiwK
ICAgICAiRE9NU3RyaW5nIiA9PiAiY29uc3QgU3RyaW5nJiIsCi0gICAgIyBGSVhNRTogQWRkIHBy
b3BlciBzdXBwb3J0IGZvciBUW10sIFRbXT8sIHNlcXVlbmNlPFQ+CisgICAgIyBGSVhNRTogQ29u
c2lkZXIgcmVwbGFjaW5nIERPTVN0cmluZ0xpc3Qgd2l0aCBET01TdHJpbmdbXSBvciBzZXF1ZW5j
ZTxET01TdHJpbmc+LgogICAgICJET01TdHJpbmdbXSIgPT4gIlJlZlB0cjxET01TdHJpbmdMaXN0
PiIsCiAgICAgIkRPTU9iamVjdCIgPT4gIlNjcmlwdFZhbHVlIiwKICAgICAiTm9kZUZpbHRlciIg
PT4gIlJlZlB0cjxOb2RlRmlsdGVyPiIsCkBAIC0zMDYyLDEzICszMDYzLDI1IEBAIHN1YiBHZXRO
YXRpdmVUeXBlCiAgICAgcmV0dXJuICJSZWZQdHI8RE9NU3RyaW5nTGlzdD4iIGlmICR0eXBlIGVx
ICJET01TdHJpbmdMaXN0IiBvciAkdHlwZSBlcSAiRE9NU3RyaW5nW10iOwogICAgIHJldHVybiAk
bmF0aXZlVHlwZXskdHlwZX0gaWYgZXhpc3RzICRuYXRpdmVUeXBleyR0eXBlfTsKIAorICAgIG15
ICRhcnJheVR5cGUgPSAkY29kZUdlbmVyYXRvci0+R2V0QXJyYXlUeXBlKCR0eXBlKTsKICAgICBt
eSAkc2VxdWVuY2VUeXBlID0gJGNvZGVHZW5lcmF0b3ItPkdldFNlcXVlbmNlVHlwZSgkdHlwZSk7
Ci0gICAgcmV0dXJuICJWZWN0b3I8JHtzZXF1ZW5jZVR5cGV9PiIgaWYgJHNlcXVlbmNlVHlwZTsK
KyAgICBteSAkYXJyYXlPclNlcXVlbmNlVHlwZSA9ICRhcnJheVR5cGUgfHwgJHNlcXVlbmNlVHlw
ZTsKKworICAgIHJldHVybiAiVmVjdG9yPCIgLiBHZXROYXRpdmVJbm5lclZlY3RvclR5cGUoJGFy
cmF5T3JTZXF1ZW5jZVR5cGUpIC4gIj4iIGlmICRhcnJheU9yU2VxdWVuY2VUeXBlOwogCiAgICAg
IyBGb3IgYWxsIG90aGVyIHR5cGVzLCB0aGUgbmF0aXZlIHR5cGUgaXMgYSBwb2ludGVyIHdpdGgg
c2FtZSB0eXBlIG5hbWUgYXMgdGhlIElETCB0eXBlLgogICAgIHJldHVybiAiJHt0eXBlfSoiOwog
fQogCitzdWIgR2V0TmF0aXZlSW5uZXJWZWN0b3JUeXBlCit7CisgICAgbXkgJGFycmF5T3JTZXF1
ZW5jZVR5cGUgPSBzaGlmdDsKKworICAgIHJldHVybiAiU3RyaW5nIiBpZiAkYXJyYXlPclNlcXVl
bmNlVHlwZSBlcSAiRE9NU3RyaW5nIjsKKyAgICByZXR1cm4gJG5hdGl2ZVR5cGV7JGFycmF5T3JT
ZXF1ZW5jZVR5cGV9IGlmIGV4aXN0cyAkbmF0aXZlVHlwZXskYXJyYXlPclNlcXVlbmNlVHlwZX07
CisgICAgcmV0dXJuICJSZWZQdHI8JHthcnJheU9yU2VxdWVuY2VUeXBlfT4gIjsKK30KKwogc3Vi
IEdldE5hdGl2ZVR5cGVGb3JDYWxsYmFja3MKIHsKICAgICBteSAkdHlwZSA9IHNoaWZ0OwpAQCAt
MzE5NCwxMyArMzIwNywxNSBAQCBzdWIgSlNWYWx1ZVRvTmF0aXZlCiAgICAgQWRkVG9JbXBsSW5j
bHVkZXMoIkV2ZW50LmgiLCAkY29uZGl0aW9uYWwpIGlmICR0eXBlIGVxICJFdmVudCI7CiAKICAg
ICBteSAkYXJyYXlUeXBlID0gJGNvZGVHZW5lcmF0b3ItPkdldEFycmF5VHlwZSgkdHlwZSk7Ci0g
ICAgaWYgKCRhcnJheVR5cGUpIHsKLSAgICAgICAgcmV0dXJuICJ0b05hdGl2ZUFycmF5PCRhcnJh
eVR5cGU+KGV4ZWMsICR2YWx1ZSkiOwotICAgIH0KLQogICAgIG15ICRzZXF1ZW5jZVR5cGUgPSAk
Y29kZUdlbmVyYXRvci0+R2V0U2VxdWVuY2VUeXBlKCR0eXBlKTsKLSAgICBpZiAoJHNlcXVlbmNl
VHlwZSkgewotICAgICAgICByZXR1cm4gInRvTmF0aXZlQXJyYXk8JHNlcXVlbmNlVHlwZT4oZXhl
YywgJHZhbHVlKSI7CisgICAgbXkgJGFycmF5T3JTZXF1ZW5jZVR5cGUgPSAkYXJyYXlUeXBlIHx8
ICRzZXF1ZW5jZVR5cGU7CisKKyAgICBpZiAoJGFycmF5T3JTZXF1ZW5jZVR5cGUpIHsKKyAgICAg
ICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1JlZlB0clR5cGUoJGFycmF5T3JTZXF1ZW5jZVR5cGUp
KSB7CisgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlMke2FycmF5T3JTZXF1ZW5jZVR5
cGV9LmgiKTsKKyAgICAgICAgICAgIHJldHVybiAiKHRvSG9zdE9iamVjdEFycmF5PCR7YXJyYXlP
clNlcXVlbmNlVHlwZX0sIEpTJHthcnJheU9yU2VxdWVuY2VUeXBlfT4oZXhlYywgJHZhbHVlLCAm
dG8ke2FycmF5T3JTZXF1ZW5jZVR5cGV9KSkiOworICAgICAgICB9CisgICAgICAgIHJldHVybiAi
dG9OYXRpdmVBcnJheTwiIC4gR2V0TmF0aXZlSW5uZXJWZWN0b3JUeXBlKCRhcnJheU9yU2VxdWVu
Y2VUeXBlKSAuICI+KGV4ZWMsICR2YWx1ZSkiOwogICAgIH0KIAogICAgICMgRGVmYXVsdCwgYXNz
dW1lIGF1dG9nZW5lcmF0ZWQgdHlwZSBjb252ZXJzaW9uIHJvdXRpbmVzCkBAIC0zMjYyLDIzICsz
Mjc3LDE3IEBAIHN1YiBOYXRpdmVUb0pTVmFsdWUKICAgICB9CiAKICAgICBteSAkYXJyYXlUeXBl
ID0gJGNvZGVHZW5lcmF0b3ItPkdldEFycmF5VHlwZSgkdHlwZSk7Ci0gICAgaWYgKCRhcnJheVR5
cGUpIHsKLSAgICAgICAgaWYgKCR0eXBlIGVxICJET01TdHJpbmdbXSIpIHsKKyAgICBteSAkc2Vx
dWVuY2VUeXBlID0gJGNvZGVHZW5lcmF0b3ItPkdldFNlcXVlbmNlVHlwZSgkdHlwZSk7CisgICAg
bXkgJGFycmF5T3JTZXF1ZW5jZVR5cGUgPSAkYXJyYXlUeXBlIHx8ICRzZXF1ZW5jZVR5cGU7CisK
KyAgICBpZiAoJGFycmF5T3JTZXF1ZW5jZVR5cGUpIHsKKyAgICAgICAgaWYgKCRhcnJheVR5cGUg
ZXEgIkRPTVN0cmluZyIpIHsKICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKU0RPTVN0
cmluZ0xpc3QuaCIsICRjb25kaXRpb25hbCk7CiAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRl
cygiRE9NU3RyaW5nTGlzdC5oIiwgJGNvbmRpdGlvbmFsKTsKLSAgICAgICAgfSBlbHNpZiAoISRj
b2RlR2VuZXJhdG9yLT5Ta2lwSW5jbHVkZUhlYWRlcigkYXJyYXlUeXBlKSkgewotICAgICAgICAg
ICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTJGFycmF5VHlwZS5oIiwgJGNvbmRpdGlvbmFsKTsKLSAg
ICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCIkYXJyYXlUeXBlLmgiLCAkY29uZGl0aW9uYWwp
OwotICAgICAgICB9Ci0gICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCI8cnVudGltZS9KU0FycmF5
Lmg+IiwgJGNvbmRpdGlvbmFsKTsKLSAgICAgICAgcmV0dXJuICJqc0FycmF5KGV4ZWMsICR0aGlz
VmFsdWUtPmdsb2JhbE9iamVjdCgpLCAkdmFsdWUpIjsKLSAgICB9CiAKLSAgICBteSAkc2VxdWVu
Y2VUeXBlID0gJGNvZGVHZW5lcmF0b3ItPkdldFNlcXVlbmNlVHlwZSgkdHlwZSk7Ci0gICAgaWYg
KCRzZXF1ZW5jZVR5cGUpIHsKLSAgICAgICAgaWYgKCEkY29kZUdlbmVyYXRvci0+U2tpcEluY2x1
ZGVIZWFkZXIoJHNlcXVlbmNlVHlwZSkpIHsKLSAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVz
KCJKUyRzZXF1ZW5jZVR5cGUuaCIsICRjb25kaXRpb25hbCk7Ci0gICAgICAgICAgICBBZGRUb0lt
cGxJbmNsdWRlcygiJHNlcXVlbmNlVHlwZS5oIiwgJGNvbmRpdGlvbmFsKTsKKyAgICAgICAgfSBl
bHNpZiAoJGNvZGVHZW5lcmF0b3ItPklzUmVmUHRyVHlwZSgkYXJyYXlPclNlcXVlbmNlVHlwZSkp
IHsKKyAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKUyR7YXJyYXlPclNlcXVlbmNlVHlw
ZX0uaCIsICRjb25kaXRpb25hbCk7CisgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiJHth
cnJheU9yU2VxdWVuY2VUeXBlfS5oIiwgJGNvbmRpdGlvbmFsKTsKICAgICAgICAgfQogICAgICAg
ICBBZGRUb0ltcGxJbmNsdWRlcygiPHJ1bnRpbWUvSlNBcnJheS5oPiIsICRjb25kaXRpb25hbCk7
CiAgICAgICAgIHJldHVybiAianNBcnJheShleGVjLCAkdGhpc1ZhbHVlLT5nbG9iYWxPYmplY3Qo
KSwgJHZhbHVlKSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvclY4LnBtCmluZGV4IDhhZGIwY2UuLjRmMzM5NTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC03LDYgKzcs
NyBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMDkgQ2FtZXJvbiBNY0Nvcm1hY2sgPGNhbUBtY2MuaWQu
YXU+CiAjIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICMgQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9u
IGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorIyBDb3B5cmlnaHQgKEMpIDIwMTIgRXJpY3Nz
b24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICMgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTEwMjMsNyAr
MTAyNCw3IEBAIEVORAogICAgICAgICB9CiAKICAgICAgICAgJHJlc3VsdCA9ICJ2IjsKLSAgICAg
ICAgJHJlc3VsdCAuPSAiLnJlbGVhc2UoKSIgaWYgKElzUmVmUHRyVHlwZSgkcmV0dXJuVHlwZSkp
OworICAgICAgICAkcmVzdWx0IC49ICIucmVsZWFzZSgpIiBpZiAoJGNvZGVHZW5lcmF0b3ItPklz
UmVmUHRyVHlwZSgkcmV0dXJuVHlwZSkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgICMgQ2FuIGlu
bGluZSB0aGUgZnVuY3Rpb24gY2FsbCBpbnRvIHRoZSByZXR1cm4gc3RhdGVtZW50IHRvIGF2b2lk
IG92ZXJoZWFkIG9mIHVzaW5nIGEgUmVmPD4gdGVtcG9yYXJ5CiAgICAgICAgICRyZXN1bHQgPSAk
Z2V0dGVyU3RyaW5nOwpAQCAtMTI2Niw3ICsxMjY3LDcgQEAgRU5ECiAKICAgICBteSAkcmVzdWx0
ID0gInYiOwogICAgIG15ICRyZXR1cm5UeXBlID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBl
OwotICAgIGlmIChJc1JlZlB0clR5cGUoJHJldHVyblR5cGUpICYmICEkY29kZUdlbmVyYXRvci0+
R2V0QXJyYXlUeXBlKCRyZXR1cm5UeXBlKSkgeworICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNS
ZWZQdHJUeXBlKCRyZXR1cm5UeXBlKSAmJiAhJGNvZGVHZW5lcmF0b3ItPkdldEFycmF5VHlwZSgk
cmV0dXJuVHlwZSkpIHsKICAgICAgICAgJHJlc3VsdCA9ICJXVEY6OmdldFB0cigiIC4gJHJlc3Vs
dCAuICIpIjsKICAgICB9CiAKQEAgLTE0MjQsNyArMTQyNSw2IEBAIHN1YiBHZW5lcmF0ZVBhcmFt
ZXRlcnNDaGVja0V4cHJlc3Npb24KICAgICAgICAgICAgICMgRm9yIENhbGxiYWNrcyBvbmx5IGNo
ZWNrcyBpZiB0aGUgdmFsdWUgaXMgbnVsbCBvciBvYmplY3QuCiAgICAgICAgICAgICBwdXNoKEBh
bmRFeHByZXNzaW9uLCAiKCR7dmFsdWV9LT5Jc051bGwoKSB8fCAke3ZhbHVlfS0+SXNGdW5jdGlv
bigpKSIpOwogICAgICAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SXNBcnJheVR5cGUoJHR5
cGUpIHx8ICRjb2RlR2VuZXJhdG9yLT5HZXRTZXF1ZW5jZVR5cGUoJHR5cGUpKSB7Ci0gICAgICAg
ICAgICAjIEZJWE1FOiBBZGQgcHJvcGVyIHN1cHBvcnQgZm9yIFRbXSwgVFtdPywgc2VxdWVuY2U8
VD4uCiAgICAgICAgICAgICBpZiAoJHBhcmFtZXRlci0+aXNOdWxsYWJsZSkgewogICAgICAgICAg
ICAgICAgIHB1c2goQGFuZEV4cHJlc3Npb24sICIoJHt2YWx1ZX0tPklzTnVsbCgpIHx8ICR7dmFs
dWV9LT5Jc0FycmF5KCkpIik7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMzYwMSw3ICszNjAx
LDcgQEAgc3ViIEdlbmVyYXRlRnVuY3Rpb25DYWxsU3RyaW5nKCkKICAgICBteSAkZnVuY3Rpb25T
dHJpbmcgPSAiJGZ1bmN0aW9uTmFtZSgiIC4gam9pbigiLCAiLCBAYXJndW1lbnRzKSAuICIpIjsK
IAogICAgIG15ICRyZXR1cm4gPSAicmVzdWx0IjsKLSAgICBteSAkcmV0dXJuSXNSZWYgPSBJc1Jl
ZlB0clR5cGUoJHJldHVyblR5cGUpOworICAgIG15ICRyZXR1cm5Jc1JlZiA9ICRjb2RlR2VuZXJh
dG9yLT5Jc1JlZlB0clR5cGUoJHJldHVyblR5cGUpOwogCiAgICAgaWYgKCRyZXR1cm5UeXBlIGVx
ICJ2b2lkIikgewogICAgICAgICAkcmVzdWx0IC49ICRpbmRlbnQgLiAiJGZ1bmN0aW9uU3RyaW5n
O1xuIjsKQEAgLTM2MTIsNyArMzYxMiw3IEBAIHN1YiBHZW5lcmF0ZUZ1bmN0aW9uQ2FsbFN0cmlu
ZygpCiAgICAgICAgICRyZXR1cm4gPSAkZnVuY3Rpb25TdHJpbmc7CiAgICAgICAgICRyZXR1cm5J
c1JlZiA9IDA7CiAKLSAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJTVkdUcmFuc2Zvcm1M
aXN0IiBhbmQgSXNSZWZQdHJUeXBlKCRyZXR1cm5UeXBlKSkgeworICAgICAgICBpZiAoJGludGVy
ZmFjZU5hbWUgZXEgIlNWR1RyYW5zZm9ybUxpc3QiIGFuZCAkY29kZUdlbmVyYXRvci0+SXNSZWZQ
dHJUeXBlKCRyZXR1cm5UeXBlKSkgewogICAgICAgICAgICAgJHJldHVybiA9ICJXVEY6OmdldFB0
cigiIC4gJHJldHVybiAuICIpIjsKICAgICAgICAgfQogICAgIH0KQEAgLTM2NzksMjUgKzM2Nzks
NiBAQCBzdWIgR2V0TmF0aXZlVHlwZUZyb21TaWduYXR1cmUKICAgICByZXR1cm4gJHR5cGU7CiB9
CiAKLXN1YiBJc1JlZlB0clR5cGUKLXsKLSAgICBteSAkdHlwZSA9IHNoaWZ0OwotCi0gICAgcmV0
dXJuIDAgaWYgJHR5cGUgZXEgImJvb2xlYW4iOwotICAgIHJldHVybiAwIGlmICR0eXBlIGVxICJm
bG9hdCI7Ci0gICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEgImludCI7Ci0gICAgcmV0dXJuIDAgaWYg
JHR5cGUgZXEgIkRhdGUiOwotICAgIHJldHVybiAwIGlmICR0eXBlIGVxICJET01TdHJpbmciOwot
ICAgIHJldHVybiAwIGlmICR0eXBlIGVxICJkb3VibGUiOwotICAgIHJldHVybiAwIGlmICR0eXBl
IGVxICJzaG9ydCI7Ci0gICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEgImxvbmciOwotICAgIHJldHVy
biAwIGlmICR0eXBlIGVxICJ1bnNpZ25lZCI7Ci0gICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEgInVu
c2lnbmVkIGxvbmciOwotICAgIHJldHVybiAwIGlmICR0eXBlIGVxICJ1bnNpZ25lZCBzaG9ydCI7
Ci0KLSAgICByZXR1cm4gMTsKLX0KLQogc3ViIEdldE5hdGl2ZVR5cGUKIHsKICAgICBteSAkdHlw
ZSA9IHNoaWZ0OwpAQCAtMzcxMiw5ICszNjkzLDYgQEAgc3ViIEdldE5hdGl2ZVR5cGUKICAgICAg
ICAgfQogICAgIH0KIAotICAgIG15ICRzZXF1ZW5jZVR5cGUgPSAkY29kZUdlbmVyYXRvci0+R2V0
U2VxdWVuY2VUeXBlKCR0eXBlKTsKLSAgICByZXR1cm4gIlZlY3Rvcjwke3NlcXVlbmNlVHlwZX0+
IiBpZiAkc2VxdWVuY2VUeXBlOwotCiAgICAgaWYgKCR0eXBlIGVxICJmbG9hdCIgb3IgJHR5cGUg
ZXEgImRvdWJsZSIpIHsKICAgICAgICAgcmV0dXJuICR0eXBlOwogICAgIH0KQEAgLTM3NTEsMTMg
KzM3MjksMjMgQEAgc3ViIEdldE5hdGl2ZVR5cGUKICAgICByZXR1cm4gIlJlZlB0cjxYUGF0aE5T
UmVzb2x2ZXI+IiBpZiAkdHlwZSBlcSAiWFBhdGhOU1Jlc29sdmVyIjsKIAogICAgIHJldHVybiAi
UmVmUHRyPERPTVN0cmluZ0xpc3Q+IiBpZiAkdHlwZSBlcSAiRE9NU3RyaW5nW10iOwotICAgIHJl
dHVybiAiUmVmUHRyPCR7dHlwZX0+IiBpZiBJc1JlZlB0clR5cGUoJHR5cGUpIGFuZCBub3QgJGlz
UGFyYW1ldGVyOworICAgIHJldHVybiAiUmVmUHRyPCR7dHlwZX0+IiBpZiAkY29kZUdlbmVyYXRv
ci0+SXNSZWZQdHJUeXBlKCR0eXBlKSBhbmQgbm90ICRpc1BhcmFtZXRlcjsKIAogICAgIHJldHVy
biAiUmVmUHRyPE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+IiBpZiAkdHlwZSBlcSAiTWVkaWFRdWVy
eUxpc3RMaXN0ZW5lciI7CiAKLSAgICAjIEZJWE1FOiBTdXBwb3J0IFRbXSwgVFtdPywgc2VxdWVu
Y2U8VD4gZ2VuZXJpY2FsbHkKKyAgICAjIEZJWE1FOiBDb25zaWRlciByZXBsYWNpbmcgRE9NU3Ry
aW5nTGlzdCB3aXRoIERPTVN0cmluZ1tdIG9yIHNlcXVlbmNlPERPTVN0cmluZz4uCiAgICAgcmV0
dXJuICJSZWZQdHI8RE9NU3RyaW5nTGlzdD4iIGlmICR0eXBlIGVxICJET01TdHJpbmdMaXN0IjsK
IAorICAgIG15ICRhcnJheVR5cGUgPSAkY29kZUdlbmVyYXRvci0+R2V0QXJyYXlUeXBlKCR0eXBl
KTsKKyAgICBteSAkc2VxdWVuY2VUeXBlID0gJGNvZGVHZW5lcmF0b3ItPkdldFNlcXVlbmNlVHlw
ZSgkdHlwZSk7CisgICAgbXkgJGFycmF5T3JTZXF1ZW5jZVR5cGUgPSAkYXJyYXlUeXBlIHx8ICRz
ZXF1ZW5jZVR5cGU7CisKKyAgICBpZiAoJGFycmF5T3JTZXF1ZW5jZVR5cGUpIHsKKyAgICAgICAg
bXkgJG5hdGl2ZVR5cGUgPSBHZXROYXRpdmVUeXBlKCRhcnJheU9yU2VxdWVuY2VUeXBlKTsKKyAg
ICAgICAgJG5hdGl2ZVR5cGUgLj0gIiAiIGlmICgkbmF0aXZlVHlwZSA9fiAvPiQvKTsKKyAgICAg
ICAgcmV0dXJuICJWZWN0b3I8JHtuYXRpdmVUeXBlfT4iOworICAgIH0KKwogICAgICMgRGVmYXVs
dCwgYXNzdW1lIG5hdGl2ZSB0eXBlIGlzIGEgcG9pbnRlciB3aXRoIHNhbWUgdHlwZSBuYW1lIGFz
IGlkbCB0eXBlCiAgICAgcmV0dXJuICIke3R5cGV9KiI7CiB9CkBAIC0zODEwLDcgKzM3OTgsNyBA
QCBzdWIgSlNWYWx1ZVRvTmF0aXZlCiAgICAgcmV0dXJuICJzdGF0aWNfY2FzdDxSYW5nZTo6Q29t
cGFyZUhvdz4oJHZhbHVlLT5JbnQzMlZhbHVlKCkpIiBpZiAkdHlwZSBlcSAiQ29tcGFyZUhvdyI7
CiAgICAgcmV0dXJuICJ0b1dlYkNvcmVEYXRlKCR2YWx1ZSkiIGlmICR0eXBlIGVxICJEYXRlIjsK
ICAgICByZXR1cm4gInRvRE9NU3RyaW5nTGlzdCgkdmFsdWUpIiBpZiAkdHlwZSBlcSAiRE9NU3Ry
aW5nTGlzdCI7Ci0gICAgIyBGSVhNRTogQWRkIHByb3BlciBzdXBwb3J0IGZvciBUW10sIFRbXT8g
YW5kIHNlcXVlbmNlPFQ+LgorICAgICMgRklYTUU6IENvbnNpZGVyIHJlcGxhY2luZyBET01TdHJp
bmdMaXN0IHdpdGggRE9NU3RyaW5nW10gb3Igc2VxdWVuY2U8RE9NU3RyaW5nPi4KICAgICByZXR1
cm4gInRvRE9NU3RyaW5nTGlzdCgkdmFsdWUpIiBpZiAkdHlwZSBlcSAiRE9NU3RyaW5nW10iOwog
CiAgICAgaWYgKCR0eXBlIGVxICJET01TdHJpbmciIG9yICR0eXBlIGVxICJET01Vc2VyRGF0YSIp
IHsKQEAgLTM4NjIsMTMgKzM4NTAsMTUgQEAgc3ViIEpTVmFsdWVUb05hdGl2ZQogICAgIH0KIAog
ICAgIG15ICRhcnJheVR5cGUgPSAkY29kZUdlbmVyYXRvci0+R2V0QXJyYXlUeXBlKCR0eXBlKTsK
LSAgICBpZiAoJGFycmF5VHlwZSkgewotICAgICAgICByZXR1cm4gInRvTmF0aXZlQXJyYXk8JGFy
cmF5VHlwZT4oJHZhbHVlKSI7Ci0gICAgfQotCiAgICAgbXkgJHNlcXVlbmNlVHlwZSA9ICRjb2Rl
R2VuZXJhdG9yLT5HZXRTZXF1ZW5jZVR5cGUoJHR5cGUpOwotICAgIGlmICgkc2VxdWVuY2VUeXBl
KSB7Ci0gICAgICAgIHJldHVybiAidG9OYXRpdmVBcnJheTwkc2VxdWVuY2VUeXBlPigkdmFsdWUp
IjsKKyAgICBteSAkYXJyYXlPclNlcXVlbmNlVHlwZSA9ICRhcnJheVR5cGUgfHwgJHNlcXVlbmNl
VHlwZTsKKworICAgIGlmICgkYXJyYXlPclNlcXVlbmNlVHlwZSkgeworICAgICAgICBpZiAoJGNv
ZGVHZW5lcmF0b3ItPklzUmVmUHRyVHlwZSgkYXJyYXlPclNlcXVlbmNlVHlwZSkpIHsKKyAgICAg
ICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJWOCR7YXJyYXlPclNlcXVlbmNlVHlwZX0uaCIpOwor
ICAgICAgICAgICAgcmV0dXJuICIodG9Ib3N0T2JqZWN0QXJyYXk8JHthcnJheU9yU2VxdWVuY2VU
eXBlfSwgVjgke2FycmF5T3JTZXF1ZW5jZVR5cGV9PigkdmFsdWUpKSI7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuICJ0b05hdGl2ZUFycmF5PCIgLiBHZXROYXRpdmVUeXBlKCRhcnJheU9yU2Vx
dWVuY2VUeXBlKSAuICI+KCR2YWx1ZSkiOwogICAgIH0KIAogICAgIEFkZEluY2x1ZGVzRm9yVHlw
ZSgkdHlwZSk7CkBAIC0zOTA2LDEzICszODk2LDIzIEBAIHN1YiBDcmVhdGVDdXN0b21TaWduYXR1
cmUKICAgICAgICAgICAgICAgICAkcmVzdWx0IC49ICJ2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRl
bXBsYXRlPigpIjsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgbXkgJHR5
cGUgPSAkcGFyYW1ldGVyLT50eXBlOworCisgICAgICAgICAgICAgICAgbXkgJGFycmF5VHlwZSA9
ICRjb2RlR2VuZXJhdG9yLT5HZXRBcnJheVR5cGUoJHR5cGUpOwogICAgICAgICAgICAgICAgIG15
ICRzZXF1ZW5jZVR5cGUgPSAkY29kZUdlbmVyYXRvci0+R2V0U2VxdWVuY2VUeXBlKCR0eXBlKTsK
LSAgICAgICAgICAgICAgICBpZiAoJHNlcXVlbmNlVHlwZSkgewotICAgICAgICAgICAgICAgICAg
ICBpZiAoJGNvZGVHZW5lcmF0b3ItPlNraXBJbmNsdWRlSGVhZGVyKCRzZXF1ZW5jZVR5cGUpKSB7
CisgICAgICAgICAgICAgICAgbXkgJGFycmF5T3JTZXF1ZW5jZVR5cGUgPSAkYXJyYXlUeXBlIHx8
ICRzZXF1ZW5jZVR5cGU7CisKKyAgICAgICAgICAgICAgICBpZiAoJGFycmF5T3JTZXF1ZW5jZVR5
cGUpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRhcnJheVR5cGUgZXEgIkRPTVN0cmluZyIp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJWOERPTVN0cmlu
Z0xpc3QuaCIpOworICAgICAgICAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkRP
TVN0cmluZ0xpc3QuaCIpOworCisgICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRjb2RlR2Vu
ZXJhdG9yLT5Jc1JlZlB0clR5cGUoJGFycmF5T3JTZXF1ZW5jZVR5cGUpKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcyhHZXRWOEhlYWRlck5hbWUoJGFycmF5T3JT
ZXF1ZW5jZVR5cGUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVz
KCIke2FycmF5T3JTZXF1ZW5jZVR5cGV9LmgiKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgLj0gInY4OjpIYW5kbGU8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+KCkiOwogICAgICAgICAgICAgICAgICAgICAgICAgbmV4dDsKICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygi
JHNlcXVlbmNlVHlwZS5oIik7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoR2V0VjhIZWFkZXJOYW1lKCR0eXBlKSk7CiAgICAg
ICAgICAgICAgICAgfQpAQCAtNDA5NSwyNCArNDA5NSwxOSBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVl
CiAgICAgfQogCiAgICAgbXkgJGFycmF5VHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5HZXRBcnJheVR5
cGUoJHR5cGUpOwotICAgIGlmICgkYXJyYXlUeXBlKSB7Ci0gICAgICAgIGlmICgkdHlwZSBlcSAi
RE9NU3RyaW5nW10iKSB7CisgICAgbXkgJHNlcXVlbmNlVHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5H
ZXRTZXF1ZW5jZVR5cGUoJHR5cGUpOworICAgIG15ICRhcnJheU9yU2VxdWVuY2VUeXBlID0gJGFy
cmF5VHlwZSB8fCAkc2VxdWVuY2VUeXBlOworCisgICAgaWYgKCRhcnJheU9yU2VxdWVuY2VUeXBl
KSB7CisgICAgICAgIGlmICgkYXJyYXlUeXBlIGVxICJET01TdHJpbmciKSB7CiAgICAgICAgICAg
ICBBZGRUb0ltcGxJbmNsdWRlcygiVjhET01TdHJpbmdMaXN0LmgiKTsKICAgICAgICAgICAgIEFk
ZFRvSW1wbEluY2x1ZGVzKCJET01TdHJpbmdMaXN0LmgiKTsKLSAgICAgICAgfSBlbHNpZiAoISRj
b2RlR2VuZXJhdG9yLT5Ta2lwSW5jbHVkZUhlYWRlcigkYXJyYXlUeXBlKSkgewotICAgICAgICAg
ICAgQWRkVG9JbXBsSW5jbHVkZXMoIlY4JGFycmF5VHlwZS5oIik7Ci0gICAgICAgICAgICBBZGRU
b0ltcGxJbmNsdWRlcygiJGFycmF5VHlwZS5oIik7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJu
ICJ2OEFycmF5KCR2YWx1ZSRnZXRJc29sYXRlQXJnKSI7Ci0gICAgfQogCi0gICAgbXkgJHNlcXVl
bmNlVHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5HZXRTZXF1ZW5jZVR5cGUoJHR5cGUpOwotICAgIGlm
ICgkc2VxdWVuY2VUeXBlKSB7Ci0gICAgICAgIGlmICghJGNvZGVHZW5lcmF0b3ItPlNraXBJbmNs
dWRlSGVhZGVyKCRzZXF1ZW5jZVR5cGUpKSB7Ci0gICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRl
cygiVjgkc2VxdWVuY2VUeXBlLmgiKTsKLSAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCIk
c2VxdWVuY2VUeXBlLmgiKTsKKyAgICAgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPklzUmVm
UHRyVHlwZSgkYXJyYXlPclNlcXVlbmNlVHlwZSkpIHsKKyAgICAgICAgICAgIEFkZFRvSW1wbElu
Y2x1ZGVzKEdldFY4SGVhZGVyTmFtZSgkYXJyYXlPclNlcXVlbmNlVHlwZSkpOworICAgICAgICAg
ICAgQWRkVG9JbXBsSW5jbHVkZXMoIiR7YXJyYXlPclNlcXVlbmNlVHlwZX0uaCIpOwogICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiAidjhBcnJheSgkdmFsdWUkZ2V0SXNvbGF0ZUFyZykiOworICAg
ICAgICByZXR1cm4gInY4QXJyYXkoJHt2YWx1ZX0ke2dldElzb2xhdGVBcmd9KSI7CiAgICAgfQog
CiAgICAgQWRkSW5jbHVkZXNGb3JUeXBlKCR0eXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggNDdkYTk1ZS4u
ZjM2OTM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTE1MzYsNyArMTUzNiw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoU2VxdWVu
Y2VBcmcoRXhlCiAgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0
ZWRUaGlzLT5pbXBsKCkpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQogICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKGV4ZWMpKTsKLSAgICBWZWN0b3I8U2NyaXB0UHJvZmlsZT4gc2VxdWVuY2VBcmcodG9OYXRp
dmVBcnJheTxTY3JpcHRQcm9maWxlPihleGVjLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVj
LCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSk7CisgICAgVmVjdG9yPFJlZlB0cjxTY3JpcHRQcm9m
aWxlPiA+IHNlcXVlbmNlQXJnKCh0b0hvc3RPYmplY3RBcnJheTxTY3JpcHRQcm9maWxlLCBKU1Nj
cmlwdFByb2ZpbGU+KGV4ZWMsIE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1
bHRJc1VuZGVmaW5lZCksICZ0b1NjcmlwdFByb2ZpbGUpKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogICAgIGltcGwtPm1ldGhvZFdpdGhTZXF1ZW5jZUFyZyhzZXF1ZW5jZUFyZyk7CkBAIC0yMjU0
LDcgKzIyNTQsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMAogICAgIFRlc3RPYmoqIGltcGwg
PSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKICAgICBpZiAoZXhl
Yy0+YXJndW1lbnRDb3VudCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVj
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7Ci0gICAgVmVjdG9yPHVuc2ln
bmVkIGxvbmc+IGFycmF5QXJnKHRvTmF0aXZlQXJyYXk8dW5zaWduZWQgbG9uZz4oZXhlYywgTUFZ
QkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkpOworICAg
IFZlY3Rvcjx1bnNpZ25lZD4gYXJyYXlBcmcodG9OYXRpdmVBcnJheTx1bnNpZ25lZD4oZXhlYywg
TUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkpOwog
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpbXBsLT5vdmVybG9hZGVkTWV0aG9kKGFycmF5QXJn
KTsKQEAgLTI0MjIsNyArMjQyMiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVW5zaWduZWRMb25nU2VxCiAgICAgVGVz
dE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwog
ICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKLSAgICBW
ZWN0b3I8dW5zaWduZWQgbG9uZz4gdW5zaWduZWRMb25nU2VxdWVuY2UodG9OYXRpdmVBcnJheTx1
bnNpZ25lZCBsb25nPihleGVjLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZh
dWx0SXNVbmRlZmluZWQpKSk7CisgICAgVmVjdG9yPHVuc2lnbmVkPiB1bnNpZ25lZExvbmdTZXF1
ZW5jZSh0b05hdGl2ZUFycmF5PHVuc2lnbmVkPihleGVjLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRF
UihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
ICAgIGltcGwtPm1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5jZSh1bnNpZ25lZExvbmdTZXF1
ZW5jZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RPYmouY3BwCmluZGV4IGI4ZTZiMTUuLmUzNjdjZTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCkBAIC0x
ODksNyArMTg5LDcgQEAgc3RhdGljIHZvaWQgbG9uZ0xvbmdBdHRyQXR0clNldHRlcih2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWwKICAgICBJTkNfU1RBVFMoIkRP
TS5UZXN0T2JqLmxvbmdMb25nQXR0ci5fc2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0
T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBsb25nIGxvbmcgdiA9IHRvSW50NjQo
dmFsdWUpOwotICAgIGltcC0+c2V0TG9uZ0xvbmdBdHRyKFdURjo6Z2V0UHRyKHYpKTsKKyAgICBp
bXAtPnNldExvbmdMb25nQXR0cih2KTsKICAgICByZXR1cm47CiB9CiAKQEAgLTIwNSw3ICsyMDUs
NyBAQCBzdGF0aWMgdm9pZCB1bnNpZ25lZExvbmdMb25nQXR0ckF0dHJTZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbAogICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmou
dW5zaWduZWRMb25nTG9uZ0F0dHIuX3NldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9i
ajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIHYgPSB0
b0ludDY0KHZhbHVlKTsKLSAgICBpbXAtPnNldFVuc2lnbmVkTG9uZ0xvbmdBdHRyKFdURjo6Z2V0
UHRyKHYpKTsKKyAgICBpbXAtPnNldFVuc2lnbmVkTG9uZ0xvbmdBdHRyKHYpOwogICAgIHJldHVy
bjsKIH0KIApAQCAtMTEwOCw3ICsxMTA4LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBtZXRob2RXaXRoU2VxdWVuY2VBcmdDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJgogICAg
IGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVz
dE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgVjhUUllDQVRDSChWZWN0b3I8U2Ny
aXB0UHJvZmlsZT4sIHNlcXVlbmNlQXJnLCB0b05hdGl2ZUFycmF5PFNjcmlwdFByb2ZpbGU+KE1B
WUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKKyAg
ICBWOFRSWUNBVENIKFZlY3RvcjxSZWZQdHI8U2NyaXB0UHJvZmlsZT4gPiwgc2VxdWVuY2VBcmcs
ICh0b0hvc3RPYmplY3RBcnJheTxTY3JpcHRQcm9maWxlLCBWOFNjcmlwdFByb2ZpbGU+KE1BWUJF
X01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKSk7CiAgICAg
aW1wLT5tZXRob2RXaXRoU2VxdWVuY2VBcmcoc2VxdWVuY2VBcmcpOwogICAgIHJldHVybiB2OFVu
ZGVmaW5lZCgpOwogfQpAQCAtMTY1Myw3ICsxNjUzLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kMTBDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmcKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBUZXN0T2JqKiBpbXAg
PSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIFY4VFJZQ0FUQ0goVmVj
dG9yPHVuc2lnbmVkIGxvbmc+LCBhcnJheUFyZywgdG9OYXRpdmVBcnJheTx1bnNpZ25lZCBsb25n
PihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSk7
CisgICAgVjhUUllDQVRDSChWZWN0b3I8dW5zaWduZWQ+LCBhcnJheUFyZywgdG9OYXRpdmVBcnJh
eTx1bnNpZ25lZD4oTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5k
ZWZpbmVkKSkpOwogICAgIGltcC0+b3ZlcmxvYWRlZE1ldGhvZChhcnJheUFyZyk7CiAgICAgcmV0
dXJuIHY4VW5kZWZpbmVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOEJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5o
CmluZGV4IDVkMmUwNjAuLjAxYWI0NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4QmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Qmlu
ZGluZy5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqIENvcHlyaWdodCAoQykgMjAxMiBFcmljc3NvbiBB
Qi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICoKICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
QEAgLTIwNiw2ICsyMDcsMjkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB9CiAgICAg
fTsKIAorICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBWOFQ+CisgICAgVmVjdG9yPFJlZlB0
cjxUPiA+IHRvSG9zdE9iamVjdEFycmF5KHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSkKKyAg
ICB7CisgICAgICAgIGlmICghdmFsdWUtPklzQXJyYXkoKSkKKyAgICAgICAgICAgIHJldHVybiBW
ZWN0b3I8UmVmUHRyPFQ+ID4oKTsKKworICAgICAgICBWZWN0b3I8UmVmUHRyPFQ+ID4gcmVzdWx0
OworICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2OFZhbHVlKHY4OjpMb2NhbDx2ODo6VmFs
dWU+OjpOZXcodmFsdWUpKTsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpBcnJheT4gYXJyYXkgPSB2
ODo6TG9jYWw8djg6OkFycmF5Pjo6Q2FzdCh2OFZhbHVlKTsKKyAgICAgICAgc2l6ZV90IGxlbmd0
aCA9IGFycmF5LT5MZW5ndGgoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5n
dGg7ICsraSkgeworICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGVsZW1lbnQgPSBh
cnJheS0+R2V0KGkpOworCisgICAgICAgICAgICBpZiAoVjhUOjpIYXNJbnN0YW5jZShlbGVtZW50
KSkgeworICAgICAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0ID0gdjg6
OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChlbGVtZW50KTsKKyAgICAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKFY4VDo6dG9OYXRpdmUob2JqZWN0KSk7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKCJJbnZhbGlkIEFycmF5IGVsZW1lbnQgdHlw
ZSIpOworICAgICAgICAgICAgICAgIHJldHVybiBWZWN0b3I8UmVmUHRyPFQ+ID4oKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KIAogICAg
IHRlbXBsYXRlIDxjbGFzcyBUPgogICAgIFZlY3RvcjxUPiB0b05hdGl2ZUFycmF5KHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRl
eCAxNjdkMGU1Li42ZGM3NWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBA
IC0xMzMsOCArMTMzLDggQEAKICAgICBsb25nIGxhc3RTcGVsbENoZWNrUmVxdWVzdFNlcXVlbmNl
KGluIERvY3VtZW50IGRvY3VtZW50KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgbG9uZyBs
YXN0U3BlbGxDaGVja1Byb2Nlc3NlZFNlcXVlbmNlKGluIERvY3VtZW50IGRvY3VtZW50KSByYWlz
ZXMgKERPTUV4Y2VwdGlvbik7CiAKLSAgICBzZXF1ZW5jZTxTdHJpbmc+IHVzZXJQcmVmZXJyZWRM
YW5ndWFnZXMoKTsKLSAgICB2b2lkIHNldFVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoaW4gc2VxdWVu
Y2U8U3RyaW5nPiBsYW5ndWFnZXMpOworICAgIHNlcXVlbmNlPERPTVN0cmluZz4gdXNlclByZWZl
cnJlZExhbmd1YWdlcygpOworICAgIHZvaWQgc2V0VXNlclByZWZlcnJlZExhbmd1YWdlcyhpbiBz
ZXF1ZW5jZTxET01TdHJpbmc+IGxhbmd1YWdlcyk7CiAKICAgICB1bnNpZ25lZCBsb25nIHdoZWVs
RXZlbnRIYW5kbGVyQ291bnQoaW4gRG9jdW1lbnQgZG9jdW1lbnQpIHJhaXNlcyAoRE9NRXhjZXB0
aW9uKTsKICAgICB1bnNpZ25lZCBsb25nIHRvdWNoRXZlbnRIYW5kbGVyQ291bnQoaW4gRG9jdW1l
bnQgZG9jdW1lbnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKQEAgLTE4Myw3ICsxODMsNyBAQAog
CiAgICAgW0NvbmRpdGlvbmFsPUlOU1BFQ1RPUl0gdW5zaWduZWQgbG9uZyBudW1iZXJPZkxpdmVO
b2RlcygpOwogICAgIFtDb25kaXRpb25hbD1JTlNQRUNUT1JdIHVuc2lnbmVkIGxvbmcgbnVtYmVy
T2ZMaXZlRG9jdW1lbnRzKCk7Ci0gICAgW0NvbmRpdGlvbmFsPUlOU1BFQ1RPUl0gc2VxdWVuY2U8
U3RyaW5nPiBjb25zb2xlTWVzc2FnZUFyZ3VtZW50Q291bnRzKGluIERvY3VtZW50IGRvY3VtZW50
KTsKKyAgICBbQ29uZGl0aW9uYWw9SU5TUEVDVE9SXSBzZXF1ZW5jZTxET01TdHJpbmc+IGNvbnNv
bGVNZXNzYWdlQXJndW1lbnRDb3VudHMoaW4gRG9jdW1lbnQgZG9jdW1lbnQpOwogICAgIFtDb25k
aXRpb25hbD1JTlNQRUNUT1JdIERPTVdpbmRvdyBvcGVuRHVtbXlJbnNwZWN0b3JGcm9udGVuZChp
biBET01TdHJpbmcgdXJsKTsKICAgICBbQ29uZGl0aW9uYWw9SU5TUEVDVE9SXSB2b2lkIGNsb3Nl
RHVtbXlJbnNwZWN0b3JGcm9udGVuZCgpOwogICAgIFtDb25kaXRpb25hbD1JTlNQRUNUT1JdIHZv
aWQgc2V0SW5zcGVjdG9yUmVzb3VyY2VzRGF0YVNpemVMaW1pdHMoaW4gbG9uZyBtYXhpbXVtUmVz
b3VyY2VzQ29udGVudFNpemUsIGluIGxvbmcgbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNp
emUpIHJhaXNlcyhET01FeGNlcHRpb24pOwo=
</data>
<flag name="commit-queue"
          id="192941"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177263</attachid>
            <date>2012-12-03 09:01:31 -0800</date>
            <delta_ts>2012-12-04 02:53:12 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>codegen_array_support02.patch</filename>
            <type>text/plain</type>
            <size>27638</size>
            <attacher name="Adam Bergkvist">adam.bergkvist</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhNTRhM2RmLi5hYjQwZWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIg
QEAKKzIwMTItMTItMDMgIEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24u
Y29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBnZW5lcmljIHR5cGVzIGluIGFycmF5cyBh
bmQgc2VxdWVuY2VzIHRvIHRoZSBjb2RlIGdlbmVyYXRvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzY0MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZWQgdGhlIGJpbmRpbmdzIGdlbmVyYXRv
cnMgdG8gc3VwcG9ydCBhcnJheXMgYW5kIHNlcXVlbmNlcyBvZiBob3N0IG9iamVjdHMuCisKKyAg
ICAgICAgLSBBcnJheXMgYW5kIHNlcXVlbmNlcyBvZiBob3N0IG9iamVjdHMgYXJlIG1hcHBlZCB0
byBWZWN0b3I8UmVmUHRyPCVSZWZQdHJUeXBlJT4gPi4KKyAgICAgICAgLSBGaXhlZCBpc3N1ZSB3
aGVyZSAic2VxdWVuY2U8U3RyaW5nPiIgd2FzIHVzZWQgaW4gSURMIGZpbGVzIGluc3RlYWQgb2Yg
InNlcXVlbmNlPERPTVN0cmluZz4iLgorCisgICAgICAgIFVwZGF0ZWQgZXhpc3RpbmcgdGVzdCBy
ZXN1bHRzLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaWRsOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmlkbDoKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzRWxlbWVudC5pZGw6CisgICAgICAgICogTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5pZGw6CisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01CaW5kaW5nLmg6CisgICAgICAgIChXZWJDb3JlOjp0b1JlZlB0ck5hdGl2ZUFycmF5KToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ci5wbToKKyAgICAgICAgKElzUmVmUHRyVHlwZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChBZGRJbmNsdWRlc0ZvclR5cGUpOgorICAg
ICAgICAoR2V0TmF0aXZlVHlwZSk6CisgICAgICAgIChHZXROYXRpdmVJbm5lclZlY3RvclR5cGUp
OgorICAgICAgICAoSlNWYWx1ZVRvTmF0aXZlKToKKyAgICAgICAgKE5hdGl2ZVRvSlNWYWx1ZSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAg
IChHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXIpOgorICAgICAgICAoR2VuZXJhdGVOb3JtYWxBdHRy
U2V0dGVyKToKKyAgICAgICAgKEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrRXhwcmVzc2lvbik6Cisg
ICAgICAgIChHZW5lcmF0ZUZ1bmN0aW9uQ2FsbFN0cmluZyk6CisgICAgICAgIChHZXROYXRpdmVU
eXBlKToKKyAgICAgICAgKEpTVmFsdWVUb05hdGl2ZSk6CisgICAgICAgIChDcmVhdGVDdXN0b21T
aWduYXR1cmUpOgorICAgICAgICAoTmF0aXZlVG9KU1ZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFNlcXVlbmNlQXJnKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RPYmpWOEludGVybmFsOjpsb25nTG9uZ0F0dHJBdHRyU2V0dGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp1bnNpZ25lZExvbmdMb25nQXR0ckF0dHJTZXR0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om1ldGhvZFdpdGhTZXF1ZW5j
ZUFyZ0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpvdmVy
bG9hZGVkTWV0aG9kMTBDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhCaW5kaW5n
Lmg6CisgICAgICAgIChXZWJDb3JlOjp0b1JlZlB0ck5hdGl2ZUFycmF5KToKKyAgICAgICAgKiB0
ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTItMTEtMzAgIFNoZXJpZmYgQm90ICA8d2Via2l0
LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHIxMzYxNDIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZS5pZGwKaW5kZXggMGJlZDI0Zi4uNTBmN2U2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmlkbApAQCAtNDQsNyArNDQsNyBAQAogICAg
ICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRdIElEQlRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uKGluIERPTVN0cmluZ0xpc3Qgc3Rv
cmVOYW1lcywgaW4gW09wdGlvbmFsPURlZmF1bHRJc051bGxTdHJpbmddIERPTVN0cmluZyBtb2Rl
KQogICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRdIElEQlRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uKGluIHNlcXVlbmNlPFN0
cmluZz4gc3RvcmVOYW1lcywgaW4gW09wdGlvbmFsPURlZmF1bHRJc051bGxTdHJpbmddIERPTVN0
cmluZyBtb2RlKQorICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJUcmFu
c2FjdGlvbiB0cmFuc2FjdGlvbihpbiBzZXF1ZW5jZTxET01TdHJpbmc+IHN0b3JlTmFtZXMsIGlu
IFtPcHRpb25hbD1EZWZhdWx0SXNOdWxsU3RyaW5nXSBET01TdHJpbmcgbW9kZSkKICAgICAgICAg
cmFpc2VzIChET01FeGNlcHRpb24pOwogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250
ZXh0XSBJREJUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbihpbiBET01TdHJpbmcgc3RvcmVOYW1lLCBp
biBbT3B0aW9uYWw9RGVmYXVsdElzTnVsbFN0cmluZ10gRE9NU3RyaW5nIG1vZGUpCiAgICAgICAg
IHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmlkbAppbmRleCBjN2Q4YmQ2Li4zOTY0MmMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUu
aWRsCkBAIC01Miw3ICs1Miw3IEBACiAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRdIElEQlJlcXVlc3Qgb3BlbkN1cnNvcihpbiBJREJLZXkga2V5LCBpbiBbT3B0aW9uYWxdIERP
TVN0cmluZyBkaXJlY3Rpb24pCiAgICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKIAotICAg
IFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJJbmRleCBjcmVhdGVJbmRleChp
biBET01TdHJpbmcgbmFtZSwgaW4gc2VxdWVuY2U8U3RyaW5nPiBrZXlQYXRoLCBpbiBbT3B0aW9u
YWxdIERpY3Rpb25hcnkgb3B0aW9ucykKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dF0gSURCSW5kZXggY3JlYXRlSW5kZXgoaW4gRE9NU3RyaW5nIG5hbWUsIGluIHNlcXVlbmNl
PERPTVN0cmluZz4ga2V5UGF0aCwgaW4gW09wdGlvbmFsXSBEaWN0aW9uYXJ5IG9wdGlvbnMpCiAg
ICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0
aW9uQ29udGV4dF0gSURCSW5kZXggY3JlYXRlSW5kZXgoaW4gRE9NU3RyaW5nIG5hbWUsIGluIERP
TVN0cmluZyBrZXlQYXRoLCBpbiBbT3B0aW9uYWxdIERpY3Rpb25hcnkgb3B0aW9ucykKICAgICAg
ICAgcmFpc2VzIChET01FeGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENTdGF0c0VsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENTdGF0c0VsZW1lbnQuaWRsCmluZGV4IDZhODMwZGUuLjQyMjQx
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3Rh
dHNFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1N0YXRzRWxlbWVudC5pZGwKQEAgLTI3LDUgKzI3LDUgQEAKIF0gaW50ZXJmYWNlIFJUQ1N0YXRz
RWxlbWVudCB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERhdGUgdGltZXN0YW1wOwogICAgIERP
TVN0cmluZyBzdGF0KGluIERPTVN0cmluZyBuYW1lKTsKLSAgICBzZXF1ZW5jZTxTdHJpbmc+IG5h
bWVzKCk7CisgICAgc2VxdWVuY2U8RE9NU3RyaW5nPiBuYW1lcygpOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5pZGwKaW5kZXggOWYxODgxYS4u
MGYwMWY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldC5pZGwKQEAgLTMzLDcgKzMzLDcgQEAKICAgICBDb25kaXRpb25hbD1XRUJfU09DS0VUUywK
ICAgICBBY3RpdmVET01PYmplY3QsCiAgICAgQ29uc3RydWN0b3IoaW4gRE9NU3RyaW5nIHVybCks
Ci0gICAgQ29uc3RydWN0b3IoaW4gRE9NU3RyaW5nIHVybCwgaW4gc2VxdWVuY2U8U3RyaW5nPiBw
cm90b2NvbHMpLAorICAgIENvbnN0cnVjdG9yKGluIERPTVN0cmluZyB1cmwsIGluIHNlcXVlbmNl
PERPTVN0cmluZz4gcHJvdG9jb2xzKSwKICAgICBDb25zdHJ1Y3RvcihpbiBET01TdHJpbmcgdXJs
LCBpbiBET01TdHJpbmcgcHJvdG9jb2wpLAogICAgIENvbnN0cnVjdG9yUmFpc2VzRXhjZXB0aW9u
LAogICAgIENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCmluZGV4IGEyMTk1OWIuLjM2OWI2MWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCkBAIC0zLDYgKzMsNyBAQAogICog
IENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCwgMjAwOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IFNhbXVlbCBX
ZWluaWcgPHNhbUB3ZWJraXQub3JnPgogICogIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUsIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIgRXJpY3Nzb24g
QUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC00MTEsNiAr
NDEyLDI2IEBAIGVudW0gUGFyYW1ldGVyRGVmYXVsdFBvbGljeSB7CiAgICAgICAgIH0KICAgICB9
OwogCisgICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEpTVD4KKyAgICBWZWN0b3I8UmVmUHRy
PFQ+ID4gdG9SZWZQdHJOYXRpdmVBcnJheShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1Zh
bHVlIHZhbHVlLCBUKiAoKnRvVCkoSlNDOjpKU1ZhbHVlIHZhbHVlKSkKKyAgICB7CisgICAgICAg
IGlmICghaXNKU0FycmF5KHZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBWZWN0b3I8UmVmUHRy
PFQ+ID4oKTsKKworICAgICAgICBWZWN0b3I8UmVmUHRyPFQ+ID4gcmVzdWx0OworICAgICAgICBK
U0M6OkpTQXJyYXkqIGFycmF5ID0gYXNBcnJheSh2YWx1ZSk7CisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgYXJyYXktPmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgICAgIEpTQzo6SlNW
YWx1ZSBlbGVtZW50ID0gYXJyYXktPmdldEluZGV4KGV4ZWMsIGkpOworICAgICAgICAgICAgaWYg
KGVsZW1lbnQuaW5oZXJpdHMoJkpTVDo6c19pbmZvKSkKKyAgICAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCgqdG9UKShlbGVtZW50KSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
ICAgICB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJJbnZhbGlkIEFy
cmF5IGVsZW1lbnQgdHlwZSIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gVmVjdG9yPFJlZlB0
cjxUPiA+KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICB9CisKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KICAgICBWZWN0b3I8VD4gdG9OYXRp
dmVBcnJheShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIHZhbHVlKQogICAgIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ci5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQpp
bmRleCAwZmRjYTAyLi5hYzNhZDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCkBAIC0zOTUsNiArMzk1LDE3IEBAIHN1YiBJc1R5cGVk
QXJyYXlUeXBlCiAgICAgcmV0dXJuIDA7CiB9CiAKK3N1YiBJc1JlZlB0clR5cGUKK3sKKyAgICBt
eSAkb2JqZWN0ID0gc2hpZnQ7CisgICAgbXkgJHR5cGUgPSBzaGlmdDsKKworICAgIHJldHVybiAw
IGlmICRvYmplY3QtPklzUHJpbWl0aXZlVHlwZSgkdHlwZSk7CisgICAgcmV0dXJuIDAgaWYgJHR5
cGUgZXEgIkRPTVN0cmluZyI7CisKKyAgICByZXR1cm4gMTsKK30KKwogc3ViIEdldFNWR1R5cGVO
ZWVkaW5nVGVhck9mZgogewogICAgIG15ICRvYmplY3QgPSBzaGlmdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggNWI0ZDdh
Yy4uMmRkYmVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KQEAgLTgsNiArOCw3IEBACiAjIENvcHlyaWdodCAoQykgUmVzZWFy
Y2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMgQ29weXJp
Z2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVz
KQogIyBDb3B5cmlnaHQgKEMpIDIwMTEgUGF0cmljayBHYW5zdGVyZXIgPHBhcm9nYUB3ZWJraXQu
b3JnPgorIyBDb3B5cmlnaHQgKEMpIDIwMTIgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAjCiAjIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKICMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI0MSw3ICsyNDIsNyBAQCBzdWIgQWRkSW5jbHVkZXNG
b3JUeXBlCiAgICAgICAgICRpbmNsdWRlc1JlZi0+eyJKU1hQYXRoTlNSZXNvbHZlci5oIn0gPSAx
OwogICAgICAgICAkaW5jbHVkZXNSZWYtPnsiSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCJ9ID0g
MTsKICAgICB9IGVsc2lmICgkdHlwZSBlcSAiRE9NU3RyaW5nW10iKSB7Ci0gICAgICAgICMgRklY
TUU6IEFkZCBwcm9wZXIgc3VwcG9ydCBmb3IgVFtdLCBUW10/LCBzZXF1ZW5jZTxUPgorICAgICAg
ICAjIEZJWE1FOiBDb25zaWRlciByZXBsYWNpbmcgRE9NU3RyaW5nTGlzdCB3aXRoIERPTVN0cmlu
Z1tdIG9yIHNlcXVlbmNlPERPTVN0cmluZz4uCiAgICAgICAgICRpbmNsdWRlc1JlZi0+eyJKU0RP
TVN0cmluZ0xpc3QuaCJ9ID0gMTsKICAgICB9IGVsc2lmICgkdHlwZSBlcSAiU2VyaWFsaXplZFNj
cmlwdFZhbHVlIikgewogICAgICAgICAkaW5jbHVkZXNSZWYtPnsiU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmgifSA9IDE7CkBAIC0zMDMyLDcgKzMwMzMsNyBAQCBzdWIgR2V0TmF0aXZlVHlwZUZyb21T
aWduYXR1cmUKIG15ICVuYXRpdmVUeXBlID0gKAogICAgICJDb21wYXJlSG93IiA9PiAiUmFuZ2U6
OkNvbXBhcmVIb3ciLAogICAgICJET01TdHJpbmciID0+ICJjb25zdCBTdHJpbmcmIiwKLSAgICAj
IEZJWE1FOiBBZGQgcHJvcGVyIHN1cHBvcnQgZm9yIFRbXSwgVFtdPywgc2VxdWVuY2U8VD4KKyAg
ICAjIEZJWE1FOiBDb25zaWRlciByZXBsYWNpbmcgRE9NU3RyaW5nTGlzdCB3aXRoIERPTVN0cmlu
Z1tdIG9yIHNlcXVlbmNlPERPTVN0cmluZz4uCiAgICAgIkRPTVN0cmluZ1tdIiA9PiAiUmVmUHRy
PERPTVN0cmluZ0xpc3Q+IiwKICAgICAiRE9NT2JqZWN0IiA9PiAiU2NyaXB0VmFsdWUiLAogICAg
ICJOb2RlRmlsdGVyIiA9PiAiUmVmUHRyPE5vZGVGaWx0ZXI+IiwKQEAgLTMwNjIsMTMgKzMwNjMs
MzEgQEAgc3ViIEdldE5hdGl2ZVR5cGUKICAgICByZXR1cm4gIlJlZlB0cjxET01TdHJpbmdMaXN0
PiIgaWYgJHR5cGUgZXEgIkRPTVN0cmluZ0xpc3QiIG9yICR0eXBlIGVxICJET01TdHJpbmdbXSI7
CiAgICAgcmV0dXJuICRuYXRpdmVUeXBleyR0eXBlfSBpZiBleGlzdHMgJG5hdGl2ZVR5cGV7JHR5
cGV9OwogCisgICAgbXkgJGFycmF5VHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5HZXRBcnJheVR5cGUo
JHR5cGUpOwogICAgIG15ICRzZXF1ZW5jZVR5cGUgPSAkY29kZUdlbmVyYXRvci0+R2V0U2VxdWVu
Y2VUeXBlKCR0eXBlKTsKLSAgICByZXR1cm4gIlZlY3Rvcjwke3NlcXVlbmNlVHlwZX0+IiBpZiAk
c2VxdWVuY2VUeXBlOworICAgIG15ICRhcnJheU9yU2VxdWVuY2VUeXBlID0gJGFycmF5VHlwZSB8
fCAkc2VxdWVuY2VUeXBlOworCisgICAgcmV0dXJuICJWZWN0b3I8IiAuIEdldE5hdGl2ZUlubmVy
VmVjdG9yVHlwZSgkYXJyYXlPclNlcXVlbmNlVHlwZSkgLiAiPiIgaWYgJGFycmF5T3JTZXF1ZW5j
ZVR5cGU7CiAKICAgICAjIEZvciBhbGwgb3RoZXIgdHlwZXMsIHRoZSBuYXRpdmUgdHlwZSBpcyBh
IHBvaW50ZXIgd2l0aCBzYW1lIHR5cGUgbmFtZSBhcyB0aGUgSURMIHR5cGUuCiAgICAgcmV0dXJu
ICIke3R5cGV9KiI7CiB9CiAKK3N1YiBHZXROYXRpdmVJbm5lclZlY3RvclR5cGUKK3sKKyAgICBt
eSAkYXJyYXlPclNlcXVlbmNlVHlwZSA9IHNoaWZ0OworCisgICAgIyBGSVhNRTogVGhlIG5hdGl2
ZVR5cGUgaGFzaCB0cmFuc2xhdGVzICJ1bnNpZ25lZCBsb25nIiB0byAidW5zaWduZWQiIHdoaWNo
CisgICAgIyBpcyBhY2NvcmRpbmcgdG8gV2ViSURMLiBUaGUgVmlicmF0aW9uIEFQSSBkZXBlbmRz
IG9uIHRoZSBvbGQgYmVoYXZpb3IKKyAgICAjIHdoZXJlICJ1bnNpZ25lZCBsb25nIiBpcyBrZXB0
IGFzIHRoZSBXZWJDb3JlIHR5cGUuCisgICAgIyBSZW1vdmUgd29ya2Fyb3VuZCB3aGVuIGh0dHA6
Ly93ZWJraXQub3JnL2IvMTAzODk5IGlzIGZpeGVkLgorICAgIHJldHVybiAidW5zaWduZWQgbG9u
ZyIgaWYgJGFycmF5T3JTZXF1ZW5jZVR5cGUgZXEgInVuc2lnbmVkIGxvbmciOworCisgICAgcmV0
dXJuICJTdHJpbmciIGlmICRhcnJheU9yU2VxdWVuY2VUeXBlIGVxICJET01TdHJpbmciOworICAg
IHJldHVybiAkbmF0aXZlVHlwZXskYXJyYXlPclNlcXVlbmNlVHlwZX0gaWYgZXhpc3RzICRuYXRp
dmVUeXBleyRhcnJheU9yU2VxdWVuY2VUeXBlfTsKKyAgICByZXR1cm4gIlJlZlB0cjwke2FycmF5
T3JTZXF1ZW5jZVR5cGV9PiAiOworfQorCiBzdWIgR2V0TmF0aXZlVHlwZUZvckNhbGxiYWNrcwog
ewogICAgIG15ICR0eXBlID0gc2hpZnQ7CkBAIC0zMTk0LDEzICszMjEzLDE1IEBAIHN1YiBKU1Zh
bHVlVG9OYXRpdmUKICAgICBBZGRUb0ltcGxJbmNsdWRlcygiRXZlbnQuaCIsICRjb25kaXRpb25h
bCkgaWYgJHR5cGUgZXEgIkV2ZW50IjsKIAogICAgIG15ICRhcnJheVR5cGUgPSAkY29kZUdlbmVy
YXRvci0+R2V0QXJyYXlUeXBlKCR0eXBlKTsKLSAgICBpZiAoJGFycmF5VHlwZSkgewotICAgICAg
ICByZXR1cm4gInRvTmF0aXZlQXJyYXk8JGFycmF5VHlwZT4oZXhlYywgJHZhbHVlKSI7Ci0gICAg
fQotCiAgICAgbXkgJHNlcXVlbmNlVHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5HZXRTZXF1ZW5jZVR5
cGUoJHR5cGUpOwotICAgIGlmICgkc2VxdWVuY2VUeXBlKSB7Ci0gICAgICAgIHJldHVybiAidG9O
YXRpdmVBcnJheTwkc2VxdWVuY2VUeXBlPihleGVjLCAkdmFsdWUpIjsKKyAgICBteSAkYXJyYXlP
clNlcXVlbmNlVHlwZSA9ICRhcnJheVR5cGUgfHwgJHNlcXVlbmNlVHlwZTsKKworICAgIGlmICgk
YXJyYXlPclNlcXVlbmNlVHlwZSkgeworICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzUmVm
UHRyVHlwZSgkYXJyYXlPclNlcXVlbmNlVHlwZSkpIHsKKyAgICAgICAgICAgIEFkZFRvSW1wbElu
Y2x1ZGVzKCJKUyR7YXJyYXlPclNlcXVlbmNlVHlwZX0uaCIpOworICAgICAgICAgICAgcmV0dXJu
ICIodG9SZWZQdHJOYXRpdmVBcnJheTwke2FycmF5T3JTZXF1ZW5jZVR5cGV9LCBKUyR7YXJyYXlP
clNlcXVlbmNlVHlwZX0+KGV4ZWMsICR2YWx1ZSwgJnRvJHthcnJheU9yU2VxdWVuY2VUeXBlfSkp
IjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gInRvTmF0aXZlQXJyYXk8IiAuIEdldE5hdGl2
ZUlubmVyVmVjdG9yVHlwZSgkYXJyYXlPclNlcXVlbmNlVHlwZSkgLiAiPihleGVjLCAkdmFsdWUp
IjsKICAgICB9CiAKICAgICAjIERlZmF1bHQsIGFzc3VtZSBhdXRvZ2VuZXJhdGVkIHR5cGUgY29u
dmVyc2lvbiByb3V0aW5lcwpAQCAtMzI2MiwyMyArMzI4MywxNyBAQCBzdWIgTmF0aXZlVG9KU1Zh
bHVlCiAgICAgfQogCiAgICAgbXkgJGFycmF5VHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5HZXRBcnJh
eVR5cGUoJHR5cGUpOwotICAgIGlmICgkYXJyYXlUeXBlKSB7Ci0gICAgICAgIGlmICgkdHlwZSBl
cSAiRE9NU3RyaW5nW10iKSB7CisgICAgbXkgJHNlcXVlbmNlVHlwZSA9ICRjb2RlR2VuZXJhdG9y
LT5HZXRTZXF1ZW5jZVR5cGUoJHR5cGUpOworICAgIG15ICRhcnJheU9yU2VxdWVuY2VUeXBlID0g
JGFycmF5VHlwZSB8fCAkc2VxdWVuY2VUeXBlOworCisgICAgaWYgKCRhcnJheU9yU2VxdWVuY2VU
eXBlKSB7CisgICAgICAgIGlmICgkYXJyYXlUeXBlIGVxICJET01TdHJpbmciKSB7CiAgICAgICAg
ICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlNET01TdHJpbmdMaXN0LmgiLCAkY29uZGl0aW9uYWwp
OwogICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkRPTVN0cmluZ0xpc3QuaCIsICRjb25k
aXRpb25hbCk7Ci0gICAgICAgIH0gZWxzaWYgKCEkY29kZUdlbmVyYXRvci0+U2tpcEluY2x1ZGVI
ZWFkZXIoJGFycmF5VHlwZSkpIHsKLSAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKUyRh
cnJheVR5cGUuaCIsICRjb25kaXRpb25hbCk7Ci0gICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRl
cygiJGFycmF5VHlwZS5oIiwgJGNvbmRpdGlvbmFsKTsKLSAgICAgICAgfQotICAgICAgICBBZGRU
b0ltcGxJbmNsdWRlcygiPHJ1bnRpbWUvSlNBcnJheS5oPiIsICRjb25kaXRpb25hbCk7Ci0gICAg
ICAgIHJldHVybiAianNBcnJheShleGVjLCAkdGhpc1ZhbHVlLT5nbG9iYWxPYmplY3QoKSwgJHZh
bHVlKSI7Ci0gICAgfQogCi0gICAgbXkgJHNlcXVlbmNlVHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5H
ZXRTZXF1ZW5jZVR5cGUoJHR5cGUpOwotICAgIGlmICgkc2VxdWVuY2VUeXBlKSB7Ci0gICAgICAg
IGlmICghJGNvZGVHZW5lcmF0b3ItPlNraXBJbmNsdWRlSGVhZGVyKCRzZXF1ZW5jZVR5cGUpKSB7
Ci0gICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlMkc2VxdWVuY2VUeXBlLmgiLCAkY29u
ZGl0aW9uYWwpOwotICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIiRzZXF1ZW5jZVR5cGUu
aCIsICRjb25kaXRpb25hbCk7CisgICAgICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1Jl
ZlB0clR5cGUoJGFycmF5T3JTZXF1ZW5jZVR5cGUpKSB7CisgICAgICAgICAgICBBZGRUb0ltcGxJ
bmNsdWRlcygiSlMke2FycmF5T3JTZXF1ZW5jZVR5cGV9LmgiLCAkY29uZGl0aW9uYWwpOworICAg
ICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIiR7YXJyYXlPclNlcXVlbmNlVHlwZX0uaCIsICRj
b25kaXRpb25hbCk7CiAgICAgICAgIH0KICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIjxydW50
aW1lL0pTQXJyYXkuaD4iLCAkY29uZGl0aW9uYWwpOwogICAgICAgICByZXR1cm4gImpzQXJyYXko
ZXhlYywgJHRoaXNWYWx1ZS0+Z2xvYmFsT2JqZWN0KCksICR2YWx1ZSkiOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCA3YTZm
ZGYyLi4wYzQ0NWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtNyw2ICs3LDcgQEAKICMgQ29weXJpZ2h0IChDKSAyMDA5
IENhbWVyb24gTWNDb3JtYWNrIDxjYW1AbWNjLmlkLmF1PgogIyBDb3B5cmlnaHQgKEMpIFJlc2Vh
cmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjIENvcHly
aWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykKKyMgQ29weXJpZ2h0IChDKSAyMDEyIEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogIwogIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xMDIzLDcgKzEwMjQsNyBAQCBFTkQKICAgICAgICAgfQog
CiAgICAgICAgICRyZXN1bHQgPSAidiI7Ci0gICAgICAgICRyZXN1bHQgLj0gIi5yZWxlYXNlKCki
IGlmIChJc1JlZlB0clR5cGUoJHJldHVyblR5cGUpKTsKKyAgICAgICAgJHJlc3VsdCAuPSAiLnJl
bGVhc2UoKSIgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1JlZlB0clR5cGUoJHJldHVyblR5cGUpKTsK
ICAgICB9IGVsc2UgewogICAgICAgICAjIENhbiBpbmxpbmUgdGhlIGZ1bmN0aW9uIGNhbGwgaW50
byB0aGUgcmV0dXJuIHN0YXRlbWVudCB0byBhdm9pZCBvdmVyaGVhZCBvZiB1c2luZyBhIFJlZjw+
IHRlbXBvcmFyeQogICAgICAgICAkcmVzdWx0ID0gJGdldHRlclN0cmluZzsKQEAgLTEyNjYsNyAr
MTI2Nyw3IEBAIEVORAogCiAgICAgbXkgJHJlc3VsdCA9ICJ2IjsKICAgICBteSAkcmV0dXJuVHlw
ZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZTsKLSAgICBpZiAoSXNSZWZQdHJUeXBlKCRy
ZXR1cm5UeXBlKSAmJiAhJGNvZGVHZW5lcmF0b3ItPkdldEFycmF5VHlwZSgkcmV0dXJuVHlwZSkp
IHsKKyAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzUmVmUHRyVHlwZSgkcmV0dXJuVHlwZSkgJiYg
ISRjb2RlR2VuZXJhdG9yLT5HZXRBcnJheVR5cGUoJHJldHVyblR5cGUpKSB7CiAgICAgICAgICRy
ZXN1bHQgPSAiV1RGOjpnZXRQdHIoIiAuICRyZXN1bHQgLiAiKSI7CiAgICAgfQogCkBAIC0xNDI0
LDcgKzE0MjUsNiBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2tFeHByZXNzaW9uCiAgICAg
ICAgICAgICAjIEZvciBDYWxsYmFja3Mgb25seSBjaGVja3MgaWYgdGhlIHZhbHVlIGlzIG51bGwg
b3Igb2JqZWN0LgogICAgICAgICAgICAgcHVzaChAYW5kRXhwcmVzc2lvbiwgIigke3ZhbHVlfS0+
SXNOdWxsKCkgfHwgJHt2YWx1ZX0tPklzRnVuY3Rpb24oKSkiKTsKICAgICAgICAgfSBlbHNpZiAo
JGNvZGVHZW5lcmF0b3ItPklzQXJyYXlUeXBlKCR0eXBlKSB8fCAkY29kZUdlbmVyYXRvci0+R2V0
U2VxdWVuY2VUeXBlKCR0eXBlKSkgewotICAgICAgICAgICAgIyBGSVhNRTogQWRkIHByb3BlciBz
dXBwb3J0IGZvciBUW10sIFRbXT8sIHNlcXVlbmNlPFQ+LgogICAgICAgICAgICAgaWYgKCRwYXJh
bWV0ZXItPmlzTnVsbGFibGUpIHsKICAgICAgICAgICAgICAgICBwdXNoKEBhbmRFeHByZXNzaW9u
LCAiKCR7dmFsdWV9LT5Jc051bGwoKSB8fCAke3ZhbHVlfS0+SXNBcnJheSgpKSIpOwogICAgICAg
ICAgICAgfSBlbHNlIHsKQEAgLTM1OTgsNyArMzU5OCw3IEBAIHN1YiBHZW5lcmF0ZUZ1bmN0aW9u
Q2FsbFN0cmluZygpCiAgICAgbXkgJGZ1bmN0aW9uU3RyaW5nID0gIiRmdW5jdGlvbk5hbWUoIiAu
IGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKSI7CiAKICAgICBteSAkcmV0dXJuID0gInJlc3Vs
dCI7Ci0gICAgbXkgJHJldHVybklzUmVmID0gSXNSZWZQdHJUeXBlKCRyZXR1cm5UeXBlKTsKKyAg
ICBteSAkcmV0dXJuSXNSZWYgPSAkY29kZUdlbmVyYXRvci0+SXNSZWZQdHJUeXBlKCRyZXR1cm5U
eXBlKTsKIAogICAgIGlmICgkcmV0dXJuVHlwZSBlcSAidm9pZCIpIHsKICAgICAgICAgJHJlc3Vs
dCAuPSAkaW5kZW50IC4gIiRmdW5jdGlvblN0cmluZztcbiI7CkBAIC0zNjA5LDcgKzM2MDksNyBA
QCBzdWIgR2VuZXJhdGVGdW5jdGlvbkNhbGxTdHJpbmcoKQogICAgICAgICAkcmV0dXJuID0gJGZ1
bmN0aW9uU3RyaW5nOwogICAgICAgICAkcmV0dXJuSXNSZWYgPSAwOwogCi0gICAgICAgIGlmICgk
aW50ZXJmYWNlTmFtZSBlcSAiU1ZHVHJhbnNmb3JtTGlzdCIgYW5kIElzUmVmUHRyVHlwZSgkcmV0
dXJuVHlwZSkpIHsKKyAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJTVkdUcmFuc2Zvcm1M
aXN0IiBhbmQgJGNvZGVHZW5lcmF0b3ItPklzUmVmUHRyVHlwZSgkcmV0dXJuVHlwZSkpIHsKICAg
ICAgICAgICAgICRyZXR1cm4gPSAiV1RGOjpnZXRQdHIoIiAuICRyZXR1cm4gLiAiKSI7CiAgICAg
ICAgIH0KICAgICB9CkBAIC0zNjc2LDI1ICszNjc2LDYgQEAgc3ViIEdldE5hdGl2ZVR5cGVGcm9t
U2lnbmF0dXJlCiAgICAgcmV0dXJuICR0eXBlOwogfQogCi1zdWIgSXNSZWZQdHJUeXBlCi17Ci0g
ICAgbXkgJHR5cGUgPSBzaGlmdDsKLQotICAgIHJldHVybiAwIGlmICR0eXBlIGVxICJib29sZWFu
IjsKLSAgICByZXR1cm4gMCBpZiAkdHlwZSBlcSAiZmxvYXQiOwotICAgIHJldHVybiAwIGlmICR0
eXBlIGVxICJpbnQiOwotICAgIHJldHVybiAwIGlmICR0eXBlIGVxICJEYXRlIjsKLSAgICByZXR1
cm4gMCBpZiAkdHlwZSBlcSAiRE9NU3RyaW5nIjsKLSAgICByZXR1cm4gMCBpZiAkdHlwZSBlcSAi
ZG91YmxlIjsKLSAgICByZXR1cm4gMCBpZiAkdHlwZSBlcSAic2hvcnQiOwotICAgIHJldHVybiAw
IGlmICR0eXBlIGVxICJsb25nIjsKLSAgICByZXR1cm4gMCBpZiAkdHlwZSBlcSAidW5zaWduZWQi
OwotICAgIHJldHVybiAwIGlmICR0eXBlIGVxICJ1bnNpZ25lZCBsb25nIjsKLSAgICByZXR1cm4g
MCBpZiAkdHlwZSBlcSAidW5zaWduZWQgc2hvcnQiOwotCi0gICAgcmV0dXJuIDE7Ci19Ci0KIHN1
YiBHZXROYXRpdmVUeXBlCiB7CiAgICAgbXkgJHR5cGUgPSBzaGlmdDsKQEAgLTM3MDksOSArMzY5
MCw2IEBAIHN1YiBHZXROYXRpdmVUeXBlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBteSAkc2Vx
dWVuY2VUeXBlID0gJGNvZGVHZW5lcmF0b3ItPkdldFNlcXVlbmNlVHlwZSgkdHlwZSk7Ci0gICAg
cmV0dXJuICJWZWN0b3I8JHtzZXF1ZW5jZVR5cGV9PiIgaWYgJHNlcXVlbmNlVHlwZTsKLQogICAg
IGlmICgkdHlwZSBlcSAiZmxvYXQiIG9yICR0eXBlIGVxICJkb3VibGUiKSB7CiAgICAgICAgIHJl
dHVybiAkdHlwZTsKICAgICB9CkBAIC0zNzQ4LDEzICszNzI2LDIzIEBAIHN1YiBHZXROYXRpdmVU
eXBlCiAgICAgcmV0dXJuICJSZWZQdHI8WFBhdGhOU1Jlc29sdmVyPiIgaWYgJHR5cGUgZXEgIlhQ
YXRoTlNSZXNvbHZlciI7CiAKICAgICByZXR1cm4gIlJlZlB0cjxET01TdHJpbmdMaXN0PiIgaWYg
JHR5cGUgZXEgIkRPTVN0cmluZ1tdIjsKLSAgICByZXR1cm4gIlJlZlB0cjwke3R5cGV9PiIgaWYg
SXNSZWZQdHJUeXBlKCR0eXBlKSBhbmQgbm90ICRpc1BhcmFtZXRlcjsKKyAgICByZXR1cm4gIlJl
ZlB0cjwke3R5cGV9PiIgaWYgJGNvZGVHZW5lcmF0b3ItPklzUmVmUHRyVHlwZSgkdHlwZSkgYW5k
IG5vdCAkaXNQYXJhbWV0ZXI7CiAKICAgICByZXR1cm4gIlJlZlB0cjxNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyPiIgaWYgJHR5cGUgZXEgIk1lZGlhUXVlcnlMaXN0TGlzdGVuZXIiOwogCi0gICAgIyBG
SVhNRTogU3VwcG9ydCBUW10sIFRbXT8sIHNlcXVlbmNlPFQ+IGdlbmVyaWNhbGx5CisgICAgIyBG
SVhNRTogQ29uc2lkZXIgcmVwbGFjaW5nIERPTVN0cmluZ0xpc3Qgd2l0aCBET01TdHJpbmdbXSBv
ciBzZXF1ZW5jZTxET01TdHJpbmc+LgogICAgIHJldHVybiAiUmVmUHRyPERPTVN0cmluZ0xpc3Q+
IiBpZiAkdHlwZSBlcSAiRE9NU3RyaW5nTGlzdCI7CiAKKyAgICBteSAkYXJyYXlUeXBlID0gJGNv
ZGVHZW5lcmF0b3ItPkdldEFycmF5VHlwZSgkdHlwZSk7CisgICAgbXkgJHNlcXVlbmNlVHlwZSA9
ICRjb2RlR2VuZXJhdG9yLT5HZXRTZXF1ZW5jZVR5cGUoJHR5cGUpOworICAgIG15ICRhcnJheU9y
U2VxdWVuY2VUeXBlID0gJGFycmF5VHlwZSB8fCAkc2VxdWVuY2VUeXBlOworCisgICAgaWYgKCRh
cnJheU9yU2VxdWVuY2VUeXBlKSB7CisgICAgICAgIG15ICRuYXRpdmVUeXBlID0gR2V0TmF0aXZl
VHlwZSgkYXJyYXlPclNlcXVlbmNlVHlwZSk7CisgICAgICAgICRuYXRpdmVUeXBlIC49ICIgIiBp
ZiAoJG5hdGl2ZVR5cGUgPX4gLz4kLyk7CisgICAgICAgIHJldHVybiAiVmVjdG9yPCR7bmF0aXZl
VHlwZX0+IjsKKyAgICB9CisKICAgICAjIERlZmF1bHQsIGFzc3VtZSBuYXRpdmUgdHlwZSBpcyBh
IHBvaW50ZXIgd2l0aCBzYW1lIHR5cGUgbmFtZSBhcyBpZGwgdHlwZQogICAgIHJldHVybiAiJHt0
eXBlfSoiOwogfQpAQCAtMzgwNyw3ICszNzk1LDcgQEAgc3ViIEpTVmFsdWVUb05hdGl2ZQogICAg
IHJldHVybiAic3RhdGljX2Nhc3Q8UmFuZ2U6OkNvbXBhcmVIb3c+KCR2YWx1ZS0+SW50MzJWYWx1
ZSgpKSIgaWYgJHR5cGUgZXEgIkNvbXBhcmVIb3ciOwogICAgIHJldHVybiAidG9XZWJDb3JlRGF0
ZSgkdmFsdWUpIiBpZiAkdHlwZSBlcSAiRGF0ZSI7CiAgICAgcmV0dXJuICJ0b0RPTVN0cmluZ0xp
c3QoJHZhbHVlKSIgaWYgJHR5cGUgZXEgIkRPTVN0cmluZ0xpc3QiOwotICAgICMgRklYTUU6IEFk
ZCBwcm9wZXIgc3VwcG9ydCBmb3IgVFtdLCBUW10/IGFuZCBzZXF1ZW5jZTxUPi4KKyAgICAjIEZJ
WE1FOiBDb25zaWRlciByZXBsYWNpbmcgRE9NU3RyaW5nTGlzdCB3aXRoIERPTVN0cmluZ1tdIG9y
IHNlcXVlbmNlPERPTVN0cmluZz4uCiAgICAgcmV0dXJuICJ0b0RPTVN0cmluZ0xpc3QoJHZhbHVl
KSIgaWYgJHR5cGUgZXEgIkRPTVN0cmluZ1tdIjsKIAogICAgIGlmICgkdHlwZSBlcSAiRE9NU3Ry
aW5nIiBvciAkdHlwZSBlcSAiRE9NVXNlckRhdGEiKSB7CkBAIC0zODU5LDEzICszODQ3LDE1IEBA
IHN1YiBKU1ZhbHVlVG9OYXRpdmUKICAgICB9CiAKICAgICBteSAkYXJyYXlUeXBlID0gJGNvZGVH
ZW5lcmF0b3ItPkdldEFycmF5VHlwZSgkdHlwZSk7Ci0gICAgaWYgKCRhcnJheVR5cGUpIHsKLSAg
ICAgICAgcmV0dXJuICJ0b05hdGl2ZUFycmF5PCRhcnJheVR5cGU+KCR2YWx1ZSkiOwotICAgIH0K
LQogICAgIG15ICRzZXF1ZW5jZVR5cGUgPSAkY29kZUdlbmVyYXRvci0+R2V0U2VxdWVuY2VUeXBl
KCR0eXBlKTsKLSAgICBpZiAoJHNlcXVlbmNlVHlwZSkgewotICAgICAgICByZXR1cm4gInRvTmF0
aXZlQXJyYXk8JHNlcXVlbmNlVHlwZT4oJHZhbHVlKSI7CisgICAgbXkgJGFycmF5T3JTZXF1ZW5j
ZVR5cGUgPSAkYXJyYXlUeXBlIHx8ICRzZXF1ZW5jZVR5cGU7CisKKyAgICBpZiAoJGFycmF5T3JT
ZXF1ZW5jZVR5cGUpIHsKKyAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1JlZlB0clR5cGUo
JGFycmF5T3JTZXF1ZW5jZVR5cGUpKSB7CisgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygi
Vjgke2FycmF5T3JTZXF1ZW5jZVR5cGV9LmgiKTsKKyAgICAgICAgICAgIHJldHVybiAiKHRvUmVm
UHRyTmF0aXZlQXJyYXk8JHthcnJheU9yU2VxdWVuY2VUeXBlfSwgVjgke2FycmF5T3JTZXF1ZW5j
ZVR5cGV9PigkdmFsdWUpKSI7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICJ0b05hdGl2ZUFy
cmF5PCIgLiBHZXROYXRpdmVUeXBlKCRhcnJheU9yU2VxdWVuY2VUeXBlKSAuICI+KCR2YWx1ZSki
OwogICAgIH0KIAogICAgIEFkZEluY2x1ZGVzRm9yVHlwZSgkdHlwZSk7CkBAIC0zOTAzLDEzICsz
ODkzLDIzIEBAIHN1YiBDcmVhdGVDdXN0b21TaWduYXR1cmUKICAgICAgICAgICAgICAgICAkcmVz
dWx0IC49ICJ2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpIjsKICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgbXkgJHR5cGUgPSAkcGFyYW1ldGVyLT50eXBlOwor
CisgICAgICAgICAgICAgICAgbXkgJGFycmF5VHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5HZXRBcnJh
eVR5cGUoJHR5cGUpOwogICAgICAgICAgICAgICAgIG15ICRzZXF1ZW5jZVR5cGUgPSAkY29kZUdl
bmVyYXRvci0+R2V0U2VxdWVuY2VUeXBlKCR0eXBlKTsKLSAgICAgICAgICAgICAgICBpZiAoJHNl
cXVlbmNlVHlwZSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPlNr
aXBJbmNsdWRlSGVhZGVyKCRzZXF1ZW5jZVR5cGUpKSB7CisgICAgICAgICAgICAgICAgbXkgJGFy
cmF5T3JTZXF1ZW5jZVR5cGUgPSAkYXJyYXlUeXBlIHx8ICRzZXF1ZW5jZVR5cGU7CisKKyAgICAg
ICAgICAgICAgICBpZiAoJGFycmF5T3JTZXF1ZW5jZVR5cGUpIHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCRhcnJheVR5cGUgZXEgIkRPTVN0cmluZyIpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJWOERPTVN0cmluZ0xpc3QuaCIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkRPTVN0cmluZ0xpc3QuaCIpOworCisgICAg
ICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1JlZlB0clR5cGUoJGFy
cmF5T3JTZXF1ZW5jZVR5cGUpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJ
bmNsdWRlcyhHZXRWOEhlYWRlck5hbWUoJGFycmF5T3JTZXF1ZW5jZVR5cGUpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCIke2FycmF5T3JTZXF1ZW5jZVR5cGV9
LmgiKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICRyZXN1bHQgLj0gInY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCkiOwogICAg
ICAgICAgICAgICAgICAgICAgICAgbmV4dDsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiJHNlcXVlbmNlVHlwZS5oIik7CiAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVk
ZXMoR2V0VjhIZWFkZXJOYW1lKCR0eXBlKSk7CiAgICAgICAgICAgICAgICAgfQpAQCAtNDA5Miwy
NCArNDA5MiwxOSBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVlCiAgICAgfQogCiAgICAgbXkgJGFycmF5
VHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5HZXRBcnJheVR5cGUoJHR5cGUpOwotICAgIGlmICgkYXJy
YXlUeXBlKSB7Ci0gICAgICAgIGlmICgkdHlwZSBlcSAiRE9NU3RyaW5nW10iKSB7CisgICAgbXkg
JHNlcXVlbmNlVHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5HZXRTZXF1ZW5jZVR5cGUoJHR5cGUpOwor
ICAgIG15ICRhcnJheU9yU2VxdWVuY2VUeXBlID0gJGFycmF5VHlwZSB8fCAkc2VxdWVuY2VUeXBl
OworCisgICAgaWYgKCRhcnJheU9yU2VxdWVuY2VUeXBlKSB7CisgICAgICAgIGlmICgkYXJyYXlU
eXBlIGVxICJET01TdHJpbmciKSB7CiAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiVjhE
T01TdHJpbmdMaXN0LmgiKTsKICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJET01TdHJp
bmdMaXN0LmgiKTsKLSAgICAgICAgfSBlbHNpZiAoISRjb2RlR2VuZXJhdG9yLT5Ta2lwSW5jbHVk
ZUhlYWRlcigkYXJyYXlUeXBlKSkgewotICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlY4
JGFycmF5VHlwZS5oIik7Ci0gICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiJGFycmF5VHlw
ZS5oIik7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuICJ2OEFycmF5KCR2YWx1ZSRnZXRJc29s
YXRlQXJnKSI7Ci0gICAgfQogCi0gICAgbXkgJHNlcXVlbmNlVHlwZSA9ICRjb2RlR2VuZXJhdG9y
LT5HZXRTZXF1ZW5jZVR5cGUoJHR5cGUpOwotICAgIGlmICgkc2VxdWVuY2VUeXBlKSB7Ci0gICAg
ICAgIGlmICghJGNvZGVHZW5lcmF0b3ItPlNraXBJbmNsdWRlSGVhZGVyKCRzZXF1ZW5jZVR5cGUp
KSB7Ci0gICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiVjgkc2VxdWVuY2VUeXBlLmgiKTsK
LSAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCIkc2VxdWVuY2VUeXBlLmgiKTsKKyAgICAg
ICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPklzUmVmUHRyVHlwZSgkYXJyYXlPclNlcXVlbmNl
VHlwZSkpIHsKKyAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKEdldFY4SGVhZGVyTmFtZSgk
YXJyYXlPclNlcXVlbmNlVHlwZSkpOworICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIiR7
YXJyYXlPclNlcXVlbmNlVHlwZX0uaCIpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiAidjhB
cnJheSgkdmFsdWUkZ2V0SXNvbGF0ZUFyZykiOworICAgICAgICByZXR1cm4gInY4QXJyYXkoJHt2
YWx1ZX0ke2dldElzb2xhdGVBcmd9KSI7CiAgICAgfQogCiAgICAgQWRkSW5jbHVkZXNGb3JUeXBl
KCR0eXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggNDdkYTk1ZS4uZTI4MDA4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAg
LTE1MzYsNyArMTUzNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoU2VxdWVuY2VBcmcoRXhlCiAgICAgVGVzdE9iaiog
aW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogICAgIGlm
IChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKLSAgICBWZWN0b3I8
U2NyaXB0UHJvZmlsZT4gc2VxdWVuY2VBcmcodG9OYXRpdmVBcnJheTxTY3JpcHRQcm9maWxlPihl
eGVjLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQp
KSk7CisgICAgVmVjdG9yPFJlZlB0cjxTY3JpcHRQcm9maWxlPiA+IHNlcXVlbmNlQXJnKCh0b1Jl
ZlB0ck5hdGl2ZUFycmF5PFNjcmlwdFByb2ZpbGUsIEpTU2NyaXB0UHJvZmlsZT4oZXhlYywgTUFZ
QkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSwgJnRvU2Ny
aXB0UHJvZmlsZSkpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaW1wbC0+bWV0aG9kV2l0
aFNlcXVlbmNlQXJnKHNlcXVlbmNlQXJnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKaW5kZXggYjhlNmIxNS4uZTA3Y2Fm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdE9iai5jcHAKQEAgLTE4OSw3ICsxODksNyBAQCBzdGF0aWMgdm9pZCBsb25nTG9uZ0F0
dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZh
bAogICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoubG9uZ0xvbmdBdHRyLl9zZXQiKTsKICAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIGxv
bmcgbG9uZyB2ID0gdG9JbnQ2NCh2YWx1ZSk7Ci0gICAgaW1wLT5zZXRMb25nTG9uZ0F0dHIoV1RG
OjpnZXRQdHIodikpOworICAgIGltcC0+c2V0TG9uZ0xvbmdBdHRyKHYpOwogICAgIHJldHVybjsK
IH0KIApAQCAtMjA1LDcgKzIwNSw3IEBAIHN0YXRpYyB2b2lkIHVuc2lnbmVkTG9uZ0xvbmdBdHRy
QXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsCiAgICAgSU5D
X1NUQVRTKCJET00uVGVzdE9iai51bnNpZ25lZExvbmdMb25nQXR0ci5fc2V0Iik7CiAgICAgVGVz
dE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICB1bnNp
Z25lZCBsb25nIGxvbmcgdiA9IHRvSW50NjQodmFsdWUpOwotICAgIGltcC0+c2V0VW5zaWduZWRM
b25nTG9uZ0F0dHIoV1RGOjpnZXRQdHIodikpOworICAgIGltcC0+c2V0VW5zaWduZWRMb25nTG9u
Z0F0dHIodik7CiAgICAgcmV0dXJuOwogfQogCkBAIC0xMTA4LDcgKzExMDgsNyBAQCBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0NhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmCiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1
cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAgICAg
VGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBW
OFRSWUNBVENIKFZlY3RvcjxTY3JpcHRQcm9maWxlPiwgc2VxdWVuY2VBcmcsIHRvTmF0aXZlQXJy
YXk8U2NyaXB0UHJvZmlsZT4oTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVs
dElzVW5kZWZpbmVkKSkpOworICAgIFY4VFJZQ0FUQ0goVmVjdG9yPFJlZlB0cjxTY3JpcHRQcm9m
aWxlPiA+LCBzZXF1ZW5jZUFyZywgKHRvUmVmUHRyTmF0aXZlQXJyYXk8U2NyaXB0UHJvZmlsZSwg
VjhTY3JpcHRQcm9maWxlPihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0
SXNVbmRlZmluZWQpKSkpOwogICAgIGltcC0+bWV0aG9kV2l0aFNlcXVlbmNlQXJnKHNlcXVlbmNl
QXJnKTsKICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KQEAgLTE2NTMsNyArMTY1Myw3IEBA
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb3ZlcmxvYWRlZE1ldGhvZDEwQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJnCiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAg
ICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUo
KSk7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigp
KTsKLSAgICBWOFRSWUNBVENIKFZlY3Rvcjx1bnNpZ25lZCBsb25nPiwgYXJyYXlBcmcsIHRvTmF0
aXZlQXJyYXk8dW5zaWduZWQgbG9uZz4oTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwg
RGVmYXVsdElzVW5kZWZpbmVkKSkpOworICAgIFY4VFJZQ0FUQ0goVmVjdG9yPHVuc2lnbmVkPiwg
YXJyYXlBcmcsIHRvTmF0aXZlQXJyYXk8dW5zaWduZWQ+KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVS
KGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKICAgICBpbXAtPm92ZXJsb2FkZWRNZXRo
b2QoYXJyYXlBcmcpOwogICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOEJpbmRpbmcuaAppbmRleCA1ZDJlMDYwLi42YTM5NzE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAqIENvcHly
aWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKiBDb3B5cmln
aHQgKEMpIDIwMTIgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAqCiAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yMDYsNiArMjA3LDI5IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgfQogICAgIH07CiAKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3Mg
VjhUPgorICAgIFZlY3RvcjxSZWZQdHI8VD4gPiB0b1JlZlB0ck5hdGl2ZUFycmF5KHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB2YWx1ZSkKKyAgICB7CisgICAgICAgIGlmICghdmFsdWUtPklzQXJyYXko
KSkKKyAgICAgICAgICAgIHJldHVybiBWZWN0b3I8UmVmUHRyPFQ+ID4oKTsKKworICAgICAgICBW
ZWN0b3I8UmVmUHRyPFQ+ID4gcmVzdWx0OworICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2
OFZhbHVlKHY4OjpMb2NhbDx2ODo6VmFsdWU+OjpOZXcodmFsdWUpKTsKKyAgICAgICAgdjg6Okxv
Y2FsPHY4OjpBcnJheT4gYXJyYXkgPSB2ODo6TG9jYWw8djg6OkFycmF5Pjo6Q2FzdCh2OFZhbHVl
KTsKKyAgICAgICAgc2l6ZV90IGxlbmd0aCA9IGFycmF5LT5MZW5ndGgoKTsKKyAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGVsZW1lbnQgPSBhcnJheS0+R2V0KGkpOworCisgICAgICAgICAgICBpZiAo
VjhUOjpIYXNJbnN0YW5jZShlbGVtZW50KSkgeworICAgICAgICAgICAgICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gb2JqZWN0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChlbGVtZW50
KTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFY4VDo6dG9OYXRpdmUob2JqZWN0KSk7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKCJJ
bnZhbGlkIEFycmF5IGVsZW1lbnQgdHlwZSIpOworICAgICAgICAgICAgICAgIHJldHVybiBWZWN0
b3I8UmVmUHRyPFQ+ID4oKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgIH0KIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUPgogICAgIFZlY3RvcjxU
PiB0b05hdGl2ZUFycmF5KHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCAxNjdkMGU1Li42ZGM3NWNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0xMzMsOCArMTMzLDggQEAKICAgICBsb25nIGxhc3RT
cGVsbENoZWNrUmVxdWVzdFNlcXVlbmNlKGluIERvY3VtZW50IGRvY3VtZW50KSByYWlzZXMgKERP
TUV4Y2VwdGlvbik7CiAgICAgbG9uZyBsYXN0U3BlbGxDaGVja1Byb2Nlc3NlZFNlcXVlbmNlKGlu
IERvY3VtZW50IGRvY3VtZW50KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAKLSAgICBzZXF1ZW5j
ZTxTdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsKLSAgICB2b2lkIHNldFVzZXJQcmVm
ZXJyZWRMYW5ndWFnZXMoaW4gc2VxdWVuY2U8U3RyaW5nPiBsYW5ndWFnZXMpOworICAgIHNlcXVl
bmNlPERPTVN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlcygpOworICAgIHZvaWQgc2V0VXNl
clByZWZlcnJlZExhbmd1YWdlcyhpbiBzZXF1ZW5jZTxET01TdHJpbmc+IGxhbmd1YWdlcyk7CiAK
ICAgICB1bnNpZ25lZCBsb25nIHdoZWVsRXZlbnRIYW5kbGVyQ291bnQoaW4gRG9jdW1lbnQgZG9j
dW1lbnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICB1bnNpZ25lZCBsb25nIHRvdWNoRXZl
bnRIYW5kbGVyQ291bnQoaW4gRG9jdW1lbnQgZG9jdW1lbnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9u
KTsKQEAgLTE4Myw3ICsxODMsNyBAQAogCiAgICAgW0NvbmRpdGlvbmFsPUlOU1BFQ1RPUl0gdW5z
aWduZWQgbG9uZyBudW1iZXJPZkxpdmVOb2RlcygpOwogICAgIFtDb25kaXRpb25hbD1JTlNQRUNU
T1JdIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZMaXZlRG9jdW1lbnRzKCk7Ci0gICAgW0NvbmRpdGlv
bmFsPUlOU1BFQ1RPUl0gc2VxdWVuY2U8U3RyaW5nPiBjb25zb2xlTWVzc2FnZUFyZ3VtZW50Q291
bnRzKGluIERvY3VtZW50IGRvY3VtZW50KTsKKyAgICBbQ29uZGl0aW9uYWw9SU5TUEVDVE9SXSBz
ZXF1ZW5jZTxET01TdHJpbmc+IGNvbnNvbGVNZXNzYWdlQXJndW1lbnRDb3VudHMoaW4gRG9jdW1l
bnQgZG9jdW1lbnQpOwogICAgIFtDb25kaXRpb25hbD1JTlNQRUNUT1JdIERPTVdpbmRvdyBvcGVu
RHVtbXlJbnNwZWN0b3JGcm9udGVuZChpbiBET01TdHJpbmcgdXJsKTsKICAgICBbQ29uZGl0aW9u
YWw9SU5TUEVDVE9SXSB2b2lkIGNsb3NlRHVtbXlJbnNwZWN0b3JGcm9udGVuZCgpOwogICAgIFtD
b25kaXRpb25hbD1JTlNQRUNUT1JdIHZvaWQgc2V0SW5zcGVjdG9yUmVzb3VyY2VzRGF0YVNpemVM
aW1pdHMoaW4gbG9uZyBtYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemUsIGluIGxvbmcgbWF4aW11
bVNpbmdsZVJlc291cmNlQ29udGVudFNpemUpIHJhaXNlcyhET01FeGNlcHRpb24pOwo=
</data>
<flag name="review"
          id="193331"
          type_id="1"
          status="+"
          setter="haraken"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177461</attachid>
            <date>2012-12-04 02:53:12 -0800</date>
            <delta_ts>2012-12-04 06:57:15 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>codegen_array_support03.patch</filename>
            <type>text/plain</type>
            <size>27636</size>
            <attacher name="Adam Bergkvist">adam.bergkvist</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhNTRhM2RmLi42YjY3OTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIg
QEAKKzIwMTItMTItMDQgIEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24u
Y29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBnZW5lcmljIHR5cGVzIGluIGFycmF5cyBh
bmQgc2VxdWVuY2VzIHRvIHRoZSBjb2RlIGdlbmVyYXRvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzY0MgorCisgICAgICAgIFJldmlld2VkIGJ5
IEtlbnRhcm8gSGFyYS4KKworICAgICAgICBVcGRhdGVkIHRoZSBiaW5kaW5ncyBnZW5lcmF0b3Jz
IHRvIHN1cHBvcnQgYXJyYXlzIGFuZCBzZXF1ZW5jZXMgb2YgaG9zdCBvYmplY3RzLgorCisgICAg
ICAgIC0gQXJyYXlzIGFuZCBzZXF1ZW5jZXMgb2YgaG9zdCBvYmplY3RzIGFyZSBtYXBwZWQgdG8g
VmVjdG9yPFJlZlB0cjwlUmVmUHRyVHlwZSU+ID4uCisgICAgICAgIC0gRml4ZWQgaXNzdWUgd2hl
cmUgInNlcXVlbmNlPFN0cmluZz4iIHdhcyB1c2VkIGluIElETCBmaWxlcyBpbnN0ZWFkIG9mICJz
ZXF1ZW5jZTxET01TdHJpbmc+Ii4KKworICAgICAgICBVcGRhdGVkIGV4aXN0aW5nIHRlc3QgcmVz
dWx0cy4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5pZGw6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTdGF0c0VsZW1lbnQuaWRsOgorICAgICAgICAqIE1vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
QmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6dG9SZWZQdHJOYXRpdmVBcnJheSk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3Iu
cG06CisgICAgICAgIChJc1JlZlB0clR5cGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoQWRkSW5jbHVkZXNGb3JUeXBlKToKKyAgICAg
ICAgKEdldE5hdGl2ZVR5cGUpOgorICAgICAgICAoR2V0TmF0aXZlVmVjdG9ySW5uZXJUeXBlKToK
KyAgICAgICAgKEpTVmFsdWVUb05hdGl2ZSk6CisgICAgICAgIChOYXRpdmVUb0pTVmFsdWUpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAo
R2VuZXJhdGVOb3JtYWxBdHRyR2V0dGVyKToKKyAgICAgICAgKEdlbmVyYXRlTm9ybWFsQXR0clNl
dHRlcik6CisgICAgICAgIChHZW5lcmF0ZVBhcmFtZXRlcnNDaGVja0V4cHJlc3Npb24pOgorICAg
ICAgICAoR2VuZXJhdGVGdW5jdGlvbkNhbGxTdHJpbmcpOgorICAgICAgICAoR2V0TmF0aXZlVHlw
ZSk6CisgICAgICAgIChKU1ZhbHVlVG9OYXRpdmUpOgorICAgICAgICAoQ3JlYXRlQ3VzdG9tU2ln
bmF0dXJlKToKKyAgICAgICAgKE5hdGl2ZVRvSlNWYWx1ZSk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTZXF1ZW5jZUFyZyk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0T2JqVjhJbnRlcm5hbDo6bG9uZ0xvbmdBdHRyQXR0clNldHRlcik6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6dW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyU2V0dGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjptZXRob2RXaXRoU2VxdWVuY2VB
cmdDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6b3Zlcmxv
YWRlZE1ldGhvZDEwQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5o
OgorICAgICAgICAoV2ViQ29yZTo6dG9SZWZQdHJOYXRpdmVBcnJheSk6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDEyLTExLTMwICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5y
ZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
MTM2MTQyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2UuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2UuaWRsCmluZGV4IDBiZWQyNGYuLjUwZjdlNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5pZGwKQEAgLTQ0LDcgKzQ0LDcgQEAKICAgICAg
ICAgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25D
b250ZXh0XSBJREJUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbihpbiBET01TdHJpbmdMaXN0IHN0b3Jl
TmFtZXMsIGluIFtPcHRpb25hbD1EZWZhdWx0SXNOdWxsU3RyaW5nXSBET01TdHJpbmcgbW9kZSkK
ICAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24pOwotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVj
dXRpb25Db250ZXh0XSBJREJUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbihpbiBzZXF1ZW5jZTxTdHJp
bmc+IHN0b3JlTmFtZXMsIGluIFtPcHRpb25hbD1EZWZhdWx0SXNOdWxsU3RyaW5nXSBET01TdHJp
bmcgbW9kZSkKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCVHJhbnNh
Y3Rpb24gdHJhbnNhY3Rpb24oaW4gc2VxdWVuY2U8RE9NU3RyaW5nPiBzdG9yZU5hbWVzLCBpbiBb
T3B0aW9uYWw9RGVmYXVsdElzTnVsbFN0cmluZ10gRE9NU3RyaW5nIG1vZGUpCiAgICAgICAgIHJh
aXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4
dF0gSURCVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oaW4gRE9NU3RyaW5nIHN0b3JlTmFtZSwgaW4g
W09wdGlvbmFsPURlZmF1bHRJc051bGxTdHJpbmddIERPTVN0cmluZyBtb2RlKQogICAgICAgICBy
YWlzZXMgKERPTUV4Y2VwdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5pZGwKaW5kZXggYzdkOGJkNi4uMzk2NDJjMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmlk
bApAQCAtNTIsNyArNTIsNyBAQAogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0
XSBJREJSZXF1ZXN0IG9wZW5DdXJzb3IoaW4gSURCS2V5IGtleSwgaW4gW09wdGlvbmFsXSBET01T
dHJpbmcgZGlyZWN0aW9uKQogICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAKLSAgICBb
Q2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCSW5kZXggY3JlYXRlSW5kZXgoaW4g
RE9NU3RyaW5nIG5hbWUsIGluIHNlcXVlbmNlPFN0cmluZz4ga2V5UGF0aCwgaW4gW09wdGlvbmFs
XSBEaWN0aW9uYXJ5IG9wdGlvbnMpCisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRdIElEQkluZGV4IGNyZWF0ZUluZGV4KGluIERPTVN0cmluZyBuYW1lLCBpbiBzZXF1ZW5jZTxE
T01TdHJpbmc+IGtleVBhdGgsIGluIFtPcHRpb25hbF0gRGljdGlvbmFyeSBvcHRpb25zKQogICAg
ICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRdIElEQkluZGV4IGNyZWF0ZUluZGV4KGluIERPTVN0cmluZyBuYW1lLCBpbiBET01T
dHJpbmcga2V5UGF0aCwgaW4gW09wdGlvbmFsXSBEaWN0aW9uYXJ5IG9wdGlvbnMpCiAgICAgICAg
IHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNFbGVtZW50LmlkbAppbmRleCA2YTgzMGRlLi40MjI0MTc5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRz
RWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENT
dGF0c0VsZW1lbnQuaWRsCkBAIC0yNyw1ICsyNyw1IEBACiBdIGludGVyZmFjZSBSVENTdGF0c0Vs
ZW1lbnQgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBEYXRlIHRpbWVzdGFtcDsKICAgICBET01T
dHJpbmcgc3RhdChpbiBET01TdHJpbmcgbmFtZSk7Ci0gICAgc2VxdWVuY2U8U3RyaW5nPiBuYW1l
cygpOworICAgIHNlcXVlbmNlPERPTVN0cmluZz4gbmFtZXMoKTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsCmluZGV4IDlmMTg4MWEuLjBm
MDFmNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuaWRsCkBAIC0zMyw3ICszMyw3IEBACiAgICAgQ29uZGl0aW9uYWw9V0VCX1NPQ0tFVFMsCiAg
ICAgQWN0aXZlRE9NT2JqZWN0LAogICAgIENvbnN0cnVjdG9yKGluIERPTVN0cmluZyB1cmwpLAot
ICAgIENvbnN0cnVjdG9yKGluIERPTVN0cmluZyB1cmwsIGluIHNlcXVlbmNlPFN0cmluZz4gcHJv
dG9jb2xzKSwKKyAgICBDb25zdHJ1Y3RvcihpbiBET01TdHJpbmcgdXJsLCBpbiBzZXF1ZW5jZTxE
T01TdHJpbmc+IHByb3RvY29scyksCiAgICAgQ29uc3RydWN0b3IoaW4gRE9NU3RyaW5nIHVybCwg
aW4gRE9NU3RyaW5nIHByb3RvY29sKSwKICAgICBDb25zdHJ1Y3RvclJhaXNlc0V4Y2VwdGlvbiwK
ICAgICBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUJpbmRpbmcuaAppbmRleCBhMjE5NTliLi4zNjliNjFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApAQCAtMyw2ICszLDcgQEAKICAqICBD
b3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDgsIDIwMDkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAwNyBTYW11ZWwgV2Vp
bmlnIDxzYW1Ad2Via2l0Lm9yZz4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlLCBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDEyIEVyaWNzc29uIEFC
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNDExLDYgKzQx
MiwyNiBAQCBlbnVtIFBhcmFtZXRlckRlZmF1bHRQb2xpY3kgewogICAgICAgICB9CiAgICAgfTsK
IAorICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBKU1Q+CisgICAgVmVjdG9yPFJlZlB0cjxU
PiA+IHRvUmVmUHRyTmF0aXZlQXJyYXkoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1
ZSB2YWx1ZSwgVCogKCp0b1QpKEpTQzo6SlNWYWx1ZSB2YWx1ZSkpCisgICAgeworICAgICAgICBp
ZiAoIWlzSlNBcnJheSh2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gVmVjdG9yPFJlZlB0cjxU
PiA+KCk7CisKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxUPiA+IHJlc3VsdDsKKyAgICAgICAgSlND
OjpKU0FycmF5KiBhcnJheSA9IGFzQXJyYXkodmFsdWUpOworICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGFycmF5LT5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBKU0M6OkpTVmFs
dWUgZWxlbWVudCA9IGFycmF5LT5nZXRJbmRleChleGVjLCBpKTsKKyAgICAgICAgICAgIGlmIChl
bGVtZW50LmluaGVyaXRzKCZKU1Q6OnNfaW5mbykpCisgICAgICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgoKnRvVCkoZWxlbWVudCkpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
ICAgdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiSW52YWxpZCBBcnJh
eSBlbGVtZW50IHR5cGUiKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFZlY3RvcjxSZWZQdHI8
VD4gPigpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgfQorCiAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+CiAgICAgVmVjdG9yPFQ+IHRvTmF0aXZl
QXJyYXkoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3Iu
cG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KaW5k
ZXggMGZkY2EwMi4uYWMzYWQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvci5wbQpAQCAtMzk1LDYgKzM5NSwxNyBAQCBzdWIgSXNUeXBlZEFy
cmF5VHlwZQogICAgIHJldHVybiAwOwogfQogCitzdWIgSXNSZWZQdHJUeXBlCit7CisgICAgbXkg
JG9iamVjdCA9IHNoaWZ0OworICAgIG15ICR0eXBlID0gc2hpZnQ7CisKKyAgICByZXR1cm4gMCBp
ZiAkb2JqZWN0LT5Jc1ByaW1pdGl2ZVR5cGUoJHR5cGUpOworICAgIHJldHVybiAwIGlmICR0eXBl
IGVxICJET01TdHJpbmciOworCisgICAgcmV0dXJuIDE7Cit9CisKIHN1YiBHZXRTVkdUeXBlTmVl
ZGluZ1RlYXJPZmYKIHsKICAgICBteSAkb2JqZWN0ID0gc2hpZnQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDViNGQ3YWMu
LmMxNjg1MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCkBAIC04LDYgKzgsNyBAQAogIyBDb3B5cmlnaHQgKEMpIFJlc2VhcmNo
IEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdo
dCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykK
ICMgQ29weXJpZ2h0IChDKSAyMDExIFBhdHJpY2sgR2Fuc3RlcmVyIDxwYXJvZ2FAd2Via2l0Lm9y
Zz4KKyMgQ29weXJpZ2h0IChDKSAyMDEyIEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogIwogIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNDEsNyArMjQyLDcgQEAgc3ViIEFkZEluY2x1ZGVzRm9y
VHlwZQogICAgICAgICAkaW5jbHVkZXNSZWYtPnsiSlNYUGF0aE5TUmVzb2x2ZXIuaCJ9ID0gMTsK
ICAgICAgICAgJGluY2x1ZGVzUmVmLT57IkpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmgifSA9IDE7
CiAgICAgfSBlbHNpZiAoJHR5cGUgZXEgIkRPTVN0cmluZ1tdIikgewotICAgICAgICAjIEZJWE1F
OiBBZGQgcHJvcGVyIHN1cHBvcnQgZm9yIFRbXSwgVFtdPywgc2VxdWVuY2U8VD4KKyAgICAgICAg
IyBGSVhNRTogQ29uc2lkZXIgcmVwbGFjaW5nIERPTVN0cmluZ0xpc3Qgd2l0aCBET01TdHJpbmdb
XSBvciBzZXF1ZW5jZTxET01TdHJpbmc+LgogICAgICAgICAkaW5jbHVkZXNSZWYtPnsiSlNET01T
dHJpbmdMaXN0LmgifSA9IDE7CiAgICAgfSBlbHNpZiAoJHR5cGUgZXEgIlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSIpIHsKICAgICAgICAgJGluY2x1ZGVzUmVmLT57IlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oIn0gPSAxOwpAQCAtMzAzMiw3ICszMDMzLDcgQEAgc3ViIEdldE5hdGl2ZVR5cGVGcm9tU2ln
bmF0dXJlCiBteSAlbmF0aXZlVHlwZSA9ICgKICAgICAiQ29tcGFyZUhvdyIgPT4gIlJhbmdlOjpD
b21wYXJlSG93IiwKICAgICAiRE9NU3RyaW5nIiA9PiAiY29uc3QgU3RyaW5nJiIsCi0gICAgIyBG
SVhNRTogQWRkIHByb3BlciBzdXBwb3J0IGZvciBUW10sIFRbXT8sIHNlcXVlbmNlPFQ+CisgICAg
IyBGSVhNRTogQ29uc2lkZXIgcmVwbGFjaW5nIERPTVN0cmluZ0xpc3Qgd2l0aCBET01TdHJpbmdb
XSBvciBzZXF1ZW5jZTxET01TdHJpbmc+LgogICAgICJET01TdHJpbmdbXSIgPT4gIlJlZlB0cjxE
T01TdHJpbmdMaXN0PiIsCiAgICAgIkRPTU9iamVjdCIgPT4gIlNjcmlwdFZhbHVlIiwKICAgICAi
Tm9kZUZpbHRlciIgPT4gIlJlZlB0cjxOb2RlRmlsdGVyPiIsCkBAIC0zMDYyLDEzICszMDYzLDMx
IEBAIHN1YiBHZXROYXRpdmVUeXBlCiAgICAgcmV0dXJuICJSZWZQdHI8RE9NU3RyaW5nTGlzdD4i
IGlmICR0eXBlIGVxICJET01TdHJpbmdMaXN0IiBvciAkdHlwZSBlcSAiRE9NU3RyaW5nW10iOwog
ICAgIHJldHVybiAkbmF0aXZlVHlwZXskdHlwZX0gaWYgZXhpc3RzICRuYXRpdmVUeXBleyR0eXBl
fTsKIAorICAgIG15ICRhcnJheVR5cGUgPSAkY29kZUdlbmVyYXRvci0+R2V0QXJyYXlUeXBlKCR0
eXBlKTsKICAgICBteSAkc2VxdWVuY2VUeXBlID0gJGNvZGVHZW5lcmF0b3ItPkdldFNlcXVlbmNl
VHlwZSgkdHlwZSk7Ci0gICAgcmV0dXJuICJWZWN0b3I8JHtzZXF1ZW5jZVR5cGV9PiIgaWYgJHNl
cXVlbmNlVHlwZTsKKyAgICBteSAkYXJyYXlPclNlcXVlbmNlVHlwZSA9ICRhcnJheVR5cGUgfHwg
JHNlcXVlbmNlVHlwZTsKKworICAgIHJldHVybiAiVmVjdG9yPCIgLiBHZXROYXRpdmVWZWN0b3JJ
bm5lclR5cGUoJGFycmF5T3JTZXF1ZW5jZVR5cGUpIC4gIj4iIGlmICRhcnJheU9yU2VxdWVuY2VU
eXBlOwogCiAgICAgIyBGb3IgYWxsIG90aGVyIHR5cGVzLCB0aGUgbmF0aXZlIHR5cGUgaXMgYSBw
b2ludGVyIHdpdGggc2FtZSB0eXBlIG5hbWUgYXMgdGhlIElETCB0eXBlLgogICAgIHJldHVybiAi
JHt0eXBlfSoiOwogfQogCitzdWIgR2V0TmF0aXZlVmVjdG9ySW5uZXJUeXBlCit7CisgICAgbXkg
JGFycmF5T3JTZXF1ZW5jZVR5cGUgPSBzaGlmdDsKKworICAgICMgRklYTUU6IFRoZSBuYXRpdmVU
eXBlIGhhc2ggdHJhbnNsYXRlcyAidW5zaWduZWQgbG9uZyIgdG8gInVuc2lnbmVkIiB3aGljaAor
ICAgICMgaXMgYWNjb3JkaW5nIHRvIFdlYklETC4gVGhlIFZpYnJhdGlvbiBBUEkgZGVwZW5kcyBv
biB0aGUgb2xkIGJlaGF2aW9yCisgICAgIyB3aGVyZSAidW5zaWduZWQgbG9uZyIgaXMga2VwdCBh
cyB0aGUgV2ViQ29yZSB0eXBlLgorICAgICMgUmVtb3ZlIHdvcmthcm91bmQgd2hlbiBodHRwOi8v
d2Via2l0Lm9yZy9iLzEwMzg5OSBpcyBmaXhlZC4KKyAgICByZXR1cm4gInVuc2lnbmVkIGxvbmci
IGlmICRhcnJheU9yU2VxdWVuY2VUeXBlIGVxICJ1bnNpZ25lZCBsb25nIjsKKworICAgIHJldHVy
biAiU3RyaW5nIiBpZiAkYXJyYXlPclNlcXVlbmNlVHlwZSBlcSAiRE9NU3RyaW5nIjsKKyAgICBy
ZXR1cm4gJG5hdGl2ZVR5cGV7JGFycmF5T3JTZXF1ZW5jZVR5cGV9IGlmIGV4aXN0cyAkbmF0aXZl
VHlwZXskYXJyYXlPclNlcXVlbmNlVHlwZX07CisgICAgcmV0dXJuICJSZWZQdHI8JHthcnJheU9y
U2VxdWVuY2VUeXBlfT4gIjsKK30KKwogc3ViIEdldE5hdGl2ZVR5cGVGb3JDYWxsYmFja3MKIHsK
ICAgICBteSAkdHlwZSA9IHNoaWZ0OwpAQCAtMzE5NCwxMyArMzIxMywxNSBAQCBzdWIgSlNWYWx1
ZVRvTmF0aXZlCiAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkV2ZW50LmgiLCAkY29uZGl0aW9uYWwp
IGlmICR0eXBlIGVxICJFdmVudCI7CiAKICAgICBteSAkYXJyYXlUeXBlID0gJGNvZGVHZW5lcmF0
b3ItPkdldEFycmF5VHlwZSgkdHlwZSk7Ci0gICAgaWYgKCRhcnJheVR5cGUpIHsKLSAgICAgICAg
cmV0dXJuICJ0b05hdGl2ZUFycmF5PCRhcnJheVR5cGU+KGV4ZWMsICR2YWx1ZSkiOwotICAgIH0K
LQogICAgIG15ICRzZXF1ZW5jZVR5cGUgPSAkY29kZUdlbmVyYXRvci0+R2V0U2VxdWVuY2VUeXBl
KCR0eXBlKTsKLSAgICBpZiAoJHNlcXVlbmNlVHlwZSkgewotICAgICAgICByZXR1cm4gInRvTmF0
aXZlQXJyYXk8JHNlcXVlbmNlVHlwZT4oZXhlYywgJHZhbHVlKSI7CisgICAgbXkgJGFycmF5T3JT
ZXF1ZW5jZVR5cGUgPSAkYXJyYXlUeXBlIHx8ICRzZXF1ZW5jZVR5cGU7CisKKyAgICBpZiAoJGFy
cmF5T3JTZXF1ZW5jZVR5cGUpIHsKKyAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1JlZlB0
clR5cGUoJGFycmF5T3JTZXF1ZW5jZVR5cGUpKSB7CisgICAgICAgICAgICBBZGRUb0ltcGxJbmNs
dWRlcygiSlMke2FycmF5T3JTZXF1ZW5jZVR5cGV9LmgiKTsKKyAgICAgICAgICAgIHJldHVybiAi
KHRvUmVmUHRyTmF0aXZlQXJyYXk8JHthcnJheU9yU2VxdWVuY2VUeXBlfSwgSlMke2FycmF5T3JT
ZXF1ZW5jZVR5cGV9PihleGVjLCAkdmFsdWUsICZ0byR7YXJyYXlPclNlcXVlbmNlVHlwZX0pKSI7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICJ0b05hdGl2ZUFycmF5PCIgLiBHZXROYXRpdmVW
ZWN0b3JJbm5lclR5cGUoJGFycmF5T3JTZXF1ZW5jZVR5cGUpIC4gIj4oZXhlYywgJHZhbHVlKSI7
CiAgICAgfQogCiAgICAgIyBEZWZhdWx0LCBhc3N1bWUgYXV0b2dlbmVyYXRlZCB0eXBlIGNvbnZl
cnNpb24gcm91dGluZXMKQEAgLTMyNjIsMjMgKzMyODMsMTcgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1
ZQogICAgIH0KIAogICAgIG15ICRhcnJheVR5cGUgPSAkY29kZUdlbmVyYXRvci0+R2V0QXJyYXlU
eXBlKCR0eXBlKTsKLSAgICBpZiAoJGFycmF5VHlwZSkgewotICAgICAgICBpZiAoJHR5cGUgZXEg
IkRPTVN0cmluZ1tdIikgeworICAgIG15ICRzZXF1ZW5jZVR5cGUgPSAkY29kZUdlbmVyYXRvci0+
R2V0U2VxdWVuY2VUeXBlKCR0eXBlKTsKKyAgICBteSAkYXJyYXlPclNlcXVlbmNlVHlwZSA9ICRh
cnJheVR5cGUgfHwgJHNlcXVlbmNlVHlwZTsKKworICAgIGlmICgkYXJyYXlPclNlcXVlbmNlVHlw
ZSkgeworICAgICAgICBpZiAoJGFycmF5VHlwZSBlcSAiRE9NU3RyaW5nIikgewogICAgICAgICAg
ICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTRE9NU3RyaW5nTGlzdC5oIiwgJGNvbmRpdGlvbmFsKTsK
ICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJET01TdHJpbmdMaXN0LmgiLCAkY29uZGl0
aW9uYWwpOwotICAgICAgICB9IGVsc2lmICghJGNvZGVHZW5lcmF0b3ItPlNraXBJbmNsdWRlSGVh
ZGVyKCRhcnJheVR5cGUpKSB7Ci0gICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlMkYXJy
YXlUeXBlLmgiLCAkY29uZGl0aW9uYWwpOwotICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMo
IiRhcnJheVR5cGUuaCIsICRjb25kaXRpb25hbCk7Ci0gICAgICAgIH0KLSAgICAgICAgQWRkVG9J
bXBsSW5jbHVkZXMoIjxydW50aW1lL0pTQXJyYXkuaD4iLCAkY29uZGl0aW9uYWwpOwotICAgICAg
ICByZXR1cm4gImpzQXJyYXkoZXhlYywgJHRoaXNWYWx1ZS0+Z2xvYmFsT2JqZWN0KCksICR2YWx1
ZSkiOwotICAgIH0KIAotICAgIG15ICRzZXF1ZW5jZVR5cGUgPSAkY29kZUdlbmVyYXRvci0+R2V0
U2VxdWVuY2VUeXBlKCR0eXBlKTsKLSAgICBpZiAoJHNlcXVlbmNlVHlwZSkgewotICAgICAgICBp
ZiAoISRjb2RlR2VuZXJhdG9yLT5Ta2lwSW5jbHVkZUhlYWRlcigkc2VxdWVuY2VUeXBlKSkgewot
ICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTJHNlcXVlbmNlVHlwZS5oIiwgJGNvbmRp
dGlvbmFsKTsKLSAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCIkc2VxdWVuY2VUeXBlLmgi
LCAkY29uZGl0aW9uYWwpOworICAgICAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SXNSZWZQ
dHJUeXBlKCRhcnJheU9yU2VxdWVuY2VUeXBlKSkgeworICAgICAgICAgICAgQWRkVG9JbXBsSW5j
bHVkZXMoIkpTJHthcnJheU9yU2VxdWVuY2VUeXBlfS5oIiwgJGNvbmRpdGlvbmFsKTsKKyAgICAg
ICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCIke2FycmF5T3JTZXF1ZW5jZVR5cGV9LmgiLCAkY29u
ZGl0aW9uYWwpOwogICAgICAgICB9CiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCI8cnVudGlt
ZS9KU0FycmF5Lmg+IiwgJGNvbmRpdGlvbmFsKTsKICAgICAgICAgcmV0dXJuICJqc0FycmF5KGV4
ZWMsICR0aGlzVmFsdWUtPmdsb2JhbE9iamVjdCgpLCAkdmFsdWUpIjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggN2E2ZmRm
Mi4uMGM0NDVjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG0KQEAgLTcsNiArNyw3IEBACiAjIENvcHlyaWdodCAoQykgMjAwOSBD
YW1lcm9uIE1jQ29ybWFjayA8Y2FtQG1jYy5pZC5hdT4KICMgQ29weXJpZ2h0IChDKSBSZXNlYXJj
aCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIyBDb3B5cmln
aHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
CisjIENvcHlyaWdodCAoQykgMjAxMiBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICMKICMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgogIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwpAQCAtMTAyMyw3ICsxMDI0LDcgQEAgRU5ECiAgICAgICAgIH0KIAog
ICAgICAgICAkcmVzdWx0ID0gInYiOwotICAgICAgICAkcmVzdWx0IC49ICIucmVsZWFzZSgpIiBp
ZiAoSXNSZWZQdHJUeXBlKCRyZXR1cm5UeXBlKSk7CisgICAgICAgICRyZXN1bHQgLj0gIi5yZWxl
YXNlKCkiIGlmICgkY29kZUdlbmVyYXRvci0+SXNSZWZQdHJUeXBlKCRyZXR1cm5UeXBlKSk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgIyBDYW4gaW5saW5lIHRoZSBmdW5jdGlvbiBjYWxsIGludG8g
dGhlIHJldHVybiBzdGF0ZW1lbnQgdG8gYXZvaWQgb3ZlcmhlYWQgb2YgdXNpbmcgYSBSZWY8PiB0
ZW1wb3JhcnkKICAgICAgICAgJHJlc3VsdCA9ICRnZXR0ZXJTdHJpbmc7CkBAIC0xMjY2LDcgKzEy
NjcsNyBAQCBFTkQKIAogICAgIG15ICRyZXN1bHQgPSAidiI7CiAgICAgbXkgJHJldHVyblR5cGUg
PSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGU7Ci0gICAgaWYgKElzUmVmUHRyVHlwZSgkcmV0
dXJuVHlwZSkgJiYgISRjb2RlR2VuZXJhdG9yLT5HZXRBcnJheVR5cGUoJHJldHVyblR5cGUpKSB7
CisgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1JlZlB0clR5cGUoJHJldHVyblR5cGUpICYmICEk
Y29kZUdlbmVyYXRvci0+R2V0QXJyYXlUeXBlKCRyZXR1cm5UeXBlKSkgewogICAgICAgICAkcmVz
dWx0ID0gIldURjo6Z2V0UHRyKCIgLiAkcmVzdWx0IC4gIikiOwogICAgIH0KIApAQCAtMTQyNCw3
ICsxNDI1LDYgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrRXhwcmVzc2lvbgogICAgICAg
ICAgICAgIyBGb3IgQ2FsbGJhY2tzIG9ubHkgY2hlY2tzIGlmIHRoZSB2YWx1ZSBpcyBudWxsIG9y
IG9iamVjdC4KICAgICAgICAgICAgIHB1c2goQGFuZEV4cHJlc3Npb24sICIoJHt2YWx1ZX0tPklz
TnVsbCgpIHx8ICR7dmFsdWV9LT5Jc0Z1bmN0aW9uKCkpIik7CiAgICAgICAgIH0gZWxzaWYgKCRj
b2RlR2VuZXJhdG9yLT5Jc0FycmF5VHlwZSgkdHlwZSkgfHwgJGNvZGVHZW5lcmF0b3ItPkdldFNl
cXVlbmNlVHlwZSgkdHlwZSkpIHsKLSAgICAgICAgICAgICMgRklYTUU6IEFkZCBwcm9wZXIgc3Vw
cG9ydCBmb3IgVFtdLCBUW10/LCBzZXF1ZW5jZTxUPi4KICAgICAgICAgICAgIGlmICgkcGFyYW1l
dGVyLT5pc051bGxhYmxlKSB7CiAgICAgICAgICAgICAgICAgcHVzaChAYW5kRXhwcmVzc2lvbiwg
Iigke3ZhbHVlfS0+SXNOdWxsKCkgfHwgJHt2YWx1ZX0tPklzQXJyYXkoKSkiKTsKICAgICAgICAg
ICAgIH0gZWxzZSB7CkBAIC0zNTk4LDcgKzM1OTgsNyBAQCBzdWIgR2VuZXJhdGVGdW5jdGlvbkNh
bGxTdHJpbmcoKQogICAgIG15ICRmdW5jdGlvblN0cmluZyA9ICIkZnVuY3Rpb25OYW1lKCIgLiBq
b2luKCIsICIsIEBhcmd1bWVudHMpIC4gIikiOwogCiAgICAgbXkgJHJldHVybiA9ICJyZXN1bHQi
OwotICAgIG15ICRyZXR1cm5Jc1JlZiA9IElzUmVmUHRyVHlwZSgkcmV0dXJuVHlwZSk7CisgICAg
bXkgJHJldHVybklzUmVmID0gJGNvZGVHZW5lcmF0b3ItPklzUmVmUHRyVHlwZSgkcmV0dXJuVHlw
ZSk7CiAKICAgICBpZiAoJHJldHVyblR5cGUgZXEgInZvaWQiKSB7CiAgICAgICAgICRyZXN1bHQg
Lj0gJGluZGVudCAuICIkZnVuY3Rpb25TdHJpbmc7XG4iOwpAQCAtMzYwOSw3ICszNjA5LDcgQEAg
c3ViIEdlbmVyYXRlRnVuY3Rpb25DYWxsU3RyaW5nKCkKICAgICAgICAgJHJldHVybiA9ICRmdW5j
dGlvblN0cmluZzsKICAgICAgICAgJHJldHVybklzUmVmID0gMDsKIAotICAgICAgICBpZiAoJGlu
dGVyZmFjZU5hbWUgZXEgIlNWR1RyYW5zZm9ybUxpc3QiIGFuZCBJc1JlZlB0clR5cGUoJHJldHVy
blR5cGUpKSB7CisgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiU1ZHVHJhbnNmb3JtTGlz
dCIgYW5kICRjb2RlR2VuZXJhdG9yLT5Jc1JlZlB0clR5cGUoJHJldHVyblR5cGUpKSB7CiAgICAg
ICAgICAgICAkcmV0dXJuID0gIldURjo6Z2V0UHRyKCIgLiAkcmV0dXJuIC4gIikiOwogICAgICAg
ICB9CiAgICAgfQpAQCAtMzY3NiwyNSArMzY3Niw2IEBAIHN1YiBHZXROYXRpdmVUeXBlRnJvbVNp
Z25hdHVyZQogICAgIHJldHVybiAkdHlwZTsKIH0KIAotc3ViIElzUmVmUHRyVHlwZQotewotICAg
IG15ICR0eXBlID0gc2hpZnQ7Ci0KLSAgICByZXR1cm4gMCBpZiAkdHlwZSBlcSAiYm9vbGVhbiI7
Ci0gICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEgImZsb2F0IjsKLSAgICByZXR1cm4gMCBpZiAkdHlw
ZSBlcSAiaW50IjsKLSAgICByZXR1cm4gMCBpZiAkdHlwZSBlcSAiRGF0ZSI7Ci0gICAgcmV0dXJu
IDAgaWYgJHR5cGUgZXEgIkRPTVN0cmluZyI7Ci0gICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEgImRv
dWJsZSI7Ci0gICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEgInNob3J0IjsKLSAgICByZXR1cm4gMCBp
ZiAkdHlwZSBlcSAibG9uZyI7Ci0gICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEgInVuc2lnbmVkIjsK
LSAgICByZXR1cm4gMCBpZiAkdHlwZSBlcSAidW5zaWduZWQgbG9uZyI7Ci0gICAgcmV0dXJuIDAg
aWYgJHR5cGUgZXEgInVuc2lnbmVkIHNob3J0IjsKLQotICAgIHJldHVybiAxOwotfQotCiBzdWIg
R2V0TmF0aXZlVHlwZQogewogICAgIG15ICR0eXBlID0gc2hpZnQ7CkBAIC0zNzA5LDkgKzM2OTAs
NiBAQCBzdWIgR2V0TmF0aXZlVHlwZQogICAgICAgICB9CiAgICAgfQogCi0gICAgbXkgJHNlcXVl
bmNlVHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5HZXRTZXF1ZW5jZVR5cGUoJHR5cGUpOwotICAgIHJl
dHVybiAiVmVjdG9yPCR7c2VxdWVuY2VUeXBlfT4iIGlmICRzZXF1ZW5jZVR5cGU7Ci0KICAgICBp
ZiAoJHR5cGUgZXEgImZsb2F0IiBvciAkdHlwZSBlcSAiZG91YmxlIikgewogICAgICAgICByZXR1
cm4gJHR5cGU7CiAgICAgfQpAQCAtMzc0OCwxMyArMzcyNiwyMyBAQCBzdWIgR2V0TmF0aXZlVHlw
ZQogICAgIHJldHVybiAiUmVmUHRyPFhQYXRoTlNSZXNvbHZlcj4iIGlmICR0eXBlIGVxICJYUGF0
aE5TUmVzb2x2ZXIiOwogCiAgICAgcmV0dXJuICJSZWZQdHI8RE9NU3RyaW5nTGlzdD4iIGlmICR0
eXBlIGVxICJET01TdHJpbmdbXSI7Ci0gICAgcmV0dXJuICJSZWZQdHI8JHt0eXBlfT4iIGlmIElz
UmVmUHRyVHlwZSgkdHlwZSkgYW5kIG5vdCAkaXNQYXJhbWV0ZXI7CisgICAgcmV0dXJuICJSZWZQ
dHI8JHt0eXBlfT4iIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1JlZlB0clR5cGUoJHR5cGUpIGFuZCBu
b3QgJGlzUGFyYW1ldGVyOwogCiAgICAgcmV0dXJuICJSZWZQdHI8TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lcj4iIGlmICR0eXBlIGVxICJNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIjsKIAotICAgICMgRklY
TUU6IFN1cHBvcnQgVFtdLCBUW10/LCBzZXF1ZW5jZTxUPiBnZW5lcmljYWxseQorICAgICMgRklY
TUU6IENvbnNpZGVyIHJlcGxhY2luZyBET01TdHJpbmdMaXN0IHdpdGggRE9NU3RyaW5nW10gb3Ig
c2VxdWVuY2U8RE9NU3RyaW5nPi4KICAgICByZXR1cm4gIlJlZlB0cjxET01TdHJpbmdMaXN0PiIg
aWYgJHR5cGUgZXEgIkRPTVN0cmluZ0xpc3QiOwogCisgICAgbXkgJGFycmF5VHlwZSA9ICRjb2Rl
R2VuZXJhdG9yLT5HZXRBcnJheVR5cGUoJHR5cGUpOworICAgIG15ICRzZXF1ZW5jZVR5cGUgPSAk
Y29kZUdlbmVyYXRvci0+R2V0U2VxdWVuY2VUeXBlKCR0eXBlKTsKKyAgICBteSAkYXJyYXlPclNl
cXVlbmNlVHlwZSA9ICRhcnJheVR5cGUgfHwgJHNlcXVlbmNlVHlwZTsKKworICAgIGlmICgkYXJy
YXlPclNlcXVlbmNlVHlwZSkgeworICAgICAgICBteSAkbmF0aXZlVHlwZSA9IEdldE5hdGl2ZVR5
cGUoJGFycmF5T3JTZXF1ZW5jZVR5cGUpOworICAgICAgICAkbmF0aXZlVHlwZSAuPSAiICIgaWYg
KCRuYXRpdmVUeXBlID1+IC8+JC8pOworICAgICAgICByZXR1cm4gIlZlY3Rvcjwke25hdGl2ZVR5
cGV9PiI7CisgICAgfQorCiAgICAgIyBEZWZhdWx0LCBhc3N1bWUgbmF0aXZlIHR5cGUgaXMgYSBw
b2ludGVyIHdpdGggc2FtZSB0eXBlIG5hbWUgYXMgaWRsIHR5cGUKICAgICByZXR1cm4gIiR7dHlw
ZX0qIjsKIH0KQEAgLTM4MDcsNyArMzc5NSw3IEBAIHN1YiBKU1ZhbHVlVG9OYXRpdmUKICAgICBy
ZXR1cm4gInN0YXRpY19jYXN0PFJhbmdlOjpDb21wYXJlSG93PigkdmFsdWUtPkludDMyVmFsdWUo
KSkiIGlmICR0eXBlIGVxICJDb21wYXJlSG93IjsKICAgICByZXR1cm4gInRvV2ViQ29yZURhdGUo
JHZhbHVlKSIgaWYgJHR5cGUgZXEgIkRhdGUiOwogICAgIHJldHVybiAidG9ET01TdHJpbmdMaXN0
KCR2YWx1ZSkiIGlmICR0eXBlIGVxICJET01TdHJpbmdMaXN0IjsKLSAgICAjIEZJWE1FOiBBZGQg
cHJvcGVyIHN1cHBvcnQgZm9yIFRbXSwgVFtdPyBhbmQgc2VxdWVuY2U8VD4uCisgICAgIyBGSVhN
RTogQ29uc2lkZXIgcmVwbGFjaW5nIERPTVN0cmluZ0xpc3Qgd2l0aCBET01TdHJpbmdbXSBvciBz
ZXF1ZW5jZTxET01TdHJpbmc+LgogICAgIHJldHVybiAidG9ET01TdHJpbmdMaXN0KCR2YWx1ZSki
IGlmICR0eXBlIGVxICJET01TdHJpbmdbXSI7CiAKICAgICBpZiAoJHR5cGUgZXEgIkRPTVN0cmlu
ZyIgb3IgJHR5cGUgZXEgIkRPTVVzZXJEYXRhIikgewpAQCAtMzg1OSwxMyArMzg0NywxNSBAQCBz
dWIgSlNWYWx1ZVRvTmF0aXZlCiAgICAgfQogCiAgICAgbXkgJGFycmF5VHlwZSA9ICRjb2RlR2Vu
ZXJhdG9yLT5HZXRBcnJheVR5cGUoJHR5cGUpOwotICAgIGlmICgkYXJyYXlUeXBlKSB7Ci0gICAg
ICAgIHJldHVybiAidG9OYXRpdmVBcnJheTwkYXJyYXlUeXBlPigkdmFsdWUpIjsKLSAgICB9Ci0K
ICAgICBteSAkc2VxdWVuY2VUeXBlID0gJGNvZGVHZW5lcmF0b3ItPkdldFNlcXVlbmNlVHlwZSgk
dHlwZSk7Ci0gICAgaWYgKCRzZXF1ZW5jZVR5cGUpIHsKLSAgICAgICAgcmV0dXJuICJ0b05hdGl2
ZUFycmF5PCRzZXF1ZW5jZVR5cGU+KCR2YWx1ZSkiOworICAgIG15ICRhcnJheU9yU2VxdWVuY2VU
eXBlID0gJGFycmF5VHlwZSB8fCAkc2VxdWVuY2VUeXBlOworCisgICAgaWYgKCRhcnJheU9yU2Vx
dWVuY2VUeXBlKSB7CisgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNSZWZQdHJUeXBlKCRh
cnJheU9yU2VxdWVuY2VUeXBlKSkgeworICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlY4
JHthcnJheU9yU2VxdWVuY2VUeXBlfS5oIik7CisgICAgICAgICAgICByZXR1cm4gIih0b1JlZlB0
ck5hdGl2ZUFycmF5PCR7YXJyYXlPclNlcXVlbmNlVHlwZX0sIFY4JHthcnJheU9yU2VxdWVuY2VU
eXBlfT4oJHZhbHVlKSkiOworICAgICAgICB9CisgICAgICAgIHJldHVybiAidG9OYXRpdmVBcnJh
eTwiIC4gR2V0TmF0aXZlVHlwZSgkYXJyYXlPclNlcXVlbmNlVHlwZSkgLiAiPigkdmFsdWUpIjsK
ICAgICB9CiAKICAgICBBZGRJbmNsdWRlc0ZvclR5cGUoJHR5cGUpOwpAQCAtMzkwMywxMyArMzg5
MywyMyBAQCBzdWIgQ3JlYXRlQ3VzdG9tU2lnbmF0dXJlCiAgICAgICAgICAgICAgICAgJHJlc3Vs
dCAuPSAidjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSI7CiAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgIG15ICR0eXBlID0gJHBhcmFtZXRlci0+dHlwZTsKKwor
ICAgICAgICAgICAgICAgIG15ICRhcnJheVR5cGUgPSAkY29kZUdlbmVyYXRvci0+R2V0QXJyYXlU
eXBlKCR0eXBlKTsKICAgICAgICAgICAgICAgICBteSAkc2VxdWVuY2VUeXBlID0gJGNvZGVHZW5l
cmF0b3ItPkdldFNlcXVlbmNlVHlwZSgkdHlwZSk7Ci0gICAgICAgICAgICAgICAgaWYgKCRzZXF1
ZW5jZVR5cGUpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Ta2lw
SW5jbHVkZUhlYWRlcigkc2VxdWVuY2VUeXBlKSkgeworICAgICAgICAgICAgICAgIG15ICRhcnJh
eU9yU2VxdWVuY2VUeXBlID0gJGFycmF5VHlwZSB8fCAkc2VxdWVuY2VUeXBlOworCisgICAgICAg
ICAgICAgICAgaWYgKCRhcnJheU9yU2VxdWVuY2VUeXBlKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmICgkYXJyYXlUeXBlIGVxICJET01TdHJpbmciKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBBZGRUb0ltcGxJbmNsdWRlcygiVjhET01TdHJpbmdMaXN0LmgiKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJET01TdHJpbmdMaXN0LmgiKTsKKworICAgICAg
ICAgICAgICAgICAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SXNSZWZQdHJUeXBlKCRhcnJh
eU9yU2VxdWVuY2VUeXBlKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5j
bHVkZXMoR2V0VjhIZWFkZXJOYW1lKCRhcnJheU9yU2VxdWVuY2VUeXBlKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiJHthcnJheU9yU2VxdWVuY2VUeXBlfS5o
Iik7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAkcmVzdWx0IC49ICJ2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpIjsKICAgICAg
ICAgICAgICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIiRzZXF1ZW5jZVR5cGUuaCIpOwogICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVz
KEdldFY4SGVhZGVyTmFtZSgkdHlwZSkpOwogICAgICAgICAgICAgICAgIH0KQEAgLTQwOTIsMjQg
KzQwOTIsMTkgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1ZQogICAgIH0KIAogICAgIG15ICRhcnJheVR5
cGUgPSAkY29kZUdlbmVyYXRvci0+R2V0QXJyYXlUeXBlKCR0eXBlKTsKLSAgICBpZiAoJGFycmF5
VHlwZSkgewotICAgICAgICBpZiAoJHR5cGUgZXEgIkRPTVN0cmluZ1tdIikgeworICAgIG15ICRz
ZXF1ZW5jZVR5cGUgPSAkY29kZUdlbmVyYXRvci0+R2V0U2VxdWVuY2VUeXBlKCR0eXBlKTsKKyAg
ICBteSAkYXJyYXlPclNlcXVlbmNlVHlwZSA9ICRhcnJheVR5cGUgfHwgJHNlcXVlbmNlVHlwZTsK
KworICAgIGlmICgkYXJyYXlPclNlcXVlbmNlVHlwZSkgeworICAgICAgICBpZiAoJGFycmF5VHlw
ZSBlcSAiRE9NU3RyaW5nIikgewogICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlY4RE9N
U3RyaW5nTGlzdC5oIik7CiAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiRE9NU3RyaW5n
TGlzdC5oIik7Ci0gICAgICAgIH0gZWxzaWYgKCEkY29kZUdlbmVyYXRvci0+U2tpcEluY2x1ZGVI
ZWFkZXIoJGFycmF5VHlwZSkpIHsKLSAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJWOCRh
cnJheVR5cGUuaCIpOwotICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIiRhcnJheVR5cGUu
aCIpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAidjhBcnJheSgkdmFsdWUkZ2V0SXNvbGF0
ZUFyZykiOwotICAgIH0KIAotICAgIG15ICRzZXF1ZW5jZVR5cGUgPSAkY29kZUdlbmVyYXRvci0+
R2V0U2VxdWVuY2VUeXBlKCR0eXBlKTsKLSAgICBpZiAoJHNlcXVlbmNlVHlwZSkgewotICAgICAg
ICBpZiAoISRjb2RlR2VuZXJhdG9yLT5Ta2lwSW5jbHVkZUhlYWRlcigkc2VxdWVuY2VUeXBlKSkg
ewotICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlY4JHNlcXVlbmNlVHlwZS5oIik7Ci0g
ICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiJHNlcXVlbmNlVHlwZS5oIik7CisgICAgICAg
IH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1JlZlB0clR5cGUoJGFycmF5T3JTZXF1ZW5jZVR5
cGUpKSB7CisgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcyhHZXRWOEhlYWRlck5hbWUoJGFy
cmF5T3JTZXF1ZW5jZVR5cGUpKTsKKyAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCIke2Fy
cmF5T3JTZXF1ZW5jZVR5cGV9LmgiKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gInY4QXJy
YXkoJHZhbHVlJGdldElzb2xhdGVBcmcpIjsKKyAgICAgICAgcmV0dXJuICJ2OEFycmF5KCR7dmFs
dWV9JHtnZXRJc29sYXRlQXJnfSkiOwogICAgIH0KIAogICAgIEFkZEluY2x1ZGVzRm9yVHlwZSgk
dHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouY3BwCmluZGV4IDQ3ZGE5NWUuLmUyODAwODggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC0x
NTM2LDcgKzE1MzYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFNlcXVlbmNlQXJnKEV4ZQogICAgIFRlc3RPYmoqIGlt
cGwgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKICAgICBpZiAo
ZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihl
eGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7Ci0gICAgVmVjdG9yPFNj
cmlwdFByb2ZpbGU+IHNlcXVlbmNlQXJnKHRvTmF0aXZlQXJyYXk8U2NyaXB0UHJvZmlsZT4oZXhl
YywgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkp
OworICAgIFZlY3RvcjxSZWZQdHI8U2NyaXB0UHJvZmlsZT4gPiBzZXF1ZW5jZUFyZygodG9SZWZQ
dHJOYXRpdmVBcnJheTxTY3JpcHRQcm9maWxlLCBKU1NjcmlwdFByb2ZpbGU+KGV4ZWMsIE1BWUJF
X01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCksICZ0b1Njcmlw
dFByb2ZpbGUpKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwtPm1ldGhvZFdpdGhT
ZXF1ZW5jZUFyZyhzZXF1ZW5jZUFyZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCmluZGV4IGI4ZTZiMTUuLmUwN2NhZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RPYmouY3BwCkBAIC0xODksNyArMTg5LDcgQEAgc3RhdGljIHZvaWQgbG9uZ0xvbmdBdHRy
QXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWwK
ICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmxvbmdMb25nQXR0ci5fc2V0Iik7CiAgICAgVGVz
dE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBsb25n
IGxvbmcgdiA9IHRvSW50NjQodmFsdWUpOwotICAgIGltcC0+c2V0TG9uZ0xvbmdBdHRyKFdURjo6
Z2V0UHRyKHYpKTsKKyAgICBpbXAtPnNldExvbmdMb25nQXR0cih2KTsKICAgICByZXR1cm47CiB9
CiAKQEAgLTIwNSw3ICsyMDUsNyBAQCBzdGF0aWMgdm9pZCB1bnNpZ25lZExvbmdMb25nQXR0ckF0
dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbAogICAgIElOQ19T
VEFUUygiRE9NLlRlc3RPYmoudW5zaWduZWRMb25nTG9uZ0F0dHIuX3NldCIpOwogICAgIFRlc3RP
YmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgdW5zaWdu
ZWQgbG9uZyBsb25nIHYgPSB0b0ludDY0KHZhbHVlKTsKLSAgICBpbXAtPnNldFVuc2lnbmVkTG9u
Z0xvbmdBdHRyKFdURjo6Z2V0UHRyKHYpKTsKKyAgICBpbXAtPnNldFVuc2lnbmVkTG9uZ0xvbmdB
dHRyKHYpOwogICAgIHJldHVybjsKIH0KIApAQCAtMTEwOCw3ICsxMTA4LDcgQEAgc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBtZXRob2RXaXRoU2VxdWVuY2VBcmdDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJgogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJu
IHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAgIFRl
c3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgVjhU
UllDQVRDSChWZWN0b3I8U2NyaXB0UHJvZmlsZT4sIHNlcXVlbmNlQXJnLCB0b05hdGl2ZUFycmF5
PFNjcmlwdFByb2ZpbGU+KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJ
c1VuZGVmaW5lZCkpKTsKKyAgICBWOFRSWUNBVENIKFZlY3RvcjxSZWZQdHI8U2NyaXB0UHJvZmls
ZT4gPiwgc2VxdWVuY2VBcmcsICh0b1JlZlB0ck5hdGl2ZUFycmF5PFNjcmlwdFByb2ZpbGUsIFY4
U2NyaXB0UHJvZmlsZT4oTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElz
VW5kZWZpbmVkKSkpKTsKICAgICBpbXAtPm1ldGhvZFdpdGhTZXF1ZW5jZUFyZyhzZXF1ZW5jZUFy
Zyk7CiAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CkBAIC0xNjUzLDcgKzE2NTMsNyBAQCBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG92ZXJsb2FkZWRNZXRob2QxMENhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAg
ICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkp
OwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7
Ci0gICAgVjhUUllDQVRDSChWZWN0b3I8dW5zaWduZWQgbG9uZz4sIGFycmF5QXJnLCB0b05hdGl2
ZUFycmF5PHVuc2lnbmVkIGxvbmc+KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERl
ZmF1bHRJc1VuZGVmaW5lZCkpKTsKKyAgICBWOFRSWUNBVENIKFZlY3Rvcjx1bnNpZ25lZD4sIGFy
cmF5QXJnLCB0b05hdGl2ZUFycmF5PHVuc2lnbmVkPihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihh
cmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSk7CiAgICAgaW1wLT5vdmVybG9hZGVkTWV0aG9k
KGFycmF5QXJnKTsKICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhCaW5kaW5nLmgKaW5kZXggNWQyZTA2MC4uNmEzOTcxOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKQEAgLTEsNSArMSw2IEBACiAvKgogKiBDb3B5cmln
aHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyogQ29weXJpZ2h0
IChDKSAyMDEyIEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogKgogKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjA2LDYgKzIwNywyOSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIH0KICAgICB9OwogCisgICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFY4
VD4KKyAgICBWZWN0b3I8UmVmUHRyPFQ+ID4gdG9SZWZQdHJOYXRpdmVBcnJheSh2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdmFsdWUpCisgICAgeworICAgICAgICBpZiAoIXZhbHVlLT5Jc0FycmF5KCkp
CisgICAgICAgICAgICByZXR1cm4gVmVjdG9yPFJlZlB0cjxUPiA+KCk7CisKKyAgICAgICAgVmVj
dG9yPFJlZlB0cjxUPiA+IHJlc3VsdDsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdjhW
YWx1ZSh2ODo6TG9jYWw8djg6OlZhbHVlPjo6TmV3KHZhbHVlKSk7CisgICAgICAgIHY4OjpMb2Nh
bDx2ODo6QXJyYXk+IGFycmF5ID0gdjg6OkxvY2FsPHY4OjpBcnJheT46OkNhc3QodjhWYWx1ZSk7
CisgICAgICAgIHNpemVfdCBsZW5ndGggPSBhcnJheS0+TGVuZ3RoKCk7CisgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBlbGVtZW50ID0gYXJyYXktPkdldChpKTsKKworICAgICAgICAgICAgaWYgKFY4
VDo6SGFzSW5zdGFuY2UoZWxlbWVudCkpIHsKKyAgICAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IG9iamVjdCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoZWxlbWVudCk7
CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChWOFQ6OnRvTmF0aXZlKG9iamVjdCkpOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcigiSW52
YWxpZCBBcnJheSBlbGVtZW50IHR5cGUiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gVmVjdG9y
PFJlZlB0cjxUPiA+KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICB9CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KICAgICBWZWN0b3I8VD4g
dG9OYXRpdmVBcnJheSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5pZGwKaW5kZXggMTY3ZDBlNS4uNmRjNzVjZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtMTMzLDggKzEzMyw4IEBACiAgICAgbG9uZyBsYXN0U3Bl
bGxDaGVja1JlcXVlc3RTZXF1ZW5jZShpbiBEb2N1bWVudCBkb2N1bWVudCkgcmFpc2VzIChET01F
eGNlcHRpb24pOwogICAgIGxvbmcgbGFzdFNwZWxsQ2hlY2tQcm9jZXNzZWRTZXF1ZW5jZShpbiBE
b2N1bWVudCBkb2N1bWVudCkgcmFpc2VzIChET01FeGNlcHRpb24pOwogCi0gICAgc2VxdWVuY2U8
U3RyaW5nPiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7Ci0gICAgdm9pZCBzZXRVc2VyUHJlZmVy
cmVkTGFuZ3VhZ2VzKGluIHNlcXVlbmNlPFN0cmluZz4gbGFuZ3VhZ2VzKTsKKyAgICBzZXF1ZW5j
ZTxET01TdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsKKyAgICB2b2lkIHNldFVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXMoaW4gc2VxdWVuY2U8RE9NU3RyaW5nPiBsYW5ndWFnZXMpOwogCiAg
ICAgdW5zaWduZWQgbG9uZyB3aGVlbEV2ZW50SGFuZGxlckNvdW50KGluIERvY3VtZW50IGRvY3Vt
ZW50KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgdW5zaWduZWQgbG9uZyB0b3VjaEV2ZW50
SGFuZGxlckNvdW50KGluIERvY3VtZW50IGRvY3VtZW50KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7
CkBAIC0xODMsNyArMTgzLDcgQEAKIAogICAgIFtDb25kaXRpb25hbD1JTlNQRUNUT1JdIHVuc2ln
bmVkIGxvbmcgbnVtYmVyT2ZMaXZlTm9kZXMoKTsKICAgICBbQ29uZGl0aW9uYWw9SU5TUEVDVE9S
XSB1bnNpZ25lZCBsb25nIG51bWJlck9mTGl2ZURvY3VtZW50cygpOwotICAgIFtDb25kaXRpb25h
bD1JTlNQRUNUT1JdIHNlcXVlbmNlPFN0cmluZz4gY29uc29sZU1lc3NhZ2VBcmd1bWVudENvdW50
cyhpbiBEb2N1bWVudCBkb2N1bWVudCk7CisgICAgW0NvbmRpdGlvbmFsPUlOU1BFQ1RPUl0gc2Vx
dWVuY2U8RE9NU3RyaW5nPiBjb25zb2xlTWVzc2FnZUFyZ3VtZW50Q291bnRzKGluIERvY3VtZW50
IGRvY3VtZW50KTsKICAgICBbQ29uZGl0aW9uYWw9SU5TUEVDVE9SXSBET01XaW5kb3cgb3BlbkR1
bW15SW5zcGVjdG9yRnJvbnRlbmQoaW4gRE9NU3RyaW5nIHVybCk7CiAgICAgW0NvbmRpdGlvbmFs
PUlOU1BFQ1RPUl0gdm9pZCBjbG9zZUR1bW15SW5zcGVjdG9yRnJvbnRlbmQoKTsKICAgICBbQ29u
ZGl0aW9uYWw9SU5TUEVDVE9SXSB2b2lkIHNldEluc3BlY3RvclJlc291cmNlc0RhdGFTaXplTGlt
aXRzKGluIGxvbmcgbWF4aW11bVJlc291cmNlc0NvbnRlbnRTaXplLCBpbiBsb25nIG1heGltdW1T
aW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>